{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./ClientApp sync \\.ts$","webpack:///./ClientApp/images/blank.png","webpack:///./ClientApp/images/cards/amex_logo.png","webpack:///./ClientApp/images/cards/diners.png","webpack:///./ClientApp/images/cards/discover.png","webpack:///./ClientApp/images/cards/jcb.png","webpack:///./ClientApp/images/cards/mastercard_logo.png","webpack:///./ClientApp/images/cards/visa.png","webpack:///./ClientApp/images/digitalWallets sync ^\\.\\/.*$","webpack:///./ClientApp/images/digitalWallets/apple_pay.svg","webpack:///./ClientApp/images/installments_dollar.svg","webpack:///./ClientApp/images/poweredBy.png","webpack:///./ClientApp/images/radio-checked.png","webpack:///./ClientApp/images/radio-hover.png","webpack:///./ClientApp/images/unchecked.png","webpack:///./node_modules/@duetds/date-picker/dist/esm-es5 lazy ^\\.\\/.*\\.entry\\.js$ namespace object","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./ClientApp/boot.ts","webpack:///./ClientApp/components/account-summary/account-summary.ts","webpack:///./ClientApp/components/account-summary/account-summary.html","webpack:///./ClientApp/components/address/address.html","webpack:///./ClientApp/components/bank-account-form/bank-account-form.ts","webpack:///./ClientApp/components/bank-account-form/bank-account-form.html","webpack:///./ClientApp/components/banner-image/banner-image.ts","webpack:///./ClientApp/components/banner-image/banner-image.html","webpack:///./ClientApp/components/bootstrap-tooltip-attribute/bootstrap-tooltip-attribute.ts","webpack:///./ClientApp/components/bulletin/bulletin.ts","webpack:///./ClientApp/components/bulletin/bulletin.html","webpack:///./ClientApp/components/card-logo/card-logo.ts","webpack:///./ClientApp/components/card-logo/card-logo.css","webpack:///./ClientApp/components/card-logo/card-logo.html","webpack:///./ClientApp/components/confirmation/confirmation.ts","webpack:///./ClientApp/components/confirmation/confirmation.html","webpack:///./ClientApp/components/confirmation/confirmation.spec.ts","webpack:///./ClientApp/components/confirmation/digital-wallets/apple-pay/apple-pay.ts","webpack:///./ClientApp/components/confirmation/digital-wallets/apple-pay/apple-pay-spec.ts","webpack:///./ClientApp/components/confirmation/digital-wallets/apple-pay/apple-pay-validator.ts","webpack:///./ClientApp/components/confirmation/digital-wallets/apple-pay/apple-pay.html","webpack:///./ClientApp/components/credit-card-form/credit-card-form.ts","webpack:///./ClientApp/components/credit-card-form/credit-card-form.html","webpack:///./ClientApp/components/custom-prompt/custom-prompt.ts","webpack:///./ClientApp/components/custom-prompt/custom-prompt.html","webpack:///./ClientApp/components/customer-account-lookup-form/customer-account-lookup-form.ts","webpack:///./ClientApp/components/customer-account-lookup-form/customer-account-lookup-form.html","webpack:///./ClientApp/components/customer-account-number/customer-account-number.ts","webpack:///./ClientApp/components/customer-account-number/customer-account-number.html","webpack:///./ClientApp/components/customer-lookup/customer-lookup.ts","webpack:///./ClientApp/components/customer-lookup/customer-lookup.html","webpack:///./ClientApp/components/datepicker/datepicker.ts","webpack:///./ClientApp/components/datepicker/duet-date-picker.ts","webpack:///./ClientApp/components/datepicker/duet-date-picker.css","webpack:///./ClientApp/components/datepicker/duet-date-picker.html","webpack:///./ClientApp/components/disclosures/disclosures.ts","webpack:///./ClientApp/components/disclosures/disclosures.html","webpack:///./ClientApp/components/fee-summary-box/fee-summary-box.ts","webpack:///./ClientApp/components/fee-summary-box/fee-summary-box.css","webpack:///./ClientApp/components/fee-summary-box/fee-summary-box.html","webpack:///./ClientApp/components/grid-remove-customer/grid-remove-customer.ts","webpack:///./ClientApp/components/grid-remove-customer/grid-remove-customer.html","webpack:///./ClientApp/components/inactive/inactive.html","webpack:///./ClientApp/components/legal-dialog/legal-dialog.css","webpack:///./ClientApp/components/legal-dialog/legal-disclosures.dialog.ts","webpack:///./ClientApp/components/legal-dialog/legal-disclosures.dialog.html","webpack:///./ClientApp/components/legal-dialog/legal-privacypolicy-content.css","webpack:///./ClientApp/components/legal-dialog/legal-privacypolicy-content.html","webpack:///./ClientApp/components/legal-dialog/legal-privacypolicy.dialog.ts","webpack:///./ClientApp/components/legal-dialog/legal-privacypolicy.dialog.html","webpack:///./ClientApp/components/legal-dialog/legal-terms.dialog.ts","webpack:///./ClientApp/components/legal-dialog/legal-terms.dialog.html","webpack:///./ClientApp/components/logo-image/logo-image.ts","webpack:///./ClientApp/components/logo-image/logo-image.html","webpack:///./ClientApp/components/mfa/mfa-verification.ts","webpack:///./ClientApp/components/mfa/mfa-verification.css","webpack:///./ClientApp/components/mfa/mfa-verification.html","webpack:///./ClientApp/components/mfa/mfa-verification.spec.ts","webpack:///./ClientApp/components/nav-bar/nav-bar.ts","webpack:///./ClientApp/components/nav-bar/nav-bar.css","webpack:///./ClientApp/components/nav-bar/nav-bar.html","webpack:///./ClientApp/components/nav-bar/nav-bar.spec.ts","webpack:///./ClientApp/components/password-rules/password-rules.html","webpack:///./ClientApp/components/payment-form/card-form/card-form.ts","webpack:///./ClientApp/components/payment-form/card-form/card-form.html","webpack:///./ClientApp/components/payment-form/card-form/cards-accepted/cards-accepted.ts","webpack:///./ClientApp/components/payment-form/card-form/cards-accepted/cards-accepted.css","webpack:///./ClientApp/components/payment-form/card-form/cards-accepted/cards-accepted.html","webpack:///./ClientApp/components/payment-form/check-form/check-form.ts","webpack:///./ClientApp/components/payment-form/check-form/check-form.html","webpack:///./ClientApp/components/payment-form/custom-fields/custom-fields.ts","webpack:///./ClientApp/components/payment-form/custom-fields/custom-fields.html","webpack:///./ClientApp/components/payment-form/payment-form.ts","webpack:///./ClientApp/components/payment-form/payment-form.css","webpack:///./ClientApp/components/payment-form/payment-form.html","webpack:///./ClientApp/components/payment-form/payment-form.spec.ts","webpack:///./ClientApp/components/payment-form/save-to-wallet-checkbox/save-to-wallet-checkbox.css","webpack:///./ClientApp/components/payment-form/save-to-wallet-checkbox/save-to-wallet-checkbox.html","webpack:///./ClientApp/components/payment-form/wallet-form/wallet-form.ts","webpack:///./ClientApp/components/payment-form/wallet-form/wallet-form.html","webpack:///./ClientApp/components/plan-summary/plan-summary.ts","webpack:///./ClientApp/components/plan-summary/plan-summary.css","webpack:///./ClientApp/components/plan-summary/plan-summary.html","webpack:///./ClientApp/components/receipt/email-receipt-sender/email-receipt-sender.ts","webpack:///./ClientApp/components/receipt/email-receipt-sender/email-receipt-sender.css","webpack:///./ClientApp/components/receipt/email-receipt-sender/email-receipt-sender.html","webpack:///./ClientApp/components/receipt/receipt.ts","webpack:///./ClientApp/components/receipt/receipt.css","webpack:///./ClientApp/components/receipt/receipt.html","webpack:///./ClientApp/components/receipt/receipt.spec.ts","webpack:///./ClientApp/components/select-bucket/select-bucket.ts","webpack:///./ClientApp/components/select-bucket/select-bucket.html","webpack:///./ClientApp/components/select-merchant/select-merchant.ts","webpack:///./ClientApp/components/select-merchant/select-merchant.html","webpack:///./ClientApp/components/spinner/spinner.ts","webpack:///./ClientApp/components/spinner/spinner.html","webpack:///./ClientApp/components/terms-conditions/terms-conditions.ts","webpack:///./ClientApp/components/terms-conditions/terms-conditions.html","webpack:///./ClientApp/components/tiered-fees-display/tiered-fees-display.ts","webpack:///./ClientApp/components/tiered-fees-display/tiered-fees-display.html","webpack:///./ClientApp/components/timeout-modal/timeout-modal.css","webpack:///./ClientApp/components/timeout-modal/timeout-modal.html","webpack:///./ClientApp/components/validation-summary/validation-summary.ts","webpack:///./ClientApp/components/validation-summary/validation-summary.html","webpack:///./ClientApp/components/wallet-form/wallet-form.html","webpack:///./ClientApp/components/widgets/list-box/list-box.ts","webpack:///./ClientApp/components/widgets/list-box/list-box.css","webpack:///./ClientApp/components/widgets/list-box/list-box.html","webpack:///./ClientApp/config/config.ts","webpack:///./ClientApp/css/aurelia-table.css","webpack:///./ClientApp/css/bootstrapCustom.css","webpack:///./ClientApp/css/checkbox.css","webpack:///./ClientApp/css/form.css","webpack:///./ClientApp/css/general.css","webpack:///./ClientApp/css/layout.css","webpack:///./ClientApp/css/mobile-tables.css","webpack:///./ClientApp/css/styles.css","webpack:///./ClientApp/custom-elements/bank-account-number/bank-account-number.ts","webpack:///./ClientApp/custom-elements/bank-account-number/bank-account-number.html","webpack:///./ClientApp/custom-elements/bank-account-type/bank-account-type.ts","webpack:///./ClientApp/custom-elements/bank-account-type/bank-account-type.html","webpack:///./ClientApp/custom-elements/bank-routing-number/bank-routing-number.ts","webpack:///./ClientApp/custom-elements/bank-routing-number/bank-routing-number.html","webpack:///./ClientApp/custom-elements/billing-first-name/billing-first-name.ts","webpack:///./ClientApp/custom-elements/billing-first-name/billing-first-name.html","webpack:///./ClientApp/custom-elements/billing-last-name/billing-last-name.ts","webpack:///./ClientApp/custom-elements/billing-last-name/billing-last-name.html","webpack:///./ClientApp/custom-elements/billing-name/billing-name.ts","webpack:///./ClientApp/custom-elements/billing-name/billing-name.html","webpack:///./ClientApp/custom-elements/billing-zipcode/billing-zipcode.ts","webpack:///./ClientApp/custom-elements/billing-zipcode/billing-zipcode.html","webpack:///./ClientApp/custom-elements/credit-card-expiration-V2/credit-card-expiration.ts","webpack:///./ClientApp/custom-elements/credit-card-expiration-V2/credit-card-expiration.html","webpack:///./ClientApp/custom-elements/credit-card-expiration/credit-card-expiration.ts","webpack:///./ClientApp/custom-elements/credit-card-expiration/credit-card-expiration.html","webpack:///./ClientApp/custom-elements/credit-card-number/credit-card-number.ts","webpack:///./ClientApp/custom-elements/credit-card-number/credit-card-number.html","webpack:///./ClientApp/custom-elements/payment-method-types/payment-method-types.ts","webpack:///./ClientApp/custom-elements/payment-method-types/payment-method-types.html","webpack:///./ClientApp/custom-elements/recaptcha-checkbox/recaptcha-checkbox.ts","webpack:///./ClientApp/custom-elements/recaptcha-checkbox/recaptcha-checkbox.html","webpack:///./ClientApp/custom-elements/wallet-list/wallet-list.ts","webpack:///./ClientApp/custom-elements/wallet-list/wallet-list.html","webpack:///./ClientApp/helpers/array-helper.ts","webpack:///./ClientApp/helpers/authorization-redirect-manager.ts","webpack:///./ClientApp/helpers/authorization-redirect-manager.spec.ts","webpack:///./ClientApp/helpers/coalesce.ts","webpack:///./ClientApp/helpers/currency-format.ts","webpack:///./ClientApp/helpers/date-format.ts","webpack:///./ClientApp/helpers/formatting-helper.ts","webpack:///./ClientApp/helpers/html-helper.ts","webpack:///./ClientApp/helpers/number-format.ts","webpack:///./ClientApp/helpers/phone-format.ts","webpack:///./ClientApp/helpers/pluralize.ts","webpack:///./ClientApp/helpers/post-login-route-manager.ts","webpack:///./ClientApp/helpers/sort.ts","webpack:///./ClientApp/helpers/string-helper.ts","webpack:///./ClientApp/helpers/text-filter.ts","webpack:///./ClientApp/helpers/trim.ts","webpack:///./ClientApp/helpers/utility.ts","webpack:///./ClientApp/helpers/uuid.ts","webpack:///./ClientApp/helpers/value-helper.ts","webpack:///./ClientApp/models/ach-token.ts","webpack:///./ClientApp/models/api-response.ts","webpack:///./ClientApp/models/autopay/autopay.ts","webpack:///./ClientApp/models/autopay/autopay-expiration-type.ts","webpack:///./ClientApp/models/autopay/autopay-settings.ts","webpack:///./ClientApp/models/autopay/index.ts","webpack:///./ClientApp/models/autopay/payment-method.ts","webpack:///./ClientApp/models/autopay/payment-method-type.ts","webpack:///./ClientApp/models/bank-account.ts","webpack:///./ClientApp/models/bucket.ts","webpack:///./ClientApp/models/business.ts","webpack:///./ClientApp/models/card-token.ts","webpack:///./ClientApp/models/carousel-item.ts","webpack:///./ClientApp/models/combined-installment-account-item.ts","webpack:///./ClientApp/models/contactInformation.ts","webpack:///./ClientApp/models/credit-card.ts","webpack:///./ClientApp/models/customer.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/apple-pay-line-item.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/apple-pay-payment-method-update.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/apple-pay-payment-request.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/apple-pay-settings.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/apple-pay-util.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/builders/apple-pay-line-item-builder.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/builders/apple-pay-payment-method-update-builder.ts","webpack:///./ClientApp/models/digital-wallet/apple-pay/builders/apple-pay-payment-request-builder.ts","webpack:///./ClientApp/models/digital-wallet/digital-wallet-payment-details.ts","webpack:///./ClientApp/models/digital-wallet/digital-wallet-payment-plan-details.ts","webpack:///./ClientApp/models/digital-wallet/digital-wallet-settings.ts","webpack:///./ClientApp/models/digital-wallet/digital-wallet-type.ts","webpack:///./ClientApp/models/digital-wallet/index.ts","webpack:///./ClientApp/models/features.ts","webpack:///./ClientApp/models/feeCalculationType.ts","webpack:///./ClientApp/models/feeCalculationValue.ts","webpack:///./ClientApp/models/hpfApi/calculate-fee-request.ts","webpack:///./ClientApp/models/hpfApi/calculate-fee-request-builder.ts","webpack:///./ClientApp/models/hpfApi/create-autopay-request.ts","webpack:///./ClientApp/models/hpfApi/digital-wallet/create-apple-pay-web-session-request.ts","webpack:///./ClientApp/models/hpfApi/index.ts","webpack:///./ClientApp/models/hpfApi/payment-fee-type.ts","webpack:///./ClientApp/models/hpfApi/update-autopay-request.ts","webpack:///./ClientApp/models/installment.ts","webpack:///./ClientApp/models/installment-frequency.ts","webpack:///./ClientApp/models/language.ts","webpack:///./ClientApp/models/merchant.ts","webpack:///./ClientApp/models/merchant-consumer-portal-fee-settings.ts","webpack:///./ClientApp/models/mfa/mfa-setup-details.ts","webpack:///./ClientApp/models/mfa/mfa-two-factor-method.ts","webpack:///./ClientApp/models/mfa/mfa-verification-code.ts","webpack:///./ClientApp/models/offer.ts","webpack:///./ClientApp/models/payment-account-display-name.ts","webpack:///./ClientApp/models/payment-history.ts","webpack:///./ClientApp/models/payment-method-type-options.ts","webpack:///./ClientApp/models/payment-plan-settings.ts","webpack:///./ClientApp/models/paymentPlanType.ts","webpack:///./ClientApp/models/portal.ts","webpack:///./ClientApp/models/portfolio.ts","webpack:///./ClientApp/models/recurring.ts","webpack:///./ClientApp/models/service-response.ts","webpack:///./ClientApp/models/single-payment/single-payment-receipt-route-settings.ts","webpack:///./ClientApp/models/single-payment/single-payment-route-settings.ts","webpack:///./ClientApp/models/sourcePayRazrApplication.ts","webpack:///./ClientApp/models/submit-digital-wallet-payment-request.ts","webpack:///./ClientApp/models/template-data.ts","webpack:///./ClientApp/models/update-ach-payment-model.ts","webpack:///./ClientApp/models/update-card-payment-model.ts","webpack:///./ClientApp/models/vertical-market.ts","webpack:///./ClientApp/pages/add-customer-notification-preferences/add-customer-notification-preferences.ts","webpack:///./ClientApp/pages/add-customer-notification-preferences/add-customer-notification-preferences.html","webpack:///./ClientApp/pages/add-remove-customer/add-remove-customer.ts","webpack:///./ClientApp/pages/add-remove-customer/add-remove-customer.html","webpack:///./ClientApp/pages/app.ts","webpack:///./ClientApp/pages/app.html","webpack:///./ClientApp/pages/autopay/autopay-receipt.ts","webpack:///./ClientApp/pages/autopay/autopay-receipt.html","webpack:///./ClientApp/pages/autopay/autopay.service.ts","webpack:///./ClientApp/pages/autopay/autopay.service.spec.ts","webpack:///./ClientApp/pages/autopay/cancel-autopay.dialog.ts","webpack:///./ClientApp/pages/autopay/cancel-autopay.dialog.html","webpack:///./ClientApp/pages/autopay/edit-autopay.ts","webpack:///./ClientApp/pages/autopay/edit-autopay.css","webpack:///./ClientApp/pages/autopay/edit-autopay.html","webpack:///./ClientApp/pages/autopay/edit-autopay.spec.ts","webpack:///./ClientApp/pages/autopay/setup-autopay.ts","webpack:///./ClientApp/pages/autopay/setup-autopay.css","webpack:///./ClientApp/pages/autopay/setup-autopay.html","webpack:///./ClientApp/pages/autopay/setup-autopay.spec.ts","webpack:///./ClientApp/pages/autopay/view-autopay.ts","webpack:///./ClientApp/pages/autopay/view-autopay.html","webpack:///./ClientApp/pages/base-page.ts","webpack:///./ClientApp/pages/contact-me/contact-me.ts","webpack:///./ClientApp/pages/contact-me/contact-me.css","webpack:///./ClientApp/pages/contact-me/contact-me.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/account-payment-cards.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/account-payment-cards.css","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/account-payment-cards.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/account-payment-cards.spec.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-autopay-edit.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-autopay-edit.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-autopay-setup.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-autopay-setup.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-installment-setup.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-installment-setup.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-installments-edit.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-installments-edit.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-negotiator.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-negotiator.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-pay-in-full.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-pay-in-full.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-recurring-edit.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-recurring-edit.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-recurring-setup.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-recurring-setup.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-single-payment.ts","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/card-single-payment.html","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/cards/cards.css","webpack:///./ClientApp/pages/customer-dashboard/account-payment-cards/selected-accounts-settings.ts","webpack:///./ClientApp/pages/customer-dashboard/customer-dashboard-index.ts","webpack:///./ClientApp/pages/customer-dashboard/customer-dashboard-index.css","webpack:///./ClientApp/pages/customer-dashboard/customer-dashboard-index.html","webpack:///./ClientApp/pages/customer-dashboard/dashboard-summary/dashboard-summary.ts","webpack:///./ClientApp/pages/customer-dashboard/dashboard-summary/dashboard-summary.css","webpack:///./ClientApp/pages/customer-dashboard/dashboard-summary/dashboard-summary.html","webpack:///./ClientApp/pages/error/error.ts","webpack:///./ClientApp/pages/error/error.css","webpack:///./ClientApp/pages/error/error.html","webpack:///./ClientApp/pages/ezpay/ezpay.ts","webpack:///./ClientApp/pages/ezpay/ezpay.css","webpack:///./ClientApp/pages/ezpay/ezpay.html","webpack:///./ClientApp/pages/ezpay/ezpay.spec.ts","webpack:///./ClientApp/pages/http-status/401.ts","webpack:///./ClientApp/pages/http-status/401.html","webpack:///./ClientApp/pages/http-status/404.ts","webpack:///./ClientApp/pages/http-status/404.html","webpack:///./ClientApp/pages/installments/cancel-installments.ts","webpack:///./ClientApp/pages/installments/cancel-installments.html","webpack:///./ClientApp/pages/installments/installment-receipt.ts","webpack:///./ClientApp/pages/installments/installment-receipt.html","webpack:///./ClientApp/pages/installments/installments-select-option/installments-select-option.ts","webpack:///./ClientApp/pages/installments/installments-select-option/installments-select-option.html","webpack:///./ClientApp/pages/installments/setup-installment.ts","webpack:///./ClientApp/pages/installments/setup-installment.css","webpack:///./ClientApp/pages/installments/setup-installment.html","webpack:///./ClientApp/pages/installments/setup-installment.spec.ts","webpack:///./ClientApp/pages/installments/view-installments.ts","webpack:///./ClientApp/pages/installments/view-installments.css","webpack:///./ClientApp/pages/installments/view-installments.html","webpack:///./ClientApp/pages/legal/disclosures.ts","webpack:///./ClientApp/pages/legal/disclosures.html","webpack:///./ClientApp/pages/legal/privacy-policy.ts","webpack:///./ClientApp/pages/legal/privacy-policy.html","webpack:///./ClientApp/pages/legal/terms.ts","webpack:///./ClientApp/pages/legal/terms.html","webpack:///./ClientApp/pages/login-register/change-password.ts","webpack:///./ClientApp/pages/login-register/change-password.html","webpack:///./ClientApp/pages/login-register/change-password.spec.ts","webpack:///./ClientApp/pages/login-register/forgot-password.ts","webpack:///./ClientApp/pages/login-register/forgot-password.html","webpack:///./ClientApp/pages/login-register/inactive.ts","webpack:///./ClientApp/pages/login-register/inactive.html","webpack:///./ClientApp/pages/login-register/login.ts","webpack:///./ClientApp/pages/login-register/login.css","webpack:///./ClientApp/pages/login-register/login.html","webpack:///./ClientApp/pages/login-register/login.spec.ts","webpack:///./ClientApp/pages/login-register/logout.ts","webpack:///./ClientApp/pages/login-register/logout.html","webpack:///./ClientApp/pages/login-register/portal-waiting.ts","webpack:///./ClientApp/pages/login-register/portal-waiting.html","webpack:///./ClientApp/pages/login-register/register.ts","webpack:///./ClientApp/pages/login-register/register.css","webpack:///./ClientApp/pages/login-register/register.html","webpack:///./ClientApp/pages/login-register/setup-primary-payment-method/setup-primary-payment-method.ts","webpack:///./ClientApp/pages/login-register/setup-primary-payment-method/setup-primary-payment-method.html","webpack:///./ClientApp/pages/login-register/sms-verification/sms-verification.ts","webpack:///./ClientApp/pages/login-register/sms-verification/sms-verification.css","webpack:///./ClientApp/pages/login-register/sms-verification/sms-verification.html","webpack:///./ClientApp/pages/messages/messages.ts","webpack:///./ClientApp/pages/messages/messages.css","webpack:///./ClientApp/pages/messages/messages.html","webpack:///./ClientApp/pages/messages/messages.spec.ts","webpack:///./ClientApp/pages/my-documents/my-documents.ts","webpack:///./ClientApp/pages/my-documents/my-documents.html","webpack:///./ClientApp/pages/my-documents/my-documents.spec.ts","webpack:///./ClientApp/pages/my-documents/view-pdf.dialog.ts","webpack:///./ClientApp/pages/my-documents/view-pdf.dialog.html","webpack:///./ClientApp/pages/my-wallet/add-payment-method/add-payment-method.ts","webpack:///./ClientApp/pages/my-wallet/add-payment-method/add-payment-method.css","webpack:///./ClientApp/pages/my-wallet/add-payment-method/add-payment-method.html","webpack:///./ClientApp/pages/my-wallet/add-payment-method/add-payment-method.spec.ts","webpack:///./ClientApp/pages/my-wallet/my-wallet.ts","webpack:///./ClientApp/pages/my-wallet/my-wallet.css","webpack:///./ClientApp/pages/my-wallet/my-wallet.html","webpack:///./ClientApp/pages/my-wallet/my-wallet.spec.ts","webpack:///./ClientApp/pages/negotiator/negotiator.ts","webpack:///./ClientApp/pages/negotiator/negotiator.css","webpack:///./ClientApp/pages/negotiator/negotiator.html","webpack:///./ClientApp/pages/payment-history/payment-history.ts","webpack:///./ClientApp/pages/payment-history/payment-history-receipt.ts","webpack:///./ClientApp/pages/payment-history/payment-history-receipt.html","webpack:///./ClientApp/pages/payment-history/payment-history.css","webpack:///./ClientApp/pages/payment-history/payment-history.html","webpack:///./ClientApp/pages/payment-history/payment-history.spec.ts","webpack:///./ClientApp/pages/portal.ts","webpack:///./ClientApp/pages/portal.html","webpack:///./ClientApp/pages/preferences/preferences.ts","webpack:///./ClientApp/pages/preferences/preferences.css","webpack:///./ClientApp/pages/preferences/preferences.html","webpack:///./ClientApp/pages/preferences/preferences.spec.ts","webpack:///./ClientApp/pages/preferred-language/preferred-language.ts","webpack:///./ClientApp/pages/preferred-language/preferred-language.html","webpack:///./ClientApp/pages/recurring/cancel-recurring.dialog.ts","webpack:///./ClientApp/pages/recurring/cancel-recurring.dialog.html","webpack:///./ClientApp/pages/recurring/recurring-receipt.ts","webpack:///./ClientApp/pages/recurring/recurring-receipt.html","webpack:///./ClientApp/pages/recurring/setup-recurring.ts","webpack:///./ClientApp/pages/recurring/setup-recurring.html","webpack:///./ClientApp/pages/recurring/setup-recurring.spec.ts","webpack:///./ClientApp/pages/recurring/view-recurring.ts","webpack:///./ClientApp/pages/recurring/view-recurring.css","webpack:///./ClientApp/pages/recurring/view-recurring.html","webpack:///./ClientApp/pages/scheduled-payments/cancel-single-future.ts","webpack:///./ClientApp/pages/scheduled-payments/cancel-single-future.css","webpack:///./ClientApp/pages/scheduled-payments/cancel-single-future.html","webpack:///./ClientApp/pages/scheduled-payments/payment.ts","webpack:///./ClientApp/pages/scheduled-payments/scheduled-payments.ts","webpack:///./ClientApp/pages/scheduled-payments/scheduled-payments.css","webpack:///./ClientApp/pages/scheduled-payments/scheduled-payments.html","webpack:///./ClientApp/pages/scheduled-payments/scheduled-payments.spec.ts","webpack:///./ClientApp/pages/secure-index.ts","webpack:///./ClientApp/pages/secure-index.html","webpack:///./ClientApp/pages/security-settings/security-settings.ts","webpack:///./ClientApp/pages/security-settings/security-settings.css","webpack:///./ClientApp/pages/security-settings/security-settings.html","webpack:///./ClientApp/pages/single-payment/single-payment.ts","webpack:///./ClientApp/pages/single-payment/single-payment-fee-summary/single-payment-fee-summary.ts","webpack:///./ClientApp/pages/single-payment/single-payment-fee-summary/single-payment-fee-summary.css","webpack:///./ClientApp/pages/single-payment/single-payment-fee-summary/single-payment-fee-summary.html","webpack:///./ClientApp/pages/single-payment/single-payment-receipt.ts","webpack:///./ClientApp/pages/single-payment/single-payment-receipt.html","webpack:///./ClientApp/pages/single-payment/single-payment.css","webpack:///./ClientApp/pages/single-payment/single-payment.html","webpack:///./ClientApp/pages/single-payment/single-payment.spec.ts","webpack:///./ClientApp/pages/skip-plan-payments/skip-plan-payments.ts","webpack:///./ClientApp/pages/skip-plan-payments/skip-plan-payments.css","webpack:///./ClientApp/pages/skip-plan-payments/skip-plan-payments.html","webpack:///./ClientApp/services/base-service.ts","webpack:///./ClientApp/services/feature-service.ts","webpack:///./ClientApp/services/global-state.ts","webpack:///./ClientApp/services/hpf-carousel.service.ts","webpack:///./ClientApp/services/hpf-consumer.service.ts","webpack:///./ClientApp/services/hpf-customer.service.ts","webpack:///./ClientApp/services/hpf-digital-wallet.service.ts","webpack:///./ClientApp/services/hpf-fee.service.ts","webpack:///./ClientApp/services/hpf-payment-method.service.ts","webpack:///./ClientApp/services/hpf-payment-plan.service.ts","webpack:///./ClientApp/services/hpf-transaction-service.ts","webpack:///./ClientApp/services/hpfApi.ts","webpack:///./ClientApp/services/hpfApi.spec.ts","webpack:///./ClientApp/services/http-injector.ts","webpack:///./ClientApp/services/installment-calculator.ts","webpack:///./ClientApp/services/installment-calculator.spec.ts","webpack:///./ClientApp/services/messages.service.ts","webpack:///./ClientApp/services/messages.service.spec.ts","webpack:///./ClientApp/services/payrazr.ts","webpack:///./ClientApp/services/rest-service-client.ts","webpack:///./ClientApp/services/session-manager.ts","webpack:///./ClientApp/services/session-manager.spec.ts","webpack:///./ClientApp/services/template-service.ts","webpack:///./ClientApp/services/validation-helpers.ts","webpack:///./ClientApp/services/validation-observer.ts","webpack:///./ClientApp/smart/components/check-box/check-box.ts","webpack:///./ClientApp/smart/components/check-box/check-box.css","webpack:///./ClientApp/smart/components/check-box/check-box.html","webpack:///./ClientApp/smart/components/date-picker/date-picker.ts","webpack:///./ClientApp/smart/components/date-picker/date-picker.css","webpack:///./ClientApp/smart/components/date-picker/date-picker.html","webpack:///./ClientApp/smart/components/payment-item-table/column-filters/only-show-selected-in-table.ts","webpack:///./ClientApp/smart/components/payment-item-table/payment-item-service.ts","webpack:///./ClientApp/smart/components/payment-item-table/payment-item-table.ts","webpack:///./ClientApp/smart/components/payment-item-table/payment-item-table.css","webpack:///./ClientApp/smart/components/payment-item-table/payment-item-table.html","webpack:///./ClientApp/smart/components/payment-item-table/persistence/payment-item-table-settings.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/component-validation-result.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rule-validation-result.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/date-less-than-45-days-out-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/date-today-or-greater-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/entered-amount-greater-than-zero-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-account-min-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-portal-and-portfolio-max-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-portal-and-portfolio-min-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-portal-max-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-portal-min-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-portfolio-max-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/meets-portfolio-min-amount-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/select-at-least-one-item-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/valid-date-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/verify-over-payments-allowed-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/verify-short-pay-reason-comment-rule.ts","webpack:///./ClientApp/smart/components/payment-item-table/validation/rules/verify-short-payments-allowed-rule.ts","webpack:///./ClientApp/smart/components/short-pay-reason/short-pay-reason.ts","webpack:///./ClientApp/smart/components/short-pay-reason/short-pay-reason.css","webpack:///./ClientApp/smart/components/short-pay-reason/short-pay-reason.html","webpack:///./ClientApp/smart/components/statement-download-link/statement-download-link.ts","webpack:///./ClientApp/smart/components/statement-download-link/statement-download-link.css","webpack:///./ClientApp/smart/components/statement-download-link/statement-download-link.html","webpack:///./ClientApp/smart/components/table-header-controls/table-header-controls.ts","webpack:///./ClientApp/smart/components/table-header-controls/table-header-controls.html","webpack:///./ClientApp/smart/helpers/json-serializer.ts","webpack:///./ClientApp/smart/helpers/number-helper.ts","webpack:///./ClientApp/smart/helpers/object-helper.ts","webpack:///./ClientApp/smart/helpers/string-helper.ts","webpack:///./ClientApp/smart/models/account-payment-item.ts","webpack:///./ClientApp/smart/models/api-response.ts","webpack:///./ClientApp/smart/models/enums/index.ts","webpack:///./ClientApp/smart/models/enums/payment-item-initial-amount.ts","webpack:///./ClientApp/smart/models/enums/payment-item-type.ts","webpack:///./ClientApp/smart/models/enums/transaction-balance-payment-type.ts","webpack:///./ClientApp/smart/models/invoice-payment-item.ts","webpack:///./ClientApp/smart/models/payment-item.ts","webpack:///./ClientApp/smart/models/payment-item-discount-balance-range.ts","webpack:///./ClientApp/smart/models/payment-item-table-configuration.ts","webpack:///./ClientApp/smart/models/payment-limit-settings.ts","webpack:///./ClientApp/smart/models/service-response.ts","webpack:///./ClientApp/smart/services/base-service.ts","webpack:///./ClientApp/smart/services/logger.ts","webpack:///./ClientApp/smart/services/rest-service-client.ts","webpack:///./ClientApp/smart/value-converters/currency-format.ts","webpack:///./ClientApp/smart/value-converters/date-format.ts","webpack:///./ClientApp/test.boot.ts"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,yCAAyC,wGAAwG;QACjJ;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wD;;;;;;;;;;;AC3UA,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kF;;;;;;;;;;;ACtBA,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","file":"app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"vendors_polyfills-core-js\":\"vendors_polyfills-core-js\",\"vendors_polyfills-dom\":\"vendors_polyfills-dom\"}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"dist/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"vendors_app\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var map = {\n\t\"./boot.ts\": \"boot\",\n\t\"./components/account-summary/account-summary.ts\": \"components/account-summary/account-summary\",\n\t\"./components/bank-account-form/bank-account-form.ts\": \"components/bank-account-form/bank-account-form\",\n\t\"./components/banner-image/banner-image.ts\": \"components/banner-image/banner-image\",\n\t\"./components/bootstrap-tooltip-attribute/bootstrap-tooltip-attribute.ts\": \"components/bootstrap-tooltip-attribute/bootstrap-tooltip-attribute\",\n\t\"./components/bulletin/bulletin.ts\": \"components/bulletin/bulletin\",\n\t\"./components/card-logo/card-logo.ts\": \"components/card-logo/card-logo\",\n\t\"./components/confirmation/confirmation.spec.ts\": \"components/confirmation/confirmation.spec\",\n\t\"./components/confirmation/confirmation.ts\": \"components/confirmation/confirmation\",\n\t\"./components/confirmation/digital-wallets/apple-pay/apple-pay-spec.ts\": \"components/confirmation/digital-wallets/apple-pay/apple-pay-spec\",\n\t\"./components/confirmation/digital-wallets/apple-pay/apple-pay-validator.ts\": \"components/confirmation/digital-wallets/apple-pay/apple-pay-validator\",\n\t\"./components/confirmation/digital-wallets/apple-pay/apple-pay.ts\": \"components/confirmation/digital-wallets/apple-pay/apple-pay\",\n\t\"./components/credit-card-form/credit-card-form.ts\": \"components/credit-card-form/credit-card-form\",\n\t\"./components/custom-prompt/custom-prompt.ts\": \"components/custom-prompt/custom-prompt\",\n\t\"./components/customer-account-lookup-form/customer-account-lookup-form.ts\": \"components/customer-account-lookup-form/customer-account-lookup-form\",\n\t\"./components/customer-account-number/customer-account-number.ts\": \"components/customer-account-number/customer-account-number\",\n\t\"./components/customer-lookup/customer-lookup.ts\": \"components/customer-lookup/customer-lookup\",\n\t\"./components/datepicker/datepicker.ts\": \"components/datepicker/datepicker\",\n\t\"./components/datepicker/duet-date-picker.ts\": \"components/datepicker/duet-date-picker\",\n\t\"./components/disclosures/disclosures.ts\": \"components/disclosures/disclosures\",\n\t\"./components/fee-summary-box/fee-summary-box.ts\": \"components/fee-summary-box/fee-summary-box\",\n\t\"./components/grid-remove-customer/grid-remove-customer.ts\": \"components/grid-remove-customer/grid-remove-customer\",\n\t\"./components/legal-dialog/legal-disclosures.dialog.ts\": \"components/legal-dialog/legal-disclosures.dialog\",\n\t\"./components/legal-dialog/legal-privacypolicy.dialog.ts\": \"components/legal-dialog/legal-privacypolicy.dialog\",\n\t\"./components/legal-dialog/legal-terms.dialog.ts\": \"components/legal-dialog/legal-terms.dialog\",\n\t\"./components/logo-image/logo-image.ts\": \"components/logo-image/logo-image\",\n\t\"./components/mfa/mfa-verification.spec.ts\": \"components/mfa/mfa-verification.spec\",\n\t\"./components/mfa/mfa-verification.ts\": \"components/mfa/mfa-verification\",\n\t\"./components/nav-bar/nav-bar.spec.ts\": \"components/nav-bar/nav-bar.spec\",\n\t\"./components/nav-bar/nav-bar.ts\": \"components/nav-bar/nav-bar\",\n\t\"./components/payment-form/card-form/card-form.ts\": \"components/payment-form/card-form/card-form\",\n\t\"./components/payment-form/card-form/cards-accepted/cards-accepted.ts\": \"components/payment-form/card-form/cards-accepted/cards-accepted\",\n\t\"./components/payment-form/check-form/check-form.ts\": \"components/payment-form/check-form/check-form\",\n\t\"./components/payment-form/custom-fields/custom-fields.ts\": \"components/payment-form/custom-fields/custom-fields\",\n\t\"./components/payment-form/payment-form.spec.ts\": \"components/payment-form/payment-form.spec\",\n\t\"./components/payment-form/payment-form.ts\": \"components/payment-form/payment-form\",\n\t\"./components/payment-form/wallet-form/wallet-form.ts\": \"components/payment-form/wallet-form/wallet-form\",\n\t\"./components/plan-summary/plan-summary.ts\": \"components/plan-summary/plan-summary\",\n\t\"./components/receipt/email-receipt-sender/email-receipt-sender.ts\": \"components/receipt/email-receipt-sender/email-receipt-sender\",\n\t\"./components/receipt/receipt.spec.ts\": \"components/receipt/receipt.spec\",\n\t\"./components/receipt/receipt.ts\": \"components/receipt/receipt\",\n\t\"./components/select-bucket/select-bucket.ts\": \"components/select-bucket/select-bucket\",\n\t\"./components/select-merchant/select-merchant.ts\": \"components/select-merchant/select-merchant\",\n\t\"./components/spinner/spinner.ts\": \"components/spinner/spinner\",\n\t\"./components/terms-conditions/terms-conditions.ts\": \"components/terms-conditions/terms-conditions\",\n\t\"./components/tiered-fees-display/tiered-fees-display.ts\": \"components/tiered-fees-display/tiered-fees-display\",\n\t\"./components/validation-summary/validation-summary.ts\": \"components/validation-summary/validation-summary\",\n\t\"./components/widgets/list-box/list-box.ts\": \"components/widgets/list-box/list-box\",\n\t\"./config/config.ts\": \"config/config\",\n\t\"./custom-elements/bank-account-number/bank-account-number.ts\": \"custom-elements/bank-account-number/bank-account-number\",\n\t\"./custom-elements/bank-account-type/bank-account-type.ts\": \"custom-elements/bank-account-type/bank-account-type\",\n\t\"./custom-elements/bank-routing-number/bank-routing-number.ts\": \"custom-elements/bank-routing-number/bank-routing-number\",\n\t\"./custom-elements/billing-first-name/billing-first-name.ts\": \"custom-elements/billing-first-name/billing-first-name\",\n\t\"./custom-elements/billing-last-name/billing-last-name.ts\": \"custom-elements/billing-last-name/billing-last-name\",\n\t\"./custom-elements/billing-name/billing-name.ts\": \"custom-elements/billing-name/billing-name\",\n\t\"./custom-elements/billing-zipcode/billing-zipcode.ts\": \"custom-elements/billing-zipcode/billing-zipcode\",\n\t\"./custom-elements/credit-card-expiration-V2/credit-card-expiration.ts\": \"custom-elements/credit-card-expiration-V2/credit-card-expiration\",\n\t\"./custom-elements/credit-card-expiration/credit-card-expiration.ts\": \"custom-elements/credit-card-expiration/credit-card-expiration\",\n\t\"./custom-elements/credit-card-number/credit-card-number.ts\": \"custom-elements/credit-card-number/credit-card-number\",\n\t\"./custom-elements/payment-method-types/payment-method-types.ts\": \"custom-elements/payment-method-types/payment-method-types\",\n\t\"./custom-elements/recaptcha-checkbox/recaptcha-checkbox.ts\": \"custom-elements/recaptcha-checkbox/recaptcha-checkbox\",\n\t\"./custom-elements/wallet-list/wallet-list.ts\": \"custom-elements/wallet-list/wallet-list\",\n\t\"./helpers/array-helper.ts\": \"helpers/array-helper\",\n\t\"./helpers/authorization-redirect-manager.spec.ts\": \"helpers/authorization-redirect-manager.spec\",\n\t\"./helpers/authorization-redirect-manager.ts\": \"helpers/authorization-redirect-manager\",\n\t\"./helpers/coalesce.ts\": \"helpers/coalesce\",\n\t\"./helpers/currency-format.ts\": \"helpers/currency-format\",\n\t\"./helpers/date-format.ts\": \"helpers/date-format\",\n\t\"./helpers/formatting-helper.ts\": \"helpers/formatting-helper\",\n\t\"./helpers/html-helper.ts\": \"helpers/html-helper\",\n\t\"./helpers/number-format.ts\": \"helpers/number-format\",\n\t\"./helpers/phone-format.ts\": \"helpers/phone-format\",\n\t\"./helpers/pluralize.ts\": \"helpers/pluralize\",\n\t\"./helpers/post-login-route-manager.ts\": \"helpers/post-login-route-manager\",\n\t\"./helpers/sort.ts\": \"helpers/sort\",\n\t\"./helpers/string-helper.ts\": \"helpers/string-helper\",\n\t\"./helpers/text-filter.ts\": \"helpers/text-filter\",\n\t\"./helpers/trim.ts\": \"helpers/trim\",\n\t\"./helpers/utility.ts\": \"helpers/utility\",\n\t\"./helpers/uuid.ts\": \"helpers/uuid\",\n\t\"./helpers/value-helper.ts\": \"helpers/value-helper\",\n\t\"./interfaces/IApiResponse.ts\": \"interfaces/IApiResponse\",\n\t\"./interfaces/IServiceResponse.ts\": \"interfaces/IServiceResponse\",\n\t\"./models/ach-token.ts\": \"models/ach-token\",\n\t\"./models/api-response.ts\": \"models/api-response\",\n\t\"./models/autopay/autopay-expiration-type.ts\": \"models/autopay/autopay-expiration-type\",\n\t\"./models/autopay/autopay-settings.ts\": \"models/autopay/autopay-settings\",\n\t\"./models/autopay/autopay.ts\": \"models/autopay/autopay\",\n\t\"./models/autopay/index.ts\": \"models/autopay/index\",\n\t\"./models/autopay/payment-method-type.ts\": \"models/autopay/payment-method-type\",\n\t\"./models/autopay/payment-method.ts\": \"models/autopay/payment-method\",\n\t\"./models/bank-account.ts\": \"models/bank-account\",\n\t\"./models/bucket.ts\": \"models/bucket\",\n\t\"./models/business.ts\": \"models/business\",\n\t\"./models/card-token.ts\": \"models/card-token\",\n\t\"./models/carousel-item.ts\": \"models/carousel-item\",\n\t\"./models/combined-installment-account-item.ts\": \"models/combined-installment-account-item\",\n\t\"./models/contactInformation.ts\": \"models/contactInformation\",\n\t\"./models/credit-card.ts\": \"models/credit-card\",\n\t\"./models/customer.ts\": \"models/customer\",\n\t\"./models/digital-wallet/apple-pay/apple-pay-js-v14.ts\": \"models/digital-wallet/apple-pay/apple-pay-js-v14\",\n\t\"./models/digital-wallet/apple-pay/apple-pay-line-item.ts\": \"models/digital-wallet/apple-pay/apple-pay-line-item\",\n\t\"./models/digital-wallet/apple-pay/apple-pay-payment-method-update.ts\": \"models/digital-wallet/apple-pay/apple-pay-payment-method-update\",\n\t\"./models/digital-wallet/apple-pay/apple-pay-payment-request.ts\": \"models/digital-wallet/apple-pay/apple-pay-payment-request\",\n\t\"./models/digital-wallet/apple-pay/apple-pay-settings.ts\": \"models/digital-wallet/apple-pay/apple-pay-settings\",\n\t\"./models/digital-wallet/apple-pay/apple-pay-util.ts\": \"models/digital-wallet/apple-pay/apple-pay-util\",\n\t\"./models/digital-wallet/apple-pay/builders/apple-pay-line-item-builder.ts\": \"models/digital-wallet/apple-pay/builders/apple-pay-line-item-builder\",\n\t\"./models/digital-wallet/apple-pay/builders/apple-pay-payment-method-update-builder.ts\": \"models/digital-wallet/apple-pay/builders/apple-pay-payment-method-update-builder\",\n\t\"./models/digital-wallet/apple-pay/builders/apple-pay-payment-request-builder.ts\": \"models/digital-wallet/apple-pay/builders/apple-pay-payment-request-builder\",\n\t\"./models/digital-wallet/digital-wallet-payment-details.ts\": \"models/digital-wallet/digital-wallet-payment-details\",\n\t\"./models/digital-wallet/digital-wallet-payment-plan-details.ts\": \"models/digital-wallet/digital-wallet-payment-plan-details\",\n\t\"./models/digital-wallet/digital-wallet-settings.ts\": \"models/digital-wallet/digital-wallet-settings\",\n\t\"./models/digital-wallet/digital-wallet-type.ts\": \"models/digital-wallet/digital-wallet-type\",\n\t\"./models/digital-wallet/index.ts\": \"models/digital-wallet/index\",\n\t\"./models/features.ts\": \"models/features\",\n\t\"./models/feeCalculationType.ts\": \"models/feeCalculationType\",\n\t\"./models/feeCalculationValue.ts\": \"models/feeCalculationValue\",\n\t\"./models/hpfApi/calculate-fee-request-builder.ts\": \"models/hpfApi/calculate-fee-request-builder\",\n\t\"./models/hpfApi/calculate-fee-request.ts\": \"models/hpfApi/calculate-fee-request\",\n\t\"./models/hpfApi/create-autopay-request.ts\": \"models/hpfApi/create-autopay-request\",\n\t\"./models/hpfApi/digital-wallet/create-apple-pay-web-session-request.ts\": \"models/hpfApi/digital-wallet/create-apple-pay-web-session-request\",\n\t\"./models/hpfApi/index.ts\": \"models/hpfApi/index\",\n\t\"./models/hpfApi/payment-fee-type.ts\": \"models/hpfApi/payment-fee-type\",\n\t\"./models/hpfApi/update-autopay-request.ts\": \"models/hpfApi/update-autopay-request\",\n\t\"./models/installment-frequency.ts\": \"models/installment-frequency\",\n\t\"./models/installment.ts\": \"models/installment\",\n\t\"./models/language.ts\": \"models/language\",\n\t\"./models/merchant-consumer-portal-fee-settings.ts\": \"models/merchant-consumer-portal-fee-settings\",\n\t\"./models/merchant.ts\": \"models/merchant\",\n\t\"./models/mfa/mfa-setup-details.ts\": \"models/mfa/mfa-setup-details\",\n\t\"./models/mfa/mfa-two-factor-method.ts\": \"models/mfa/mfa-two-factor-method\",\n\t\"./models/mfa/mfa-verification-code.ts\": \"models/mfa/mfa-verification-code\",\n\t\"./models/offer.ts\": \"models/offer\",\n\t\"./models/payment-account-display-name.ts\": \"models/payment-account-display-name\",\n\t\"./models/payment-history.ts\": \"models/payment-history\",\n\t\"./models/payment-method-type-options.ts\": \"models/payment-method-type-options\",\n\t\"./models/payment-plan-settings.ts\": \"models/payment-plan-settings\",\n\t\"./models/paymentPlanType.ts\": \"models/paymentPlanType\",\n\t\"./models/portal.ts\": \"models/portal\",\n\t\"./models/portfolio.ts\": \"models/portfolio\",\n\t\"./models/recurring.ts\": \"models/recurring\",\n\t\"./models/service-response.ts\": \"models/service-response\",\n\t\"./models/single-payment/single-payment-receipt-route-settings.ts\": \"models/single-payment/single-payment-receipt-route-settings\",\n\t\"./models/single-payment/single-payment-route-settings.ts\": \"models/single-payment/single-payment-route-settings\",\n\t\"./models/sourcePayRazrApplication.ts\": \"models/sourcePayRazrApplication\",\n\t\"./models/submit-digital-wallet-payment-request.ts\": \"models/submit-digital-wallet-payment-request\",\n\t\"./models/template-data.ts\": \"models/template-data\",\n\t\"./models/update-ach-payment-model.ts\": \"models/update-ach-payment-model\",\n\t\"./models/update-card-payment-model.ts\": \"models/update-card-payment-model\",\n\t\"./models/vertical-market.ts\": \"models/vertical-market\",\n\t\"./pages/add-customer-notification-preferences/add-customer-notification-preferences.ts\": \"pages/add-customer-notification-preferences/add-customer-notification-preferences\",\n\t\"./pages/add-remove-customer/add-remove-customer.ts\": \"pages/add-remove-customer/add-remove-customer\",\n\t\"./pages/app.ts\": \"pages/app\",\n\t\"./pages/autopay/autopay-receipt.ts\": \"pages/autopay/autopay-receipt\",\n\t\"./pages/autopay/autopay.service.spec.ts\": \"pages/autopay/autopay.service.spec\",\n\t\"./pages/autopay/autopay.service.ts\": \"pages/autopay/autopay.service\",\n\t\"./pages/autopay/cancel-autopay.dialog.ts\": \"pages/autopay/cancel-autopay.dialog\",\n\t\"./pages/autopay/edit-autopay.spec.ts\": \"pages/autopay/edit-autopay.spec\",\n\t\"./pages/autopay/edit-autopay.ts\": \"pages/autopay/edit-autopay\",\n\t\"./pages/autopay/setup-autopay.spec.ts\": \"pages/autopay/setup-autopay.spec\",\n\t\"./pages/autopay/setup-autopay.ts\": \"pages/autopay/setup-autopay\",\n\t\"./pages/autopay/view-autopay.ts\": \"pages/autopay/view-autopay\",\n\t\"./pages/base-page.ts\": \"pages/base-page\",\n\t\"./pages/contact-me/contact-me.ts\": \"pages/contact-me/contact-me\",\n\t\"./pages/customer-dashboard/account-payment-cards/account-payment-cards.spec.ts\": \"pages/customer-dashboard/account-payment-cards/account-payment-cards.spec\",\n\t\"./pages/customer-dashboard/account-payment-cards/account-payment-cards.ts\": \"pages/customer-dashboard/account-payment-cards/account-payment-cards\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-autopay-edit.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-autopay-edit\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-autopay-setup.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-autopay-setup\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-installment-setup.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-installment-setup\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-installments-edit.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-installments-edit\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-negotiator.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-negotiator\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-pay-in-full.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-pay-in-full\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-recurring-edit.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-recurring-edit\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-recurring-setup.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-recurring-setup\",\n\t\"./pages/customer-dashboard/account-payment-cards/cards/card-single-payment.ts\": \"pages/customer-dashboard/account-payment-cards/cards/card-single-payment\",\n\t\"./pages/customer-dashboard/account-payment-cards/selected-accounts-settings.ts\": \"pages/customer-dashboard/account-payment-cards/selected-accounts-settings\",\n\t\"./pages/customer-dashboard/customer-dashboard-index.ts\": \"pages/customer-dashboard/customer-dashboard-index\",\n\t\"./pages/customer-dashboard/dashboard-summary/dashboard-summary.ts\": \"pages/customer-dashboard/dashboard-summary/dashboard-summary\",\n\t\"./pages/error/error.ts\": \"pages/error/error\",\n\t\"./pages/ezpay/ezpay.spec.ts\": \"pages/ezpay/ezpay.spec\",\n\t\"./pages/ezpay/ezpay.ts\": \"pages/ezpay/ezpay\",\n\t\"./pages/http-status/401.ts\": \"pages/http-status/401\",\n\t\"./pages/http-status/404.ts\": \"pages/http-status/404\",\n\t\"./pages/installments/cancel-installments.ts\": \"pages/installments/cancel-installments\",\n\t\"./pages/installments/installment-receipt.ts\": \"pages/installments/installment-receipt\",\n\t\"./pages/installments/installments-select-option/installments-select-option.ts\": \"pages/installments/installments-select-option/installments-select-option\",\n\t\"./pages/installments/setup-installment.spec.ts\": \"pages/installments/setup-installment.spec\",\n\t\"./pages/installments/setup-installment.ts\": \"pages/installments/setup-installment\",\n\t\"./pages/installments/view-installments.ts\": \"pages/installments/view-installments\",\n\t\"./pages/legal/disclosures.ts\": \"pages/legal/disclosures\",\n\t\"./pages/legal/privacy-policy.ts\": \"pages/legal/privacy-policy\",\n\t\"./pages/legal/terms.ts\": \"pages/legal/terms\",\n\t\"./pages/login-register/change-password.spec.ts\": \"pages/login-register/change-password.spec\",\n\t\"./pages/login-register/change-password.ts\": \"pages/login-register/change-password\",\n\t\"./pages/login-register/forgot-password.ts\": \"pages/login-register/forgot-password\",\n\t\"./pages/login-register/inactive.ts\": \"pages/login-register/inactive\",\n\t\"./pages/login-register/login.spec.ts\": \"pages/login-register/login.spec\",\n\t\"./pages/login-register/login.ts\": \"pages/login-register/login\",\n\t\"./pages/login-register/logout.ts\": \"pages/login-register/logout\",\n\t\"./pages/login-register/portal-waiting.ts\": \"pages/login-register/portal-waiting\",\n\t\"./pages/login-register/register.ts\": \"pages/login-register/register\",\n\t\"./pages/login-register/setup-primary-payment-method/setup-primary-payment-method.ts\": \"pages/login-register/setup-primary-payment-method/setup-primary-payment-method\",\n\t\"./pages/login-register/sms-verification/sms-verification.ts\": \"pages/login-register/sms-verification/sms-verification\",\n\t\"./pages/messages/messages.spec.ts\": \"pages/messages/messages.spec\",\n\t\"./pages/messages/messages.ts\": \"pages/messages/messages\",\n\t\"./pages/my-documents/my-documents.spec.ts\": \"pages/my-documents/my-documents.spec\",\n\t\"./pages/my-documents/my-documents.ts\": \"pages/my-documents/my-documents\",\n\t\"./pages/my-documents/view-pdf.dialog.ts\": \"pages/my-documents/view-pdf.dialog\",\n\t\"./pages/my-wallet/add-payment-method/add-payment-method.spec.ts\": \"pages/my-wallet/add-payment-method/add-payment-method.spec\",\n\t\"./pages/my-wallet/add-payment-method/add-payment-method.ts\": \"pages/my-wallet/add-payment-method/add-payment-method\",\n\t\"./pages/my-wallet/my-wallet.spec.ts\": \"pages/my-wallet/my-wallet.spec\",\n\t\"./pages/my-wallet/my-wallet.ts\": \"pages/my-wallet/my-wallet\",\n\t\"./pages/negotiator/negotiator.ts\": \"pages/negotiator/negotiator\",\n\t\"./pages/payment-history/payment-history-receipt.ts\": \"pages/payment-history/payment-history-receipt\",\n\t\"./pages/payment-history/payment-history.spec.ts\": \"pages/payment-history/payment-history.spec\",\n\t\"./pages/payment-history/payment-history.ts\": \"pages/payment-history/payment-history\",\n\t\"./pages/portal.ts\": \"pages/portal\",\n\t\"./pages/preferences/preferences.spec.ts\": \"pages/preferences/preferences.spec\",\n\t\"./pages/preferences/preferences.ts\": \"pages/preferences/preferences\",\n\t\"./pages/preferred-language/preferred-language.ts\": \"pages/preferred-language/preferred-language\",\n\t\"./pages/recurring/cancel-recurring.dialog.ts\": \"pages/recurring/cancel-recurring.dialog\",\n\t\"./pages/recurring/recurring-receipt.ts\": \"pages/recurring/recurring-receipt\",\n\t\"./pages/recurring/setup-recurring.spec.ts\": \"pages/recurring/setup-recurring.spec\",\n\t\"./pages/recurring/setup-recurring.ts\": \"pages/recurring/setup-recurring\",\n\t\"./pages/recurring/view-recurring.ts\": \"pages/recurring/view-recurring\",\n\t\"./pages/scheduled-payments/cancel-single-future.ts\": \"pages/scheduled-payments/cancel-single-future\",\n\t\"./pages/scheduled-payments/payment.ts\": \"pages/scheduled-payments/payment\",\n\t\"./pages/scheduled-payments/scheduled-payments.spec.ts\": \"pages/scheduled-payments/scheduled-payments.spec\",\n\t\"./pages/scheduled-payments/scheduled-payments.ts\": \"pages/scheduled-payments/scheduled-payments\",\n\t\"./pages/secure-index.ts\": \"pages/secure-index\",\n\t\"./pages/security-settings/security-settings.ts\": \"pages/security-settings/security-settings\",\n\t\"./pages/single-payment/single-payment-fee-summary/single-payment-fee-summary.ts\": \"pages/single-payment/single-payment-fee-summary/single-payment-fee-summary\",\n\t\"./pages/single-payment/single-payment-receipt.ts\": \"pages/single-payment/single-payment-receipt\",\n\t\"./pages/single-payment/single-payment.spec.ts\": \"pages/single-payment/single-payment.spec\",\n\t\"./pages/single-payment/single-payment.ts\": \"pages/single-payment/single-payment\",\n\t\"./pages/skip-plan-payments/skip-plan-payments.ts\": \"pages/skip-plan-payments/skip-plan-payments\",\n\t\"./services/base-service.ts\": \"services/base-service\",\n\t\"./services/feature-service.ts\": \"services/feature-service\",\n\t\"./services/global-state.ts\": \"services/global-state\",\n\t\"./services/hpf-carousel.service.ts\": \"services/hpf-carousel.service\",\n\t\"./services/hpf-consumer.service.ts\": \"services/hpf-consumer.service\",\n\t\"./services/hpf-customer.service.ts\": \"services/hpf-customer.service\",\n\t\"./services/hpf-digital-wallet.service.ts\": \"services/hpf-digital-wallet.service\",\n\t\"./services/hpf-fee.service.ts\": \"services/hpf-fee.service\",\n\t\"./services/hpf-payment-method.service.ts\": \"services/hpf-payment-method.service\",\n\t\"./services/hpf-payment-plan.service.ts\": \"services/hpf-payment-plan.service\",\n\t\"./services/hpf-transaction-service.ts\": \"services/hpf-transaction-service\",\n\t\"./services/hpfApi.spec.ts\": \"services/hpfApi.spec\",\n\t\"./services/hpfApi.ts\": \"services/hpfApi\",\n\t\"./services/http-injector.ts\": \"services/http-injector\",\n\t\"./services/installment-calculator.spec.ts\": \"services/installment-calculator.spec\",\n\t\"./services/installment-calculator.ts\": \"services/installment-calculator\",\n\t\"./services/messages.service.spec.ts\": \"services/messages.service.spec\",\n\t\"./services/messages.service.ts\": \"services/messages.service\",\n\t\"./services/payrazr.ts\": \"services/payrazr\",\n\t\"./services/rest-service-client.ts\": \"services/rest-service-client\",\n\t\"./services/session-manager.spec.ts\": \"services/session-manager.spec\",\n\t\"./services/session-manager.ts\": \"services/session-manager\",\n\t\"./services/template-service.ts\": \"services/template-service\",\n\t\"./services/validation-helpers.ts\": \"services/validation-helpers\",\n\t\"./services/validation-observer.ts\": \"services/validation-observer\",\n\t\"./smart/components/check-box/check-box.ts\": \"smart/components/check-box/check-box\",\n\t\"./smart/components/date-picker/date-picker.ts\": \"smart/components/date-picker/date-picker\",\n\t\"./smart/components/payment-item-table/column-filters/only-show-selected-in-table.ts\": \"smart/components/payment-item-table/column-filters/only-show-selected-in-table\",\n\t\"./smart/components/payment-item-table/payment-item-service.ts\": \"smart/components/payment-item-table/payment-item-service\",\n\t\"./smart/components/payment-item-table/payment-item-table.ts\": \"smart/components/payment-item-table/payment-item-table\",\n\t\"./smart/components/payment-item-table/persistence/payment-item-table-settings.ts\": \"smart/components/payment-item-table/persistence/payment-item-table-settings\",\n\t\"./smart/components/payment-item-table/validation/component-validation-result.ts\": \"smart/components/payment-item-table/validation/component-validation-result\",\n\t\"./smart/components/payment-item-table/validation/i-validation-rule.ts\": \"smart/components/payment-item-table/validation/i-validation-rule\",\n\t\"./smart/components/payment-item-table/validation/rule-validation-result.ts\": \"smart/components/payment-item-table/validation/rule-validation-result\",\n\t\"./smart/components/payment-item-table/validation/rules/date-less-than-45-days-out-rule.ts\": \"smart/components/payment-item-table/validation/rules/date-less-than-45-days-out-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/date-today-or-greater-rule.ts\": \"smart/components/payment-item-table/validation/rules/date-today-or-greater-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/entered-amount-greater-than-zero-rule.ts\": \"smart/components/payment-item-table/validation/rules/entered-amount-greater-than-zero-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-account-min-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-account-min-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-portal-and-portfolio-max-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-portal-and-portfolio-max-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-portal-and-portfolio-min-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-portal-and-portfolio-min-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-portal-max-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-portal-max-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-portal-min-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-portal-min-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-portfolio-max-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-portfolio-max-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/meets-portfolio-min-amount-rule.ts\": \"smart/components/payment-item-table/validation/rules/meets-portfolio-min-amount-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/select-at-least-one-item-rule.ts\": \"smart/components/payment-item-table/validation/rules/select-at-least-one-item-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/valid-date-rule.ts\": \"smart/components/payment-item-table/validation/rules/valid-date-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/verify-over-payments-allowed-rule.ts\": \"smart/components/payment-item-table/validation/rules/verify-over-payments-allowed-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/verify-short-pay-reason-comment-rule.ts\": \"smart/components/payment-item-table/validation/rules/verify-short-pay-reason-comment-rule\",\n\t\"./smart/components/payment-item-table/validation/rules/verify-short-payments-allowed-rule.ts\": \"smart/components/payment-item-table/validation/rules/verify-short-payments-allowed-rule\",\n\t\"./smart/components/short-pay-reason/short-pay-reason.ts\": \"smart/components/short-pay-reason/short-pay-reason\",\n\t\"./smart/components/statement-download-link/statement-download-link.ts\": \"smart/components/statement-download-link/statement-download-link\",\n\t\"./smart/components/table-header-controls/table-header-controls.ts\": \"smart/components/table-header-controls/table-header-controls\",\n\t\"./smart/helpers/json-serializer.ts\": \"smart/helpers/json-serializer\",\n\t\"./smart/helpers/number-helper.ts\": \"smart/helpers/number-helper\",\n\t\"./smart/helpers/object-helper.ts\": \"smart/helpers/object-helper\",\n\t\"./smart/helpers/string-helper.ts\": \"smart/helpers/string-helper\",\n\t\"./smart/models/account-payment-item.ts\": \"smart/models/account-payment-item\",\n\t\"./smart/models/api-response.ts\": \"smart/models/api-response\",\n\t\"./smart/models/enums/index.ts\": \"smart/models/enums/index\",\n\t\"./smart/models/enums/payment-item-initial-amount.ts\": \"smart/models/enums/payment-item-initial-amount\",\n\t\"./smart/models/enums/payment-item-type.ts\": \"smart/models/enums/payment-item-type\",\n\t\"./smart/models/enums/transaction-balance-payment-type.ts\": \"smart/models/enums/transaction-balance-payment-type\",\n\t\"./smart/models/invoice-payment-item.ts\": \"smart/models/invoice-payment-item\",\n\t\"./smart/models/payment-item-discount-balance-range.ts\": \"smart/models/payment-item-discount-balance-range\",\n\t\"./smart/models/payment-item-table-configuration.ts\": \"smart/models/payment-item-table-configuration\",\n\t\"./smart/models/payment-item.ts\": \"smart/models/payment-item\",\n\t\"./smart/models/payment-limit-settings.ts\": \"smart/models/payment-limit-settings\",\n\t\"./smart/models/service-response.ts\": \"smart/models/service-response\",\n\t\"./smart/services/base-service.ts\": \"smart/services/base-service\",\n\t\"./smart/services/logger.ts\": \"smart/services/logger\",\n\t\"./smart/services/rest-service-client.ts\": \"smart/services/rest-service-client\",\n\t\"./smart/value-converters/currency-format.ts\": \"smart/value-converters/currency-format\",\n\t\"./smart/value-converters/date-format.ts\": \"smart/value-converters/date-format\",\n\t\"./test.boot.ts\": \"test.boot\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./ClientApp sync recursive \\\\.ts$\";","module.exports = __webpack_public_path__ + \"666852ecc66f95734bd802d51626002a.png\";","module.exports = __webpack_public_path__ + \"a99f90fcac30bdc0424be1e9d6e6bf4d.png\";","module.exports = __webpack_public_path__ + \"a7c2213765db5e90d33cc5b6e6507cc9.png\";","module.exports = __webpack_public_path__ + \"4685771109f3923ce0ed1c890f91a01f.png\";","module.exports = __webpack_public_path__ + \"7e92510c64face5e6a2e6ae69a67ff1f.png\";","module.exports = __webpack_public_path__ + \"cf3c1497728e94b6ee99e9146c5988e9.png\";","module.exports = __webpack_public_path__ + \"22bd5ef8c856aaecc07c8597751d645e.png\";","var map = {\n\t\"./apple_pay.svg\": \"./ClientApp/images/digitalWallets/apple_pay.svg\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./ClientApp/images/digitalWallets sync recursive ^\\\\.\\\\/.*$\";","module.exports = __webpack_public_path__ + \"11f10198e675ebc5146f34c69a22a998.svg\";","module.exports = __webpack_public_path__ + \"e3f02630c0f76ad039da99f5d518fcc0.svg\";","module.exports = __webpack_public_path__ + \"19dc0f4c415d353d44fd79fc08bd2c34.png\";","module.exports = __webpack_public_path__ + \"158eece671977427b7d338a91321c169.png\";","module.exports = __webpack_public_path__ + \"3ec6c2fd4921a6a0568725e5726dc4d3.png\";","module.exports = __webpack_public_path__ + \"f211389e1500f21bf8f57fa7dd7c98f8.png\";","var map = {\n\t\"./duet-date-picker.entry.js\": [\n\t\t\"./node_modules/@duetds/date-picker/dist/esm-es5/duet-date-picker.entry.js\",\n\t\t2\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./node_modules/@duetds/date-picker/dist/esm-es5 lazy recursive ^\\\\.\\\\/.*\\\\.entry\\\\.js$\";\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { Aurelia, PLATFORM } from 'aurelia-framework';\r\nimport { TCustomAttribute } from 'aurelia-i18n';\r\nimport 'bootstrap';\r\nimport 'jwt-decode';\r\nimport '@duetds/date-picker';\r\nimport '@duetds/date-picker/dist/duet/themes/default.css';\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport '@fortawesome/fontawesome-free/css/all.css';\r\nimport 'bootstrap-datepicker/dist/css/bootstrap-datepicker.css';\r\nimport Backend from 'i18next-xhr-backend';\r\nimport 'isomorphic-fetch';\r\nimport * as moment from 'moment';\r\nimport * as numeral from 'numeral';\r\n\r\ndeclare const IS_DEV_BUILD: boolean; // The value is supplied by Webpack during the build\r\ndeclare var grecaptcha: any;\r\ndeclare var recaptchaToken: any;\r\n\r\nexport function configure(aurelia: Aurelia) {\r\n\taurelia\r\n\t\t.use\r\n\t\t.standardConfiguration()\r\n\t\t.plugin(PLATFORM.moduleName('bootstrap-datepicker'))\r\n\t\t.plugin(PLATFORM.moduleName('@duetds/date-picker'))\r\n\t\t.plugin(PLATFORM.moduleName('jwt-decode'))\r\n\t\t.plugin(PLATFORM.moduleName('au-table'))\r\n\t\t.plugin(PLATFORM.moduleName('aurelia-dialog'))\r\n\t\t.plugin(PLATFORM.moduleName('aurelia-inputmask'), { showMaskOnHover: true, autoUnmask: true })\r\n\t\t.plugin(PLATFORM.moduleName('aurelia-validation'))\r\n\t\t.plugin(PLATFORM.moduleName('aurelia-i18n'), (instance: any) => {\r\n\r\n\t\t\t// add aliases for 't' attribute\r\n\t\t\tvar aliases = ['t'];\r\n\t\t\tTCustomAttribute.configureAliases(aliases);\r\n\r\n\t\t\t// register backend plugin\r\n\t\t\tinstance.i18next.use(Backend);\r\n\r\n\t\t\t// allows fallback to hard coded text\r\n\t\t\tinstance.i18next.options.skipTranslationOnMissingKey = true;\r\n\r\n\t\t\t// adapt options to your needs (see https://www.i18next.com/overview/configuration-options)\r\n\t\t\treturn instance.setup({\r\n\t\t\t\tbackend: {\r\n\t\t\t\t\tloadPath: '/PayrazrApiWeb/locales/{{lng}}/{{ns}}', // we use BusinessKey for namespace\r\n\t\t\t\t},\r\n\t\t\t\tinterpolation: {\r\n\t\t\t\t\tformat: (value: any, format: any, lng: any) => {\r\n\t\t\t\t\t\tif (!format) {\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\t\treturn moment(value).format(format);\r\n\t\t\t\t\t\t} else if (moment.isMoment(value)) {\r\n\t\t\t\t\t\t\treturn moment(value).format(format);\r\n\t\t\t\t\t\t} else if (!isNaN(value)) {\r\n\t\t\t\t\t\t\treturn numeral(value).format(format);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tattributes: aliases,\r\n\t\t\t\tns: [0],\r\n\t\t\t\tdefaultNS: '0',\r\n\t\t\t\tlng: 'en',\r\n\t\t\t\tfallbackLng: ['en'],\r\n\t\t\t\tdebug: false // turn this on if trying to troubleshoot.. remember to turn it off!\r\n\t\t\t});\r\n\t\t});\r\n\r\n\tif (IS_DEV_BUILD) {\r\n\t\taurelia.use.developmentLogging();\r\n\t}\r\n\r\n\tnew HttpClient().configure(config => {\r\n\t\tconst baseUrl = document.getElementsByTagName('base')[0].href;\r\n\t\tconfig.withBaseUrl(baseUrl);\r\n\t});\r\n\r\n\tgrecaptcha.ready(function () {\r\n\t\tgrecaptcha.execute('6LdktKEUAAAAAIu1oqO_WwHDZkk5YKsTm-QzwdgJ', { action: 'homepage' })\r\n\t\t\t.then(function (token) {\r\n\t\t\t\trecaptchaToken = token;\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tconsole.log('Error: Unable to retrieve recaptcha token.');\r\n\t\t\t}).then(function () {\r\n\t\t\t\taurelia.start().then(() => aurelia.setRoot('pages/app'));\r\n\t\t\t});\r\n\t});\r\n}\r\n","import { autoinject, bindable } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { FormattingHelper } from '../../helpers/formatting-helper';\r\n\r\n@autoinject\r\nexport class AccountSummary {\r\n\t@bindable accountNumberLabel: string;\r\n\t@bindable accountNumber: string;\r\n\t@bindable balance: number;\r\n\t@bindable balanceLabel: string;\r\n\t@bindable minPayment: number;\r\n\t@bindable enforceMinPayment: boolean;\r\n\t@bindable showBalance: boolean;\r\n\t@bindable accountDescriptionLabel: string;\r\n\t@bindable accountDescription: string;\r\n\t@bindable tryToDisplayMinPaymentDue: boolean;\r\n\t@bindable displayMinimumPaymentAmountOnPortal: boolean;\r\n\r\n\tminimumPaymentAmountMesssage: string;\r\n\r\n\tconstructor(private i18n: I18N) {\r\n\t}\r\n\r\n\tattached() {\r\n\t\tif (this.tryToDisplayMinPaymentDue &&\r\n\t\t\tthis.displayMinimumPaymentAmountOnPortal &&\r\n\t\t\tthis.minPayment) {\r\n\t\t\tthis.minimumPaymentAmountMesssage = this.i18n.i18next.t('minimumPaymentOfXDueOnAccount', {\r\n\t\t\t\tdefaultValue: `A minimum payment of ${FormattingHelper.formatCurrency(this.minPayment)} is due on this account.`,\r\n\t\t\t\tpaymentAmount: FormattingHelper.formatCurrency(this.minPayment)\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","module.exports = \"\\r\\n\";","module.exports = \"\";","import { bindable, bindingMode, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class BankAccountForm {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) bankAccountInformation: any;\r\n\tbillingNameLabel: string;\r\n\r\n\tconstructor(private i18n:I18N) {\r\n\t\tthis.billingNameLabel = this.i18n.i18next.t('accountHolderName','Account Holder Name');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, inject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\n\r\n@inject(Element, PayrazrService, State)\r\nexport class BannerImageCustomElement {\r\n\t@bindable textOnly: any;\r\n\telement: Element;\r\n\tpayrazr: PayrazrService;\r\n\tglobalState: State;\r\n\tbannerText: string;\r\n\tsrc: string;\r\n\tuseImage: any;\r\n\r\n\tconstructor(element: Element, payrazr: PayrazrService, globalState: State) {\r\n\t\tthis.element = element;\r\n\t\tthis.payrazr = payrazr;\r\n\t\tthis.globalState = globalState;\r\n\r\n\t\tthis.bannerText = globalState.business.portalSettings.title || globalState.business.portalSettings.name;\r\n\t\tthis.src = globalState.business.portalSettings.bannerImageUrl;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.useImage = !this.textOnly && this.globalState.business.portalSettings.hasBanner;\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, customAttribute, inject } from 'aurelia-framework';\r\nimport 'bootstrap';\r\nimport * as $ from 'jquery';\r\n\r\n@customAttribute('bootstrap-tooltip')\r\n@inject(Element)\r\nexport class BootstrapTooltip {\r\n\t@bindable placement: string = 'bottom';\r\n\t@bindable trigger: string = 'hover';\r\n\t@bindable html: string = 'true';\r\n\t@bindable title: string = ''; // Optional input to fix double tooltip issues with if.binding\r\n\t$element: any;\r\n\r\n\tconstructor(element) {\r\n\t\tthis.$element = $(element);\r\n\t}\r\n\r\n\tbind() {\r\n\t\tthis.$element\r\n\t\t\t.attr('data-toggle', 'tooltip')\r\n\t\t\t.attr('data-container', 'body')\r\n\t\t\t.attr('data-placement', this.placement)\r\n\t\t\t.attr('data-html', this.html)\r\n\t\t\t.attr('data-trigger', this.trigger);\r\n\r\n\t\tif (this.title) {\r\n\t\t\tthis.$element.tooltip({\r\n\t\t\t\ttitle: this.title\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.$element.tooltip();\r\n\t\t}\r\n\t}\r\n\r\n\tunbind() {\r\n\t\tthis.$element.tooltip('dispose');\r\n\t}\r\n\r\n\ttitleChanged() {\r\n\t\tthis.$element.tooltip({ title: this.title });\r\n\t}\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class Bulletin {\r\n\tconstructor(private globalState: State,\r\n\t\tprivate i18n: I18N) { }\r\n\r\n\tget isBulletinVisible() {\r\n\t\ttry {\r\n\t\t\tlet portalDashboardBulletinContent = this.i18n.i18next.t('portalDashboardBulletinContent', '');\r\n\t\t\treturn this.globalState.business.portalSettings.enableConsumerPortalDashboardBulletin\r\n\t\t\t\t&& portalDashboardBulletinContent.length;\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","import { bindable, computedFrom } from 'aurelia-framework';\r\nimport { Uuid } from '../../helpers/uuid';\r\n\r\nexport class CardLogo {\r\n\t@bindable cardType: any;\r\n\r\n\t/**\r\n\t * Used as a workaround for WCAG accessibility to distinguish where on the page this logo falls\r\n\t * to prevent screen reader confusion confusion with other insertions of this template.\r\n\t */\r\n\tuniqueID: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uniqueID = Uuid.next();\r\n\t}\r\n\r\n\t@computedFrom('cardType')\r\n\tget cardName() {\r\n\t\ttry {\r\n\t\t\tswitch (this.cardType) {\r\n\t\t\t\tcase 'AMEX':\r\n\t\t\t\t\treturn 'American Express';\r\n\t\t\t\tcase 'CARTEBLANC':\r\n\t\t\t\t\treturn 'Carte Blanc';\r\n\t\t\t\tcase 'DINERS':\r\n\t\t\t\t\treturn 'Diners Club';\r\n\t\t\t\tcase 'DISCOVER':\r\n\t\t\t\t\treturn 'Discover';\r\n\t\t\t\tcase 'JCB':\r\n\t\t\t\t\treturn'JCB';\r\n\t\t\t\tcase 'MASTERCARD':\r\n\t\t\t\t\treturn 'MasterCard';\r\n\t\t\t\tcase 'VISA':\r\n\t\t\t\t\treturn 'Visa';\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('cardName')\r\n\tget cardAltText() {\r\n\t\treturn this.cardName + ' Card';\r\n\t}\r\n\r\n\t@computedFrom('cardType')\r\n\tget cardLogoUrl() {\r\n\t\tconst visaCardLoc = require('../../images/cards/visa.png');\r\n\t\tconst mcCardLoc = require('../../images/cards/mastercard_logo.png');\r\n\t\tconst amexCardLoc = require('../../images/cards/amex_logo.png');\r\n\t\tconst discCardLoc = require('../../images/cards/discover.png');\r\n\t\tconst dinersCardLoc = require('../../images/cards/diners.png');\r\n\t\tconst jcbCardLoc = require('../../images/cards/jcb.png');\r\n\r\n\t\ttry {\r\n\t\t\tswitch (this.cardType) {\r\n\t\t\t\tcase 'AMEX':\r\n\t\t\t\t\treturn amexCardLoc;\r\n\t\t\t\tcase 'CARTEBLANC':\r\n\t\t\t\tcase 'DINERS':\r\n\t\t\t\t\treturn dinersCardLoc;\r\n\t\t\t\tcase 'DISCOVER':\r\n\t\t\t\t\treturn discCardLoc;\r\n\t\t\t\tcase 'JCB':\r\n\t\t\t\t\treturn jcbCardLoc;\r\n\t\t\t\tcase 'MASTERCARD':\r\n\t\t\t\t\treturn mcCardLoc;\r\n\t\t\t\tcase 'VISA':\r\n\t\t\t\t\treturn visaCardLoc;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('cardType')\r\n\tget cardClass() {\r\n\t\tconst visa = 'card-visa';\r\n\t\tconst mc = 'card-mastercard';\r\n\t\tconst amex = 'card-amex';\r\n\t\tconst disc = 'card-discover';\r\n\t\tconst diners = 'card-diners';\r\n\t\tconst jcb = 'card-jcb';\r\n\r\n\t\ttry {\r\n\t\t\tswitch (this.cardType) {\r\n\t\t\t\tcase 'AMEX':\r\n\t\t\t\t\treturn amex;\r\n\t\t\t\tcase 'CARTEBLANC':\r\n\t\t\t\tcase 'DINERS':\r\n\t\t\t\t\treturn diners;\r\n\t\t\t\tcase 'DISCOVER':\r\n\t\t\t\t\treturn disc;\r\n\t\t\t\tcase 'JCB':\r\n\t\t\t\t\treturn jcb;\r\n\t\t\t\tcase 'MASTERCARD':\r\n\t\t\t\t\treturn mc;\r\n\t\t\t\tcase 'VISA':\r\n\t\t\t\t\treturn visa;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"div.card-logo {\\r\\n padding-top: 1px;\\r\\n display: inline-block;\\r\\n vertical-align: top;\\r\\n width: 30px;\\r\\n height: 20px;\\r\\n}\\r\\n\\r\\nimg.card-logo-img {\\r\\n max-width: 100%;\\r\\n max-height: 100%;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\nimport he from 'he';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { LegalTermsDialog } from '../legal-dialog/legal-terms.dialog';\r\nimport { DigitalWalletSettings } from '../../models/digital-wallet';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../models/merchant-consumer-portal-fee-settings';\r\nimport { PaymentPlanSettings } from '../../models/payment-plan-settings';\r\nimport { computedFrom } from 'aurelia-binding';\r\n\r\n@autoinject\r\nexport class Confirmation {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) isSubmitting: boolean = false;\r\n\t@bindable title: string;\r\n\t@bindable templateData: TemplateData;\r\n\t@bindable customTemplateName: string;\r\n\t@bindable isCustomTemplate: boolean = false;\r\n\t@bindable isAch: boolean = false;\r\n\t@bindable isDigitalWallet: boolean = false;\r\n\t@bindable nameOnAccount: string;\r\n\t@bindable merchantKey: number;\r\n\t@bindable submitButtonText: string;\r\n\t@bindable acceptButtonText: string;\r\n\t@bindable forceShowSignature: boolean = false;\r\n\t@bindable forceAcceptanceOfTerms: boolean = false;\r\n\t@bindable customerAccountKeys: number[];\r\n\t@bindable paymentPlanSettings: PaymentPlanSettings = new PaymentPlanSettings();\r\n\t@bindable merchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings = new MerchantConsumerPortalFeeSettings();\r\n\t@bindable enforceCaptchaCheckbox: boolean = false;\r\n\t// digital wallet specific\r\n\t@bindable digitalWalletSettings: DigitalWalletSettings;\r\n\r\n\tshowSignature: boolean = false;\r\n\tshowAcceptanceOfTerms: boolean = false;\r\n\tcontent: any;\r\n\tsignature: string;\r\n\thashedContent: any;\r\n\tvalidationErrors: Array;\r\n\tdigitalWalletValidationSubscription: Subscription;\r\n\tlinkText: string;\r\n\ttermsLink: string;\r\n\thasAcceptedTerms: boolean = false;\r\n\tcaptchaClicked: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate element: Element,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate eventAggregator: EventAggregator,\r\n\t\tprivate dialogService: DialogService) {}\r\n\r\n\tattached() {\r\n\t\tif (!this.submitButtonText) {\r\n\t\t\tthis.submitButtonText = this.i18n.i18next.t('submit', 'Submit');\r\n\t\t}\r\n\r\n\t\tif (!this.acceptButtonText) {\r\n\t\t\tthis.acceptButtonText = this.i18n.i18next.t('iAccept', 'I Accept');\r\n\t\t}\r\n\r\n\t\tif (this.forceShowSignature) {\r\n\t\t\tthis.showSignature = true;\r\n\t\t} else if (this.isAch) {\r\n\t\t\tthis.showSignature = true;\r\n\t\t} else {\r\n\t\t\tthis.showSignature = false;\r\n\t\t}\r\n\r\n\t\tif (this.forceAcceptanceOfTerms) {\r\n\t\t\tthis.showAcceptanceOfTerms = true;\r\n\t\t}\r\n\r\n\t\tthis.linkText = `${this.i18n.i18next.t('websiteTermsOfUse', 'Website Terms of Use')}`;\r\n\r\n\t\tthis.termsLink = this.i18n.i18next.t('portalForceAgreeToTermsAndConditions', {\r\n\t\t\tdefaultValue: `I authorize this payment in accordance with the terms above and the ${this.linkText}.`, link: this.linkText\r\n\t\t});\r\n\r\n\t\tif (this.isDigitalWallet) {\r\n\t\t\t// setup digital wallet validation listener\r\n\t\t\tthis.digitalWalletValidationSubscription = this.eventAggregator.subscribe('digitalWalletValidationErrorChange', digitalWalletValidationErrors => {\r\n\t\t\t\tthis.validationErrors = digitalWalletValidationErrors;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.chooseTemplate();\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tif (this.digitalWalletValidationSubscription) {\r\n\t\t\tthis.digitalWalletValidationSubscription.dispose();\r\n\t\t}\r\n\t}\r\n\r\n\tchooseTemplate() {\r\n\t\tif (this.templateData) {\r\n\t\t\tif (this.isCustomTemplate) {\r\n\t\t\t\tthis.getCustomTemplate(this.customTemplateName, this.templateData);\r\n\t\t\t} else if (this.isAch) {\r\n\t\t\t\tthis.getTemplate('check', this.templateData);\r\n\t\t\t} else if (this.isDigitalWallet) {\r\n\t\t\t\tthis.getTemplate('digitalWallet', this.templateData);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.getTemplate('card', this.templateData);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Get a custom template with a given template name\r\n\tgetCustomTemplate(templateName: string, templateData: TemplateData) {\r\n\t\treturn this.payrazrService.applyTemplateAndReturnHash(templateName, templateData).then((result) => {\r\n\t\t\tthis.content = result.templateHtml;\r\n\t\t\tthis.hashedContent = result.hashedValue;\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.log(`error getting disclosures: ${JSON.stringify(error)}`);\r\n\t\t});\r\n\t}\r\n\r\n\t// Get the generic card/ach confirmation template\r\n\tgetTemplate(cardOrCheck: string, templateData: TemplateData) {\r\n\t\treturn this.payrazrService.getConfirmHtml(cardOrCheck, templateData).then((result) => {\r\n\t\t\tthis.content = he.decode(result);\r\n\t\t});\r\n\t}\r\n\r\n\tget correctSignature() {\r\n\t\tif (this.isEmptyOrSpaces(this.signature)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.signature !== this.nameOnAccount){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tget nameValidation() {\r\n\t\tif (this.isEmptyOrSpaces(this.signature)){\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tif (this.signature !== this.nameOnAccount){\r\n\t\t\treturn this.i18n.i18next.t('nameProvidedDoesNotMatch', 'The name you provided does not match the name on your account');\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tget isForceAcceptTermsValidation() {\r\n\t\treturn this.forceAcceptanceOfTerms && !this.hasAcceptedTerms;\r\n\t}\r\n\r\n\tisEmptyOrSpaces(str) {\r\n\t\tlet empty: boolean = true;\r\n\t\tif (str && /\\S/.test(str)){\r\n\t\t\tempty = false;\r\n\t\t}\r\n\t\treturn empty;\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tif (!this.isSubmitting) {\r\n\t\t\tthis.isSubmitting = true;\r\n\t\t\tthis.dispatchCustomEvent('confirmation-submit', { content: this.content, hashedContent: this.hashedContent });\r\n\t\t\tthis.resetCaptcha();\r\n\t\t}\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.content = null;\r\n\t\tthis.dispatchCustomEvent('confirmation-back');\r\n\t}\r\n\r\n\tdispatchCustomEvent(eventName: any, eventData?: any) {\r\n\t\tlet evt = DOM.createCustomEvent(eventName, { bubbles: true, cancelable: true, detail: eventData });\r\n\r\n\t\tthis.element.dispatchEvent(evt);\r\n\t}\r\n\r\n\tshowLegalModal(content: string) {\r\n\t\tif (content === 'terms') {\r\n\t\t\tthis.dialogService.open({ viewModel: LegalTermsDialog, lock: false });\r\n\t\t}\r\n\t}\r\n\r\n\tisApplePay(): boolean {\r\n\t\treturn this.isDigitalWallet && (this.digitalWalletSettings?.isApplePay() ?? false);\r\n\t}\r\n\r\n\tshowCaptchaCheckbox() {\r\n\t\treturn this.enforceCaptchaCheckbox;\r\n\t}\r\n\r\n\tverifyCaptcha() {\r\n\t\tthis.captchaClicked = true;\r\n\t}\r\n\r\n\thandleCaptchaExpired() {\r\n\t\tthis.captchaClicked = false;\r\n\t}\r\n\r\n\thandleCaptchaError() {\r\n\t\tthis.captchaClicked = false;\r\n\t}\r\n\r\n\tresetCaptcha() {\r\n\t\tthis.captchaClicked = false;\r\n\t}\r\n\r\n\t@computedFrom('captchaClicked')\r\n\tget isCaptchaValid() {\r\n\t\treturn this.enforceCaptchaCheckbox ? this.captchaClicked : true;\r\n\t}\r\n}\r\n","module.exports = \"\";","import { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, when, anything, verify } from 'ts-mockito';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Confirmation } from './confirmation';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { DialogService } from 'aurelia-dialog';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('components', () => {\r\n\t\tdescribe('confirmation', () => {\r\n\t\t\tlet component: Confirmation;\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockElement: Element = mock(Element);\r\n\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\tconst mockDialogService: DialogService = mock(DialogService);\r\n\t\t\t\r\n\t\t\tconst i18next = {\r\n\t\t\t\tt: (a, b) => a\r\n\t\t\t};\r\n\r\n\t\t\tbeforeEach(() => {\r\n\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\r\n\t\t\t\tcomponent = new Confirmation(\r\n\t\t\t\t\tinstance(mockElement),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockEventAggregator),\r\n\t\t\t\t\tinstance(mockDialogService)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize Confirmation component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('attached()', () => {\r\n\t\t\t\tit('should set default submitButtonText as Submit', () => {\r\n\t\t\t\t\tspyOn(i18next, 't').and.returnValue('Submit');\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.submitButtonText).toBe('Submit');\r\n\t\t\t\t});\r\n\t\t\t\tit('should set default acceptButtonText as I Accept', () => {\r\n\t\t\t\t\tspyOn(i18next, 't').and.returnValue('I Accept');\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.acceptButtonText).toBe('I Accept');\r\n\t\t\t\t});\r\n\t\t\t\tit('should show signature', () => {\r\n\t\t\t\t\tcomponent.forceShowSignature = true;\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.showSignature).toBeTrue();\r\n\t\t\t\t});\r\n\t\t\t\tit('should call chooseTemplate() and apply template', () => {\r\n\t\t\t\t\tspyOn(component, 'chooseTemplate').and.callThrough();\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\t\t\t\t\tcomponent.templateData = new TemplateData({}, null, []);\r\n\t\t\t\t\tcomponent.isCustomTemplate = false;\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.chooseTemplate).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should show accept terms and conditions', () => {\r\n\t\t\t\t\tcomponent.forceAcceptanceOfTerms = true;\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.showAcceptanceOfTerms).toBeTrue();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('chooseTemplate()', () => {\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.templateData = new TemplateData({}, null, []);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should call getCustomTemplate()', () => {\r\n\t\t\t\t\tspyOn(component, 'getCustomTemplate').and.stub();\r\n\t\t\t\t\tcomponent.isCustomTemplate = true;\r\n\t\t\t\t\tcomponent.chooseTemplate();\r\n\t\t\t\t\texpect(component.getCustomTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should call getTemplate() as ACH', () => {\r\n\t\t\t\t\tspyOn(component, 'getTemplate').withArgs('check', component.templateData).and.stub();\r\n\t\t\t\t\tcomponent.isAch = true;\r\n\t\t\t\t\tcomponent.chooseTemplate();\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalledWith('check', component.templateData);\r\n\t\t\t\t});\r\n\t\t\t\tit('should call getTemplate() as Card', () => {\r\n\t\t\t\t\tspyOn(component, 'getTemplate').withArgs('card', component.templateData).and.stub();\r\n\t\t\t\t\tcomponent.chooseTemplate();\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalledWith('card', component.templateData);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getCustomTemplate()', () => {\r\n\r\n\t\t\t\tit('should set content as HTML and hashedContent as hashedValue from request result', async () => {\r\n\r\n\t\t\t\t\twhen(mockPayrazrService.applyTemplateAndReturnHash(anything(), anything())).thenResolve({\r\n\t\t\t\t\t\ttemplateHtml: '',\r\n\t\t\t\t\t\thashedValue: ''\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tawait component.getCustomTemplate(anything(), anything());\r\n\t\t\t\t\tverify(mockPayrazrService.applyTemplateAndReturnHash(anything(), anything())).called();\r\n\t\t\t\t\texpect(component.content).not.toBe(null);\r\n\t\t\t\t\texpect(component.hashedContent).not.toBe(null);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should catch error also content and hashedContent should be undefined', async () => {\r\n\r\n\t\t\t\t\twhen(mockPayrazrService.applyTemplateAndReturnHash(anything(), anything())).thenReject(new Error());\r\n\r\n\t\t\t\t\tawait component.getCustomTemplate(anything(), anything());\r\n\t\t\t\t\tverify(mockPayrazrService.applyTemplateAndReturnHash(anything(), anything())).called();\r\n\t\t\t\t\texpect(component.content).toBe(undefined);\r\n\t\t\t\t\texpect(component.hashedContent).toBe(undefined);\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getTemplate()', () => {\r\n\r\n\t\t\t\tconst tieredFeeTemplates = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should Convenience Fee template have a table with id tblTieredFees',\r\n\t\t\t\t\t\ttemplate: `

* By using this channel to make a payment on your account with {merchantDescriptor}, you are entering into an\r\n\t\t\t\t\t\tagreement with {merchantDescriptor} to expedite this payment at the cost of {fee}. There are other payment options\r\n\t\t\t\t\t\tavailable to you that do not include a fee. IF YOU DO NOT WANT TO PAY A FEE FOR MAKING AN ONLINE PAYMENT, PLEASE\r\n\t\t\t\t\t\tSTOP NOW AND USE ONE OF THE OTHER AVAILABLE PAYMENT OPTIONS. For information on other payment options including\r\n\t\t\t\t\t\toptions that do not include any additional fees, or questions about this fee, you may contact {merchantDescriptor}\r\n\t\t\t\t\t\tat {customerServicePhone}.

{tieredFeesTableStart}
\r\n\t\t\t\t\tTiered Fee Amounts\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
FromService Fee Value
{tieredFeesTableEnd}`\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should Autopay Plan Confirmation template have a table with id tblTieredFees',\r\n\t\t\t\t\t\ttemplate: `

Please review the following information and accept the below disclosure.

\r\n\t\t\t\t\t\tTL;TR\r\n\t\t\t\t\t\t{tieredFeesTableStart}
\r\n\t\t\t\t\t\tTiered Fee Amounts\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
FromService Fee Value
{tieredFeesTableEnd}`\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should Autopay Plan Receipt template have a table with id tblTieredFees',\r\n\t\t\t\t\t\ttemplate: `

Confirmation: Your Payment Plan is scheduled.

\r\n\t\t\t\t\t\tTL:TR {tieredFeesTableStart}
\r\n\t\t\t\t\t\tTiered Fee Amounts\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
FromService Fee Value
{tieredFeesTableEnd}`\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\r\n\t\t\t\tit('should call payrazrService.getConfirmHtml to get template HTML content', async () => {\r\n\r\n\t\t\t\t\twhen(mockPayrazrService.getConfirmHtml(anything(), anything())).thenResolve('

html content

');\r\n\r\n\t\t\t\t\tawait component.getTemplate(anything(), anything());\r\n\r\n\t\t\t\t\tverify(mockPayrazrService.getConfirmHtml(anything(), anything())).called();\r\n\t\t\t\t\texpect(component.content).not.toBe(null);\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttieredFeeTemplates.forEach((testCase) => {\r\n\t\t\t\t\tit(testCase.description, async () => {\r\n\r\n\t\t\t\t\t\twhen(mockPayrazrService.getConfirmHtml(anything(), anything())).thenResolve(testCase.template);\r\n\r\n\t\t\t\t\t\tawait component.getTemplate(anything(), anything());\r\n\r\n\t\t\t\t\t\tverify(mockPayrazrService.getConfirmHtml(anything(), anything())).called();\r\n\t\t\t\t\t\texpect(component.content).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.content).toContain(\"id=\\\"tblTieredFees\\\"\");\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { ServiceResponse } from '../../../../models/service-response';\r\nimport { CreateApplePayWebSessionRequest } from '../../../../models/hpfApi';\r\nimport {\r\n\tApplePayLineItemBuilder,\r\n\tApplePayPaymentMethodUpdateBuilder,\r\n\tApplePayPaymentRequestBuilder,\r\n\tApplePaySettings,\r\n\tApplePayUtil,\r\n\tDigitalWalletType\r\n} from '../../../../models/digital-wallet';\r\nimport { HpfDigitalWalletService } from '../../../../services/hpf-digital-wallet.service';\r\nimport { HpfFeeService } from '../../../../services/hpf-fee.service';\r\nimport { ApplePayValidator } from './apple-pay-validator';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../../../models/merchant-consumer-portal-fee-settings';\r\nimport { PaymentPlanSettings } from '../../../../models/payment-plan-settings';\r\nimport { PayrazrService } from '../../../../services/payrazr';\r\nimport { PaymentPlanType } from '../../../../models/paymentPlanType';\r\nimport { CalculateFeeRequestBuilder } from '../../../../models/hpfApi/calculate-fee-request-builder';\r\nimport { PaymentMethodType } from '../../../../services/hpf-transaction-service';\r\n\r\n@autoinject\r\nexport class ApplePay {\r\n\t@bindable hasCorrectSignature: boolean;\r\n\t@bindable hasAcceptedTerms: boolean;\r\n\t@bindable applePaySettings: ApplePaySettings;\r\n\t@bindable merchantKey: number;\r\n\t@bindable customerAccountKeys: number[];\r\n\t@bindable merchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings;\r\n\t@bindable content: string;\r\n\t@bindable hashedContent: string;\r\n\t@bindable paymentPlanSettings: PaymentPlanSettings;\r\n\r\n\tapplePayPaymentRequest: ApplePayJSV14.ApplePayPaymentRequest;\r\n\tsession: ApplePaySession;\r\n\tcalculatedServiceFee: number;\r\n\r\n\tget isPaymentPlan(): boolean {\r\n\t\treturn this.paymentPlanSettings?.isPaymentPlan() ?? false;\r\n\t}\r\n\r\n\tget isInstallmentPlan(): boolean {\r\n\t\treturn this.isPaymentPlan && this.paymentPlanSettings?.paymentPlanType === PaymentPlanType.Installment;\r\n\t}\r\n\r\n\tget isRecurringPlan(): boolean {\r\n\t\treturn this.isPaymentPlan && this.paymentPlanSettings?.paymentPlanType === PaymentPlanType.Recurring;\r\n\t}\r\n\r\n\tget isSingleFuture(): boolean {\r\n\t\treturn this.applePaySettings.paymentTiming === 'deferred';\r\n\t}\r\n\r\n\tget feesEnabled(): boolean {\r\n\t\treturn this.isPaymentPlan\r\n\t\t\t? this.merchantConsumerPortalFeeSettings.feesEnabled && this.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans\r\n\t\t\t: this.merchantConsumerPortalFeeSettings.feesEnabled;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate element: Element,\r\n\t\tprivate hpfDigitalWalletService: HpfDigitalWalletService,\r\n\t\tprivate hpfFeeService: HpfFeeService,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate eventAggregator: EventAggregator,\r\n\t\tprivate applePayValidator: ApplePayValidator,\r\n\t\tprivate i18n: I18N) { }\r\n\r\n\tasync attached() {\r\n\t\tthis.applePaySettings.version = await this.hpfDigitalWalletService.getDigitalWalletServiceSettings()\r\n\t\t\t.then(response => response.isSuccessful ? Number(response.value.applePayJsVersion) : 0)\r\n\t\t\t.catch(() => 0);\r\n\t}\r\n\r\n\tcanMakeApplePayPayments(): boolean {\r\n\t\tif (window\r\n\t\t\t&& window.ApplePaySession\r\n\t\t\t&& window.ApplePaySession.canMakePayments()\r\n\t\t\t&& this.applePaySettings\r\n\t\t\t&& this.applePaySettings.hasValidVersion()\r\n\t\t\t&& window.ApplePaySession.supportsVersion(this.applePaySettings.version)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tonApplePayButtonClicked() {\r\n\t\tif (!this.canMakeApplePayPayments()) {\r\n\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePayFailed', 'Failed to setup Apple Pay, please contact customer support')]);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.applePayPaymentRequest = this.getApplePayPaymentRequest();\r\n\r\n\t\tconst signatureAndTermsValidationErrors: string[] = this.applePayValidator.validateSignatureAndTerms(this.hasCorrectSignature, this.hasAcceptedTerms);\r\n\t\tconst requestValidationErrors: string[] = this.applePayValidator.validatePaymentRequest(this.applePayPaymentRequest);\r\n\t\tconst validationErrors: string[] = [...signatureAndTermsValidationErrors, ...requestValidationErrors];\r\n\r\n\t\t// do not start session with invalid request\r\n\t\tif (validationErrors.length > 0) {\r\n\t\t\tthis.publishApplePayValidationErrors(validationErrors);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.session = this.getApplePaySession(this.applePayPaymentRequest);\r\n\r\n\t\tthis.setApplePaySessionEventHandlers();\r\n\r\n\t\t// open apple pay sheet\r\n\t\tthis.session.begin();\r\n\t}\r\n\r\n\tsetApplePaySessionEventHandlers(): void {\r\n\t\t// Validate merchant\r\n\t\tthis.session.onvalidatemerchant = (validateMerchantEvent: ApplePayJS.ApplePayValidateMerchantEvent) => {\r\n\t\t\tconst createApplePayWebSessionRequest: CreateApplePayWebSessionRequest = {\r\n\t\t\t\tmerchantKey: this.merchantKey\r\n\t\t\t};\r\n\r\n\t\t\tthis.hpfDigitalWalletService.createApplePayWebSession(createApplePayWebSessionRequest)\r\n\t\t\t\t.then((response: ServiceResponse) => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tconst paySession = JSON.parse(\r\n\t\t\t\t\t\t\tatob(response.value.replace(/_/g, '/'))\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tthis.session.completeMerchantValidation(paySession);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support')]);\r\n\t\t\t\t\t\tthis.session.abort();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support')]);\r\n\t\t\t\t\tthis.session.abort();\r\n\t\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Payment method changed\r\n\t\tthis.session.onpaymentmethodselected = (paymentMethodSelectedEvent: ApplePayJS.ApplePayPaymentMethodSelectedEvent): void => {\r\n\t\t\tconsole.log('payment method selected', paymentMethodSelectedEvent);\r\n\r\n\t\t\t// billingContactName is redacted from paymentMethodSelectedEvent, so only validate card type and zip code\r\n\t\t\tconst paymentMethodTypeValidationErrors = this.applePayValidator.validatePaymentMethodType(paymentMethodSelectedEvent?.paymentMethod?.type);\r\n\t\t\tconst postalCodeValidationErrors = this.applePayValidator.validatePostalCode(paymentMethodSelectedEvent?.paymentMethod?.billingContact?.postalCode);\r\n\t\t\tconst validationErrors = [...paymentMethodTypeValidationErrors, ...postalCodeValidationErrors];\r\n\r\n\t\t\t/**\r\n\t\t\t * Bug: (need to test further) ApplePayJS onPaymentMethodSelected is called twice when changing payment methods.\r\n\t\t\t * Note: I think this is b/c requiredBillingContactFields is included in ApplePayPaymentRequest\r\n\t\t\t * Solution: To prevent a confusing ux, do not include validation errors in update obj\r\n\t\t\t */\r\n\t\t\tif (validationErrors.length > 0) {\r\n\t\t\t\tconst amount: string = this.isPaymentPlan ? '0' : this.applePaySettings.totalAmount;\r\n\t\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t.setLabel()\r\n\t\t\t\t\t.setAmount(amount)\r\n\t\t\t\t\t.setType(this.applePaySettings.totalType)\r\n\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdateBuilder()\r\n\t\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isInstallmentPlan) {\r\n\t\t\t\tthis.handleInstallmentPlanNewPaymentMethodSelected(paymentMethodSelectedEvent);\r\n\t\t\t}\r\n\t\t\telse if (this.isRecurringPlan) {\r\n\t\t\t\tthis.handleRecurringPlanNewPaymentMethodSelected(paymentMethodSelectedEvent);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.handleSinglePayNewPaymentMethodSelected(paymentMethodSelectedEvent);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Submit payment\r\n\t\tthis.session.onpaymentauthorized = (paymentAuthorizedEvent: ApplePayJS.ApplePayPaymentAuthorizedEvent) => {\r\n\t\t\tconsole.log('payment authorized', paymentAuthorizedEvent);\r\n\r\n\t\t\tconst billingContactValidationErrors = this.applePayValidator.validateBillingContact(paymentAuthorizedEvent?.payment?.billingContact);\r\n\t\t\tif (billingContactValidationErrors.length > 0) {\r\n\t\t\t\tthis.session.completePayment({ status: ApplePaySession.STATUS_FAILURE, errors: billingContactValidationErrors });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchCustomEvent('confirmation-submit', {\r\n\t\t\t\tcontent: this.content,\r\n\t\t\t\thashedContent: this.hashedContent,\r\n\t\t\t\tpayment: paymentAuthorizedEvent.payment,\r\n\t\t\t\tcalculatedServiceFee: this.calculatedServiceFee,\r\n\t\t\t\tdigitalWalletType: DigitalWalletType.ApplePay,\r\n\t\t\t\tdigitalWalletSession: this.session\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Cancel session\r\n\t\tthis.session.oncancel = (event: ApplePayJS.Event) => { };\r\n\t}\r\n\r\n\tgetApplePayPaymentRequest(): ApplePayJSV14.ApplePayPaymentRequest {\r\n\t\tconst total: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t.setLabel()\r\n\t\t\t.setAmount(this.applePaySettings.totalAmount)\r\n\t\t\t.setType('pending')\r\n\t\t\t.getApplePayLineItem();\r\n\r\n\t\tconst applePayPaymentRequestBuilder: ApplePayPaymentRequestBuilder = new ApplePayPaymentRequestBuilder(this.applePaySettings)\r\n\t\t\t.setTotal(total)\r\n\t\t\t.setCountryCode()\r\n\t\t\t.setCurrencyCode()\r\n\t\t\t.setMerchantCapabilites()\r\n\t\t\t.setSupportedNetworks()\r\n\t\t\t.setRequiredBillingContactFields();\r\n\r\n\t\tif (this.isPaymentPlan) {\r\n\t\t\tapplePayPaymentRequestBuilder.setRecurringPaymentRequest(this.applePaySettings.recurringAmount);\r\n\t\t}\r\n\r\n\t\treturn applePayPaymentRequestBuilder.getApplePayPaymentRequest();\r\n\t}\r\n\r\n\tgetApplePaySession(request: ApplePayJSV14.ApplePayPaymentRequest): ApplePaySession {\r\n\t\treturn new ApplePaySession(this.applePaySettings.version, request);\r\n\t}\r\n\r\n\thandleInstallmentPlanNewPaymentMethodSelected(paymentMethodSelectedEvent: ApplePayJS.ApplePayPaymentMethodSelectedEvent): void {\r\n\t\tif (!this.feesEnabled) {\r\n\t\t\tconst paymentPlanSubtotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel('Installment Subtotal')\r\n\t\t\t\t.setAmount(this.paymentPlanSettings.installment.totalAmount)\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst paymentPlanFeeTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel('Total Conveinence Fees')\r\n\t\t\t\t.setAmount('0')\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst paymentPlanTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel('Installment Total')\r\n\t\t\t\t.setAmount(this.paymentPlanSettings.installment.totalAmount)\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst newLineItems: ApplePayJSV14.ApplePayLineItem[] = [paymentPlanSubtotal, paymentPlanFeeTotal, paymentPlanTotal];\r\n\r\n\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel()\r\n\t\t\t\t.setAmount('0')\r\n\t\t\t\t.setType('pending')\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdateBuilder()\r\n\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t.setNewLineItems(newLineItems)\r\n\t\t\t\t.setRecurringPaymentRequest(this.applePayPaymentRequest.recurringPaymentRequest)\r\n\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.payrazrService.computePlannedPayments(\r\n\t\t\tthis.paymentPlanSettings.accountId,\r\n\t\t\tthis.paymentPlanSettings.installment.totalAmount,\r\n\t\t\tthis.paymentPlanSettings.installment.number,\r\n\t\t\tthis.paymentPlanSettings.installment.nextPaymentDate,\r\n\t\t\tthis.paymentPlanSettings.installment.payToday,\r\n\t\t\tthis.paymentPlanSettings.installment.selectedFrequency,\r\n\t\t\tpaymentMethodSelectedEvent.paymentMethod?.billingContact?.postalCode,\r\n\t\t\tApplePayUtil.getPaymentMethodType(paymentMethodSelectedEvent.paymentMethod),\r\n\t\t\tnull)\r\n\t\t\t.then((response: any) => {\r\n\t\t\t\tif (!response || !response.plannedPayments) {\r\n\t\t\t\t\tthrow new Error(this.i18n.i18next.t('paymentPlansComputeError', 'There was an error computing this contract'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst firstPlannedPayment = response.plannedPayments[0];\r\n\t\t\t\tconst firstPlannedPaymentServiceFee = firstPlannedPayment.planedServiceFee;\r\n\t\t\t\tconst firstPaymentTotal = firstPlannedPayment.billAmount + firstPlannedPaymentServiceFee;\r\n\t\t\t\tconst newRecurringAmount = firstPaymentTotal?.toString() ?? '0';\r\n\r\n\t\t\t\tconst planSubtotal: string = this.paymentPlanSettings.installment.totalAmount;\r\n\t\t\t\tconst totalConveinenceFees: number = response.plannedPayments?.reduce((sum, plannedPayment) => sum + plannedPayment.planedServiceFee, 0) ?? 0;\r\n\t\t\t\tconst planTotal: number = (Number(this.paymentPlanSettings.installment.totalAmount) + totalConveinenceFees);\r\n\r\n\t\t\t\tconst paymentPlanSubtotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t.setLabel('Installment Subtotal')\r\n\t\t\t\t\t.setAmount(planSubtotal)\r\n\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\tconst paymentPlanFeeTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t.setLabel('Total Conveinence Fees')\r\n\t\t\t\t\t.setAmount(totalConveinenceFees.toString())\r\n\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\tconst paymentPlanTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t.setLabel('Installment Total')\r\n\t\t\t\t\t.setAmount(planTotal.toString())\r\n\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\tconst newLineItems: ApplePayJSV14.ApplePayLineItem[] = [paymentPlanSubtotal, paymentPlanFeeTotal, paymentPlanTotal];\r\n\r\n\t\t\t\tconst newRecurringPaymentRequest: ApplePayJSV14.ApplePayRecurringPaymentRequest = new ApplePayPaymentRequestBuilder(this.applePaySettings)\r\n\t\t\t\t\t.setRecurringPaymentRequest(newRecurringAmount)\r\n\t\t\t\t\t.getApplePayPaymentRequest()\r\n\t\t\t\t\t.recurringPaymentRequest;\r\n\r\n\t\t\t\t// setup-installments.ts uses calculatedServiceFee to set singleServiceFee\r\n\t\t\t\tthis.calculatedServiceFee = firstPlannedPaymentServiceFee;\r\n\r\n\t\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t.setLabel()\r\n\t\t\t\t\t.setAmount('0')\r\n\t\t\t\t\t.setType('pending')\r\n\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdateBuilder()\r\n\t\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t\t.setNewLineItems(newLineItems)\r\n\t\t\t\t\t.setRecurringPaymentRequest(newRecurringPaymentRequest)\r\n\t\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('paymentPlansComputeError', 'There was an error computing this contract')]);\r\n\t\t\t\tthis.session.abort();\r\n\t\t\t});\r\n\t}\r\n\r\n\thandleRecurringPlanNewPaymentMethodSelected(paymentMethodSelectedEvent: ApplePayJS.ApplePayPaymentMethodSelectedEvent): void {\r\n\t\tif (!this.feesEnabled) {\r\n\t\t\tconst recurringPlanPaymentAmount: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel('Recurring Payment Amount')\r\n\t\t\t\t.setAmount(this.paymentPlanSettings.recurring.paymentAmount)\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst recurringPlanFirstPaymentFee: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel('Conveinence Fee for First Payment')\r\n\t\t\t\t.setAmount('0')\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst recurringSubsequentPaymentFee: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel('Conveinence Fee for Subsequent Payments')\r\n\t\t\t\t.setAmount('0')\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst newLineItems: ApplePayJSV14.ApplePayLineItem[] = [recurringPlanPaymentAmount, recurringPlanFirstPaymentFee, recurringSubsequentPaymentFee];\r\n\r\n\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel()\r\n\t\t\t\t.setAmount('0')\r\n\t\t\t\t.setType('pending')\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdateBuilder()\r\n\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t.setNewLineItems(newLineItems)\r\n\t\t\t\t.setRecurringPaymentRequest(this.applePayPaymentRequest.recurringPaymentRequest)\r\n\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst amount: number = parseInt(this.applePaySettings.recurringAmount, 10);\r\n\t\tconst paymentMethodType: PaymentMethodType = ApplePayUtil.getPaymentMethodType(paymentMethodSelectedEvent.paymentMethod);\r\n\r\n\t\tconst calculateFeeRequest = new CalculateFeeRequestBuilder()\r\n\t\t\t.setUserType('C')\r\n\t\t\t.setMerchantKeys([this.merchantKey])\r\n\t\t\t.setZipCode(paymentMethodSelectedEvent.paymentMethod.billingContact?.postalCode)\r\n\t\t\t.setPaymentMethodType(paymentMethodType)\r\n\t\t\t.setAmountUsedToCalculateSurchargeOnIfApplicable(amount)\r\n\t\t\t.setCustomerAccountKeys(this.customerAccountKeys)\r\n\t\t\t.setPaymentFeeType(this.paymentPlanSettings?.paymentFeeType)\r\n\t\t\t.getCalculateFeeRequest();\r\n\r\n\t\tthis.hpfFeeService.calculateFee(calculateFeeRequest)\r\n\t\t\t.then((response: ServiceResponse) => {\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tthis.calculatedServiceFee = response.value.convenienceFee;\r\n\t\t\t\t\tconst newRecurringAmount = (Number(this.applePaySettings.recurringAmount) + this.calculatedServiceFee).toString();\r\n\r\n\t\t\t\t\tconst recurringPlanPaymentAmount: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel('Recurring Payment Amount')\r\n\t\t\t\t\t\t.setAmount(this.applePaySettings.recurringAmount)\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst recurringPlanFirstPaymentFee: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel('Conveinence Fee for First Payment')\r\n\t\t\t\t\t\t.setAmount(this.calculatedServiceFee.toString())\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst subsequentFee: number = this.merchantConsumerPortalFeeSettings.allowServiceFeesOnEveryTransaction ? this.calculatedServiceFee : 0;\r\n\t\t\t\t\tconst recurringSubsequentPaymentFee: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel('Conveinence Fee for Subsequent Payments')\r\n\t\t\t\t\t\t.setAmount(subsequentFee.toString())\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst newLineItems: ApplePayJSV14.ApplePayLineItem[] = [recurringPlanPaymentAmount, recurringPlanFirstPaymentFee, recurringSubsequentPaymentFee];\r\n\r\n\t\t\t\t\tconst newRecurringPaymentRequest: ApplePayJSV14.ApplePayRecurringPaymentRequest = new ApplePayPaymentRequestBuilder(this.applePaySettings)\r\n\t\t\t\t\t\t.setRecurringPaymentRequest(newRecurringAmount)\r\n\t\t\t\t\t\t.getApplePayPaymentRequest()\r\n\t\t\t\t\t\t.recurringPaymentRequest;\r\n\r\n\t\t\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel()\r\n\t\t\t\t\t\t.setAmount('0')\r\n\t\t\t\t\t\t.setType('pending')\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdateBuilder()\r\n\t\t\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t\t\t.setNewLineItems(newLineItems)\r\n\t\t\t\t\t\t.setRecurringPaymentRequest(newRecurringPaymentRequest)\r\n\t\t\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePayPaymentMethodSelectFailed', 'Failed to update Apple Pay payment method, please contact customer support')]);\r\n\t\t\t\t\tthis.session.abort();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePayPaymentMethodSelectFailed', 'Failed to update Apple Pay payment method, please contact customer support')]);\r\n\t\t\t\tthis.session.abort();\r\n\t\t\t});\r\n\t}\r\n\r\n\thandleSinglePayNewPaymentMethodSelected(paymentMethodSelectedEvent: ApplePayJS.ApplePayPaymentMethodSelectedEvent): void {\r\n\t\tif (!this.feesEnabled) {\r\n\t\t\tlet newTotalAmount = this.isSingleFuture ? '0' : this.applePaySettings.totalAmount;\r\n\t\t\tconst paymentMethodUpdateBuilder = new ApplePayPaymentMethodUpdateBuilder();\r\n\r\n\t\t\tif (this.isSingleFuture) {\r\n\t\t\t\t// alike payment plans, single future needs to process a $0 auth transaction\r\n\t\t\t\tconst deferredPayment: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t.setLabel('Scheduled Payment')\r\n\t\t\t\t\t.setAmount(this.applePaySettings.totalAmount)\r\n\t\t\t\t\t.setPaymentTiming('deferred')\r\n\t\t\t\t\t.setDeferredPaymentDate(this.applePaySettings.deferredPaymentDate)\r\n\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\tconst newLineItems: ApplePayJSV14.ApplePayLineItem[] = [deferredPayment];\r\n\r\n\t\t\t\tpaymentMethodUpdateBuilder.setNewLineItems(newLineItems);\r\n\t\t\t}\r\n\r\n\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t.setLabel()\r\n\t\t\t\t.setAmount(newTotalAmount)\r\n\t\t\t\t.setType(this.applePaySettings.totalType)\r\n\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = paymentMethodUpdateBuilder\r\n\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst amount: number = parseInt(this.applePaySettings.totalAmount, 10);\r\n\t\tconst paymentMethodType: PaymentMethodType = ApplePayUtil.getPaymentMethodType(paymentMethodSelectedEvent.paymentMethod);\r\n\r\n\t\tconst calculateFeeRequest = new CalculateFeeRequestBuilder()\r\n\t\t\t.setUserType('C')\r\n\t\t\t.setMerchantKeys([this.merchantKey])\r\n\t\t\t.setZipCode(paymentMethodSelectedEvent.paymentMethod.billingContact?.postalCode)\r\n\t\t\t.setPaymentMethodType(paymentMethodType)\r\n\t\t\t.setAmountUsedToCalculateSurchargeOnIfApplicable(amount)\r\n\t\t\t.setCustomerAccountKeys(this.customerAccountKeys)\r\n\t\t\t.setPaymentFeeType(this.paymentPlanSettings?.paymentFeeType)\r\n\t\t\t.getCalculateFeeRequest();\r\n\r\n\t\tthis.hpfFeeService.calculateFee(calculateFeeRequest)\r\n\t\t\t.then((response: ServiceResponse) => {\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tthis.calculatedServiceFee = response.value.convenienceFee;\r\n\r\n\t\t\t\t\tconst calculatedTotal: number = Number(this.applePaySettings.totalAmount) + this.calculatedServiceFee;\r\n\t\t\t\t\tlet newTotalAmount: string = this.isSingleFuture ? '0' : calculatedTotal.toString();\r\n\r\n\t\t\t\t\tconst feeTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel('Fee')\r\n\t\t\t\t\t\t.setAmount(this.calculatedServiceFee.toString())\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst subtotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel('Subtotal')\r\n\t\t\t\t\t\t.setAmount(this.applePaySettings.totalAmount)\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst newLineItems: ApplePayJSV14.ApplePayLineItem[] = [subtotal, feeTotal];\r\n\r\n\t\t\t\t\tif (this.isSingleFuture) {\r\n\t\t\t\t\t\t// alike payment plans, single future needs to process a $0 auth transaction\r\n\t\t\t\t\t\tconst deferredPayment: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t\t.setLabel('Scheduled Payment')\r\n\t\t\t\t\t\t\t.setAmount(calculatedTotal.toString())\r\n\t\t\t\t\t\t\t.setPaymentTiming('deferred')\r\n\t\t\t\t\t\t\t.setDeferredPaymentDate(this.applePaySettings.deferredPaymentDate)\r\n\t\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\t\tnewLineItems.push(deferredPayment);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst newTotal: ApplePayJSV14.ApplePayLineItem = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel()\r\n\t\t\t\t\t\t.setAmount(newTotalAmount)\r\n\t\t\t\t\t\t.setType(this.applePaySettings.totalType)\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst update: ApplePayJSV14.ApplePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdateBuilder()\r\n\t\t\t\t\t\t.setTotal(newTotal)\r\n\t\t\t\t\t\t.setNewLineItems(newLineItems)\r\n\t\t\t\t\t\t.getApplePayPaymentMethodUpdate();\r\n\r\n\t\t\t\t\tthis.session.completePaymentMethodSelection(update);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePayPaymentMethodSelectFailed', 'Failed to update Apple Pay payment method, please contact customer support')]);\r\n\t\t\t\t\tthis.session.abort();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error: any) => {\r\n\t\t\t\tthis.publishApplePayValidationErrors([this.i18n.i18next.t('applePayPaymentMethodSelectFailed', 'Failed to update Apple Pay payment method, please contact customer support')]);\r\n\t\t\t\tthis.session.abort();\r\n\t\t\t});\r\n\t}\r\n\r\n\tdispatchCustomEvent(eventName: any, eventData?: any) {\r\n\t\tlet evt = DOM.createCustomEvent(eventName, { bubbles: true, cancelable: true, detail: eventData });\r\n\t\tthis.element.dispatchEvent(evt);\r\n\t}\r\n\r\n\tpublishApplePayValidationErrors(validationErrors: string[]): void {\r\n\t\tthis.eventAggregator.publish('digitalWalletValidationErrorChange', validationErrors);\r\n\t}\r\n}\r\n","import { anything, instance, mock, when } from 'ts-mockito';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { ApplePay } from './apple-pay';\r\nimport { HpfDigitalWalletService } from '../../../../services/hpf-digital-wallet.service';\r\nimport { ServiceResponse } from '../../../../models/service-response';\r\nimport { HpfFeeService } from '../../../../services/hpf-fee.service';\r\nimport { ApplePayValidator } from './apple-pay-validator';\r\nimport { ApplePayLineItemBuilder, ApplePayPaymentRequestBuilder, ApplePaySettings } from '../../../../models/digital-wallet';\r\nimport { State } from '../../../../services/global-state';\r\nimport { PayrazrService } from '../../../../services/payrazr';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../../../models/merchant-consumer-portal-fee-settings';\r\nimport { PaymentPlanSettings } from '../../../../models/payment-plan-settings';\r\nimport { PaymentPlanType } from '../../../../models/paymentPlanType';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('components', () => {\r\n\t\tdescribe('Apple Pay', () => {\r\n\t\t\tlet component: ApplePay;\r\n\r\n\t\t\t// create mocks\r\n\t\t\tconst mockElement: Element = mock(Element);\r\n\t\t\tconst mockHpfDigitalWalletService: HpfDigitalWalletService = mock(HpfDigitalWalletService);\r\n\t\t\tconst mockHpfFeeService: HpfFeeService = mock(HpfFeeService);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\t// there are currently 14 versions of ApplePayJS; use +1 to avoid invalid 0 version\r\n\t\t\tlet mockVersion: number = (Math.floor(Math.random() * 13)) + 1;\r\n\r\n\t\t\t// real instance of validator to call validate payment request\r\n\t\t\tlet applePayValidator: ApplePayValidator = new ApplePayValidator(instance(mockI18N));\r\n\r\n\t\t\t// mock session\r\n\t\t\tlet applePaySession: ApplePaySession = {\r\n\t\t\t\tbegin: () => true,\r\n\t\t\t\toncancel: () => true,\r\n\t\t\t\tonpaymentauthorized: () => true,\r\n\t\t\t\tonpaymentmethodselected: () => true,\r\n\t\t\t\tonshippingcontactselected: () => true,\r\n\t\t\t\tonshippingmethodselected: () => true,\r\n\t\t\t\tonvalidatemerchant: () => true,\r\n\t\t\t\tabort: () => true,\r\n\t\t\t\tcompleteMerchantValidation: () => true,\r\n\t\t\t\tcompletePayment: () => true,\r\n\t\t\t\tcompletePaymentMethodSelection: () => true,\r\n\t\t\t\tcompleteShippingContactSelection: () => true,\r\n\t\t\t\tcompleteShippingMethodSelection: () => true,\r\n\t\t\t\taddEventListener: () => true,\r\n\t\t\t\tdispatchEvent: () => true,\r\n\t\t\t\tremoveEventListener: () => true\r\n\t\t\t};\r\n\r\n\t\t\t// mock payment method selected event\r\n\t\t\tconst mockApplePayPaymentMethodSelectedEvent: ApplePayJS.ApplePayPaymentMethodSelectedEvent = {\r\n\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\tdisplayName: 'test user',\r\n\t\t\t\t\tnetwork: 'masterCard',\r\n\t\t\t\t\ttype: 'credit',\r\n\t\t\t\t\tpaymentPass: null\r\n\t\t\t\t},\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tcancelable: true,\r\n\t\t\t\tcancelBubble: true,\r\n\t\t\t\tcomposed: true,\r\n\t\t\t\tcurrentTarget: null,\r\n\t\t\t\tdefaultPrevented: false,\r\n\t\t\t\teventPhase: 0,\r\n\t\t\t\tisTrusted: true,\r\n\t\t\t\treturnValue: true,\r\n\t\t\t\tsrcElement: null,\r\n\t\t\t\ttarget: null,\r\n\t\t\t\ttimeStamp: null,\r\n\t\t\t\ttype: null,\r\n\t\t\t\tcomposedPath: null,\r\n\t\t\t\tinitEvent: null,\r\n\t\t\t\tpreventDefault: null,\r\n\t\t\t\tstopImmediatePropagation: null,\r\n\t\t\t\tstopPropagation: null\r\n\t\t\t};\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tcomponent = new ApplePay(\r\n\t\t\t\t\tinstance(mockElement),\r\n\t\t\t\t\tinstance(mockHpfDigitalWalletService),\r\n\t\t\t\t\tinstance(mockHpfFeeService),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockEventAggregator),\r\n\t\t\t\t\tapplePayValidator,\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// create mock session\r\n\t\t\t\tcomponent.session = applePaySession;\r\n\t\t\t\tcomponent.setApplePaySessionEventHandlers();\r\n\t\t\t\tspyOn(component.session, 'begin');\r\n\t\t\t\tspyOn(component.session, 'completeMerchantValidation');\r\n\t\t\t\tspyOn(component.session, 'completePaymentMethodSelection');\r\n\t\t\t\tspyOn(component.session, 'abort');\r\n\r\n\t\t\t\tcomponent.merchantConsumerPortalFeeSettings = new MerchantConsumerPortalFeeSettings();\r\n\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = false;\r\n\r\n\t\t\t\tcomponent.paymentPlanSettings = new PaymentPlanSettings();\r\n\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\r\n\t\t\t\t// apple specific settings\r\n\t\t\t\tcomponent.applePaySettings = new ApplePaySettings(mockI18N, mockState);\r\n\t\t\t\tcomponent.applePaySettings.totalAmount = (Math.floor(Math.random() * 1000)).toString();\r\n\t\t\t\tcomponent.applePaySettings.acceptsCredit = true;\r\n\t\t\t\tcomponent.applePaySettings.acceptsDebit = true;\r\n\t\t\t\tcomponent.applePaySettings.hasValidVersion = () => mockVersion > 0;\r\n\t\t\t\tcomponent.applePaySettings.supportedNetworks = ['mastercard', 'discover', 'amex', 'cartesbancaires', 'chinaunionpay',\r\n\t\t\t\t\t'eftpos', 'electron', 'elo', 'girocard', 'inerac', 'jcb', 'mada', 'maestro', 'mir', 'privatelabel', 'visa', 'vpay'];\r\n\r\n\t\t\t\t// build mock payment request\r\n\t\t\t\tcomponent.applePayPaymentRequest = component.getApplePayPaymentRequest();\r\n\r\n\t\t\t\t// component level settings\r\n\t\t\t\tcomponent.hasCorrectSignature = true;\r\n\t\t\t\tcomponent.hasAcceptedTerms = true;\r\n\t\t\t\tcomponent.hasCorrectSignature = true;\r\n\t\t\t\tcomponent.hasAcceptedTerms = true;\r\n\r\n\t\t\t\t// localization\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('attached()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\twhen(mockHpfDigitalWalletService.getDigitalWalletServiceSettings())\r\n\t\t\t\t\t\t.thenResolve({ isSuccessful: true, value: { applePayJsVersion: mockVersion } } as ServiceResponse);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set canMakePayments to true when canMakePayments and supportsVersion', async () => {\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tawait component.attached();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.applePaySettings.version).toBe(mockVersion);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('onApplePayButtonClicked()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tspyOn(component, 'getApplePaySession').and.returnValue(applePaySession);\r\n\t\t\t\t\tspyOn(component, 'setApplePaySessionEventHandlers');\r\n\t\t\t\t\tspyOn(component, 'publishApplePayValidationErrors');\r\n\t\t\t\t\tspyOn(applePayValidator, 'validatePaymentRequest').and.callThrough();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should begin ApplePayWebSession', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tspyOn(component, 'canMakeApplePayPayments').and.returnValue(true);\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.onApplePayButtonClicked();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.getApplePaySession).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.setApplePaySessionEventHandlers).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(applePaySession.begin).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should publish error message and return when canMakeApplePayPayments is false', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tspyOn(component, 'canMakeApplePayPayments').and.returnValue(false);\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.onApplePayButtonClicked();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.getApplePaySession).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.setApplePaySessionEventHandlers).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledWith(['localized']);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should publish error message and return when processor does not support debit nor credit', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tspyOn(component, 'canMakeApplePayPayments').and.returnValue(true);\r\n\t\t\t\t\tcomponent.applePaySettings.acceptsCredit = false;\r\n\t\t\t\t\tcomponent.applePaySettings.acceptsDebit = false;\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.onApplePayButtonClicked();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.getApplePaySession).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.setApplePaySessionEventHandlers).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledWith(['localized']);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should publish error message and return when totalAmount is less than 1 and paymen type is final', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tconst mockBadTotal = new ApplePayLineItemBuilder()\r\n\t\t\t\t\t\t.setLabel()\r\n\t\t\t\t\t\t.setAmount('0')\r\n\t\t\t\t\t\t.setType('final')\r\n\t\t\t\t\t\t.getApplePayLineItem();\r\n\r\n\t\t\t\t\tconst mockRequest = new ApplePayPaymentRequestBuilder(component.applePaySettings)\r\n\t\t\t\t\t\t.setTotal(mockBadTotal)\r\n\t\t\t\t\t\t.setCountryCode()\r\n\t\t\t\t\t\t.setCurrencyCode()\r\n\t\t\t\t\t\t.setMerchantCapabilites()\r\n\t\t\t\t\t\t.setSupportedNetworks()\r\n\t\t\t\t\t\t.setRequiredBillingContactFields()\r\n\t\t\t\t\t\t.getApplePayPaymentRequest();\r\n\r\n\t\t\t\t\tspyOn(component, 'canMakeApplePayPayments').and.returnValue(true);\r\n\t\t\t\t\tspyOn(component, 'getApplePayPaymentRequest').and.returnValue(mockRequest);\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.onApplePayButtonClicked();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.getApplePaySession).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.setApplePaySessionEventHandlers).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledWith(['localized']);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should publish error message and return when supportedNewtorks are invalid', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tspyOn(component, 'canMakeApplePayPayments').and.returnValue(true);\r\n\t\t\t\t\tcomponent.applePaySettings.supportedNetworks = [];\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.onApplePayButtonClicked();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.getApplePaySession).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.setApplePaySessionEventHandlers).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledWith(['localized: a valid network is required']);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('setApplePaySessionEventHandlers()', () => {\r\n\t\t\t\tit('should set Apple Pay Session event handlers', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tcomponent.session.onvalidatemerchant = null;\r\n\t\t\t\t\tcomponent.session.onpaymentmethodselected = null;\r\n\t\t\t\t\tcomponent.session.onpaymentauthorized = null;\r\n\t\t\t\t\tcomponent.session.oncancel = null;\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.setApplePaySessionEventHandlers();\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.session.onvalidatemerchant).not.toBeNull();\r\n\t\t\t\t\texpect(component.session.onpaymentmethodselected).not.toBeNull();\r\n\t\t\t\t\texpect(component.session.onpaymentauthorized).not.toBeNull();\r\n\t\t\t\t\texpect(component.session.oncancel).not.toBeNull();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('ApplePaySession Event Handlers', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tspyOn(component, 'publishApplePayValidationErrors');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('onvalidatemerchant()', () => {\r\n\t\t\t\t\tit('should succeed and completeMerchantValidation()', async () => {\r\n\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\tconst encodedMockSession: string = btoa('{ \"apple_pay_session_object\": \"somelongsessionstringfromdws\" }');\r\n\t\t\t\t\t\twhen(mockHpfDigitalWalletService.createApplePayWebSession(anything()))\r\n\t\t\t\t\t\t\t.thenResolve({ isSuccessful: true, value: encodedMockSession } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t// act\r\n\t\t\t\t\t\tawait component.session.onvalidatemerchant(anything());\r\n\r\n\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\texpect(component.session.completeMerchantValidation).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should fail and abort()', async () => {\r\n\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\twhen(mockHpfDigitalWalletService.createApplePayWebSession(anything()))\r\n\t\t\t\t\t\t\t.thenResolve({ isSuccessful: false, value: null } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t// act\r\n\t\t\t\t\t\tawait component.session.onvalidatemerchant(anything());\r\n\r\n\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.session.completeMerchantValidation).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('onpaymentmethodselected()', () => {\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tspyOn(applePayValidator, 'validatePaymentMethodType').and.returnValue([]);\r\n\t\t\t\t\t\tspyOn(applePayValidator, 'validatePostalCode').and.returnValue([]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdescribe('Installment: handleInstallmentPlanNewPaymentMethodSelected()', () => {\r\n\t\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.Installment;\r\n\t\t\t\t\t\t\tconst currentDate = new Date();\r\n\t\t\t\t\t\t\tconst totalAmount: number = Math.floor(Math.random() * 1000);\r\n\t\t\t\t\t\t\tconst recurringAmount: number = Math.floor(Math.random() * 1000);\r\n\t\t\t\t\t\t\tconst numberOfPayments: number = Math.floor(Math.random() * 10);\r\n\t\t\t\t\t\t\tconst firstPayment: number = totalAmount / numberOfPayments;\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.installment = {\r\n\t\t\t\t\t\t\t\tpayToday: false,\r\n\t\t\t\t\t\t\t\tnextPaymentDate: currentDate.setDate(currentDate.getDate() + 1),\r\n\t\t\t\t\t\t\t\tselectedFrequency: 1,\r\n\t\t\t\t\t\t\t\ttotalAmount: totalAmount.toString(),\r\n\t\t\t\t\t\t\t\tnumber: numberOfPayments,\r\n\t\t\t\t\t\t\t\tfirstPayment,\r\n\t\t\t\t\t\t\t\tpaymentAfterFirst: firstPayment,\r\n\t\t\t\t\t\t\t\tdiscountPercent: 0\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tcomponent.applePaySettings.recurringAmount = recurringAmount.toString();\r\n\t\t\t\t\t\t\tcomponent.applePayPaymentRequest = component.getApplePayPaymentRequest();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are disabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = false;\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are enabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.Installment;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans = true;\r\n\t\t\t\t\t\t\tconst plannedPayments = [{ billAmount: 100, planedServiceFee: 1 }, { billAmount: 100, planedServiceFee: 1 }];\r\n\r\n\t\t\t\t\t\t\twhen(mockPayrazrService.computePlannedPayments(\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything()))\r\n\t\t\t\t\t\t\t\t.thenResolve({ plannedPayments });\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.calculatedServiceFee).toBe(plannedPayments[0].planedServiceFee);\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should fail and call abort() when compute plans fails', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.Installment;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans = true;\r\n\r\n\t\t\t\t\t\t\twhen(mockPayrazrService.computePlannedPayments(\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\t\t\tanything()))\r\n\t\t\t\t\t\t\t\t.thenReject(anything())\r\n\t\t\t\t\t\t\t\t.thenCall(() => {\r\n\t\t\t\t\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdescribe('Recurring: handleRecurringPlanNewPaymentMethodSelected()', () => {\r\n\t\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\t\tconst currentDate = new Date();\r\n\t\t\t\t\t\t\tconst firstPaymentDate = currentDate.setDate(currentDate.getDate() + 1);\r\n\t\t\t\t\t\t\tconst lastPaymentDate = currentDate.setDate(currentDate.getDate() + 2);\r\n\t\t\t\t\t\t\tconst recurringAmount: number = Math.floor(Math.random() * 1000);\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.Recurring;\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.recurring = {\r\n\t\t\t\t\t\t\t\tfirstPaymentDate: firstPaymentDate.toString(),\r\n\t\t\t\t\t\t\t\tfrequency: 1,\r\n\t\t\t\t\t\t\t\tlastPaymentDate: lastPaymentDate.toString(),\r\n\t\t\t\t\t\t\t\tnumberOfRetriesForCardDeclines: 0,\r\n\t\t\t\t\t\t\t\tpaymentAmount: (Math.floor(Math.random() * 10)).toString()\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tcomponent.applePaySettings.recurringAmount = recurringAmount.toString();\r\n\t\t\t\t\t\t\tcomponent.applePayPaymentRequest = component.getApplePayPaymentRequest();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are disabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = false;\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are enabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans = true;\r\n\r\n\t\t\t\t\t\t\tconst feeValue = (Math.floor(Math.random() * 100));\r\n\t\t\t\t\t\t\twhen(mockHpfFeeService.calculateFee(anything()))\r\n\t\t\t\t\t\t\t\t.thenResolve({ isSuccessful: true, value: { convenienceFee: feeValue } } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.calculatedServiceFee).toBe(feeValue);\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should fail and call abort() when calculate fee fails', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans = true;\r\n\r\n\t\t\t\t\t\t\tawait when(mockHpfFeeService.calculateFee(anything()))\r\n\t\t\t\t\t\t\t\t.thenReject(anything())\r\n\t\t\t\t\t\t\t\t.thenCall(() => {\r\n\t\t\t\t\t\t\t\t\texpect(component.publishApplePayValidationErrors).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdescribe('Single Payment: handleSinglePayNewPaymentMethodSelected()', () => {\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are disabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = false;\r\n\t\t\t\t\t\t\tmockApplePayPaymentMethodSelectedEvent.paymentMethod.type = 'credit';\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are enabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\r\n\t\t\t\t\t\t\tconst feeValue = (Math.floor(Math.random() * 100));\r\n\t\t\t\t\t\t\twhen(mockHpfFeeService.calculateFee(anything()))\r\n\t\t\t\t\t\t\t\t.thenResolve({ isSuccessful: true, value: { convenienceFee: feeValue } } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.calculatedServiceFee).toBe(feeValue);\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should fail and call abort() when calcualte fee fails', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\r\n\t\t\t\t\t\t\twhen(mockHpfFeeService.calculateFee(anything()))\r\n\t\t\t\t\t\t\t\t.thenResolve({ isSuccessful: false, value: null } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdescribe('Single Future: handleSinglePayNewPaymentMethodSelected()', () => {\r\n\t\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\t\tcomponent.applePaySettings.paymentTiming = 'deferred';\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are disabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = false;\r\n\t\t\t\t\t\t\tmockApplePayPaymentMethodSelectedEvent.paymentMethod.type = 'credit';\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should succeed and call completePaymentMethodSelection() when fees are enabled', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\r\n\t\t\t\t\t\t\tconst feeValue = (Math.floor(Math.random() * 100));\r\n\t\t\t\t\t\t\twhen(mockHpfFeeService.calculateFee(anything()))\r\n\t\t\t\t\t\t\t\t.thenResolve({ isSuccessful: true, value: { convenienceFee: feeValue } } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.calculatedServiceFee).toBe(feeValue);\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit('should fail and call abort() when calcualte fee fails', async () => {\r\n\t\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\t\tcomponent.paymentPlanSettings.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\t\t\tcomponent.merchantConsumerPortalFeeSettings.feesEnabled = true;\r\n\r\n\t\t\t\t\t\t\twhen(mockHpfFeeService.calculateFee(anything()))\r\n\t\t\t\t\t\t\t\t.thenResolve({ isSuccessful: false, value: null } as ServiceResponse);\r\n\r\n\t\t\t\t\t\t\t// act\r\n\t\t\t\t\t\t\tawait component.session.onpaymentmethodselected(mockApplePayPaymentMethodSelectedEvent);\r\n\r\n\t\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\t\texpect(component.session.completePaymentMethodSelection).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('onpaymentauthorized()', () => {\r\n\t\t\t\t\tit('should succeed and call dispatchCustomEvent()', async () => {\r\n\t\t\t\t\t\t// arrange\r\n\t\t\t\t\t\tspyOn(component, 'dispatchCustomEvent');\r\n\t\t\t\t\t\tspyOn(applePayValidator, 'validatePaymentRequest').and.returnValue([]);\r\n\t\t\t\t\t\tspyOn(applePayValidator, 'validateBillingContact').and.returnValue([]);\r\n\r\n\t\t\t\t\t\t// act\r\n\t\t\t\t\t\tawait component.session.onpaymentauthorized(anything());\r\n\r\n\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\texpect(component.dispatchCustomEvent).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.session.abort).toHaveBeenCalledTimes(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ValidationHelpers } from '../../../../services/validation-helpers';\r\n\r\n@autoinject\r\nexport class ApplePayValidator {\r\n\tconstructor(private i18n: I18N) { }\r\n\r\n\tvalidatePaymentRequest(request: ApplePayJSV14.ApplePayPaymentRequest): string[] {\r\n\t\tlet singleValidationErrors: string[] = [];\r\n\t\tlet recurringValidationErrors: string[] = [];\r\n\r\n\t\tif (!request) {\r\n\t\t\tsingleValidationErrors.push(this.i18n.i18next.t('invalidRequest', 'Invalid request'));\r\n\t\t\treturn singleValidationErrors;\r\n\t\t}\r\n\r\n\t\tconst supportsCredit: boolean = request.merchantCapabilities.some((capability) => capability === 'supportsCredit');\r\n\t\tconst supportsDebit: boolean = request.merchantCapabilities.some((capability) => capability === 'supportsDebit');\r\n\t\tif (!supportsCredit && !supportsDebit) {\r\n\t\t\tsingleValidationErrors.push(this.i18n.i18next.t('merchantMustAcceptDebitOrCreditCards', 'Merchant must accept Debit or Credit cards'));\r\n\t\t}\r\n\r\n\t\tif (!this.hasValidLineItemAmount(request.total)) {\r\n\t\t\tsingleValidationErrors.push(this.i18n.i18next.t('amountMustBeGreaterThanZero', 'Amount must be greater than $0.00'));\r\n\t\t}\r\n\r\n\t\tif (!request.supportedNetworks || request.supportedNetworks.length === 0) {\r\n\t\t\tsingleValidationErrors.push(this.i18n.i18next.t('invalidNetowrks', 'Invalid networks') + `: a valid network is required`);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// ApplePayToDo: find a better way to store supported networks\r\n\t\t\tconst applePaySupportedNetworks: string[] = ['mastercard', 'discover', 'amex', 'cartesbancaires', 'chinaunionpay',\r\n\t\t\t\t'eftpos', 'electron', 'elo', 'girocard', 'inerac', 'jcb', 'mada', 'maestro', 'mir', 'privatelabel', 'visa', 'vpay'];\r\n\t\t\tlet invalidNetworks = [];\r\n\t\t\tlet supportedNetworksAreValid: boolean = true;\r\n\t\t\trequest.supportedNetworks.forEach((network) => {\r\n\t\t\t\t// if a passed in network is not supported by Apple Pay, the request is invalid\r\n\t\t\t\tif (applePaySupportedNetworks.indexOf(network.toLowerCase()) === -1) {\r\n\t\t\t\t\tsupportedNetworksAreValid = false;\r\n\t\t\t\t\tinvalidNetworks.push(network);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!supportedNetworksAreValid) {\r\n\t\t\t\tsingleValidationErrors.push(this.i18n.i18next.t('invalidNetowrks', 'Invalid networks') + `: ${invalidNetworks.toString()}`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (request.recurringPaymentRequest) {\r\n\t\t\trecurringValidationErrors.push(...this.validateRecurringPaymentRequest(request.recurringPaymentRequest));\r\n\t\t}\r\n\r\n\t\treturn [...singleValidationErrors, ...recurringValidationErrors];\r\n\t}\r\n\r\n\t// recurring request gets built internally, to prevent confusion we display a general failure msg\r\n\tvalidateRecurringPaymentRequest(request: ApplePayJSV14.ApplePayRecurringPaymentRequest): string[] {\r\n\t\tlet validationErrors: string[] = [];\r\n\r\n\t\tif (!request) {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\tif (!this.hasValidLineItemAmount(request.regularBilling)) {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\tif (!request.regularBilling.paymentTiming || request.regularBilling.paymentTiming !== 'recurring') {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\tif (!request.regularBilling.recurringPaymentStartDate) {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\tif (!request.regularBilling.recurringPaymentIntervalUnit) {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\tif (!request.regularBilling.recurringPaymentIntervalCount) {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\tif (!request.managementURL) {\r\n\t\t\tthis.i18n.i18next.t('applePaySessionFailed', 'Failed to create Apple Pay Session, please contact customer support');\r\n\t\t\treturn validationErrors;\r\n\t\t}\r\n\r\n\t\treturn validationErrors;\r\n\t}\r\n\r\n\tprivate hasValidLineItemAmount(lineItem: ApplePayJSV14.ApplePayLineItem): boolean {\r\n\t\tconst parsedAmount: number = parseInt(lineItem?.amount, 10);\r\n\t\tif (isNaN(parsedAmount)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// pending line items can, have $0 amounts\r\n\t\treturn lineItem.type === 'final' ? parsedAmount > 0 : true;\r\n\t}\r\n\r\n\tvalidateSignatureAndTerms(hasSignature: boolean, acceptedTerms: boolean): string[] {\r\n\t\tlet validationErrors: string[] = [];\r\n\r\n\t\tif (!hasSignature) {\r\n\t\t\tvalidationErrors.push(this.i18n.i18next.t('signUsingNameOnAccount', 'Please sign using the account holder name'));\r\n\t\t}\r\n\r\n\t\tif (!acceptedTerms) {\r\n\t\t\tvalidationErrors.push(this.i18n.i18next.t('youMustAgreeToTermsToContinue', 'You must agree to the terms in order to continue.'));\r\n\t\t}\r\n\r\n\t\treturn validationErrors;\r\n\t}\r\n\r\n\tvalidateBillingContact(billingContact: ApplePayJS.ApplePayPaymentContact): ApplePayJS.ApplePayError[] {\r\n\t\tlet applePayErrors: ApplePayJS.ApplePayError[] = [];\r\n\t\tconst generalError: ApplePayJS.ApplePayError = new ApplePayError('billingContactInvalid');\r\n\t\tconst nameError: ApplePayJS.ApplePayError = new ApplePayError('billingContactInvalid', 'name', 'A valid name is required');\r\n\r\n\t\tif (!billingContact) {\r\n\t\t\tapplePayErrors.push(generalError);\r\n\t\t\treturn applePayErrors;\r\n\t\t}\r\n\r\n\t\tif (!billingContact.givenName || !billingContact.familyName) {\r\n\t\t\tapplePayErrors.push(nameError);\r\n\t\t}\r\n\r\n\t\tapplePayErrors.concat(this.validatePostalCode(billingContact.postalCode));\r\n\r\n\t\treturn applePayErrors;\r\n\t}\r\n\r\n\tvalidatePostalCode(postalCode: string): ApplePayJS.ApplePayError[] {\r\n\t\treturn (!postalCode || !ValidationHelpers.isZipCode(postalCode))\r\n\t\t\t? [new ApplePayError('billingContactInvalid', 'postalCode', 'A valid zip code is required')]\r\n\t\t\t: [];\r\n\t}\r\n\r\n\tvalidatePaymentMethodType(type: string): ApplePayJS.ApplePayError[] {\r\n\t\tconst invalidPaymentTypeError: ApplePayJS.ApplePayError = new ApplePayError('unknown', undefined, `Invalid payment type: ${type}`);\r\n\t\tif (!type) {\r\n\t\t\treturn [invalidPaymentTypeError];\r\n\t\t}\r\n\r\n\t\tswitch (type?.toLowerCase() ?? '') {\r\n\t\t\tcase 'credit':\r\n\t\t\tcase 'debit':\r\n\t\t\tcase 'prepaid':\r\n\t\t\t\treturn [];\r\n\t\t\tdefault:\r\n\t\t\t\treturn [invalidPaymentTypeError];\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","import { bindable, bindingMode, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class CreditCardForm {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) creditCardInformation;\r\n\tbillingNameLabel: string;\r\n\r\n\tconstructor(private i18n:I18N) {\r\n\t\tthis.billingNameLabel = this.i18n.i18next.t('cardHolderName','Card Holder Name');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { DialogController } from 'aurelia-dialog';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { inject } from \"aurelia-framework\";\r\nimport { activationStrategy, Router } from 'aurelia-router';\r\n\r\n@inject(DialogController, Router, EventAggregator)\r\nexport class CustomPrompt {\r\n\trouter: Router;\r\n\tcontroller: DialogController;\r\n\teventAggregator: EventAggregator;\r\n\ttitle: any;\r\n\tcanContinue: any;\r\n\tconfirm: any;\r\n\tcancel: any;\r\n\tviewModelPath: any;\r\n\tviewModelModel: any;\r\n\tdialogSize: any;\r\n\tconfirmAndFresh: any;\r\n\tviewModel: any;\r\n\r\n\tdetermineActivationStrategy() {\r\n\t\treturn activationStrategy.replace; //replace the viewmodel with a new instance\r\n\t\t// or activationStrategy.invokeLifecycle to invoke router lifecycle methods on the existing VM\r\n\t\t// or activationStrategy.noChange to explicitly use the default behavior\r\n\t}\r\n\tconstructor(controller: DialogController, router: Router, eventAggregator: EventAggregator) {\r\n\t\tthis.router = router\r\n\t\tthis.controller = controller;\r\n\t\tthis.eventAggregator = eventAggregator;\r\n\t}\r\n\r\n\tmessage = \"\";\r\n\r\n\tactivate(data) {\r\n\t\tthis.title = data.title;\r\n\t\tthis.message = data.message;\r\n\t\tthis.canContinue = data.canContinue;\r\n\t\tthis.confirm = data.confirm;\r\n\t\tthis.cancel = data.cancel;\r\n\t\tthis.viewModelPath = data.viewModelPath;\r\n\t\tthis.viewModelModel = data.viewModelModel;\r\n\t\tthis.dialogSize = data.dialogSize;\r\n\t\tthis.confirmAndFresh = data.confirmAndFresh;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget dynamicTitle() {\r\n\t\tif (this.viewModel && this.viewModel.currentViewModel && this.viewModel.currentViewModel.title) {\r\n\t\t\treturn this.viewModel.currentViewModel.title;\r\n\t\t}\r\n\t\treturn this.title;\r\n\t}\r\n\r\n\tsave() {\r\n\t\tthis.controller.ok();\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.controller.cancel();\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget dialogCss() {\r\n\t\tif (this.dialogSize == 'lg')\r\n\t\t\treturn \"modal-dialog dialog-lg\";\r\n\t\tif (this.dialogSize == 'sm')\r\n\t\t\treturn \"modal-dialog dialog-sm\";\r\n\t\tif (this.dialogSize == 'md')\r\n\t\t\treturn \"modal-dialog dialog-md\";\r\n\t\treturn \"modal-dialog\";\r\n\t}\r\n}\r\n\r\nexport class PromptModel {\r\n\ttitle: any;\r\n\tmessage: any;\r\n\tcanContinue: any;\r\n\tconfirm: any;\r\n\tcancel: any;\r\n\tdialogSize: any;\r\n\tviewModelPath: any;\r\n\tviewModelModel: any;\r\n\tconfirmAndFresh: any;\r\n\r\n\tconstructor(title, message, canContinue, confirm, cancel, dialogSize, viewModelPath, viewModelModel, confirmAndFresh) {\r\n\t\tthis.title = title;\r\n\t\tthis.message = message;\r\n\t\tthis.canContinue = canContinue;\r\n\t\tthis.confirm = confirm;\r\n\t\tthis.cancel = cancel;\r\n\t\tthis.dialogSize = dialogSize;\r\n\t\tthis.viewModelPath = viewModelPath;\r\n\t\tthis.viewModelModel = viewModelModel;\r\n\t\tthis.confirmAndFresh = confirmAndFresh;\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { ValidationController, ValidationControllerFactory, ValidationRules } from 'aurelia-validation';\r\nimport { Bucket } from '../../models/bucket';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { Customer } from '../../models/customer';\r\nimport { HpfConsumerService, AddCustomersToConsumerUserRequest } from '../../services/hpf-consumer.service';\r\n\r\n@autoinject\r\nexport class CustomerAccountLookupForm {\r\n\r\n\tvalidationController: ValidationController;\r\n\tvalidationErrors: any = [];\r\n\r\n\trequireCustomerAccountNumber: boolean;\r\n\trequireRegistrationId: boolean;\r\n\trequireRegistrationId2: boolean;\r\n\trequireRegistrationId3: boolean;\r\n\trequireZipCode: boolean;\r\n\r\n\tlabelRegistrationId: string;\r\n\tlabelRegistrationId2: string;\r\n\tlabelRegistrationId3: string;\r\n\tlabelZipCode: string;\r\n\r\n\ttooltipRegistrationId: string;\r\n\ttooltipRegistrationId2: string;\r\n\ttooltipRegistrationId3: string;\r\n\ttooltipZipCode: string;\r\n\r\n\tvalueAccountNumber: string;\r\n\tvalueBucket: Bucket;\r\n\tvalueRegistrationId: string;\r\n\tvalueRegistrationId2: string;\r\n\tvalueRegistrationId3: string;\r\n\tvalueZipCode: string;\r\n\r\n\tcustomerAccountNumberSettings: any;\r\n\r\n\tnewCustomer: any;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate router: Router,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate consumerService: HpfConsumerService,\r\n\t\tvalidationControllerFactory: ValidationControllerFactory) {\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope();\r\n\r\n\t\tthis.requireCustomerAccountNumber = this.globalState.business.portalSettings.settings.accountNumberSettings[0].required;\r\n\r\n\t\tthis.customerAccountNumberSettings = this.globalState.business.portalSettings.accountNumberSettings;\r\n\r\n\t\tthis.requireRegistrationId = this.globalState.business.portalSettings.registrationIdSettings.required;\r\n\r\n\t\tthis.labelRegistrationId = this.globalState.business.portalSettings.ezpay.registrationIdSettings.label ?\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.registrationIdSettings.label :\r\n\t\t\tthis.i18n.i18next.t('registrationId', 'Registration ID');\r\n\r\n\t\tthis.tooltipRegistrationId = this.globalState.business.portalSettings.registrationIdSettings.tooltip ?\r\n\t\t\tthis.globalState.business.portalSettings.registrationIdSettings.tooltip :\r\n\t\t\t'';\r\n\r\n\t\tthis.requireRegistrationId2 = this.globalState.business.portalSettings.registrationId2Settings.required;\r\n\r\n\t\tthis.labelRegistrationId2 = this.globalState.business.portalSettings.ezpay.registrationId2Settings.label ?\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.registrationId2Settings.label :\r\n\t\t\tthis.i18n.i18next.t('registrationIdTwo', 'Registration ID 2');\r\n\r\n\t\tthis.tooltipRegistrationId2 = this.globalState.business.portalSettings.registrationId2Settings.tooltip ?\r\n\t\t\tthis.globalState.business.portalSettings.registrationId2Settings.tooltip :\r\n\t\t\t'';\r\n\r\n\t\tthis.requireRegistrationId3 = this.globalState.business.portalSettings.registrationId3Settings.required;\r\n\r\n\t\tthis.labelRegistrationId3 = this.globalState.business.portalSettings.ezpay.registrationId3Settings.label ?\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.registrationId3Settings.label :\r\n\t\t\tthis.i18n.i18next.t('registrationIdThree', 'Registration ID 3');\r\n\r\n\t\tthis.tooltipRegistrationId3 = this.globalState.business.portalSettings.registrationId3Settings.tooltip ?\r\n\t\t\tthis.globalState.business.portalSettings.registrationId3Settings.tooltip :\r\n\t\t\t'';\r\n\r\n\t\tthis.requireZipCode = this.globalState.business.portalSettings.zipcodeSettings.required;\r\n\r\n\t\tthis.labelZipCode = this.globalState.business.portalSettings.ezpay.zipcodeSettings.label ?\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.zipcodeSettings.label :\r\n\t\t\tthis.i18n.i18next.t('zipCode', 'Zip Code');\r\n\r\n\t\tthis.tooltipZipCode = this.globalState.business.portalSettings.zipcodeSettings.tooltip ?\r\n\t\t\tthis.globalState.business.portalSettings.zipcodeSettings.tooltip :\r\n\t\t\t'';\r\n\r\n\t\tthis.configureValidationRules();\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.validationController.validate()\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.valid) {\r\n\t\t\t\t\tthis.validationErrors = [];\r\n\r\n\t\t\t\t\tresponse.results.forEach(x => {\r\n\t\t\t\t\t\tif (!x.valid) {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(x);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthrow new Error('Validation Errors');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet bucketKey = this.valueBucket ? this.valueBucket.bucketKey : null;\r\n\t\t\t\tthis.validationErrors = [];\r\n\r\n\t\t\t\treturn this.payrazrService.lookupCustomerByFilters(\r\n\t\t\t\t\tthis.valueAccountNumber,\r\n\t\t\t\t\tthis.valueRegistrationId,\r\n\t\t\t\t\tthis.valueRegistrationId2,\r\n\t\t\t\t\tthis.valueRegistrationId3,\r\n\t\t\t\t\tthis.valueZipCode,\r\n\t\t\t\t\tbucketKey);\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (this.handleCustomerLookupSuccess(response)) {\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error('Other Customer Lookup Response Errors');\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\t// Persist new customer association.\r\n\t\t\t\tlet request = new AddCustomersToConsumerUserRequest();\r\n\t\t\t\trequest.customerKeys = [this.newCustomer.customerKey];\r\n\t\t\t\treturn this.consumerService.addCustomersToConsumerUser(request);\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\t\tthrow new Error('An error has occurred.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.associateNewCustomer();\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\t// Notification Preferences\r\n\t\t\t\tthis.goToNotificationPreferences();\r\n\t\t\t})\r\n\t\t\t.catch(reason => {\r\n\t\t\t\tif (reason.message === 'Validation Errors'\r\n\t\t\t\t\t|| reason.message === 'Other Customer Lookup Response Errors') {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handleErrors(reason);\r\n\t\t\t});\r\n\t}\r\n\r\n\tgoToNotificationPreferences() {\r\n\t\tthis.router.navigateToRoute('addCustomerNotificationPreferences');\r\n\t}\r\n\r\n\tassociateNewCustomer() {\r\n\t\tif (this.globalState.associatedCustomers.length === 0) {\r\n\t\t\tthis.globalState.associatedCustomers = [new Customer(this.globalState.business, this.newCustomer)];\r\n\t\t} else {\r\n\t\t\tthis.globalState.associatedCustomers.push(new Customer(this.globalState.business, this.newCustomer));\r\n\t\t}\r\n\t}\r\n\r\n\thandleCustomerLookupSuccess(response: any): boolean {\r\n\t\tthis.newCustomer = response.entity;\r\n\r\n\t\tif (this.newCustomer == null) {\r\n\t\t\tif (response.message === 'customerAccountNotEligibleForPayments') {\r\n\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('customerAccountNotEligibleForPayments', { defaultValue: 'This account is not eligible for online payments.' }));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('customerAccountNotEligibleForPaymentsWithPhoneNumber', { defaultValue: `This account is not eligible for online payments, please contact us at ${this.globalState.business.portalSettings.csPhone}.`, phoneNumber: this.globalState.business.portalSettings.csPhone }));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (response.message === 'accountIsNoLongerActive') {\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('accountIsNoLongerActive', { defaultValue: 'Your account is no longer active. If you feel you have received this message in error, please contact customer service.' }));\r\n\t\t\t} else if (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('customerAccountNotFoundError', { defaultValue: 'Account cannot be located. Please contact customer service.' }));\r\n\t\t\t} else {\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('customerAccountNotFoundErrorWithPhoneNumber', { defaultValue: `Account cannot be located. Please contact customer service at ${this.globalState.business.portalSettings.csPhone}`, phoneNumber: this.globalState.business.portalSettings.csPhone }));\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.newCustomer.isRegistered) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('accountAlreadyRegistered', 'This account is already registered'));\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\tthis.newCustomer.mobilePhone = ValidationHelpers.sanitizePhoneNumber(this.newCustomer.mobilePhone);\r\n\t\t\tlet hasPortfolio = false;\r\n\t\t\tlet portfolioIsConfigured = false;\r\n\t\t\tif (this.globalState.business.portalSettings.accountNumberSettings[0].required) {\r\n\t\t\t\tlet account = this.newCustomer.customerAccounts.find((x) => {\r\n\t\t\t\t\t// Property managment ONLY. They can only have 1 merchant.\r\n\t\t\t\t\t// Validate the account number part of the referenceId against user entered\r\n\t\t\t\t\t// value.ReferenceId = [accountNumber - ownerKey]\r\n\t\t\t\t\tlet index = x.referenceId.indexOf('-');\r\n\t\t\t\t\tif (index > 0 && this.globalState.business.verticalMarket === 2) {\r\n\t\t\t\t\t\treturn x.referenceId.substring(0, index) === this.valueAccountNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn x.referenceId.toUpperCase() === this.valueAccountNumber.toUpperCase();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet portfolioName = account ? account.portfolioName : '';\r\n\t\t\t\tlet portfolio = this.newCustomer.portfolios.find(x => {\r\n\t\t\t\t\treturn x.portfolioName === portfolioName;\r\n\t\t\t\t});\r\n\t\t\t\thasPortfolio = !!portfolio;\r\n\t\t\t\tif (hasPortfolio) {\r\n\t\t\t\t\tlet p = new Portfolio(portfolio);\r\n\t\t\t\t\tportfolioIsConfigured = p.hasSettings;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.newCustomer.portfolios.forEach(portfolio => {\r\n\t\t\t\t\tlet p = new Portfolio(portfolio);\r\n\t\t\t\t\thasPortfolio = hasPortfolio || p.hasSettings;\r\n\t\t\t\t\tportfolioIsConfigured = p.hasSettings;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (hasPortfolio) {\r\n\t\t\t\tif (!portfolioIsConfigured) {\r\n\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('portalConfigurationErrorContactCustomerService', 'Portal Configuration Error: The portfolio for this account has not been setup. Please contact customer service.'));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('portalConfigurationErrorContactCustomerServiceWithNumber', 'Portal Configuration Error: The portfolio for this account has not been setup. Please contact customer service at') + ' ' + this.globalState.business.portalSettings.csPhone + '.');\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('customerAccountNotFoundError', { defaultValue: 'Account cannot be located. Please contact customer service.' }));\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.validationErrors.length === 0;\r\n\t}\r\n\r\n\thandleErrors(reason: any) {\r\n\t\tif (reason.status === 404) {\r\n\t\t\tthis.validationErrors.push(\r\n\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t'yourAccountNoLongerActive',\r\n\t\t\t\t\t'Your account is no longer active. If you feel you have received this message in error, please contact customer service.'\r\n\t\t\t\t));\r\n\t\t} else {\r\n\t\t\tlet baseMessage = this.i18n.i18next.t(\r\n\t\t\t\t'unableToRetrieveAccountInformation',\r\n\t\t\t\t'We are unable to retrieve your account information, please try again shortly.'\r\n\t\t\t);\r\n\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\tthis.validationErrors.push(baseMessage);\r\n\t\t\t} else {\r\n\t\t\t\tthis.validationErrors.push(\r\n\t\t\t\t\tbaseMessage +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t\t'ifIssuePersistsPleaseContact',\r\n\t\t\t\t\t\t'If the issue persists please contact us at') +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\tthis.globalState.business.portalSettings.csPhone +\r\n\t\t\t\t\t'.'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.router.navigateToRoute('dashboard');\r\n\t}\r\n\r\n\tconfigureValidationRules() {\r\n\t\tValidationRules\r\n\r\n\t\t\t.ensure('valueRegistrationId').displayName(this.labelRegistrationId)\r\n\t\t\t.required()\r\n\r\n\t\t\t.ensure('valueRegistrationId2').displayName(this.labelRegistrationId2)\r\n\t\t\t.required()\r\n\r\n\t\t\t.ensure('valueRegistrationId3').displayName(this.labelRegistrationId3)\r\n\t\t\t.required()\r\n\r\n\t\t\t.ensure('valueZipCode').displayName(this.labelZipCode)\r\n\t\t\t.required()\r\n\r\n\t\t\t.on(this);\r\n\t}\r\n}\r\n","module.exports = \"\";","import { bindable, BindingEngine, bindingMode, autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { BasePage } from '../../pages/base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { SelectBucket } from '../select-bucket/select-bucket';\r\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\r\n\r\nlet getAccountTypeForShort = function(accountType) {\r\n\tif (!accountType) { return ''; }\r\n\tif (accountType.value == 'General Ledger') { return 'G'; }\r\n\tif (accountType.value == 'Loan') { return 'L'; }\r\n\tif (accountType.value == 'Share Savings') { return 'S'; }\r\n\tif (accountType.value == 'Share Checking') { return 'C'; }\r\n\tif (accountType.value == 'Share') { return 'S'; }\r\n\tif (accountType.value == 'External Loan') { return 'EL'; }\r\n\treturn;\r\n};\r\n\r\n@bindable(\r\n\t{\r\n\t\tname: 'accountNumber',\r\n\t\tdefaultBindingMode: bindingMode.twoWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'suffixVisible',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'suffixRequired',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'hideLabels',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'considerAccountType',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'considerMethod',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'accountNumberSettings',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'bucket',\r\n\t\tdefaultBindingMode: bindingMode.twoWay\r\n\t}\r\n)\r\n@bindable(\r\n\t{\r\n\t\tname: 'alwaysApplyQueryStringParams',\r\n\t\tdefaultBindingMode: bindingMode.oneWay\r\n\t}\r\n)\r\n@autoinject\r\nexport class CustomerAccountNumberCustomElement extends BasePage {\r\n\tglobalState: State;\r\n\tbindingEngine: BindingEngine;\r\n\tpayrazrService: PayrazrService;\r\n\tdisableField: any;\r\n\tadditionalField: any;\r\n\taccountTypeArrayisNotEmpty: any;\r\n\taccountTypeArrayIsNotEmpty: any;\r\n\taccountTypeFor3rdParty: any;\r\n\tdisableAccountTypeSelection: any;\r\n\tisAccountTypeVisible: any;\r\n\tisAccountTypeRequired: any;\r\n\tneedCustomizableValidation: any;\r\n\taccountNumberPiece0: string;\r\n\taccountNumberPiece1: any;\r\n\tmethod: any;\r\n\tconsiderMethod: any;\r\n\tshowAccountTypeFor3rdParty: any;\r\n\tconsiderAccountType: any;\r\n\taccountNumberSettings: any;\r\n\tpiece0Subscription: any;\r\n\tpiece1Subscription: any;\r\n\tpiece2Subscription: any;\r\n\tpiece3Subscription: any;\r\n\taccountNumber: any;\r\n\tsuffixVisible: any;\r\n\tsuffixRequired: any;\r\n\taccountNumberText: string;\r\n\tselectBucketComponent: SelectBucket;\r\n\r\n\t@bindable validationController: ValidationController;\r\n\r\n\t@bindable isBucketsRenderable: boolean = true;\r\n\r\n\t@bindable alwaysApplyQueryStringParams: boolean = false;\r\n\r\n\t@bindable showConsumerLocationDisplayName: boolean = false;\r\n\r\n\t// We still need default ValidationSettings for security consideration\r\n\tfieldValidationSettings = {\r\n\t\t'accountNumber': /^[a-zA-Z0-9\\s\\.\\-\\_]+?$/,\r\n\t\t'registrationId': /^[a-zA-Z0-9\\.\\-\\_]+?$/,\r\n\t\t'memberNumber': /^[0-9]+?$/,\r\n\t\t'suffix': /^[a-zA-Z0-9\\.]+?$/,\r\n\t\t'micr': /^[a-zA-Z0-9\\.]+?$/,\r\n\t\t'additionalField': /^[a-zA-Z0-9\\.]+?$/\r\n\t};\r\n\tconstructor(state: State, bindingEngine: BindingEngine, payrazrService: PayrazrService, private i18n: I18N, eventAggregator: EventAggregator) {\r\n\t\tsuper(eventAggregator);\r\n\t\tthis.globalState = state;\r\n\t\tthis.bindingEngine = bindingEngine;\r\n\t\tthis.payrazrService = payrazrService;\r\n\t\tthis.disableField = false;\r\n\t\tthis.additionalField = '';\r\n\t\tthis.accountTypeArrayIsNotEmpty = this.globalState.business.portalSettings.ezpay.accountTypeFor3rdParty && this.globalState.business.portalSettings.ezpay.accountTypeFor3rdParty.length !== 0;\r\n\r\n\t\tif (this.accountTypeArrayIsNotEmpty) {\r\n\t\t\tthis.accountTypeFor3rdParty = this.globalState.business.portalSettings.ezpay.accountTypeFor3rdParty[0];\r\n\t\t}\r\n\r\n\t\tthis.disableAccountTypeSelection = false;\r\n\r\n\t\tthis.isAccountTypeVisible = this.globalState.business.portalSettings.ezpay.isAccountTypeVisible || this.globalState.business.fetchCanonicalPortfolioSettings().settings.isAccountTypeVisible;\r\n\t\tthis.isAccountTypeRequired = this.globalState.business.portalSettings.ezpay.isAccountTypeRequired || this.globalState.business.fetchCanonicalPortfolioSettings().settings.isAccountTypeRequired;\r\n\t\tthis.needCustomizableValidation = this.globalState.business.portalSettings.ezpay.accountNumberHandling.toLowerCase() === 'lookup' ? false : true;\r\n\t}\r\n\r\n\tconfigureValidationRules() {\r\n\t\tlet accountNumberDisplayName = this.getAccountNumberDisplayName();\r\n\t\tlet accountNumberPiece1DisplayName = this.getAccountNumberPiece1DisplayName();\r\n\t\tlet accountTypeFor3rdPartyDisplayName = this.i18n.i18next.t('accountType', 'Account Type');\r\n\t\tlet additionalFieldDisplayName = this.accountTypeFor3rdParty && this.accountTypeFor3rdParty.customFieldLabel ?\r\n\t\t\tthis.accountTypeFor3rdParty.customFieldLabel :\r\n\t\t\t'';\r\n\r\n\t\tValidationRules\r\n\t\t\t.ensure('accountNumberPiece0').displayName(accountNumberDisplayName)\r\n\t\t\t.required()\r\n\r\n\t\t\t.ensure('accountNumberPiece1').displayName(accountNumberPiece1DisplayName)\r\n\t\t\t.required()\r\n\r\n\t\t\t.ensure('accountTypeFor3rdParty').displayName(accountTypeFor3rdPartyDisplayName)\r\n\t\t\t.required()\r\n\t\t\t.when(() => this.isAccountTypeRequired)\r\n\r\n\t\t\t.ensure('additionalField').displayName(additionalFieldDisplayName)\r\n\t\t\t.required()\r\n\t\t\t.when(() => this.accountTypeFor3rdParty && this.accountTypeFor3rdParty.customFieldLabel)\r\n\r\n\t\t\t.on(this);\r\n\t}\r\n\r\n\tgetAccountNumberDisplayName() {\r\n\t\tlet displayName: string = this.accountNumberSettings[0].label ?\r\n\t\t\tthis.accountNumberSettings[0].label : \r\n\t\t\t'';\r\n\r\n\t\tif (displayName.length < 1) {\r\n\t\t\tif (this.method === 'micr') {\r\n\t\t\t\tdisplayName = this.i18n.i18next.t('customerAccountNumber', 'Member Number');\r\n\t\t\t} else if (this.method === 'segment') {\r\n\t\t\t\tif (this.accountNumberSettings.length === 1) {\r\n\t\t\t\t\tdisplayName = this.accountNumberText;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdisplayName = this.i18n.i18next.t('customerAccountNumber', 'Member Number');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn displayName;\r\n\t}\r\n\r\n\tgetAccountNumberPiece1DisplayName() {\r\n\t\tif (this.accountNumberSettings.length < 2) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tlet displayName: string;\r\n\r\n\t\tif (this.method === 'micr') {\r\n\t\t\tdisplayName = this.accountNumberSettings[1].micrlabel ?\r\n\t\t\t\tthis.accountNumberSettings[1].micrlabel :\r\n\t\t\t\t'MICR';\r\n\t\t} else if (this.method === 'segment') {\r\n\t\t\tdisplayName = this.accountNumberSettings[1].label ?\r\n\t\t\t\tthis.accountNumberSettings[1].label :\r\n\t\t\t\tthis.i18n.i18next.t('suffix', 'Suffix');\r\n\t\t}\r\n\t}\r\n\r\n\tapplyQueryStringParams(params) {\r\n\t\tif (!params) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\tif (params.getParameterValue('locked')) {\r\n\t\t\t\tthis.disableField = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (params.getParameterValue('UMcustID')) {\r\n\t\t\t\tthis.accountNumberPiece0 = params.getParameterValue(\"UMcustID\").substr(0, 35);\r\n\t\t\t}\r\n\r\n\t\t\tif (params.getParameterValue('accountNumber')) {\r\n\t\t\t\tthis.accountNumberPiece0 = params.getParameterValue(\"accountNumber\").substr(0, 35);\r\n\t\t\t}\r\n\r\n\t\t\tif (params.getParameterValue('memberNumber')) {\r\n\t\t\t\tthis.accountNumberPiece0 = params.getParameterValue(\"memberNumber\").substr(0, 35);\r\n\t\t\t}\r\n\r\n\t\t\tif (params.getParameterValue('suffix') || params.getParameterValue('micr')) {\r\n\t\t\t\tthis.accountNumberPiece1 = params.getParameterValue(\"suffix\") ? params.getParameterValue(\"suffix\").substr(0, 35) : params.getParameterValue(\"micr\").substr(0, 35);\r\n\t\t\t}\r\n\r\n\t\t\tlet accountTypes = !!this.globalState.business.portalSettings.ezpay.accountTypeFor3rdParty ? this.globalState.business.portalSettings.ezpay.accountTypeFor3rdParty : [];\r\n\r\n\t\t\tif (params.getParameterValue('accountType') && accountTypes.length > 0) {\r\n\t\t\t\tlet selectedAccountType = accountTypes.find(object => object.description === params.getParameterValue('accountType'));\r\n\r\n\t\t\t\tif (!selectedAccountType) {\r\n\t\t\t\t\tselectedAccountType = accountTypes.find(object => object.value === params.getParameterValue('accountType'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (selectedAccountType) {\r\n\t\t\t\t\tthis.accountTypeFor3rdParty = selectedAccountType;\r\n\t\t\t\t\tthis.disableAccountTypeSelection = this.disableField;\r\n\r\n\t\t\t\t\tif (this.accountTypeFor3rdParty.customFieldLabel && params.getParameterValue('loanId')) {\r\n\t\t\t\t\t\tthis.additionalField = params.getParameterValue('loanId');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.log('Error encountered in querystring params.');\r\n\t\t}\r\n\t}\r\n\r\n\tloadTranslations() {\r\n\t\tthis.accountNumberText = this.i18n.i18next.t('accountNumber', 'Account Number');\r\n\t}\r\n\r\n\tattached() {\r\n\t\tsuper.attached();\r\n\t\tthis.method = 'segment';\r\n\t\tif (this.considerMethod === 'true' && !!this.globalState.business.portalSettings.ezpay.accountNumberMethod) {\r\n\t\t\tthis.method = this.globalState.business.portalSettings.ezpay.accountNumberMethod;\r\n\t\t}\r\n\r\n\t\tlet hasAccountTypeFor3rdParty = false;\r\n\t\tlet ezpayPortfolio = this.globalState.business.fetchPortfolioSettings(this.globalState.business.ezpayPortfolioName);\r\n\r\n\t\tif (ezpayPortfolio && this.isAccountTypeVisible) {\r\n\t\t\thasAccountTypeFor3rdParty = true;\r\n\t\t}\r\n\r\n\t\tif (hasAccountTypeFor3rdParty === false) {\r\n\t\t\tlet portfolios = this.globalState.business.portfolioSettings;\r\n\t\t\tif (portfolios) {\r\n\t\t\t\tlet index = 0;\r\n\r\n\t\t\t\tfor (let portfolioName in portfolios) {\r\n\t\t\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(portfolioName);\r\n\t\t\t\t\tif (portfolio && portfolio.merchantSettings && portfolio.merchantSettings.hasAccountTypeFor3rdParty) {\r\n\t\t\t\t\t\thasAccountTypeFor3rdParty = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.showAccountTypeFor3rdParty = this.considerAccountType === 'true'\r\n\t\t\t&& hasAccountTypeFor3rdParty\r\n\t\t\t&& this.method === 'segment'\r\n\t\t\t&& this.accountTypeArrayIsNotEmpty\r\n\t\t\t&& this.isAccountTypeVisible;\r\n\r\n\t\tif (this.alwaysApplyQueryStringParams) {\r\n\t\t\tthis.applyQueryStringParams(this.payrazrService);\r\n\t\t}\r\n\r\n\t\tthis.loadTranslations();\r\n\r\n\t\tthis.configureValidationRules();\r\n\t}\r\n\r\n\t// This will only ever call the portalsettings\r\n\tvalidate(errors) {\r\n\t\tlet settings = this.accountNumberSettings;\r\n\t\tif (this.accountNumberSettings.length === 1) {\r\n\t\t\t// I think we still need verify user's input for registrationId by a flexible default validationExpression for security consideration\r\n\t\t\t// But I do not change the current behavior since this is not in planned scope. Just make a comment it here. Easy change to be verified for registrationId now.\r\n\t\t\tconst defaultLabel = this.i18n.i18next.t('accountNumber','Account Number');\r\n\t\t\tconst fieldName = 'accountNumber';\r\n\t\t\tif (settings[0].validationExpression && this.needCustomizableValidation) { this.customizableValidation(this.accountNumberPiece0, settings[0].label || defaultLabel, settings[0].validationExpression, true, errors, settings[0].validationMessage); }\r\n\t\t\telse { this.fieldValidation(this.accountNumberPiece0, settings[0].label || defaultLabel, this.fieldValidationSettings[fieldName], true, errors, fieldName); }\r\n\t\t} else {\r\n\t\t\tif (settings[0].validationExpression && this.needCustomizableValidation) { this.customizableValidation(this.accountNumberPiece0, settings[0].label || \"member number\", settings[0].validationExpression, true, errors, settings[0].validationMessage); }\r\n\t\t\telse { this.fieldValidation(this.accountNumberPiece0, settings[0].label || \"Member Number\", this.fieldValidationSettings[\"memberNumber\"], true, errors, \"memberNumber\"); }\r\n\r\n\t\t\tconst defaultSegments1Label = this.method === 'micr' ? 'MICR' : 'Suffix';\r\n\t\t\tconst fieldName = this.method === 'micr' ? 'micr' : 'suffix';\r\n\t\t\tif (settings[1].validationExpression && this.needCustomizableValidation) { this.customizableValidation(this.accountNumberPiece1, settings[1].label || defaultSegments1Label, settings[1].validationExpression, this.suffixRequired == null ? true : this.suffixRequired, errors, settings[1].validationMessage); }\r\n\t\t\telse { this.fieldValidation(this.accountNumberPiece1, settings[1].label || defaultSegments1Label, this.fieldValidationSettings[fieldName], this.suffixRequired == null ? true : this.suffixRequired, errors, fieldName); }\r\n\r\n\t\t\tif (this.showAccountTypeFor3rdParty) {\r\n\t\t\t\tconst fieldName = 'additionalField';\r\n\t\t\t\tif (!!this.accountTypeFor3rdParty.customFieldLabel) {\r\n\t\t\t\t\tthis.fieldValidation(this.additionalField, this.accountTypeFor3rdParty.customFieldLabel, this.fieldValidationSettings[fieldName], true, errors, fieldName);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.selectBucketComponent)\r\n\t\t\tthis.selectBucketComponent.validate(errors);\r\n\t}\r\n\r\n\tbind() {\r\n\t\t\r\n\t\tthis.piece0Subscription = this.bindingEngine.propertyObserver(this, 'accountNumberPiece0')\r\n\t\t\t.subscribe((newValue, oldValue) => {\r\n\t\t\t\tif (this.method === 'micr') {\r\n\t\t\t\t\tif (!!this.accountNumberPiece1 && (this.accountNumberPiece1.match(/^[12]\\d{12}?$/) != null)) {\r\n\t\t\t\t\t\tthis.accountNumber = `${this.accountNumberPiece1.substr(3, 10)}-${this.accountNumberPiece1.substr(1, 2)}${this.accountNumberPiece1.substr(0, 1) === '1' ? 'S' : 'L'}`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.accountNumber = this.accountNumberPiece1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet accountNumberPiece1 = '';\r\n\t\t\t\t\tif (!!this.accountNumberPiece1) {\r\n\t\t\t\t\t\taccountNumberPiece1 = this.accountNumberPiece1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.accountNumber = ((this.accountNumberSettings.length === 1) || (!this.accountNumberPiece0)) || (!this.suffixVisible && !this.showAccountTypeFor3rdParty)\r\n\t\t\t\t\t\t? newValue\r\n\t\t\t\t\t\t: `${newValue}-${accountNumberPiece1}${this.additionalField}${this.showAccountTypeFor3rdParty ? getAccountTypeForShort(this.accountTypeFor3rdParty) : ''}`;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tthis.piece1Subscription = this.bindingEngine.propertyObserver(this, 'accountNumberPiece1')\r\n\t\t\t.subscribe((newValue, oldValue) => {\r\n\t\t\t\tif (this.method === 'micr') {\r\n\t\t\t\t\tif (!!newValue && (newValue.match(/^[12]\\d{12}?$/) != null)) {\r\n\t\t\t\t\t\tthis.accountNumber = `${newValue.substr(3, 10)}-${newValue.substr(1, 2)}${newValue.substr(0, 1) === '1' ? 'S' : 'L'}`;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.accountNumber = newValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.accountNumber = ((!this.accountNumberPiece0) || (!newValue))\r\n\t\t\t\t\t\t? this.accountNumberPiece0\r\n\t\t\t\t\t\t: `${this.accountNumberPiece0}-${newValue}${this.additionalField}${this.showAccountTypeFor3rdParty ? getAccountTypeForShort(this.accountTypeFor3rdParty) : ''}`;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tthis.piece2Subscription = this.bindingEngine.propertyObserver(this, 'accountTypeFor3rdParty')\r\n\t\t\t.subscribe((newValue, oldValue) => {\r\n\t\t\t\tthis.additionalField = '';\r\n\t\t\t\tthis.accountNumber = `${this.accountNumberPiece0}-${this.accountNumberPiece1}${this.additionalField}${getAccountTypeForShort(newValue)}`;\r\n\t\t\t});\r\n\t\tthis.piece3Subscription = this.bindingEngine.propertyObserver(this, 'additionalField')\r\n\t\t\t.subscribe((newValue, oldValue) => {\r\n\t\t\t\tlet _accountNumberPiece1 = this.accountNumberPiece1 ? this.accountNumberPiece1 : '';\r\n\r\n\t\t\t\tthis.accountNumber = `${this.accountNumberPiece0}-${_accountNumberPiece1}${newValue}${getAccountTypeForShort(this.accountTypeFor3rdParty)}`;\r\n\t\t\t});\r\n\t}\r\n\r\n\tunbind() {\r\n\t\tthis.piece0Subscription.dispose();\r\n\t\tthis.piece1Subscription.dispose();\r\n\t\tthis.piece2Subscription.dispose();\r\n\t\tthis.piece3Subscription.dispose();\r\n\t}\r\n\r\n\t// This validation is set through the portal settings.\r\n\tcustomizableValidation(piece, label, validationExpression, isRequired, errors, validationMessage) {\r\n\t\tif (validationExpression && piece.length > 0) {\r\n\t\t\tif (piece.match(validationExpression) == null) {\r\n\t\t\t\tif (validationMessage) {\r\n\t\t\t\t\terrors.push(validationMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectly', { defaultValue: `The ${label} entered is not formatted correctly.`, label }));\r\n\t\t\t}\r\n\t\t} else if (piece.length === 0 && isRequired) {\r\n\t\t\terrors.push(this.i18n.i18next.t('pleaseEnterYour', { defaultValue: `Please enter your ${label}.`, label }));\r\n\t\t}\r\n\t}\r\n\r\n\t// Business logic for the member number, suffix, and account number/registrationId\r\n\tfieldValidation(piece, label, validationExpression, isRequired, errors, fieldName) {\r\n\t\tif (isRequired && !piece) {\r\n\t\t\terrors.push(this.i18n.i18next.t('pleaseEnterYour', { defaultValue: `Please enter your ${label}.`, label }));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!validationExpression) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (piece && piece.match(validationExpression) == null) {\r\n\t\t\tif (fieldName === 'memberNumber') {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectlyMustBeNumberBetweenOneAndTenDigits' , { defaultValue: `The ${label} entered is not formatted correctly: must be a number between 1 and 10 digits.`, label: label }));\r\n\t\t\t}\r\n\t\t\telse if (fieldName === 'accountNumber') {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectlyOnlyValidIs', { defaultValue: `The ${label} entered is not formatted correctly: (A-Z), (0-9), period, and hyphen are valid.`, label: label }));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\telse if (fieldName === 'registrationId') {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectlyOnlyValidIs', { defaultValue: `The ${label} entered is not formatted correctly: (A-Z), (0-9), period, and hyphen are valid.`, label: label }));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\telse if (fieldName === 'suffix') {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectlySpecialCharactersNotAllowed', { defaultValue: `The ${label} entered is not formatted correctly: special characters not allowed.`, label: label }));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\telse if (fieldName === 'micr') {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectlySpecialCharactersNotAllowed', { defaultValue: `The ${label} entered is not formatted correctly: special characters not allowed.`, label: label }));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('labelNotFormattedCorrectlyOnlyValidIs', { defaultValue: `The ${label} entered is not formatted correctly: (A-Z), (0-9), period, and hyphen are valid.`, label: label }));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","export class CustomerLookupCustomElement {\r\n\tcustomerId: string;\r\n\tzip: string;\r\n\tcustomerData: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.customerId = '';\r\n\t\tthis.zip = '';\r\n\t\tthis.customerData = new CustomerData();\r\n\t}\r\n\r\n\tsearch() {\r\n\t\tif (this.customerId && this.zip) {\r\n\t\t\tthis.customerData.name = 'Joe';\r\n\t\t\tthis.customerData.address1 = '1 south High St.';\r\n\t\t\tthis.customerData.city = 'Anytown';\r\n\t\t\tthis.customerData.state = 'AZ';\r\n\t\t\tthis.customerData.zip = this.zip;\r\n\t\t}\r\n\t}\r\n\r\n\tattached(customerData) {\r\n\t\tthis.customerData = customerData;\r\n\t}\r\n}\r\n\r\nexport class CustomerData {\r\n\tname: string = '';\r\n\taddress1: string = '';\r\n\tcity: string = '';\r\n\tstate: string = '';\r\n\tzip: string = '';\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, customAttribute, inject } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\n\r\n@customAttribute('datepicker')\r\n@inject(Element)\r\nexport class DatePicker {\r\n\t@bindable displayMode: any;\r\n\t@bindable min: any;\r\n\t@bindable max: any;\r\n\t@bindable businessTimezone: any;\r\n\t// --0: normal; 1: 15th; 2: lastDayOfMonth\r\n\telement: any;\r\n\tdatesEnabled: any;\r\n\r\n\tconstructor(element) {\r\n\t\tthis.element = element;\r\n\t}\r\n\r\n\t/// WCAG Compliance\r\n\tconfigureAccessibility() {\r\n\r\n\t\tconst datePickers = document.querySelectorAll('.datepicker');\r\n\r\n\t\t// for label dates\r\n\t\tconst dateOptions = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };\r\n\t\tconst offsetFromUTC = (new Date()).getTimezoneOffset() * 360_000; // getTimezoneOffset() returns minutes\r\n\r\n\t\tdatePickers.forEach(dp => {\r\n\t\t\t// set roles\r\n\t\t\tdp.querySelectorAll('th,td')\r\n\t\t\t\t.forEach(elem => {\r\n\t\t\t\t\telem.setAttribute('role', 'button');\r\n\t\t\t\t});\r\n\r\n\t\t\t// set all dates for all open datepickers\r\n\t\t\tdp.querySelectorAll('[class$=\"day\"]')\r\n\t\t\t\t.forEach(elem => {\r\n\t\t\t\t\tlet date = new Date(+elem.getAttribute('data-date') + offsetFromUTC);\r\n\t\t\t\t\tlet dateStr = date.toLocaleDateString('US-en', dateOptions);\r\n\t\t\t\t\telem.setAttribute('aria-label', dateStr);\r\n\t\t\t\t});\r\n\r\n\t\t\t// Set aria-disabled attributes\r\n\t\t\tdp.querySelectorAll('[class*=\"disabled\"]')\r\n\t\t\t\t.forEach(elem => {\r\n\t\t\t\t\telem.setAttribute('aria-disabled', 'true');\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.datesEnabled = [];\r\n\t\t$(this.element).datepicker(this.configureOption())\r\n\t\t\t.on('change', e => fireEvent(e.target, 'input'))\r\n\t\t\t.on('click show change', this.configureAccessibility);\r\n\r\n\t\t// This is a workaround for mobile devices, when using the \"next\" button to tab through a form\r\n\t\t// the keydown event never gets fired and the bootstrap datepicker only hides the popup picker\r\n\t\t// on keydown for tab. This forces a tab keydown event on blur so the calendar always goes away\r\n\t\tthis.element.onblur = (e) => {\r\n\t\t\tif (e.relatedTarget !== null) {\r\n\t\t\t\tthis.element.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 9 } as KeyboardEventInit));\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tdetached() {\r\n\t\t$(this.element)\r\n\t\t\t.datepicker('destroy')\r\n\t\t\t.off('change');\r\n\t}\r\n\r\n\tdisplayModeChanged(newValue, oldValue) {\r\n\t\tthis.detached();\r\n\t\t$(this.element).datepicker(this.configureOption())\r\n\t\t\t.on('change', e => fireEvent(e.target, 'input'));\r\n\t}\r\n\r\n\tmaxChanged(newValue, oldValue) {\r\n\t\tthis.detached();\r\n\t\t$(this.element).datepicker(this.configureOption())\r\n\t\t\t.on('change', e => fireEvent(e.target, 'input'));\r\n\t}\r\n\r\n\tbusinessTimezoneChanged(newValue, oldValue) {\r\n\t\tthis.detached();\r\n\t\t$(this.element).datepicker(this.configureOption())\r\n\t\t\t.on('change', e => fireEvent(e.target, 'input'));\r\n\t}\r\n\r\n\tconfigureOption() {\r\n\t\tlet min: number = 0;\r\n\t\tif (this.min !== undefined) {\r\n\t\t\tmin = this.min;\r\n\t\t}\r\n\r\n\t\tlet max: number = 3650;\r\n\t\tif (this.max !== undefined) {\r\n\t\t\tmax = this.max;\r\n\t\t}\r\n\r\n\t\tlet startDate = moment(this.businessTimezone ? moment.tz(this.businessTimezone).format('MM/DD/YYYY') : new Date()).add(min, 'days').toDate();\r\n\t\tlet endDate = moment(this.businessTimezone ? moment.tz(this.businessTimezone).format('MM/DD/YYYY') : new Date()).add(max, 'days').toDate();\r\n\t\tlet func = this.displayMode === 2 ? function (date) {\r\n\t\t\tlet month = date.getMonth();\r\n\t\t\tdate.setDate(date.getDate() + 1);\r\n\t\t\tif (date.getMonth() !== month) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t} : this.displayMode === 1 ? function(date) {\r\n\t\t\tif (date.getDate() === 15) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t} : function(date) {\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\t\tlet options = {\r\n\t\t\tshowOn: 'button',\r\n\t\t\tshowButtonPanel: true,\r\n\t\t\tbuttonImageOnly: false,\r\n\t\t\tbuttonText: 'Calendar View',\r\n\t\t\tcloseText: 'Close',\r\n\t\t\tstartDate,\r\n\t\t\tendDate,\r\n\t\t\torientation: 'auto auto',\r\n\t\t\tformat: 'mm/dd/yyyy',\r\n\t\t\tbeforeShowDay: func,\r\n\t\t\tautoclose: true\r\n\t\t};\r\n\t\treturn options;\r\n\t}\r\n}\r\n\r\nfunction createEvent(name) {\r\n\tlet event = document.createEvent('Event');\r\n\tevent.initEvent(name, true, true);\r\n\treturn event;\r\n}\r\n\r\nfunction fireEvent(element, name) {\r\n\tlet event = createEvent(name);\r\n\telement.dispatchEvent(event);\r\n}\r\n","import { bindable, inject } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport { defineCustomElements } from '@duetds/date-picker/dist/loader';\r\n\r\n/**\r\n * Wrapper class for duet-date-picker (@duetds/date-picker).\r\n * This datepicker is accessibility compliant and functions as a drop-in\r\n * replacement for the old JQueryUI datepicker.\r\n */\r\n@inject(Element)\r\nexport class DuetDatePicker {\r\n\treadonly element: HTMLDuetDatePickerElement;\r\n\t@bindable min: number;\r\n\t@bindable max: number;\r\n\t@bindable businessTimezone: string;\r\n\t@bindable selectedDate: string;\r\n\t@bindable selectedFunction;\r\n\r\n\tconstructor(element) {\r\n\t\tthis.element = element;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tdefineCustomElements(this.element as any); // injects picker\r\n\r\n\t\tlet min: number = 0;\r\n\t\tif (this.min !== undefined) {\r\n\t\t\tmin = this.min;\r\n\t\t}\r\n\r\n\t\tlet max: number = 3650;\r\n\t\tif (this.max !== undefined) {\r\n\t\t\tmax = this.max;\r\n\t\t}\r\n\r\n\t\tlet startDate = moment(this.businessTimezone ? moment.tz(this.businessTimezone).format('MM/DD/YYYY') : new Date()).add(min, 'days').format('YYYY-MM-DD');\r\n\t\tlet endDate = moment(this.businessTimezone ? moment.tz(this.businessTimezone).format('MM/DD/YYYY') : new Date()).add(max, 'days').format('YYYY-MM-DD');\r\n\t\tthis.element.min = startDate;\r\n\t\tthis.element.max = endDate;\r\n\r\n\t\tthis.element.dateAdapter = {\r\n\t\t\tparse(value = '', createDate) {\r\n\t\t\t\tconst DATE_FORMAT = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\r\n\t\t\t\tconst matches = value.match(DATE_FORMAT);\r\n\t\t\t\tif (matches) {\r\n\t\t\t\t\treturn createDate(matches[3], matches[1], matches[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tformat(date) {\r\n\t\t\t\treturn `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tthis.element.addEventListener('duetChange', (e: CustomEvent) => {\r\n\t\t\tthis.selectedDate = moment(e.detail.value).format('MM/DD/YYYY');\r\n\t\t});\r\n\r\n\t\tthis.element.localization = {\r\n\t\t\tbuttonLabel: 'Choose date',\r\n\t\t\tplaceholder: 'MM/DD/YYYY',\r\n\t\t\tselectedDateMessage: 'Selected date is',\r\n\t\t\tprevMonthLabel: 'Previous month',\r\n\t\t\tnextMonthLabel: 'Next month',\r\n\t\t\tmonthSelectLabel: 'Month',\r\n\t\t\tyearSelectLabel: 'Year',\r\n\t\t\tcloseLabel: 'Close window',\r\n\t\t\tcalendarHeading: 'Choose a date',\r\n\t\t\tdayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n\t\t\tmonthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n\t\t\tmonthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n\t\t\tlocale: 'en-us'\r\n\t\t};\r\n\t}\r\n\r\n\tselectedDateChanged(d: string) {\r\n\t\tthis.element.value = moment(d).format('YYYY-MM-DD');\r\n\t\tif(this.selectedFunction && this.element.value !== \"Invalid date\") {\r\n\t\t\tthis.selectedFunction(this.element.value);\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root {\\r\\n --duet-color-primary: #005fcc;\\r\\n --duet-color-text: #333;\\r\\n --duet-color-text-active: #fff;\\r\\n --duet-color-placeholder: #666;\\r\\n --duet-color-button: #f5f5f5;\\r\\n --duet-color-surface: #fff;\\r\\n --duet-color-overlay: rgba(0, 0, 0, 0.8);\\r\\n --duet-color-border: #333;\\r\\n --duet-font: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif;\\r\\n --duet-font-normal: 400;\\r\\n --duet-font-bold: 600;\\r\\n --duet-radius: 0px;\\r\\n --duet-z-index: 600;\\r\\n}\\r\\n\\r\\n/* copied from bootstrap .form-control and bootstrapCustom .btn:focus */\\r\\n.duet-date__input {\\r\\n display: block;\\r\\n width: 100%;\\r\\n height: calc(1.5em + 0.75rem + 2px);\\r\\n padding: 0.375rem 0.75rem;\\r\\n font-size: 1rem;\\r\\n font-weight: 400;\\r\\n line-height: 1.5;\\r\\n background-color: #fff;\\r\\n background-clip: padding-box;\\r\\n border: 1px solid #ced4da;\\r\\n}\\r\\n\\r\\n .duet-date__input:focus {\\r\\n box-shadow: 0 0 0 .15em black;\\r\\n outline: none;\\r\\n transition: none;\\r\\n }\\r\\n\\r\\nbutton.duet-date__toggle {\\r\\n transition: none;\\r\\n}\\r\\n\\r\\n button.duet-date__toggle:focus {\\r\\n box-shadow: 0 0 0 .15em black;\\r\\n outline: none;\\r\\n transition: none;\\r\\n }\\r\\n\\r\\n.duet-date__day:not(.is-month), .duet-date__day[aria-disabled=true] {\\r\\n background: transparent;\\r\\n color: #000;\\r\\n opacity: 0.55;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\nimport he from 'he';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Router } from 'aurelia-router';\r\n\r\n@autoinject()\r\nexport class DisclosuresCustomElement {\r\n\t@bindable hideAgreed: boolean;\r\n\tcontent: any;\r\n\r\n\tconstructor(private element: Element, private payrazrService: PayrazrService, private router: Router) {\r\n\t\tthis.element = element;\r\n this.payrazrService = payrazrService;\r\n this.content = '';\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.payrazrService.getDisclosure()\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result === null || result === undefined) {\r\n\t\t\t\t\tthis.content = '';\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.content = he.decode(result);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.log(`error getting disclosures: ${JSON.stringify(error)}`);\r\n\t\t\t});\r\n\t}\r\n\r\n\ttheyAgreed() {\r\n\t\tlet eventData = { value: true };\r\n\t\tlet evt = DOM.createCustomEvent('agreed', { bubbles: true, cancelable: true, detail: eventData });\r\n\t\tthis.element.dispatchEvent(evt);\r\n\t}\r\n}","module.exports = \"\";","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { bindable, bindingMode } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class FeeSummaryBox {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) feeAmount: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) totalAmount: number;\r\n\t@bindable isDigitalWallet: boolean;\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".summary-container {\\r\\n padding: 20px;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { HpfConsumerService, RemoveCustomersFromConsumerUserRequest } from '../../services/hpf-consumer.service';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationController, ValidationControllerFactory } from 'aurelia-validation';\r\n\r\n@autoinject\r\nexport class GridRemoveCustomer {\r\n\r\n\tvalidationController: ValidationController;\r\n\r\n\tassociatedCustomers: Array;\r\n\r\n\tselectedRows: Array = [];\r\n\r\n\tcurrentPage: number;\r\n\tpageSize: number = 10;\r\n\ttotalItems: number;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate consumerService: HpfConsumerService,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate router: Router,\r\n\t\tvalidationControllerFactory: ValidationControllerFactory) {\r\n\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope(); \r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.payrazrService.refreshGlobalCustomer()\r\n\t\t\t.then((response: State) => {\r\n\t\t\t\tthis.globalState = response;\r\n\t\t\t\tthis.update();\r\n\t\t\t});\r\n\t}\r\n\r\n\tupdate() {\r\n\t\tthis.associatedCustomers = this.globalState.associatedCustomers;\r\n\t\tthis.totalItems = this.associatedCustomers.length;\r\n\t}\r\n\r\n\tremove() {\r\n\t\tthis.validationController.errors = [];\r\n\r\n\t\tif (!this.selectedRows.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet isConfirmed = confirm(this.i18n.i18next\r\n\t\t\t.t('confirmRemoveCustomer', 'Are you sure you want to remove this customer?'));\r\n\r\n\t\tif (!isConfirmed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet request = new RemoveCustomersFromConsumerUserRequest();\r\n\t\trequest.customerKeys = this.selectedRows;\r\n\t\tthis.consumerService.removeCustomersFromConsumerUser(request)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\t\tthrow new Error(response.resultMessage);\r\n\t\t\t\t}\r\n\r\n\t\t\t\talert(this.i18n.i18next\r\n\t\t\t\t\t.t('customersSuccessfullyRemoved', 'Customer(s) successfully removed.'));\r\n\r\n\t\t\t\tthis.router.navigateToRoute('dashboard');\r\n\t\t\t})\r\n\t\t\t.catch(reason => {\r\n\t\t\t\tthis.validationController.errors = this.validationController.errors\r\n\t\t\t\t\t.concat([reason.message]);\r\n\t\t\t});\r\n\t}\r\n}\r\n","module.exports = \"\";","module.exports = \"\";","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"ux-dialog-container>div {\\r\\n margin-top: 30px!important;\\r\\n}\\r\\n\\r\\n@media (max-width: 1024px) {\\r\\n ux-dialog-container>div {\\r\\n width: 80%!important;\\r\\n margin-left: 10%!important;\\r\\n }\\r\\n}\\r\\n\\r\\n@media (min-width: 1025px) {\\r\\n ux-dialog-container>div {\\r\\n width: 60%!important;\\r\\n margin-left: 20%!important;\\r\\n }\\r\\n}\", \"\"]);\n\n// exports\n","import {DialogController} from 'aurelia-dialog';\r\nimport { I18N } from 'aurelia-i18n';\r\n \r\nexport class LegalDisclosuresDialog {\r\n\tstatic inject = [DialogController, I18N];\r\n\r\n\tconstructor(public controller, private i18n) { }\r\n\r\n\tactivate() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\";","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"table {\\r\\n display: table;\\r\\n margin: 0 0 1.5em;\\r\\n width: 100%;\\r\\n border-collapse: collapse;\\r\\n border-spacing: 0;\\r\\n text-indent: initial;\\r\\n background: #fff;\\r\\n border: solid 1px #ddd;\\r\\n margin-bottom: 1.25rem;\\r\\n table-layout: auto\\r\\n}\\r\\n\\r\\ntbody {\\r\\n display: table-row-group;\\r\\n vertical-align: middle;\\r\\n border-color: inherit\\r\\n}\\r\\n\\r\\ntr {\\r\\n display: table-row;\\r\\n vertical-align: inherit;\\r\\n border-color: inherit\\r\\n}\\r\\n\\r\\ntable thead tr th, table tfoot tr th, table tfoot tr td, table tbody tr th, table tbody tr td, table tr td {\\r\\n display: table-cell;\\r\\n line-height: 1.125rem\\r\\n}\\r\\n\\r\\ntable tr th, table tr td {\\r\\n color: #222;\\r\\n font-size: .875rem;\\r\\n padding: .5625rem .625rem;\\r\\n text-align: left\\r\\n}\\r\\n\\r\\ntable tr.even, table tr.alt, table tr:nth-of-type(even) {\\r\\n background: #F9F9F9;\\r\\n}\\r\\n\\r\\nul {\\r\\n list-style: disc\\r\\n}\\r\\n\\r\\nul, ol {\\r\\n margin: 0 0 1.5em 3em;\\r\\n overflow-wrap: break-word\\r\\n}\\r\\n\\r\\nul, ol, dl {\\r\\n font-size: 1rem;\\r\\n line-height: 1.6;\\r\\n padding: 0\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\";","import {DialogController} from 'aurelia-dialog';\r\nimport { I18N } from 'aurelia-i18n';\r\n \r\nexport class LegalPrivacyPolicyDialog {\r\n\tstatic inject = [DialogController, I18N];\r\n\r\n\tconstructor(public controller, private i18n) { }\r\n\r\n\tactivate() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\";","import {DialogController} from 'aurelia-dialog';\r\nimport { I18N } from 'aurelia-i18n';\r\n \r\nexport class LegalTermsDialog {\r\n\tstatic inject = [DialogController, I18N];\r\n\r\n\tconstructor(public controller, private i18n) { }\r\n\r\n\tactivate() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\";","import { bindable } from 'aurelia-framework';\r\n\r\nexport class LogoImageCustomElement {\r\n\t@bindable logoText: string = '';\r\n\t@bindable useLogo: boolean = true;\r\n\t@bindable logoUrl: string = '';\r\n\r\n\tattached() {\r\n\t\tif (this.logoText == null)\r\n\t\t\tthis.logoText = '';\r\n\r\n\t\tif (this.logoUrl == null)\r\n\t\t\tthis.logoUrl = '';\r\n\t}\r\n}","module.exports = \"\\r\\n\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport Cookies from 'js-cookie';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { PostLoginRouteManager } from '../../helpers/post-login-route-manager';\r\nimport { MfaSetupDetails } from '../../models/mfa/mfa-setup-details';\r\nimport { MfaTwoFactorMethod } from '../../models/mfa/mfa-two-factor-method';\r\nimport { MfaVerificationCode } from '../../models/mfa/mfa-verification-code';\r\nimport { DOM } from 'aurelia-pal';\r\n\r\n@autoinject\r\nexport class MfaVerification {\r\n\tverificationCodeLabel: any;\r\n\t@bindable customerId: string = '';\r\n\t@bindable email: string = '';\r\n\t@bindable phoneNumber: string = '';\r\n\t@bindable isEzpay: boolean = false;\r\n\t@bindable merchantKey: number = 0;\r\n\t@bindable consumerUserCredentials: any;\r\n\t@bindable showRememberMe: boolean = true;\r\n\ttwoFactorPreferredType: MfaTwoFactorMethod = MfaTwoFactorMethod.NotSet;\r\n\tmaskedEmail: string = '';\r\n\tmaskedPhone: string = '';\r\n\tmodel: MfaSetupDetails;\r\n\tverificationModel: MfaVerificationCode;\r\n\tisSendingVerificationCode: boolean = false;\r\n\tvalidationErrors: any = [];\r\n\tisVerifyingCode: boolean = false;\r\n\tverificationCode: string = '';\r\n\trememberMeMfa: boolean = false;\r\n\tshowCurrentNotificationMethods: boolean = false;\r\n\tforceDisableSendingCode: boolean = false;\r\n\tintervalIdForceDisableSendingCode: number;\r\n\tshowVerification: boolean = false;\r\n\tnewPhoneNumber: string = '';\r\n\tnewEmail: string = '';\r\n\tnotificationMethodsMessage: string = '';\r\n\tcountDown: number = 60;\r\n\ttimerCountDown: number = this.countDown;\r\n\trefreshIntervalMS: number = 1000; // 1 sec\r\n\r\n\tconstructor(\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate postLoginRouteManager: PostLoginRouteManager,\r\n\t\tprivate element: Element\r\n\t) {\r\n\t\tthis.model = new MfaSetupDetails();\r\n\t\tthis.verificationModel = new MfaVerificationCode();\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.showVerification = false;\r\n\t\tthis.twoFactorPreferredType = MfaTwoFactorMethod.NotSet;\r\n\t\tthis.forceDisableSendingCode = false;\r\n\t\tclearInterval(this.intervalIdForceDisableSendingCode);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.router.navigateToRoute('logout');\r\n\t}\r\n\r\n\tattached() {\r\n\t\tif (!this.customerId) {\r\n\t\t\tthis.router.navigateToRoute('logout');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.notificationMethodsMessage = this.i18n.i18next.t('twoFactorConsumerPortalConfigMessage', {\r\n\t\t\t\tdefaultValue: 'Multifactor authentication is now required. We will send a six-digit code to the email address or phone number from your profile below. After you log in, you may update the email address or phone number you use for authentication by selecting User Profile/Preferences on any screen. If you haven’t received the code within a couple of minutes, check your spam folder or select a different method if available.'\r\n\t\t\t});\r\n\t\t\tthis.rememberMeMfa = false;\r\n\t\t\tthis.verificationCodeLabel = '';\r\n\t\t\tthis.verificationCode = '';\r\n\t\t\tthis.maskNotificationMethods();\r\n\t\t\tthis.setupNotificationMethods();\r\n\t\t\tthis.setupMfaMessage();\r\n\t\t}\r\n\t}\r\n\r\n\tsetupMfaMessage(): void {\r\n\t\tif (this.isEzpay) {\r\n\t\t\tthis.notificationMethodsMessage = this.i18n.i18next.t('twoFactorConsumerPortalConfigMessageEzpay', {\r\n\t\t\t\tdefaultValue: `Multifactor authentication is now required. We will send a six-digit code to the email address or phone number you provide. Select either mobile or email and then enter your phone number or email address below. Then click Send Verification Code to confirm. If you haven't received the code within a couple of minutes, check your spam folder or select a different method if available.`\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.notificationMethodsMessage = this.i18n.i18next.t('twoFactorConsumerPortalConfigMessage', {\r\n\t\t\t\tdefaultValue: 'Multifactor authentication is now required. We will send a six-digit code to the email address or phone number from your profile below. After you log in, you may update the email address or phone number you use for authentication by selecting User Profile/Preferences on any screen. If you haven’t received the code within a couple of minutes, check your spam folder or select a different method if available.'\r\n\t\t\t});\r\n\t\t\tif (!this.showCurrentNotificationMethods) {\r\n\t\t\t\tthis.notificationMethodsMessage = this.i18n.i18next.t('twoFactorConsumerPortalConfigNoNotificationsMethods', {\r\n\t\t\t\t\tdefaultValue: `Multifactor authentication is now required. We will send a six-digit code to the email address or phone number you provide. Please update your profile by selecting either mobile or email and then entering your phone number or email address below. Then click Send Verification Code to confirm. If you haven't received the code within a couple of minutes, check your spam folder or select a different method if available.`\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetupNotificationMethods(): void {\r\n\t\tconst hasPhoneNumber = this.showMaskedPhone();\r\n\t\tconst hasEmail = this.showMaskedEmail();\r\n\r\n\t\tif (hasPhoneNumber\r\n\t\t\t|| hasEmail) {\r\n\t\t\tif (!this.isEzpay) {\r\n\t\t\t\tthis.showCurrentNotificationMethods = true;\r\n\t\t\t\tif (hasPhoneNumber && !hasEmail) {\r\n\t\t\t\t\tthis.twoFactorPreferredType = MfaTwoFactorMethod.SMS;\r\n\t\t\t\t} else if (hasEmail && !hasPhoneNumber) {\r\n\t\t\t\t\tthis.twoFactorPreferredType = MfaTwoFactorMethod.Email;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (hasEmail) {\r\n\t\t\t\t\tthis.twoFactorPreferredType = MfaTwoFactorMethod.Email;\r\n\t\t\t\t} else if (hasPhoneNumber) {\r\n\t\t\t\t\tthis.twoFactorPreferredType = MfaTwoFactorMethod.SMS;\r\n\t\t\t\t}\r\n\t\t\t\tthis.newEmail = this.email;\r\n\t\t\t\tthis.newPhoneNumber = this.phoneNumber;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.twoFactorPreferredType = MfaTwoFactorMethod.NotSet;\r\n\t\t}\r\n\t\tthis.model.twoFactorMethod = this.twoFactorPreferredType;\r\n\t}\r\n\r\n\tmaskNotificationMethods(): void {\r\n\t\tthis.maskedEmail = this.maskEmailFormat(this.email);\r\n\t\tthis.maskedPhone = this.maskPhoneFormat(this.phoneNumber);\r\n\r\n\t\tif (!this.isEzpay\r\n\t\t\t&& (this.maskedEmail !== ''\r\n\t\t\t|| this.maskedPhone !== ''))\r\n\t\t{\r\n\t\t\tthis.showCurrentNotificationMethods = true;\r\n\t\t}\r\n\t}\r\n\r\n\tisUserOptIn(): boolean {\r\n\t\treturn (!!this.maskedPhone\r\n\t\t\t&& (this.globalState.customer.notificationSettings?.smsIsOptedIn ?? false)\r\n\t\t);\r\n\t}\r\n\r\n\tmaskPhoneFormat(value: string): string {\r\n\t\tif (!!value) {\r\n\t\t\tvalue = ValidationHelpers.sanitizePhoneNumber(value);\r\n\t\t\tconst lastFourDigits = value.slice(-4);\r\n\t\t\treturn `${''.padStart(3, '*')}-${''.padStart(3, '*')}-${''.padStart(4 - lastFourDigits.length, '*')}${lastFourDigits}`;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tmaskEmailFormat(value: string): string {\r\n\t\tif (!!value) {\r\n\t\t\tlet emailParts = value.split('@');\r\n\t\t\tlet address = emailParts[0];\r\n\t\t\tif (address.length < 2) {\r\n\t\t\t\treturn ''.padStart(address.length, '*') + '@' + emailParts[1];\r\n\t\t\t}\r\n\t\t\telse if (address.length < 6) {\r\n\t\t\t\treturn address[0] + ''.padStart(address.length - 1, '*') + '@' + emailParts[1];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn address[0] + ''.padStart(address.length - 2, '*') + address[address.length - 1] + '@' + emailParts[1];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tshowMaskedEmail(): boolean {\r\n\t\treturn !!this.maskedEmail;\r\n\t}\r\n\r\n\tshowMaskedPhone(): boolean {\r\n\t\treturn !!this.maskedPhone;\r\n\t}\r\n\r\n\ttwoFactorPreferredTypeSelected(event, typeSelected): void {\r\n\t\tthis.twoFactorPreferredType = typeSelected;\r\n\t}\r\n\r\n\tget isConfigurationModelValid(): boolean {\r\n\r\n\t\tif (this.twoFactorPreferredType === MfaTwoFactorMethod.NotSet\r\n\t\t\t|| this.forceDisableSendingCode) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!this.showCurrentNotificationMethods) {\r\n\t\t\tif (this.twoFactorPreferredType === MfaTwoFactorMethod.Email) {\r\n\t\t\t\tconst value = this.newEmail;\r\n\t\t\t\treturn !!value\r\n\t\t\t\t\t&& ValidationHelpers.isEmailAddress(value);\r\n\t\t\t} else {\r\n\t\t\t\tconst value = this.newPhoneNumber;\r\n\t\t\t\treturn !!value\r\n\t\t\t\t\t&& ValidationHelpers.isPhoneNumber(value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tsendVerificationCode(): void {\r\n\t\tthis.verificationCode = '';\r\n\t\tthis.clearValidationErrors();\r\n\t\tthis.isSendingVerificationCode = true;\r\n\t\tthis.showVerification = false;\r\n\t\tthis.model.twoFactorMethod = this.twoFactorPreferredType;\r\n\t\tif (!this.showCurrentNotificationMethods) {\r\n\t\t\tif (this.twoFactorPreferredType === MfaTwoFactorMethod.SMS) {\r\n\t\t\t\tthis.model.twoFactorValue = this.newPhoneNumber;\r\n\t\t\t} else {\r\n\t\t\t\tthis.model.twoFactorValue = this.newEmail;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.model.forceTwoFactorValue = this.isEzpay || (!this.showCurrentNotificationMethods\r\n\t\t\t&& !!this.model.twoFactorValue);\r\n\t\tthis.verificationModel = new MfaVerificationCode();\r\n\r\n\t\tif (this.isEzpay) {\r\n\t\t\tthis.model.merchantKey = this.merchantKey;\r\n\t\t\tthis.sendVerificationCodeEzPay();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.model.username = this.consumerUserCredentials .username;\r\n\t\tthis.model.password = this.consumerUserCredentials .password;\r\n\r\n\t\tthis.payrazrService.sendMfaVerificationCode(this.model, this.customerId).then(response => {\r\n\t\t\tthis.isSendingVerificationCode = false;\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.showVerification = true;\r\n\t\t\t\tthis.disableSendVerificationCode();\r\n\t\t\t\tthis.refreshVerificationCodeLabel();\r\n\t\t\t\tthis.verificationModel.forceTwoFactorValue = this.model.forceTwoFactorValue;\r\n\t\t\t\tthis.verificationModel.twoFactorMethod = this.model.twoFactorMethod;\r\n\t\t\t\tthis.verificationModel.twoFactorValue = this.model.twoFactorValue;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconst errorMessage = !!response.message\r\n\t\t\t\t? response.message\r\n\t\t\t\t: this.i18n.i18next.t('twoFactorConsumerPortalVerificationCodeSendError', 'Error encountered when attempting to send verification code.');\r\n\t\t\t\tthis.validationErrors.push(errorMessage);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\tthis.isSendingVerificationCode = false;\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('twoFactorConsumerPortalVerificationCodeSendError', 'Error encountered when attempting to send verification code.'));\r\n\t\t});\r\n\t}\r\n\r\n\tsendVerificationCodeEzPay(): void {\r\n\t\tthis.payrazrService.sendUnvalidatedEzPayVerificationCode(this.customerId, this.model).then(response => {\r\n\t\t\tthis.isSendingVerificationCode = false;\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.showVerification = true;\r\n\t\t\t\tthis.disableSendVerificationCode();\r\n\t\t\t\tthis.refreshVerificationCodeLabel();\r\n\t\t\t\tthis.verificationModel.forceTwoFactorValue = this.model.forceTwoFactorValue;\r\n\t\t\t\tthis.verificationModel.twoFactorMethod = this.model.twoFactorMethod;\r\n\t\t\t\tthis.verificationModel.twoFactorValue = this.model.twoFactorValue;\r\n\t\t\t} else {\r\n\t\t\t\tconst errorMessage = !!response.message\r\n\t\t\t\t\t? response.message\r\n\t\t\t\t\t: this.i18n.i18next.t('twoFactorConsumerPortalVerificationCodeSendError', 'Error encountered when attempting to send verification code.');\r\n\t\t\t\tthis.validationErrors.push(errorMessage);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\tthis.isSendingVerificationCode = false;\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('twoFactorConsumerPortalVerificationCodeSendError', 'Error encountered when attempting to send verification code.'));\r\n\t\t});\r\n\t}\r\n\r\n\tclearValidationErrors(): void {\r\n\t\tthis.validationErrors = [];\r\n\t}\r\n\r\n\tget getTwoFactorValue(): string {\r\n\t\tif (this.model.twoFactorMethod == MfaTwoFactorMethod.NotSet) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tif (this.showCurrentNotificationMethods) {\r\n\t\t\tif (this.model.twoFactorMethod == MfaTwoFactorMethod.Email) {\r\n\t\t\t\treturn this.maskedEmail;\r\n\t\t\t}\r\n\t\t\treturn this.maskedPhone;\r\n\t\t}\r\n\r\n\t\tif (!!this.model.twoFactorValue) {\r\n\t\t\tif (this.model.twoFactorMethod == MfaTwoFactorMethod.Email) {\r\n\t\t\t\treturn this.maskEmailFormat(this.model.twoFactorValue);\r\n\t\t\t}\r\n\t\t\treturn this.maskPhoneFormat(this.model.twoFactorValue);\r\n\t\t} else {\r\n\t\t\tif (this.model.twoFactorMethod == MfaTwoFactorMethod.Email) {\r\n\t\t\t\treturn this.maskedEmail;\r\n\t\t\t}\r\n\t\t\treturn this.maskedPhone;\r\n\t\t}\r\n\t}\r\n\r\n\tget isVerificationModelValid(): boolean {\r\n\t\treturn this.verificationModel.twoFactorMethod != MfaTwoFactorMethod.NotSet\r\n\t\t\t&& !!this.verificationCode\r\n\t\t\t&& this.verificationCode.length == 6\r\n\t\t\t&& ValidationHelpers.isOnlyDigits(this.verificationCode);\r\n\t}\r\n\r\n\tverify(): void {\r\n\t\tthis.clearValidationErrors();\r\n\t\tif (this.isVerificationModelValid) {\r\n\t\t\tthis.isVerifyingCode = true;\r\n\t\t\tthis.verificationModel.forceTwoFactorValue = this.model.forceTwoFactorValue;\r\n\t\t\tthis.verificationModel.twoFactorMethod = this.model.twoFactorMethod;\r\n\t\t\tthis.verificationModel.twoFactorValue = this.model.twoFactorValue;\r\n\t\t\tthis.verificationModel.code = this.verificationCode;\r\n\r\n\t\t\tif (this.isEzpay) {\r\n\t\t\t\tthis.verifyCodeEzpay();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.verificationModel.username = this.consumerUserCredentials .username;\r\n\t\t\tthis.verificationModel.password = this.consumerUserCredentials.password;\r\n\t\t\tthis.verificationModel.rememberMe = this.rememberMeMfa;\r\n\r\n\t\t\tthis.payrazrService.verifyMfaVerificationCode(this.verificationModel, this.customerId)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tthis.isVerifyingCode = false;\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tclearInterval(this.intervalIdForceDisableSendingCode);\r\n\r\n\t\t\t\t\t\tif (response.entity && response.entity.phoneMobileVerified) {\r\n\t\t\t\t\t\t\tthis.globalState.customer.notificationSettings.smsIsValidated = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.globalState.customer.mfaSettings.twoFactorEnabled = true;\r\n\t\t\t\t\t\tthis.globalState.customer.mfaSettings.preferredTwoFactorMethod = this.verificationModel.twoFactorMethod;\r\n\t\t\t\t\t\tthis.globalState.customer.mfaSettings.twoFactorVerified = true;\r\n\t\t\t\t\t\tthis.handleRemember({\r\n\t\t\t\t\t\t\tid: this.verificationModel.username,\r\n\t\t\t\t\t\t\trememberMeName: response.entity.cookieName,\r\n\t\t\t\t\t\t\trememberMeExpiration: response.entity.cookieExpiration,\r\n\t\t\t\t\t\t\trememberMeValue: response.entity.cookieValue,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.redirectAfterVerify({ token: response.entity.token, customer: response.entity.customer, mustChangePassword: response.entity.isChangePasswordRequired });\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tconst errorMessage = response.message ?? this.i18n.i18next.t('twoFactorConsumerPortalVerificationCodeSendError', 'Error encountered when attempting to send verification code.');\r\n\t\t\t\t\t\tthis.validationErrors.push(errorMessage);\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch(error => {\r\n\t\t\t\t\tthis.isVerifyingCode = false;\r\n\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('twoFactorConsumerPortalVerificationError', 'Error encountered while attempting to verify the code you entered.'));\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('enterVerificationCode', 'Please enter verification code.'));\r\n\t\t}\r\n\t}\r\n\r\n\tverifyCodeEzpay(): void {\r\n\t\tthis.payrazrService.verifyUnvalidatedEzPayVerificationCode(this.customerId, this.verificationModel)\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.isVerifyingCode = false;\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tclearInterval(this.intervalIdForceDisableSendingCode);\r\n\t\t\t\t\tthis.redirectAfterVerify();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tconst errorMessage = response.message ?? this.i18n.i18next.t('twoFactorConsumerPortalVerificationCodeSendError', 'Error encountered when attempting to send verification code.');\r\n\t\t\t\t\tthis.validationErrors.push(errorMessage);\r\n\t\t\t\t}\r\n\t\t\t}).catch(error => {\r\n\t\t\t\tthis.isVerifyingCode = false;\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('twoFactorConsumerPortalVerificationError', 'Error encountered while attempting to verify the code you entered.'));\r\n\t\t\t});\r\n\t}\r\n\r\n\tdisableSendVerificationCode(): void {\r\n\t\tthis.forceDisableSendingCode = true;\r\n\t\tthis.timerCountDown = this.countDown;\r\n\t\tthis.intervalIdForceDisableSendingCode = window.setInterval(() => this.displayCountDown(), this.refreshIntervalMS);\r\n\t}\r\n\r\n\tdisplayCountDown() {\r\n\t\tif (this.timerCountDown <= 1) {\r\n\t\t\tthis.forceDisableSendingCode = false;\r\n\t\t\tclearInterval(this.intervalIdForceDisableSendingCode);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.timerCountDown -= 1;\r\n\t}\r\n\r\n\tredirectAfterVerify(details: any = {}): void {\r\n\t\tconst eventName = 'mfa-verify-valid';\r\n\t\tlet eventData: any = {};\r\n\t\tif (this.isEzpay) {\r\n\t\t\teventData = {\r\n\t\t\t\tverificationCode: this.verificationModel.code,\r\n\t\t\t\tmfaValue: this.verificationModel.twoFactorValue,\r\n\t\t\t\tmfaType: this.verificationModel.twoFactorMethod\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\teventData = details;\r\n\t\t}\r\n\t\tconst eventToTrigger = DOM.createCustomEvent(\r\n\t\t\teventName,\r\n\t\t\t{ bubbles: true, cancelable: true, detail: eventData });\r\n\r\n\t\tthis.reset();\r\n\t\tthis.element.dispatchEvent(eventToTrigger);\r\n\t}\r\n\r\n\tsetupVerificationView(): void {\r\n\t\tthis.twoFactorPreferredType = this.globalState.customer.mfaSettings.preferredTwoFactorMethod;\r\n\t\tthis.model.twoFactorMethod = this.twoFactorPreferredType;\r\n\t\tthis.refreshVerificationCodeLabel();\r\n\t\tthis.sendVerificationCode();\r\n\t}\r\n\r\n\trefreshVerificationCodeLabel(): void {\r\n\t\tthis.verificationCodeLabel = this.i18n.i18next.t('twoFactorConsumerPortalEnterToken', {\r\n\t\t\tdefaultValue: `Please enter the code sent to: ${this.getTwoFactorValue}. This code is valid for five minutes.`,\r\n\t\t\ttwoFacthorMethodValue: this.getTwoFactorValue\r\n\t\t});\r\n\t}\r\n\r\n\thandleRemember({ id, rememberMeName, rememberMeExpiration, rememberMeValue }): void {\r\n\t\tconst lstCookies = this.postLoginRouteManager.getCookiesByPrefix(id);\r\n\t\tlstCookies.forEach((cname) => {\r\n\t\t\tCookies.remove(cname);\r\n\t\t});\r\n\t\tif (this.rememberMeMfa && rememberMeName && rememberMeValue && rememberMeExpiration > 0) {\r\n\t\t\tCookies.set(rememberMeName, rememberMeValue, { expires: new Date(rememberMeExpiration) });\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".btn-block {\\r\\n width: auto;\\r\\n}\\r\\n\\r\\n.row-block {\\r\\n width: 100% !important;\\r\\n display: block !important;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, when, anything, verify } from 'ts-mockito';\r\nimport { MfaVerification } from './mfa-verification';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PostLoginRouteManager } from '../../helpers/post-login-route-manager';\r\nimport { MfaTwoFactorMethod } from '../../models/mfa/mfa-two-factor-method';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('components', () => {\r\n\t\tdescribe('mfa-verification', () => {\r\n\t\t\tlet component: MfaVerification;\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockElement: Element = mock(Element);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockPostLoginRouteManager: PostLoginRouteManager = mock(PostLoginRouteManager);\r\n\r\n\t\t\tconst i18next = {\r\n\t\t\t\tt: (a, b) => a\r\n\t\t\t};\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\r\n\t\t\t\tcomponent = new MfaVerification(\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockPostLoginRouteManager),\r\n\t\t\t\t\tinstance(mockElement));\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize mfa-verification component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('attached', () => {\r\n\t\t\t\tit('twoFactorPreferredType should default to MfaTwoFactorMethod.NotSet', () => {\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.twoFactorPreferredType).toEqual(MfaTwoFactorMethod.NotSet);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { Router, NavModel, RouteConfig } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { MessagesService } from '../../services/messages.service';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class NavBar {\r\n\ttoggle: boolean = false;\r\n\texitOnNext: boolean = false;\r\n\tuserName: string;\r\n\tisConsumerPortalGuarantorBillingEnabled: boolean = false;\r\n\tuserProfileBtnText: string = '';\r\n\telement: Element;\r\n\tsideMenuListMobile: Element;\r\n\treadonly KEYCODE_TAB = 9;\r\n\treadonly KEYCODE_ESC = 27;\r\n\r\n\tconstructor(private router: Router, private globalState: State, private messagesService: MessagesService, private payrazrService: PayrazrService, private i18n: I18N) {\r\n\t\tthis.userName = globalState.customer.name || '';\r\n\t\tthis.isConsumerPortalGuarantorBillingEnabled = globalState.isConsumerPortalGuarantorBillingEnabled;\r\n\t\tthis.messagesService.getMessages();\r\n\t\tthis.userProfileBtnText = this.i18n.i18next.t('userProfileBtnText', 'User Profile Menu');\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.loadNavItems();\r\n\t\tthis.element = document.querySelector('nav-bar');\r\n\t\tthis.sideMenuListMobile = this.element.querySelector('#sideMenuListMobile');\r\n\t\tdocument.addEventListener('keydown', this.checkKeepFocus.bind(this));\r\n\t}\r\n\r\n\tloadNavItems() {\r\n\t\tthis.router.navigation.forEach((value: NavModel) => {\r\n\t\t\tif (value.settings.fallbackText && value.title) {\r\n\t\t\t\tvalue.title = this.i18n.i18next.t(value.title, { defaultValue: value.settings.fallbackText });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlogout() {\r\n\t\tthis.payrazrService.logout(this.globalState.business.sessionId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.globalState.business.sessionId = response.entity;\r\n\t\t\t\tthis.globalState.logout();\r\n\t\t\t\tthis.router.navigateToRoute('login');\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\talert('logout failed');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget tabIndex(): number {\r\n\t\tif (this.toggle) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleMenu() {\r\n\t\tthis.toggle = !this.toggle;\r\n\r\n\t\tdocument.getElementById('sidebarToggle').setAttribute('aria-expanded', `${this.toggle}`);\r\n\r\n\t\tif (this.toggle) { // trap focus\r\n\t\t\tthis.firstMobileFocusable.focus();\r\n\t\t}\r\n\t}\r\n\r\n\tcheckKeepFocus(e: KeyboardEvent) {\r\n\t\tconst isTabPressed = (e.key === 'Tab' || e.keyCode === this.KEYCODE_TAB);\r\n\t\tconst isEscPressed = (e.key === 'Escape' || e.keyCode === this.KEYCODE_ESC);\r\n\r\n\t\tif (isEscPressed && this.toggle) {\r\n\t\t\tthis.toggleMenu();\r\n\t\t}\r\n\r\n\t\tif (!isTabPressed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.shiftKey) /* shift + tab */ {\r\n\t\t\tif (document.activeElement === this.firstMobileFocusable) {\r\n\t\t\t\tthis.lastMobileFocusable.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t} else /* tab */ {\r\n\t\t\tif (document.activeElement === this.lastMobileFocusable) {\r\n\t\t\t\tthis.firstMobileFocusable.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateToRoute(route: string) {\r\n\t\tthis.router.navigate(route);\r\n\t}\r\n\r\n\tnavigateToMainContent() {\r\n\t\tdocument.querySelector('main')?.focus();\r\n\t}\r\n\r\n\tget mobileMenuFocusables(): HTMLElement[] {\r\n\t\tconst focusables = Array.from(this.sideMenuListMobile.querySelectorAll(\r\n\t\t\t'a[href], button, input, textarea, select, details,[tabindex]:not([tabindex=\"-1\"])'\r\n\t\t)).filter(el => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden')) as HTMLElement[];\r\n\t\treturn focusables;\r\n\t}\r\n\r\n\tget firstMobileFocusable(): HTMLElement {\r\n\t\treturn this.mobileMenuFocusables[0];\r\n\t}\r\n\r\n\tget lastMobileFocusable(): HTMLElement {\r\n\t\treturn this.mobileMenuFocusables[this.mobileMenuFocusables.length - 1];\r\n\t}\r\n\r\n\tget isWalletEnabled() {\r\n\t\ttry {\r\n\t\t\treturn 'consumerWalletEnabled' in this.globalState.business.portalSettings ? this.globalState.business.portalSettings.consumerWalletEnabled : true;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Failed to enable wallet.');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".header {\\r\\n display: flex;\\r\\n height: 80px;\\r\\n padding: 15px 0;\\r\\n box-shadow: 1px 1px 5px darkgrey;\\r\\n}\\r\\n.header-left {\\r\\n width: 75%;\\r\\n height: 100%;\\r\\n margin: 0;\\r\\n}\\r\\n.header-right {\\r\\n width: 25%;\\r\\n float: right;\\r\\n height: 100%;\\r\\n display: flex;\\r\\n justify-content: flex-end;\\r\\n}\\r\\n\\r\\n.sidebar-toggle {\\r\\n position: absolute;\\r\\n cursor: pointer;\\r\\n margin-top: 7px;\\r\\n}\\r\\n.sidebar-toggle i {\\r\\n font-size: 25px;\\r\\n}\\r\\n.logo {\\r\\n position: relative;\\r\\n height: 100%;\\r\\n width: 85%;\\r\\n left: 50px;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: center;\\r\\n cursor: pointer;\\r\\n text-decoration: none;\\r\\n}\\r\\n.logo img.banner {\\r\\n height: 60px;\\r\\n width: auto;\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.sidebar {\\r\\n position: absolute;\\r\\n top: 80px;\\r\\n bottom: 0px;\\r\\n left: -250px;\\r\\n width: 250px;\\r\\n z-index: 100;\\r\\n background-color: white;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\\r\\n.sidebar.active {\\r\\n transform: translateX(250px);\\r\\n transition: 0.25s;\\r\\n}\\r\\n.sidebar ul {\\r\\n padding: 0;\\r\\n}\\r\\n.sidebar li {\\r\\n padding: 15px 15px;\\r\\n border-top: darkgray 1px solid;\\r\\n border-bottom: darkgray 1px solid;\\r\\n text-decoration: none;\\r\\n margin-bottom: -1px;\\r\\n list-style: none;\\r\\n}\\r\\n.sidebar li a {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.sidebar-cover {\\r\\n position: absolute;\\r\\n background-color: black;\\r\\n opacity: 0;\\r\\n height: 100%;\\r\\n width: 100%;\\r\\n z-index: 99;\\r\\n visibility: hidden;\\r\\n}\\r\\n.sidebar-cover.active {\\r\\n visibility: visible;\\r\\n opacity: 0.5;\\r\\n transition: visibility 0s, opacity 0.25s linear;\\r\\n}\\r\\n\\r\\n.profile {\\r\\n text-align: center;\\r\\n max-width: 175px;\\r\\n}\\r\\n.profile ul {\\r\\n width: 150px;\\r\\n left: -50px;\\r\\n}\\r\\n\\r\\n.messages {\\r\\n min-width: 52px;\\r\\n margin: 0 !important;\\r\\n padding: 1px;\\r\\n}\\r\\n.messages i {\\r\\n font-size: 20px;\\r\\n}\\r\\n.messages .badge {\\r\\n top: -10px;\\r\\n left: -10px;\\r\\n}\\r\\n\\r\\n.dropdown-toggle {\\r\\n cursor: pointer;\\r\\n}\\r\\n.dropdown-toggle i.fa-user{\\r\\n font-size: 25px;\\r\\n}\\r\\n\\r\\n.nav-wrapper {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n.nav-col-9 {\\r\\n display:flex;\\r\\n align-items:center;\\r\\n}\\r\\n\\r\\n@media (max-width:576px) {\\r\\n .nav-col-3 {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n }\\r\\n}\\r\\n\\r\\n@media (min-width:576px){\\r\\n .nav-col-3 {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n }\\r\\n}\\r\\n\\r\\n@media screen and (min-width: 1400px) {\\r\\n .nav-wrapper {\\r\\n max-width: 1400px;\\r\\n }\\r\\n\\r\\n .sidebar-toggle, .sidebar {\\r\\n display: none;\\r\\n }\\r\\n\\r\\n .logo {\\r\\n left: 0px;\\r\\n }\\r\\n}\\r\\n\\r\\n.skip-nav {\\r\\n position: absolute;\\r\\n clip: rect(0 0 0 0);\\r\\n border: 0;\\r\\n height: auto;\\r\\n margin: auto;\\r\\n overflow: hidden;\\r\\n padding: 0 ;\\r\\n width: auto;\\r\\n white-space: nowrap;\\r\\n}\\r\\n\\r\\n .skip-nav:focus, .skip-nav:active {\\r\\n clip: auto;\\r\\n left: 0;\\r\\n top: 0;\\r\\n width: 100%;\\r\\n height: auto;\\r\\n margin: 0;\\r\\n padding: 10px 0;\\r\\n background: #ffffff;\\r\\n border: none;\\r\\n text-align: center;\\r\\n font-weight: bold;\\r\\n color: var(--payrazr-dark-blue);\\r\\n outline:none;\\r\\n }\\r\\n\\r\\n.skip-span {\\r\\n border: 2px solid var(--payrazr-dark-blue);\\r\\n border-radius: .25rem;\\r\\n padding: .25rem;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { Router, NavModel, RouteConfig } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when, anyNumber, anything } from 'ts-mockito';\r\nimport { State } from '../../services/global-state';\r\nimport { NavBar } from './nav-bar';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { MessagesService } from '../../services/messages.service';\r\nimport { Customer } from '../../models/customer';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('components', () => {\r\n\t\tdescribe('nav-bar', () => {\r\n\t\t\tlet component: NavBar;\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockMessagesService: MessagesService = mock(MessagesService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\twhen(mockCustomer.name).thenReturn('Jon Doe');\r\n\t\t\t\twhen(mockState.customer).thenReturn(instance(mockCustomer));\r\n\t\t\t\tcomponent = new NavBar(\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockMessagesService),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('loadNavItems()', () => {\r\n\t\t\t\tconst route = new NavModel(mockRouter, 'testUrl');\r\n\t\t\t\tit('should skip i18N when no fallbacktext is defined', () => {\r\n\t\t\t\t\troute.title = 'testTitle';\r\n\t\t\t\t\troute.settings.fallbackText = null;\r\n\t\t\t\t\twhen(mockRouter.navigation).thenReturn([route]);\r\n\t\t\t\t\tcomponent.loadNavItems();\r\n\t\t\t\t\texpect(route.title).toEqual('testTitle');\r\n\t\t\t\t\texpect(route.settings.fallbackText).toEqual(null);\r\n\t\t\t\t});\r\n\t\t\t\tit('should use i18N when fallbacktext is defined', () => {\r\n\t\t\t\t\troute.title = 'testTitle';\r\n\t\t\t\t\troute.settings.fallbackText = 'fallbackTitle';\r\n\t\t\t\t\twhen(mockRouter.navigation).thenReturn([route]);\r\n\t\t\t\t\tcomponent.loadNavItems();\r\n\t\t\t\t\texpect(route.title).toEqual('localized');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('logout()', () => {\r\n\t\t\t\twhen(mockState.business).thenReturn({\r\n\t\t\t\t\tsessionId: '1234567890'\r\n\t\t\t\t});\r\n\t\t\t\tit('should call the proper service on logout', async () => {\r\n\t\t\t\t\tconst response = {\r\n\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockPayrazrService.logout(anything())).thenReturn(Promise.resolve(response));\r\n\t\t\t\t\tawait component.logout();\r\n\t\t\t\t\tverify(mockState.logout()).called();\r\n\t\t\t\t\tverify(mockRouter.navigateToRoute('login')).called();\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('toggleMenu()', () => {\r\n\t\t\t\tit('should flip the toggle flag and set aria-expanded', () => {\r\n\t\t\t\t\tcomponent.toggle = false;\r\n\t\t\t\t\tlet anchor = document.createElement('a');\r\n\t\t\t\t\tanchor.setAttribute('href', '#');\r\n\t\t\t\t\tlet option = document.createElement('li');\r\n\t\t\t\t\toption.append(anchor);\r\n\t\t\t\t\tlet sideMenuListMobile = document.createElement('ul');\r\n\t\t\t\t\tsideMenuListMobile.setAttribute('id', 'sideMenuListMobile');\r\n\t\t\t\t\tsideMenuListMobile.append(option);\r\n\t\t\t\t\tcomponent.sideMenuListMobile = sideMenuListMobile;\r\n\t\t\t\t\tlet element = document.createElement('div');\r\n\t\t\t\t\tspyOn(document, 'getElementById').and.returnValue(element);\r\n\t\t\t\t\tcomponent.toggleMenu();\r\n\t\t\t\t\texpect(component.toggle).toEqual(true);\r\n\t\t\t\t\texpect(element.getAttribute('aria-expanded') === 'true').toEqual(true);\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('navigateToRoute()', () => {\r\n\t\t\t\tit('should navigate to the specified route', () => {\r\n\t\t\t\t\tconst route = 'testRoute';\r\n\t\t\t\t\tcomponent.navigateToRoute(route);\r\n\t\t\t\t\tverify(mockRouter.navigate(route)).called();\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport { FormattingHelper } from '../../../helpers/formatting-helper';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class CardFormData {\r\n\tpayrazr: PayrazrService;\r\n\tcardNumber: any;\r\n\texpMonth: any;\r\n\texpYear: any;\r\n\tcvv: any;\r\n\tcustomFields: any;\r\n\tshowCvv: any;\r\n\tisRehabForm: any;\r\n\tcvvRequired: any;\r\n\tportfolioName: any;\r\n\t_cvvLabel: any;\r\n\tmerchantKey:any;\r\n\r\n\tconstructor(payrazrService: PayrazrService, private i18n: I18N) {\r\n\t\tthis.payrazr = payrazrService;\r\n\t\tlet today = new Date();\r\n\t\tthis.cardNumber = \"\";\r\n\t\tthis.expMonth = (today.getMonth() + 1).toString();\r\n\t\tthis.expYear = (today.getFullYear()).toString();\r\n\t\tthis.cvv = \"\";\r\n\t\tthis.customFields = [];\r\n\r\n\t\tthis.showCvv = true;\r\n\t\tthis.isRehabForm = false; //todo: is this used?\r\n\t}\r\n\r\n\tcheckExpirationDate() {\r\n\t\tlet now = moment();\r\n\t\tlet exp: any = \"\";\r\n\t\tvar expMonth = this.expMonth;\r\n\t\tif (expMonth == 12) {\r\n\t\t\texp = moment({ y: this.expYear, M: 11, d: 31 }).endOf('day');\r\n\t\t} else {\r\n\t\t\texp = moment({ y: this.expYear, M: expMonth, d: 1 }).subtract(1, 'seconds');\r\n\t\t}\r\n\t\treturn exp >= now;\r\n\t}\r\n\r\n\tvalidate(errors) {\r\n\t\tlet returnedPromise;\r\n\r\n\t\tif (this.cardNumber.length === 0) {\r\n\t\t\terrors.push(this.i18n.i18next.t('cardNumberRequired', 'Card number is required'));\r\n\t\t} else if (!ValidationHelpers.isOnlyDigits(this.cardNumber)) {\r\n\t\t\terrors.push(this.i18n.i18next.t('cardNumberCanOnlyContainDigits', 'Card number can only contain digits'));\r\n\t\t} else if (this.cardNumber.length < 15 || this.cardNumber.length > 19) {\r\n\t\t\terrors.push(this.i18n.i18next.t('cardNumberMustBeBetweenFifteenAndNineteenDigits', 'Card number must be between 15 and 19 digits'));\r\n\t\t} else if (!ValidationHelpers.isValidCreditCardNumber(this.cardNumber)) {\r\n\t\t\terrors.push(this.i18n.i18next.t('cardNumberNotValid', 'Card number is not valid'));\r\n\t\t} else if (!this.checkExpirationDate()) {\r\n\t\t\terrors.push(this.i18n.i18next.t('cardExpired', 'Card is expired'));\r\n\t\t} else if (this.showCvv && this.cvvRequired) {\r\n\t\t\tif (this.cvv.length === 0) {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('cardSecurityCodeRequired', 'Card security code is required'));\r\n\t\t\t} else if (this.cvv.length > 4) {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('invalidCardSecurityCode', 'Invalid card security code'));\r\n\t\t\t} else if (!ValidationHelpers.isOnlyDigits(this.cvv)) {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('invalidCardSecurityCode', 'Invalid card security code'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// always check credit card type\r\n\t\tif (!this.isRehabForm) {\r\n\t\t\tif (!this.portfolioName) {\r\n\t\t\t\tconsole.log('Portfolio name is empty in CardFormData');\r\n\t\t\t}\r\n\r\n\t\t\tif (errors.length == 0) {\r\n\t\t\t\treturnedPromise = this.payrazr.checkCardType(this.cardNumber, this.portfolioName, 0, this.merchantKey)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tif (!response.isValid) errors.push(response.message);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let ii = 0; ii < this.customFields.length; ++ii) {\r\n\t\t\tlet field = this.customFields[ii];\r\n\t\t\tif (field.visible && field.required && (!field.value || field.value.length === 0)) {\r\n\t\t\t\tvar label = field.label || `Custom Field ${ii + 1}`;\r\n\t\t\t\terrors.push(`${label} is required`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn returnedPromise;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget expirationDate() {\r\n\t\treturn this.pad(this.expMonth, 2) + this.pad(this.expYear % 100, 2);\r\n\t}\r\n\r\n\tset cvvLabel(value) {\r\n\t\tif (value) {\r\n\t\t\tthis._cvvLabel = value;\r\n\t\t}\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget cvvLabel() {\r\n\t\treturn this._cvvLabel || this.i18n.i18next.t('cardSecurityCode', 'Card Security Code');\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget description() {\r\n\t\treturn `card ending in ***${FormattingHelper.mask(this.cardNumber)}`;\r\n\t}\r\n\r\n\tpad(num, size) {\r\n\t\tvar s = \"000000000\" + num;\r\n\t\treturn s.substr(s.length - size);\r\n\t}\r\n}\r\n\r\n@autoinject\r\nexport class CardFormCustomElement {\r\n\treadonly years: number[];\r\n\treadonly months: string[] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\r\n\tglobalState: State;\r\n\tcardData: any;\r\n\tcardNumberSettings: any;\r\n\tcardNumberLabel: string;\r\n\tconstructor(globalState: State, private i18n: I18N) {\r\n\r\n\t\tlet today = new Date();\r\n\t\tthis.years = [];\r\n\t\tlet thisYear = today.getFullYear();\r\n\t\tfor (let i = 0; i < 20; ++i) {\r\n\t\t\tthis.years.push(thisYear + i);\r\n\t\t}\r\n\t\tthis.globalState = globalState;\r\n\t\tthis.cardNumberLabel = this.i18n.i18next.t('cardNumber', 'Card Number')\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget validate() {\r\n\t\treturn this.cardData && this.cardData.validate;\r\n\t}\r\n\r\n\tactivate(cardData) {\r\n\t\tthis.cardData = cardData;\r\n\r\n\t\tthis.cardNumberSettings = this.globalState.business.portalSettings.fields.cardNumber;\r\n\t\tif (!!this.cardNumberSettings && !this.cardNumberSettings.label) { this.cardNumberSettings.label = this.cardNumberLabel; }\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, autoinject } from 'aurelia-framework';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { State } from '../../../../services/global-state';\r\n\r\n// @inject(State)\r\n@autoinject\r\nexport class CardsAcceptedCustomElement {\r\n\tglobalState: State;\r\n\tshowVisa: boolean = false;\r\n\tshowMasterCard: boolean = false;\r\n\tshowDiscover: boolean = false;\r\n\tshowAmex: boolean = false;\r\n\tshowDiners: boolean = false;\r\n\tshowJCB: boolean = false;\r\n\tcardsAcceptedSubscription: Subscription;\r\n\r\n\tconstructor(globalState: State, private eventAggregator: EventAggregator) {\r\n\t\tthis.globalState = globalState;\r\n\t}\r\n\r\n\tbind() {\r\n\t\tthis.applyAcceptedCards(this.globalState.business.portalSettings.cardsAccepted);\r\n\t}\r\n\r\n\tattached(){\r\n\t\tif (this.globalState.features.consumerPortalMultiZidEzPay) {\r\n\t\t\tthis.cardsAcceptedSubscription = this.eventAggregator.subscribe('portalSettingsCardsAcceptedChanged', acceptedCards => {\r\n\t\t\t\tthis.applyAcceptedCards(acceptedCards);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tif (this.cardsAcceptedSubscription) {\r\n\t\t\tthis.cardsAcceptedSubscription.dispose();\r\n\t\t}\r\n\t}\r\n\r\n\tapplyAcceptedCards(accepted) {\r\n\t\ttry {\r\n\t\t\tthis.showVisa = accepted.visa || false;\r\n\t\t\tthis.showMasterCard = accepted.mastercard || false;\r\n\t\t\tthis.showDiscover = accepted.discover || false;\r\n\t\t\tthis.showAmex = accepted.amex || false;\r\n\t\t\tthis.showDiners = accepted.diners || accepted.cartblanch || false;\r\n\t\t\tthis.showJCB = accepted.jcb || false;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error occurred in Cards-Accepted component.');\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cards-accepted-div {\\r\\n padding-top: 1px;\\r\\n}\\r\\n\\r\\n.card-img-div {\\r\\n display: inline-block;\\r\\n vertical-align: top;\\r\\n width: 30px;\\r\\n height: 20px;\\r\\n}\\r\\n\\r\\n.accepted-card-img {\\r\\n max-width: 100%;\\r\\n max-height: 100%;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { autoinject, computedFrom } from 'aurelia-framework';\r\nimport { FormattingHelper } from '../../../helpers/formatting-helper';\r\nimport { State } from '../../../services/global-state';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class CheckFormCustomElement {\r\n\taccountTypes: any[];\r\n\tglobalState: State;\r\n\tcheckData: any;\r\n\tselectAccountTypeSettings: any;\r\n\tbankAccountNumberSettings: any;\r\n\tbankAccountNumberVerificationSettings: any;\r\n\tbankTransitNumberSettings: any;\r\n\tcheckNumberSettings: any;\r\n\r\n\tconstructor(globalState: State, private i18n:I18N) {\r\n\t\tthis.accountTypes = [\r\n\t\t\t{\r\n\t\t\t\tvalue: \"checking\",\r\n\t\t\t\tdescription: this.i18n.i18next.t('personalCheckingAccount', 'Personal Checking Account')\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: \"savings\",\r\n\t\t\t\tdescription: this.i18n.i18next.t('personalSavingsAccount', 'Personal Savings Account')\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: \"business\",\r\n\t\t\t\tdescription: this.i18n.i18next.t('businessCheckingAccount', 'Business Checking Account')\r\n\t\t\t}\r\n\t\t];\r\n\t\tthis.globalState = globalState;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget validate() {\r\n\t\treturn this.checkData && this.checkData.validate;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget transitNumberColumns() {\r\n\t\treturn \"col-sm-6\";\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget accountNumberColumns() {\r\n\t\treturn \"col-sm-6\";\r\n\t}\r\n\r\n\t@computedFrom('accountTypes')\r\n\tget accountDescriptions(): string[] {\r\n\t\treturn this.accountTypes.map(a => (a?.description || ''));\r\n\t}\r\n\r\n\t@computedFrom('accountTypes')\r\n\tget accountTypesIds(): string[] {\r\n\t\treturn this.accountTypes.map(a => (a?.value || ''));\r\n\t}\r\n\r\n\tactivate(checkData) {\r\n\t\tthis.checkData = checkData;\r\n\r\n\t\tif (this.checkData.isRehabPaymentPlanForm)\r\n\t\t\tthis.accountTypes.pop();\r\n\r\n\t\tthis.selectAccountTypeSettings = this.globalState.business.portalSettings.fields.selectAccountType;\r\n\t\tif (!!this.selectAccountTypeSettings && !this.selectAccountTypeSettings.label) { this.selectAccountTypeSettings.label = this.i18n.i18next.t('selectAccountType', 'Select Account Type'); }\r\n\r\n\t\tthis.bankAccountNumberSettings = this.globalState.business.portalSettings.fields.bankAccountNumber;\r\n\t\tif (!!this.bankAccountNumberSettings && !this.bankAccountNumberSettings.label) { this.bankAccountNumberSettings.label = this.i18n.i18next.t('bankAccountNumber', 'Bank Account Number'); }\r\n\r\n\t\tthis.bankAccountNumberVerificationSettings = this.globalState.business.portalSettings.fields.bankAccountNumberVerification;\r\n\t\tif (!!this.bankAccountNumberVerificationSettings && !this.bankAccountNumberVerificationSettings.label) { this.bankAccountNumberVerificationSettings.label = this.i18n.i18next.t('bankAccountNumberVerification', 'Re-enter Bank Account Number'); }\r\n\r\n\t\tthis.bankTransitNumberSettings = this.globalState.business.portalSettings.fields.bankTransitNumber;\r\n\t\tif (!!this.bankTransitNumberSettings && !this.bankTransitNumberSettings.label) { this.bankTransitNumberSettings.label = this.i18n.i18next.t('bankTransitNumber', 'Bank Transit Number'); }\r\n\r\n\t\tthis.checkNumberSettings = this.globalState.business.portalSettings.fields.checkNumber;\r\n\t\tif (!!this.checkNumberSettings && !this.checkNumberSettings.label) { this.checkNumberSettings.label = this.i18n.i18next.t('checkNumber', 'Check Number'); }\r\n\t}\r\n}\r\n\r\nexport class CheckFormData {\r\n\tglobalState: State;\r\n\ttransitNumber: any;\r\n\taccountNumber: any;\r\n\taccountNumberVerification: any;\r\n\taccountType: any;\r\n\tcheckNumber: any;\r\n\tisRehabPaymentPlanForm: any;\r\n\tcustomFields: any;\r\n\r\n\tconstructor(private i18n: I18N, globalState: State) {\r\n\t\tthis.globalState = globalState;\r\n\t\tthis.transitNumber = \"\";\r\n\t\tthis.accountNumber = \"\";\r\n\t\tthis.accountNumberVerification = \"\";\r\n\t\tthis.checkNumber = \"\";\r\n\t\tthis.accountType = \"checking\";\r\n\t\tthis.isRehabPaymentPlanForm = false;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\t@computedFrom('accountType', 'accountNumber')\r\n\tget description() {\r\n\t\treturn `${this.accountType} account ending in ${FormattingHelper.mask(this.accountNumber)}`;\r\n\t}\r\n\r\n\tvalidate(errors) {\r\n\t\tif (this.transitNumber.length === 0) {\r\n\t\t\terrors.push(this.i18n.i18next.t('transitNumberRequired', 'Transit number is required'));\r\n\t\t} else if (!ValidationHelpers.isTransitNumber(this.transitNumber)) {\r\n\t\t\terrors.push(this.i18n.i18next.t('invalidTransitNumber', 'Invalid transit number'));\r\n\t\t}\r\n\r\n\t\tif (this.accountNumber.length === 0) {\r\n\t\t\terrors.push(this.i18n.i18next.t('bankAccountNumberRequired', 'Bank Account number is required'));\r\n\t\t} else if (!ValidationHelpers.isOnlyDigits(this.accountNumber)) {\r\n\t\t\terrors.push(this.i18n.i18next.t('bankAccountNumberCanContainOnlyDigits', 'Bank Account number can contain only digits'));\r\n\t\t} else if (!ValidationHelpers.isAchBankAccountNumber(this.accountNumber)) {\r\n\t\t\terrors.push(this.i18n.i18next.t('bankAccountNumberMustBe5To17Digits', 'Bank account number must be 5-17 digits'));\r\n\t\t}\r\n\r\n\t\tif (this.globalState.business.portalSettings.fields.bankAccountNumberVerification.visible\r\n\t\t\t&& this.globalState.business.portalSettings.fields.bankAccountNumberVerification.required\r\n\t\t\t&& this.accountNumberVerification != this.accountNumber) {\r\n\t\t\terrors.push(this.i18n.i18next.t('bankAccountNumbersDoNotMatch', 'Bank Account Numbers do not match'));\r\n\t\t}\r\n\r\n\t\tif (this.checkNumber.length === 0 && this.globalState.business.portalSettings.fields.checkNumber.required) {\r\n\t\t\terrors.push(this.i18n.i18next.t('checkNumberRequired', 'Check Number is required'));\r\n\t\t} else if (!ValidationHelpers.isOnlyDigits(this.checkNumber)) {\r\n\t\t\terrors.push(this.i18n.i18next.t('checkNumberCanContainOnlyDigits', 'Check Number can contain only digits'));\r\n\t\t}\r\n\r\n\t\tfor (let ii = 0; ii < this.customFields.length; ++ii) {\r\n\t\t\tlet field = this.customFields[ii];\r\n\t\t\tif (field.visible && field.required && (!field.value || field.value.length === 0)) {\r\n\t\t\t\tvar label = field.label || `Custom Field ${ii + 1}`;\r\n\t\t\t\terrors.push(`${label} is required`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmapAccountTypeToApi() {\r\n\t\tswitch (this.accountType) {\r\n\t\t\tcase \"checking\": return 1;\r\n\t\t\tcase \"savings\": return 2;\r\n\t\t\tcase \"business\": return 3;\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable } from 'aurelia-framework';\r\n\r\nexport class CustomFieldsCustomElement {\r\n\t@bindable fields: any;\r\n\t@bindable validationPath: any;\r\n\t@bindable disableFormFields: any = false;\r\n\trows: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.rows = [];\r\n\t}\r\n\r\n\tbind() {\r\n\t\tthis.buildRows();\r\n\t}\r\n\r\n\tfieldsChanged(newValue, oldValue) {\r\n\t\tthis.buildRows();\r\n\t}\r\n\r\n\tbuildRows() {\r\n\t\tthis.rows = [];\r\n\t\tif (this.fields) {\r\n\t\t\tlet row = -1;\r\n\t\t\tfor (let ii = 0; ii < this.fields.length; ++ii) {\r\n\t\t\t\tif (this.fields[ii].visible) {\r\n\t\t\t\t\tif (row === -1 || this.rows[row].length === 3) {\r\n\t\t\t\t\t\tthis.rows.push(new Array());\r\n\t\t\t\t\t\trow += 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.fields[ii].label) { this.fields[ii].label = `Custom Field ${ii + 1}`; }\r\n\t\t\t\t\tthis.rows[row].push(this.fields[ii]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, computedFrom, autoinject, bindingMode } from 'aurelia-framework';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { DOM } from 'aurelia-pal';\r\nimport { Router } from 'aurelia-router';\r\nimport he from 'he';\r\nimport numeral from 'numeral';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { CardFormData } from './card-form/card-form';\r\nimport { CheckFormData } from './check-form/check-form';\r\nimport { WalletForm } from './wallet-form/wallet-form';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Customer, Account, Payment } from '../../models/customer';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { HpfPaymentMethodService } from '../../services/hpf-payment-method.service';\r\nimport { CheckPaymentMethod } from '../../services/hpf-transaction-service';\r\nimport { HtmlHelper } from '../../helpers/html-helper';\r\nimport { FeeCalculationValue } from '../../models/feeCalculationValue';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\nimport { ApplePaySettings, DigitalWalletType } from '../../models/digital-wallet';\r\n\r\n@autoinject\r\nexport class PaymentFormCustomElement {\r\n\t@bindable({ defaultBindingMode: bindingMode.fromView }) fee; // Used to output calculated $ amount\r\n\t@bindable({ defaultBindingMode: bindingMode.fromView }) feeValue; // Used to output calculated $ or % amount\r\n\t@bindable({ defaultBindingMode: bindingMode.fromView }) feeCalculationType; // Used to output calculated $ or % type\r\n\t@bindable({ defaultBindingMode: bindingMode.fromView }) totalAmount; // Used to output calculated amount\r\n\t@bindable customer: Customer;\r\n\t@bindable balance: any;\r\n\t@bindable amount: any;\r\n\t@bindable initializeAmountAsBalance: any = true;\r\n\t@bindable showCvv: any;\r\n\t@bindable showFirstCol: any = true;\r\n\t@bindable showAmount: any;\r\n\t@bindable hideFeeAndTotal: any;\r\n\t@bindable showDate: any;\r\n\t@bindable showButton: any;\r\n\t@bindable showBackButton: any;\r\n\t@bindable paymentInformation: any;\r\n\t@bindable disableEdit: any;\r\n\t@bindable notShowEcheck: any;\r\n\t@bindable isRehabPaymentPlanForm: any;\r\n\t@bindable showTitle: boolean = true;\r\n\t@bindable noMethodSelected: any;\r\n\t@bindable disableAmountValidation: any = false;\r\n\t@bindable showInstallmentsDeclinedDisclosure: any = false;\r\n\t@bindable showInstallmentsRetryDisclosure: any = false;\r\n\t@bindable numberOfRetries: any = 0;\r\n\t@bindable showMinMaxPaymentAmounts: any = false;\r\n\t@bindable disableFormFields: any = false;\r\n\t@bindable isInstallment: any = false;\r\n\t@bindable numberOfServiceFee: any = 1;\r\n\t@bindable showConvenienceFeeDisclosureOnPaymentForm: any = true;\r\n\t@bindable accountMinPayment: any;\r\n\t@bindable showRecurringBillingDeclinedOrReturnedDisclosure: any = false;\r\n\t@bindable accounts: Array;\r\n\t@bindable resetAccountInfo: any = false;\r\n\t@bindable date: any;\r\n\t@bindable dateMinFutureStartDateDays: number;\r\n\t@bindable dateMaxFutureStartDateDays: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedWalletToCustomer: Customer;\r\n\t@bindable displaySelectedWalletToCustomer: boolean = true;\r\n\t@bindable feeValues: FeeCalculationValue[];\r\n\t@bindable paymentPlanType: PaymentPlanType = PaymentPlanType.NotSet; // used to dynamically show tiered fees table for autopays.\r\n\t@bindable formattedConvenienceFee: string;\r\n\t@bindable isFeeOverridden: boolean;\r\n\t@bindable isTieredFees: boolean;\r\n\t@bindable paymentMethodKey: number;\r\n\t@bindable allowSingleFuture: boolean;\r\n\t@bindable isDigitalWallet: boolean;\r\n\t@bindable forceEmailRequired: boolean = false;\r\n\t// Not allowed on ezpay and SLR\r\n\t@bindable showAddPaymentMethodToWallet: any = true;\r\n\t@bindable merchantKey: number;\r\n\r\n\tmodel: Model;\r\n\tshowResetButton: any;\r\n\tresetButtonLabel: any;\r\n\tdisableField: any;\r\n\tshowConvenienceFees: any;\r\n\tstates: any;\r\n\tenforceMinPayment: any;\r\n\tisEzpay: any;\r\n\tpaymentMethods: any;\r\n\tmaxIsBalanceDue: any;\r\n\tpaymentAmountSettings: any;\r\n\tdateSettings: any;\r\n\tzipcodeSettings: any;\r\n\tshowCheckNumber: any;\r\n\tminimumPaymentAmount: any;\r\n\tmaximumPaymentAmount: any;\r\n\tcardNumber: any;\r\n\tcardInfoKey: any;\r\n\tportfolioSettings: any;\r\n\tportfolioName: string;\r\n\tcachedCombinedAccountsBalance: number;\r\n\tezPayMerchantSelectedChanged: Subscription;\r\n\r\n\tconstructor(\r\n\t\tprivate element: Element,\r\n\t\tpublic globalState: State,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate router: Router,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate hpfPaymentMethodService: HpfPaymentMethodService,\r\n\t\tprivate eventAggregator: EventAggregator\r\n\t) {\r\n\t\tthis.model = new Model(globalState, payrazrService, this.i18n);\r\n\t\tthis.showResetButton = globalState.business.portalSettings.showResetButton;\r\n\t\tthis.resetButtonLabel = globalState.business.portalSettings.resetButtonLabel || this.i18n.i18next.t('reset', 'Reset');\r\n\t\tthis.showCvv = this.model.cardData.showCvv;\r\n\t\tthis.enforceMinPayment = this.globalState.business.portalSettings.requireMinPayment;\r\n\t\tthis.disableField = false;\r\n\t\tthis.showConvenienceFees = false;\r\n\t\tthis.minimumPaymentAmount = numeral(globalState.business.portalSettings.minimumPaymentAmount).format('$0,0.00');\r\n\t\tthis.maximumPaymentAmount = numeral(globalState.business.portalSettings.maximumPaymentAmount).format('$0,0.00');\r\n\t\tthis.isEzpay = this.isEzpayForm();\r\n\r\n\t\tthis.states = [\r\n\t\t\t{ id: '', name: 'Select State...' }\r\n\t\t\t// ,{id:'AB',name:'Alberta'}\r\n\t\t\t, { id: 'AK', name: 'Alaska' }\r\n\t\t\t, { id: 'AL', name: 'Alabama' }\r\n\t\t\t, { id: 'AR', name: 'Arkansas' }\r\n\t\t\t, { id: 'AZ', name: 'Arizona' }\r\n\t\t\t// ,{id:'BC',name:'British Columbia'}\r\n\t\t\t, { id: 'CA', name: 'California' }\r\n\t\t\t, { id: 'CO', name: 'Colorado' }\r\n\t\t\t, { id: 'CT', name: 'Connecticut' }\r\n\t\t\t, { id: 'DC', name: 'Washington DC' }\r\n\t\t\t, { id: 'DE', name: 'Delaware' }\r\n\t\t\t, { id: 'FL', name: 'Florida' }\r\n\t\t\t, { id: 'GA', name: 'Georgia' }\r\n\t\t\t, { id: 'HI', name: 'Hawaii' }\r\n\t\t\t, { id: 'IA', name: 'Iowa' }\r\n\t\t\t, { id: 'ID', name: 'Idaho' }\r\n\t\t\t, { id: 'IL', name: 'Illinois' }\r\n\t\t\t, { id: 'IN', name: 'Indiana' }\r\n\t\t\t, { id: 'KS', name: 'Kansas' }\r\n\t\t\t, { id: 'KY', name: 'Kentucky' }\r\n\t\t\t, { id: 'LA', name: 'Louisiana' }\r\n\t\t\t, { id: 'MA', name: 'Massachusetts' }\r\n\t\t\t, { id: 'MB', name: 'Manitoba' }\r\n\t\t\t, { id: 'MD', name: 'Maryland' }\r\n\t\t\t, { id: 'ME', name: 'Maine' }\r\n\t\t\t, { id: 'MI', name: 'Michigan' }\r\n\t\t\t, { id: 'MN', name: 'Minnesota' }\r\n\t\t\t, { id: 'MO', name: 'Missouri' }\r\n\t\t\t, { id: 'MS', name: 'Mississippi' }\r\n\t\t\t, { id: 'MT', name: 'Montana' }\r\n\t\t\t// ,{id:'NB',name:'New Brunswick'}\r\n\t\t\t, { id: 'NC', name: 'North Carolina' }\r\n\t\t\t, { id: 'ND', name: 'North Dakota' }\r\n\t\t\t, { id: 'NE', name: 'Nebraska' }\r\n\t\t\t, { id: 'NH', name: 'New Hampshire' }\r\n\t\t\t, { id: 'NJ', name: 'New Jersey' }\r\n\t\t\t// ,{id:'NL',name:'Newfoundland and Labrador'}\r\n\t\t\t, { id: 'NM', name: 'New Mexico' }\r\n\t\t\t// ,{id:'NS',name:'Nova Scotia'}\r\n\t\t\t// ,{id:'NT',name:'Northwest Territories'}\r\n\t\t\t// ,{id:'NU',name:'Nunavut'}\r\n\t\t\t, { id: 'NV', name: 'Nevada' }\r\n\t\t\t, { id: 'NY', name: 'New York' }\r\n\t\t\t, { id: 'OH', name: 'Ohio' }\r\n\t\t\t, { id: 'OK', name: 'Oklahoma' }\r\n\t\t\t// ,{id:'ON',name:'Ontario'}\r\n\t\t\t, { id: 'OR', name: 'Oregon' }\r\n\t\t\t, { id: 'PA', name: 'Pennsylvania' }\r\n\t\t\t// ,{id:'PE',name:'Prince Edward Island'}\r\n\t\t\t, { id: 'PR', name: 'Puerto Rico' }\r\n\t\t\t// ,{id:'QC',name:'Quebec'}\r\n\t\t\t, { id: 'RI', name: 'Rhode Island' }\r\n\t\t\t, { id: 'SC', name: 'South Carolina' }\r\n\t\t\t, { id: 'SD', name: 'South Dakota' }\r\n\t\t\t// ,{id:'SK',name:'Saskatchewan'}\r\n\t\t\t, { id: 'TN', name: 'Tennessee' }\r\n\t\t\t, { id: 'TX', name: 'Texas' }\r\n\t\t\t, { id: 'UT', name: 'Utah' }\r\n\t\t\t, { id: 'VA', name: 'Virginia' }\r\n\t\t\t, { id: 'VT', name: 'Vermont' }\r\n\t\t\t, { id: 'WA', name: 'Washington' }\r\n\t\t\t, { id: 'WI', name: 'Wisconsin' }\r\n\t\t\t, { id: 'WV', name: 'West Virginia' }\r\n\t\t\t, { id: 'WY', name: 'Wyoming' }\r\n\t\t\t// ,{id:'YT',name:'Yukon'}\r\n\t\t];\r\n\t}\r\n\r\n\tapplyQueryStringParams() {\r\n\t\tif (!this.payrazrService) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (this.payrazrService.getParameterValue('locked')) {\r\n\t\t\t\tthis.disableField = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('paymentDescription')) {\r\n\t\t\t\tthis.model.description = this.payrazrService.getParameterValue('paymentDescription').substr(0, 80);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('paymentAmount')) {\r\n\t\t\t\tthis.model.amount = this.payrazrService.getParameterValue('paymentAmount').substr(0, 12);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('billingAddress')) {\r\n\t\t\t\tthis.model.billingAddress = this.payrazrService.getParameterValue('billingAddress').substr(0, 50);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('customerName')) {\r\n\t\t\t\tthis.model.accountName = this.payrazrService.getParameterValue('customerName').substr(0, 100);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('zipCode')) {\r\n\t\t\t\tthis.model.accountZip = this.payrazrService.getParameterValue('zipCode').substr(0, 9);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('billingCity')) {\r\n\t\t\t\tthis.model.billingCity = this.payrazrService.getParameterValue('billingCity').substr(0, 25);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('billingState')) {\r\n\t\t\t\tthis.model.billingState = this.payrazrService.getParameterValue('billingState').substr(0, 5).toUpperCase();\r\n\t\t\t}\r\n\r\n\t\t\t// BT Webpay Supported Fields\r\n\t\t\tif (this.payrazrService.getParameterValue('UMtransAmt')) {\r\n\t\t\t\tthis.model.amount = this.payrazrService.getParameterValue('UMtransAmt').substr(0, 12);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMdescription')) {\r\n\t\t\t\tthis.model.description = this.payrazrService.getParameterValue('UMdescription').substr(0, 80);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMName')) {\r\n\t\t\t\tthis.model.accountName = this.payrazrService.getParameterValue('UMName').substr(0, 100);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMrouting')) {\r\n\t\t\t\tthis.model.checkData.transitNumber = this.payrazrService.getParameterValue('UMrouting');\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMphonenumber')) {\r\n\t\t\t\tthis.model.billingPhone = this.payrazrService.getParameterValue('UMphonenumber');\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMemail')) {\r\n\t\t\t\tthis.model.billingEmail = this.payrazrService.getParameterValue('UMemail');\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMfnameCC')) {\r\n\t\t\t\tif (this.payrazrService.getParameterValue('UMlnameCC')) {\r\n\t\t\t\t\tthis.model.accountName = this.payrazrService.getParameterValue('UMfnameCC') + ' ' + this.payrazrService.getParameterValue('UMlnameCC');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.model.accountName = this.payrazrService.getParameterValue('UMfnameCC');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMstreet')) {\r\n\t\t\t\tthis.model.billingAddress = this.payrazrService.getParameterValue('UMstreet');\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMzip')) {\r\n\t\t\t\tthis.model.accountZip = this.payrazrService.getParameterValue('UMzip');\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encountered in querystring params.');\r\n\t\t}\r\n\r\n\t\tthis.calculateTotalAmount();\r\n\t}\r\n\r\n\tapplyPortfolioSettingsToPortal() {\r\n\t\tthis.portfolioName = this.accounts[0].portfolioName; // Use the first account for portfolio name\r\n\r\n\t\t// Loop through accounts and get the most restrictive settings\r\n\t\tthis.accounts.forEach(account => {\r\n\t\t\tlet accountPortfolio = this.globalState.business.fetchPortfolioSettings(account.portfolioName);\r\n\t\t\tif (!this.portfolioSettings) {\r\n\t\t\t\tthis.portfolioSettings = accountPortfolio;\r\n\t\t\t} else {\r\n\t\t\t\tif (!accountPortfolio.settings.paymentMethods.allowCreditCard) {\r\n\t\t\t\t\tthis.portfolioSettings.settings.paymentMethods.allowCreditCard = false;\r\n\t\t\t\t\tthis.portfolioSettings.paymentMethods.allowCreditCard = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!accountPortfolio.settings.paymentMethods.allowAch) {\r\n\t\t\t\t\tthis.portfolioSettings.settings.paymentMethods.allowAch = false;\r\n\t\t\t\t\tthis.portfolioSettings.paymentMethods.allowAch = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet min = numeral(accountPortfolio.settings.minimumPaymentAmount).value();\r\n\t\t\t\tlet max = numeral(accountPortfolio.settings.maximumPaymentAmount).value();\r\n\r\n\t\t\t\t// If min is defined, and if setting is undefined or if this min value is greater than the previously saved one\r\n\t\t\t\tif (\r\n\t\t\t\t\t(accountPortfolio.settings.minimumPaymentAmount !== undefined && accountPortfolio.settings.minimumPaymentAmount !== null)\r\n\t\t\t\t\t&& (this.portfolioSettings.settings.minimumPaymentAmount === undefined || this.portfolioSettings.settings.minimumPaymentAmount < min)\r\n\t\t\t\t){\r\n\t\t\t\t\tthis.portfolioSettings.settings.minimumPaymentAmount = min;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If max is defined, and if setting is undefined or if this max value is less than the previously saved one\r\n\t\t\t\tif (\r\n\t\t\t\t\t(accountPortfolio.settings.maximumPaymentAmount !== undefined && accountPortfolio.settings.maximumPaymentAmount !== null)\r\n\t\t\t\t\t&& (this.portfolioSettings.settings.maximumPaymentAmount === undefined || this.portfolioSettings.settings.maximumPaymentAmount > max)\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.portfolioSettings.settings.maximumPaymentAmount = max;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.globalState.business.applyPortfolioSettingsToPortal(this.portfolioName, true, this.merchantKey);\r\n\t\tthis.showAcceptedPaymentMethods(this.portfolioSettings);\r\n\t\tthis.model.walletData.portfolioName = this.model.cardData.portfolioName = this.portfolioName;\r\n\t}\r\n\r\n\tdisableFormFieldsChanged(newValue, oldValue) {\r\n\t\tif (!newValue && oldValue && this.accounts && this.accounts.length) {\r\n\t\t\tthis.applyPortfolioSettingsToPortal();\r\n\t\t}\r\n\t}\r\n\r\n\tgetDigitalWalletIcon(img: string): NodeRequire {\r\n\t\treturn require(`../../images/digitalWallets/${img}`);\r\n\t}\r\n\r\n\t// ToDo: In order to sufficeintly test we need to refactor getCustomerPaymentMethods() \r\n\t// to return a paymentMethods array. We should not set the global paymentMethods[] in the resolved promise\r\n\tshowAcceptedPaymentMethods(portfolio) {\r\n\t\tlet creditOnly = portfolio.paymentMethods.acceptsCredit && !portfolio.paymentMethods.acceptsDebit;\r\n\t\tlet debitOnly = !portfolio.paymentMethods.acceptsCredit && portfolio.paymentMethods.acceptsDebit;\r\n\t\tlet neither = !portfolio.paymentMethods.acceptsCredit && !portfolio.paymentMethods.acceptsDebit;\r\n\t\t// At this time, digital wallets do not support Autopay\r\n\t\tlet enableApplePay = this.globalState.features.enableApplePay\r\n\t\t\t&& this.globalState.business.portalSettings.businessSettings.enableApplePay\r\n\t\t\t&& this.globalState.business.portalSettings.paymentMethods.allowApplePay\r\n\t\t\t&& this.paymentPlanType !== PaymentPlanType.Autopay;\r\n\r\n\t\tlet cardLabel = debitOnly ? this.i18n.i18next.t('debitCard', 'Debit Card') : creditOnly ? this.i18n.i18next.t('creditCard', 'Credit Card') : this.i18n.i18next.t('creditOrDebitCard', 'Credit/Debit Card');\r\n\t\tif (!this.paymentMethods) {\r\n\t\t\tthis.paymentMethods = [];\r\n\r\n\t\t\tlet customerIds: Array = [this.globalState.customer.id];\r\n\t\t\tthis.globalState.associatedCustomers.forEach(x => {\r\n\t\t\t\tcustomerIds.push(x.id);\r\n\t\t\t});\r\n\r\n\t\t\tcustomerIds.forEach(customerId => {\r\n\t\t\t\tthis.getCustomerPaymentMethods(customerId).then(\r\n\t\t\t\t\t(result) => {\r\n\t\t\t\t\t\tthis.paymentMethods = [];\r\n\t\t\t\t\t\tif (this.isWalletEnabled && !this.isEzpay && this.model.walletData.savedPaymentMethods.length) {\r\n\t\t\t\t\t\t\tthis.paymentMethods.push({ name: this.i18n.i18next.t('wallet', 'Wallet'), vmName: './wallet-form/wallet-form', vm: this.model.walletData, isWallet: true });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.globalState.business.portalSettings.paymentMethods.allowCreditCard) {\r\n\t\t\t\t\t\t\tif (!neither) {\r\n\t\t\t\t\t\t\t\tthis.paymentMethods.push({ name: cardLabel, vmName: './card-form/card-form', vm: this.model.cardData, isCard: true });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.globalState.business.portalSettings.paymentMethods.allowAch) {\r\n\t\t\t\t\t\t\tthis.paymentMethods.push({ name: this.i18n.i18next.t('eCheck', 'eCheck'), vmName: './check-form/check-form', vm: this.model.checkData, isCheck: true });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (enableApplePay && !neither) {\r\n\t\t\t\t\t\t\tthis.paymentMethods.push({ name: this.i18n.i18next.t('applePay', 'Apple Pay'), vmName: null, vm: this.model.applePaySettings, isDigitalWallet: true, img: 'apple_pay.svg' });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.setDefaultPaymentMethod(cardLabel);\r\n\t\t\t\t\t\tif (!this.model.paymentMethod.isDigitalWallet) {\r\n\t\t\t\t\t\t\tthis.getFeeInformation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsetDefaultPaymentMethod(cardLabel: string): void {\r\n\t\tif (!this.paymentMethods || this.paymentMethods.length === 0) {\r\n\t\t\tthis.paymentMethods = [];\r\n\t\t\t// if paymentMethods is empty, we just default to Credit/Debit Card form.\r\n\t\t\tthis.paymentMethods.push({ name: cardLabel, vmName: './card-form/card-form', vm: this.model.cardData, isCard: true });\r\n\t\t}\r\n\t\tif (this.globalState.business.portalSettings.paymentMethods.allowAch\r\n\t\t\t&& this.paymentMethods.filter(x => x.isCheck === true).length > 0\r\n\t\t\t&& this.globalState.business.portalSettings.setDefaultPaymentMethodACH\r\n\t\t\t) {\r\n\t\t\t\tthis.model.paymentMethod = this.paymentMethods.find(x => x.isCheck === true);\r\n\t\t}else {\r\n\t\t\tthis.model.paymentMethod = this.paymentMethods[0];\r\n\t\t}\r\n\t}\r\n\r\n\tgetCustomerPaymentMethods(customerId: string): Promise {\r\n\t\tif (!customerId) {\r\n\t\t\treturn new Promise((res, rej) => { res({}); });\r\n\t\t}\r\n\t\treturn this.payrazrService.getCustomerPaymentMethodsByCustomerId(customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tlet bankAccounts = [];\r\n\t\t\t\tlet creditCards = [];\r\n\r\n\t\t\t\t// hideAchPaymentMethods gets set on the attached method of the payment form.\r\n\t\t\t\tif (this.globalState.business.portalSettings.paymentMethods.allowAch && !this.model.walletData.hideAchPaymentMethods) {\r\n\t\t\t\t\tbankAccounts = response.entity.achPaymentMethods;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.globalState.business.portalSettings.paymentMethods.allowCreditCard) {\r\n\t\t\t\t\tcreditCards = response.entity.creditCardPaymentMethods;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet savedPaymentMethods = [...bankAccounts, ...creditCards];\r\n\r\n\t\t\t\tif (!this.model.walletData.selectedPaymentMethod || (!this.model.walletData.selectedPaymentMethod.cardInfoKey && !this.model.walletData.selectedPaymentMethod.checkInfoKey)) {\r\n\t\t\t\t\tthis.model.walletData.selectedPaymentMethod = savedPaymentMethods.find(function(e) {\r\n\t\t\t\t\t\treturn e.isPrimaryPaymentMethod === true;\r\n\t\t\t\t\t});\r\n\t\t\t\t\t// if payment method key exists try to match it to a saved payment method\r\n\t\t\t\t\tif (this.paymentMethodKey) {\r\n\t\t\t\t\t\tlet key = this.paymentMethodKey;\r\n\t\t\t\t\t\tlet selectedPaymentMethod = savedPaymentMethods.find(function(e) {\r\n\t\t\t\t\t\t\treturn e.checkInfoKey === key || e.cardInfoKey === key;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t// if there is no matching payment method, default to the primary method\r\n\t\t\t\t\t\tthis.model.walletData.selectedPaymentMethod = selectedPaymentMethod\r\n\t\t\t\t\t\t\t? selectedPaymentMethod\r\n\t\t\t\t\t\t\t: this.model.walletData.selectedPaymentMethod;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let element in savedPaymentMethods) {\r\n\t\t\t\t\tif (savedPaymentMethods[element].cardInfoKey) {\r\n\t\t\t\t\t\tsavedPaymentMethods[element].nameLabel = this.i18n.i18next.t('cardHolderName', 'Card Holder Name');\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tsavedPaymentMethods[element].nameLabel = this.i18n.i18next.t('nameOnAccount', 'Name on Account');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.model.walletData.savedPaymentMethods = this.model.walletData.savedPaymentMethods.concat(savedPaymentMethods);\r\n\t\t\t\tthis.model.walletData.cvvLabel = this.i18n.i18next.t('cardSecurityCode', 'Card Security Code');\r\n\t\t\t} else {\r\n\t\t\t\tconsole.info(response.message);\r\n\t\t\t}\r\n\t\t}\r\n\t\t).catch(err => {\r\n\t\t\tconsole.error('Failed to retrieve customer payment methods');\r\n\t\t});\r\n\t}\r\n\r\n\tinspectCustomFields(customFields) {\r\n\t\tlet result = {};\r\n\t\tfor (let ii = 0; ii < customFields.length; ++ii) {\r\n\t\t\tif (customFields[ii].visible && customFields[ii].required && !customFields[ii].value) {\r\n\t\t\t\tlet fieldName = customFields[ii].label || `Custom field ${ii + 1}`;\r\n\t\t\t\tresult[fieldName] = `${fieldName} is required`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tbalanceChanged() {\r\n\t\ttry {\r\n\t\t\tif (this.balance > 0) {\r\n\t\t\t\tif (this.initializeAmountAsBalance) {\r\n\t\t\t\t\tthis.model.amount = numeral(this.balance).format('0.00');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.model.maxPayment || this.model.maxPayment > this.balance) {\r\n\t\t\t\t\tthis.model.maxPayment = this.balance;\r\n\t\t\t\t\tthis.maxIsBalanceDue = true;\r\n\t\t\t\t}\r\n\t\t\t\tthis.getFeeInformation();\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tthis.model.amount = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tcustomerChanged() {\r\n\t\tif (this.model.accountName === '' && this.customer) {\r\n\t\t\tthis.model.accountName = this.customer.name;\r\n\t\t}\r\n\r\n\t\tif (this.model.accountZip === '' && this.customer && this.customer.primaryAddress) {\r\n\t\t\tthis.model.accountZip = this.customer.primaryAddress.zip;\r\n\t\t}\r\n\t}\r\n\r\n\tamountChanged(newValue, oldValue) {// bindable at top of this file\r\n\t\tthis.model.amount = this.amount;\r\n\t\tthis.paymentAmountChanged();\r\n\t}\r\n\r\n\tpaymentAmountChanged() {// event on html\r\n\t\ttry {\r\n\t\t\tif (this.model.amount > 0) {\r\n\t\t\t\tthis.model.amount = numeral(this.model.amount).format('0.00');\r\n\t\t\t\tif (!this.model.maxPayment || (this.balance > 0 && this.model.maxPayment > this.balance)) {\r\n\t\t\t\t\tthis.model.maxPayment = this.balance;\r\n\t\t\t\t\tthis.maxIsBalanceDue = true;\r\n\t\t\t\t}\r\n\t\t\t\tthis.getFeeInformation(); // total will be re-calculated after getting new fee\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tthis.model.amount = 0;\r\n\t\t}\r\n\t}\r\n\r\n\taccountZipChanged() {\r\n\t\tthis.getFeeInformation();\r\n\t}\r\n\r\n\tpaymentMethodSelected(theEvent, selectedPaymentMethod) {\r\n\t\tthis.isDigitalWallet = selectedPaymentMethod?.isDigitalWallet ?? false;\r\n\t\tthis.getFeeInformation();\r\n\t}\r\n\r\n\tgetFeeInformation() {\r\n\t\tif (this.model.paymentMethod) {\r\n\t\t\t// default to card if card is selected or no payment method selected\r\n\t\t\tlet isCheck = true;\r\n\t\t\tif (this.model.paymentMethod.isCard) {\r\n\t\t\t\tisCheck = false;\r\n\t\t\t\tthis.cardNumber = this.model.cardData.cardNumber;\r\n\t\t\t\tthis.cardInfoKey = null;\r\n\t\t\t} else if (this.model.paymentMethod.isWallet && this.model.paymentMethod.vm.getSelectedPaymentMethod) {\r\n\t\t\t\tisCheck = this.model.paymentMethod.vm.getSelectedPaymentMethod.checkInfoKey;\r\n\t\t\t\tthis.cardNumber = null;\r\n\t\t\t\tthis.cardInfoKey = isCheck ? null : this.model.paymentMethod.vm.getSelectedPaymentMethod.cardInfoKey;\r\n\t\t\t} else if (this.model.paymentMethod.isDigitalWallet) {\r\n\t\t\t\t// digital wallet fees are calcualted after payment method selected in third party modal\r\n\t\t\t\tthis.hideFeeAndTotal = true;\r\n\t\t\t\tthis.model.convenienceFee = 0;\r\n\t\t\t\tthis.fee = 0;\r\n\t\t\t\tthis.feeValue = 0;\r\n\t\t\t\tthis.feeValues = [];\r\n\t\t\t\tthis.calculateTotalAmount();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet customerAccountKeys = [];\r\n\t\t\tthis.accounts.forEach(account => {\r\n\t\t\t\tif (account.customerAccountKey) {\r\n\t\t\t\t\tcustomerAccountKeys.push(account.customerAccountKey);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.payrazrService\r\n\t\t\t\t.calculateFee(!isCheck, this.portfolioName, this.model.getZipCode, this.model.amount, this.cardNumber,\r\n\t\t\t\t\tthis.cardInfoKey, customerAccountKeys.length ? customerAccountKeys : null, this.paymentPlanType, this.merchantKey)\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tif (result.isSuccessful) {\r\n\t\t\t\t\t\tthis.fee = result.entity.fee; // for backwards compatibility\r\n\t\t\t\t\t\tthis.model.convenienceFee = numeral(this.fee).format('0.00'); // for backwards compatibility\r\n\t\t\t\t\t\tthis.feeValue = result.entity.feeValue;\r\n\t\t\t\t\t\tthis.feeCalculationType = result.entity.feeCalculationType;\r\n\t\t\t\t\t\tthis.feeValues = result.entity.feeValues;\r\n\r\n\t\t\t\t\t\tthis.model.feeCalculationType = this.feeCalculationType;\r\n\t\t\t\t\t\tif (this.feeCalculationType === FeeCalculationType.Percentage) {\r\n\t\t\t\t\t\t\tthis.model.feeValue = numeral(this.fee).format('0.0000');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.model.feeValue = numeral(this.fee).format('0.00');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.paymentPlanType === PaymentPlanType.Autopay) {\r\n\t\t\t\t\t\t\tthis.isTieredFees = this.getIsTieredFees(this.feeValues);\r\n\t\t\t\t\t\t\tthis.formattedConvenienceFee = this.getFormattedConvenienceFee(this.feeValues, this.isFeeOverridden, this.isTieredFees);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.model.convenienceFeeDisclosure = he.decode(result.entity.feeDisclosure);\r\n\r\n\t\t\t\t\t\tthis.calculateTotalAmount();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => { console.error('Error retrieving fee information'); });\r\n\t\t}\r\n\t}\r\n\r\n\tgetIsTieredFees(feeCalculationValues: FeeCalculationValue[]): boolean {\r\n\t\treturn !this.isFeeOverridden && feeCalculationValues.some((fv) => fv.tierLimitKey > 1);\r\n\t}\r\n\r\n\tgetFormattedConvenienceFee(feeCalculationValues: FeeCalculationValue[], feeIsOverridden: boolean, isTieredFees: boolean): string {\r\n\t\tif (!feeIsOverridden && feeCalculationValues.every(fv => fv.tierLimitKey === 1)) {\r\n\t\t\tlet tier1FeeValue = feeCalculationValues.find(fv => fv.tierLimitKey === 1);\r\n\t\t\treturn tier1FeeValue.feeCalculationType === FeeCalculationType.Percentage\r\n\t\t\t\t? `${numeral(tier1FeeValue.feeValue).format('0.[0000]')}%`\r\n\t\t\t\t: numeral(tier1FeeValue.feeValue).format('($0,0.00)');\r\n\t\t}\r\n\t\t// if the fee is overridden or tiered, the formatted fee will already have correct format\r\n\t\treturn this.formattedConvenienceFee;\r\n\t}\r\n\r\n\tcalculateTotalAmount() {\r\n\t\t// if fee calculation done by percentage, it could either spit out calculated $ amount\r\n\t\t// or the % amount. The value needed depends on the context. For now, retain the behavior\r\n\t\t// of using the calculated $ amount, but this may need to change in the future.\r\n\t\tthis.totalAmount = numeral(this.model.amount).value() + numeral(this.model.convenienceFee).value();\r\n\t\tthis.model.totalAmount = numeral(this.totalAmount).format('0.00');\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.getSubmitEventData()\r\n\t\t\t.then(data => {\r\n\t\t\t\tthis.dispatchCustomEvent('payment-method-entered', data);\r\n\t\t\t});\r\n\t}\r\n\r\n\tdoBackButton() {\r\n\t\tthis.dispatchCustomEvent('payment-method-back');\r\n\t}\r\n\r\n\t// this method is for portal edit transaction button. When a page use view-model, this method could be used to clear up payment method PCI data.\r\n\tclearPciData() {\r\n\t\t\tthis.model.cardData.cardNumber = '';\r\n\t\t\tthis.model.cardData.cvv = '';\r\n\t\t\tthis.model.checkData.accountNumber = '';\r\n\t}\r\n\r\n\tdoResetButton() {\r\n\t\tthis.model.amount = 0;\r\n\t\tif (this.resetAccountInfo) {\r\n\t\t\tthis.model.accountName = '';\r\n\t\t\tthis.model.accountZip = '';\r\n\t\t\tthis.model.billingAddress = '';\r\n\t\t\tthis.model.billingEmail = '';\r\n\t\t\tthis.model.billingPhone = '';\r\n\t\t}\r\n\t\tthis.model.description = '';\r\n\r\n\t\tthis.model.cardData.cardNumber = '';\r\n\t\tthis.model.cardData.cvv = '';\r\n\t\tlet newDate = new Date();\r\n\t\tthis.model.cardData.expMonth = (newDate.getMonth() + 1).toString();\r\n\t\tthis.model.cardData.expYear = newDate.getFullYear().toString();\r\n\t\tthis.model.cardData.customFields.forEach((item, index, list) => {\r\n\t\t\titem.value = '';\r\n\t\t});\r\n\r\n\t\tthis.model.checkData.accountNumber = '';\r\n\t\tthis.model.checkData.transitNumber = '';\r\n\t\tthis.model.checkData.accountType = 'checking';\r\n\t\tthis.model.checkData.checkNumber = '';\r\n\t\tthis.model.checkData.customFields.forEach((item, index, list) => {\r\n\t\t\titem.value = '';\r\n\t\t});\r\n\r\n\t\tthis.model.date = this.date;\r\n\r\n\t\tthis.dispatchCustomEvent('payment-method-reset');\r\n\t}\r\n\r\n\tdispatchCustomEvent(eventName: any, eventData?: any) {\r\n\t\tlet evt = DOM.createCustomEvent(eventName, { bubbles: true, cancelable: true, detail: eventData });\r\n\r\n\t\tthis.element.dispatchEvent(evt);\r\n\t}\r\n\r\n\tisEzpayForm() {\r\n\t\treturn this.router.currentInstruction.config.name === 'ezpay';\r\n\t}\r\n\r\n\t@computedFrom('globalState.business.portalSettings')\r\n\tget isWalletEnabled() {\r\n\t\ttry {\r\n\t\t\treturn 'consumerWalletEnabled' in this.globalState.business.portalSettings ? this.globalState.business.portalSettings.consumerWalletEnabled : true;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Failed to enable wallet.');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('model.getAccountName')\r\n\tget needThirdPartyAck() {\r\n\t\tlet needThirdPartyAck = !!this.customer && (this.model.getAccountName !== this.customer.name) &&\r\n\t\t\t(this.globalState.business.verticalMarket === 1); // only show for ARM vertical\r\n\r\n\t\tif (!needThirdPartyAck) {\r\n\t\t\tthis.model.thirdPartyAck = false;\r\n\t\t}\r\n\r\n\t\treturn this.customer && needThirdPartyAck;\r\n\t}\r\n\r\n\tgetSubmitEventData() {\r\n\t\tlet validator = new Validator(this.i18n);\r\n\t\tif (this.maxIsBalanceDue) {\r\n\t\t\tvalidator.maxIsBalanceDue = this.maxIsBalanceDue;\r\n\t\t}\r\n\r\n\t\tif (this.model) {\r\n\t\t\tthis.model.disableAmountValidation = this.disableAmountValidation;\r\n\t\t}\r\n\r\n\t\treturn validator.validate(this.model)\r\n\t\t\t.then(async hasErrors => {\r\n\t\t\t\tlet data: any = {};\r\n\t\t\t\tif (hasErrors) {\r\n\t\t\t\t\tdata.errors = validator.errors;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.model.description = HtmlHelper.HtmlBreak(this.model.description);\r\n\t\t\t\t\tdata.name = this.model.accountName;\r\n\t\t\t\t\tdata.addressLine1 = this.model.billingAddress;\r\n\t\t\t\t\tdata.billingCity = this.model.billingCity;\r\n\t\t\t\t\tdata.billingState = this.model.billingState;\r\n\t\t\t\t\tdata.zipCode = this.model.accountZip;\r\n\t\t\t\t\tdata.billingPhone = this.model.billingPhone;\r\n\t\t\t\t\tdata.billingEmail = this.model.billingEmail;\r\n\t\t\t\t\tdata.isEmailOptedIn = this.model.isEmailOptedIn;\r\n\t\t\t\t\tdata.amount = this.model.amount;\r\n\t\t\t\t\tdata.transactionDescription = this.model.description;\r\n\t\t\t\t\tdata.isThirdPartyPayment = this.model.thirdPartyAck;\r\n\t\t\t\t\tdata.addPaymentMethodToWalletIsSelected = this.model.addPaymentMethodToWalletIsSelected && !this.model.paymentMethod.isWallet;\r\n\t\t\t\t\tdata.date = this.model.date;\r\n\r\n\t\t\t\t\tif (this.model.paymentMethod.isWallet) {\r\n\t\t\t\t\t\tdata.isWallet = true;\r\n\t\t\t\t\t\tif (this.model.paymentMethod.vm.getSelectedPaymentMethod.cardInfoKey) {\r\n\t\t\t\t\t\t\tdata.isCardPayment = true;\r\n\t\t\t\t\t\t\tdata.isCheckPayment = false;\r\n\t\t\t\t\t\t\tdata.card = this.model.paymentMethod.vm;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tdata.isCardPayment = false;\r\n\t\t\t\t\t\t\tdata.isCheckPayment = true;\r\n\t\t\t\t\t\t\tdata.check = this.model.paymentMethod.vm;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.model.paymentMethod.isCard) {\r\n\t\t\t\t\t\tdata.isCardPayment = true;\r\n\t\t\t\t\t\tdata.isCheckPayment = false;\r\n\t\t\t\t\t\tdata.card = this.model.cardData;\r\n\t\t\t\t\t\tdata.description = this.model.cardData.description;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.model.paymentMethod.isCheck) {\r\n\t\t\t\t\t\tdata.isCardPayment = false;\r\n\t\t\t\t\t\tdata.isCheckPayment = true;\r\n\t\t\t\t\t\tdata.check = this.model.checkData;\r\n\t\t\t\t\t\tdata.description = this.model.checkData.description;\r\n\t\t\t\t\t\tdata.paymentMethod = 'Check';\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.model.paymentMethod.isDigitalWallet) {\r\n\t\t\t\t\t\tdata.isCardPayment = false;\r\n\t\t\t\t\t\tdata.isCheckPayment = false;\r\n\t\t\t\t\t\tdata.isDigitalWallet = true;\r\n\t\t\t\t\t\tdata.digitalWalletSettings = this.model.paymentMethod.vm;\r\n\t\t\t\t\t\tdata.digitalWalletName = this.model.paymentMethod.vm.getDigitalWalletName();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// begin error checks\r\n\t\t\t\t\tdata.errors = [];\r\n\r\n\t\t\t\t\tif (this.model.paymentMethod.isCheck) {\r\n\t\t\t\t\t\tif (data.check) {\r\n\t\t\t\t\t\t\tlet checkPaymentMethod = new CheckPaymentMethod();\r\n\t\t\t\t\t\t\tcheckPaymentMethod.aba = data.check.transitNumber;\r\n\t\t\t\t\t\t\tcheckPaymentMethod.accountNumber = data.check.accountNumber;\r\n\r\n\t\t\t\t\t\t\tlet customerKey = this.customer === null ? 0 : this.customer.customerKey;\r\n\r\n\t\t\t\t\t\t\tlet isCheckAccepted = await this.hpfPaymentMethodService.verifyCheckAccepted(\r\n\t\t\t\t\t\t\t\tcustomerKey,\r\n\t\t\t\t\t\t\t\tcheckPaymentMethod,\r\n\t\t\t\t\t\t\t\t'C')\r\n\t\t\t\t\t\t\t\t.then(response => response.isSuccessful);\r\n\r\n\t\t\t\t\t\t\tif (!isCheckAccepted) {\r\n\t\t\t\t\t\t\t\tdata.errors.push(this.i18n.i18next.t(\r\n\t\t\t\t\t\t\t\t\t'verifyCheckAcceptedConsumerError',\r\n\t\t\t\t\t\t\t\t\t'Our payment processor, REPAY, cannot validate your bank account information. Please use a different form of payment to complete your transaction.'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.model.paymentMethod.isDigitalWallet && data.digitalWalletSettings) {\r\n\t\t\t\t\t\t// apple pay\r\n\t\t\t\t\t\tif (data.digitalWalletSettings.getDigitalWalletType() === DigitalWalletType.ApplePay) {\r\n\t\t\t\t\t\t\tif (!window.ApplePaySession || !window.ApplePaySession.canMakePayments()) {\r\n\t\t\t\t\t\t\t\tdata.errors.push(this.i18n.i18next.t(\r\n\t\t\t\t\t\t\t\t\t'applePayBrowserIncompatible',\r\n\t\t\t\t\t\t\t\t\t'Browser is incompatible with Apple Pay'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\t\t\t});\r\n\t}\r\n\r\n\t@computedFrom('model.paymentMethod')\r\n\tget addPaymentMethodToWalletIsVisible() {\r\n\t\ttry {\r\n\t\t\tlet visible = this.showAddPaymentMethodToWallet\r\n\t\t\t\t&& ('consumerWalletEnabled' in this.globalState.business.portalSettings ? this.globalState.business.portalSettings.consumerWalletEnabled : true)\r\n\t\t\t\t&& (!!this.model.paymentMethod.isCard || !!this.model.paymentMethod.isCheck)\r\n\t\t\t\t&& !this.isEzpay;\r\n\r\n\t\t\t// This resets the value of the checkbox when visibility changes.\r\n\t\t\tif (!visible) {\r\n\t\t\t\tthis.model.addPaymentMethodToWalletIsSelected = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn visible;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tcheckFirstColVisibility() {\r\n\t\t// Check visibility of all first column elements\r\n\t\t// If none are visible, hide the whole column shifting others\r\n\t\tif (\r\n\t\t\t!this.showDate &&\r\n\t\t\t!this.showAmount &&\r\n\t\t\tthis.hideFeeAndTotal &&\r\n\t\t\t!this.model.descriptionSettings.visible &&\r\n\t\t\t!this.model.billingPhoneSettings.visible &&\r\n\t\t\t!this.model.billingEmailSettings.visible\r\n\t\t) {\r\n\t\t\tthis.showFirstCol = false;\r\n\t\t}\r\n\t}\r\n\r\n\tattached() {\r\n\t\tif (this.forceEmailRequired) {\r\n\t\t\tthis.model.billingEmailSettings.required = this.forceEmailRequired;\r\n\t\t\tthis.model.billingEmailSettings.visible = this.forceEmailRequired;\r\n\t\t}\r\n\r\n\t\tthis.model.merchantKey = this.merchantKey ?? 0;\r\n\t\tthis.applyPortfolioSettingsToPortal();\r\n\r\n\t\tif (this.noMethodSelected) {\r\n\t\t\tthis.model.paymentMethod = null;\r\n\t\t}\r\n\t\tif (this.paymentMethods.length) {\r\n\t\t\tif (this.notShowEcheck) {\r\n\t\t\t\tthis.paymentMethods = this.paymentMethods.filter(item => !item.isCheck);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.model.walletData.hideAchPaymentMethods = this.notShowEcheck;\r\n\r\n\t\tthis.model.walletData.showCvv = this.model.cardData.showCvv = this.globalState.business.portalSettings.fields.cvv.visible && this.showCvv !== false;\r\n\t\tthis.model.checkData.showCheckNumber = this.showCheckNumber !== false;\r\n\t\tthis.model.checkData.isRehabPaymentPlanForm = this.isRehabPaymentPlanForm;\r\n\t\tthis.model.cardData.isRehabForm = this.isRehabPaymentPlanForm;\r\n\r\n\t\tthis.model.cardData.customFields.forEach((item, index, list) => {\r\n\t\t\titem.value = '';\r\n\t\t});\r\n\t\tthis.model.checkData.customFields.forEach((item, index, list) => {\r\n\t\t\titem.value = '';\r\n\t\t});\r\n\r\n\t\t// apple pay\r\n\t\tif (this.globalState.features.enableApplePay) {\r\n\t\t\tthis.model.applePaySettings.acceptsCredit = this.allowCardType('credit', this.portfolioSettings);\r\n\t\t\tthis.model.applePaySettings.acceptsDebit = this.allowCardType('debit', this.portfolioSettings);\r\n\t\t\tthis.model.applePaySettings.supportedNetworks = this.getAcceptedCards(this.portfolioSettings);\r\n\t\t}\r\n\r\n\t\t// The balance is bound to the component in most cases, but when it isn't, pull the value from the selected account.\r\n\t\tif (!this.balance && this.accountsBalance) {\r\n\t\t\tthis.balance = this.accountsBalance;\r\n\t\t}\r\n\r\n\t\t// These min/max values don't appear to be tied to the portfolio, with the shopping cart changes we may have issues with this.\r\n\t\tlet minimum = this.accountMinPayment && this.enforceMinPayment ? this.accountMinPayment : (this.globalState.business.portalSettings.minimumPaymentAmount || 0.01);\r\n\t\tlet maximum = Math.min(this.globalState.business.portalSettings.maximumPaymentAmount || Number.MAX_VALUE, this.balance || Number.MAX_VALUE);\r\n\t\tif (maximum === Number.MAX_VALUE) {\r\n\t\t\tmaximum = undefined;\r\n\t\t}\r\n\r\n\t\tlet maxIsBalanceDue = maximum === this.balance;\r\n\t\tthis.model.setPaymentLimits(minimum, maximum, maxIsBalanceDue);\r\n\r\n\t\tif (this.customer === null) {\r\n\t\t\tthis.model.wallet = null;\r\n\t\t\tthis.model.billingAddress = '';\r\n\t\t\tthis.model.billingPhone = '';\r\n\t\t\tthis.model.billingEmail = '';\r\n\t\t\tthis.model.isEmailOptedIn = false;\r\n\t\t\tthis.model.amount = 0;\r\n\t\t\tthis.model.accountName = '';\r\n\t\t\tthis.model.accountZip = '';\r\n\t\t} else {\r\n\t\t\tif (this.customer.paymentMethods) {\r\n\t\t\t\tthis.model.wallet = this.customer.paymentMethods.filter(item => {\r\n\t\t\t\t\treturn (item.type === 'Card' && this.globalState.business.portalSettings.paymentMethods.allowCreditCard) ||\r\n\t\t\t\t\t\t(item.type === 'ACH' && this.globalState.business.portalSettings.paymentMethods.allowAch);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (this.model.wallet.length === 0) {\r\n\t\t\t\t\tthis.model.wallet = null;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.model.wallet = null;\r\n\t\t\t}\r\n\t\t\tthis.model.billingAddress = this.customer.primaryAddress.line1;\r\n\t\t\tthis.model.billingPhone = this.customer.homePhone;\r\n\t\t\tthis.model.billingEmail = this.customer.email;\r\n\t\t\tthis.model.isEmailOptedIn = this.customer.notificationSettings.isEmailOptedIn;\r\n\t\t\tthis.model.billingCity = this.customer.primaryAddress.city;\r\n\t\t\tthis.model.billingState = this.customer.primaryAddress.state;\r\n\t\t\tthis.model.amount = this.amount;\r\n\t\t\tthis.model.accountName = this.customer.name;\r\n\t\t\tthis.model.accountZip = this.customer.primaryAddress.zip;\r\n\t\t}\r\n\r\n\t\tif (this.paymentInformation) {\r\n\t\t\tthis.model.accountName = this.paymentInformation.name;\r\n\t\t\tthis.model.billingAddress = this.paymentInformation.addressLine1;\r\n\t\t\tthis.model.billingCity = this.paymentInformation.billingCity;\r\n\t\t\tthis.model.billingState = this.paymentInformation.billingState;\r\n\t\t\tthis.model.accountZip = this.paymentInformation.zipCode;\r\n\t\t\tthis.model.billingPhone = this.paymentInformation.billingPhone;\r\n\t\t\tthis.model.billingEmail = this.paymentInformation.billingEmail;\r\n\t\t\tthis.model.isEmailOptedIn = this.paymentInformation.isEmailOptedIn;\r\n\t\t\tthis.model.amount = this.paymentInformation.amount;\r\n\t\t\tthis.model.description = this.paymentInformation.transactionDescription;\r\n\t\t\tif (this.paymentInformation.card) {\r\n\t\t\t\tthis.paymentInformation.isCardPayment = true;\r\n\t\t\t\tthis.paymentInformation.isCheckPayment = false;\r\n\t\t\t\tthis.model.paymentMethod = this.paymentMethods.find(item => item.isCard);\r\n\t\t\t\tthis.model.cardData = this.paymentInformation.card;\r\n\t\t\t\tthis.model.paymentMethod.vm = this.model.cardData;\r\n\t\t\t} else if (this.paymentInformation.check) {\r\n\t\t\t\tthis.paymentInformation.isCardPayment = false;\r\n\t\t\t\tthis.paymentInformation.isCheckPayment = true;\r\n\t\t\t\tthis.model.paymentMethod = this.paymentMethods.find(item => !item.isCard);\r\n\t\t\t\tthis.model.checkData = this.paymentInformation.check;\r\n\t\t\t\tthis.model.paymentMethod.vm = this.model.checkData;\r\n\t\t\t} else if (this.paymentInformation.wallet) {\r\n\t\t\t\tthis.model.walletSelect = this.paymentInformation.wallet;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.globalState.business.portalSettings.ezpay.accountNumberHandling.toLowerCase() !== 'lookup') {\r\n\t\t\tthis.applyQueryStringParams();\r\n\t\t}\r\n\r\n\t\tthis.paymentAmountSettings = this.globalState.business.portalSettings.fields.paymentAmount;\r\n\t\tif (!!this.paymentAmountSettings && !this.paymentAmountSettings.label) { this.paymentAmountSettings.label = this.i18n.i18next.t('paymentAmount', 'Payment Amount'); }\r\n\r\n\t\tthis.dateSettings = this.globalState.business.portalSettings.fields.paymentDate;\r\n\t\tif (!!this.dateSettings && !this.dateSettings.label) { this.dateSettings.label = this.i18n.i18next.t('paymentDate', 'Payment Date'); }\r\n\r\n\t\tthis.zipcodeSettings = this.globalState.business.portalSettings.fields.zipcode;\r\n\t\tif (!!this.zipcodeSettings && !this.zipcodeSettings.label) { this.zipcodeSettings.label = this.i18n.i18next.t('billingZipCode', 'Billing Zip Code'); }\r\n\r\n\t\tthis.model.date = this.date ? moment(this.date).format('MM/DD/YYYY') : moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY');\r\n\r\n\t\t// for ezpay (both validated and unvalidated), the first and only fee calculation call (when the page loads) happens before the\r\n\t\t// attached() method has completed and before the payment methods html has been rendered -- therefore there isn't enough information\r\n\t\t// available to calculate the fee (e.g. payment method type). So call the fee calculation method here for ezpay after the\r\n\t\t// model has finished loading.\r\n\t\t// Non - ezpay application flows already have the necessary information loaded in the page.\r\n\t\t// but still need an additional call if clicking 'back' button since this component page will be reloaded and this.model will be reset in the case\r\n\t\t// TODO: calculateFee() has heavy usage in our system since multiple events trigger to recalculate fee, like zipcode, payment method type, payment amount and card number\r\n\t\t// we might think a way to reduce db call later\r\n\t\tthis.getFeeInformation();\r\n\t\tthis.checkFirstColVisibility();\r\n\r\n\t\tthis.displaySelectedWalletToCustomer = this.globalState.isConsumerPortalGuarantorBillingEnabled\r\n\t\t\t&& this.displaySelectedWalletToCustomer;\r\n\r\n\t\tthis.subscribeToEvents();\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tif (this.ezPayMerchantSelectedChanged) {\r\n\t\t\tthis.ezPayMerchantSelectedChanged.dispose();\r\n\t\t}\r\n\t}\r\n\r\n\tsubscribeToEvents() {\r\n\t\tif (this.globalState.features.consumerPortalMultiZidEzPay) {\r\n\t\t\tthis.ezPayMerchantSelectedChanged = this.eventAggregator.subscribe('ezPayMerchantSelectedChangedEvent', (merchantKey) => {\r\n\t\t\t\tthis.merchantKey = merchantKey;\r\n\t\t\t\tthis.getFeeInformation();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tallowCardType(cardType: string, portfolioSettings: any) {\r\n\t\tif (!cardType || !portfolioSettings || !portfolioSettings.paymentMethods) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tswitch (cardType.toLowerCase()) {\r\n\t\t\tcase 'credit':\r\n\t\t\t\treturn portfolioSettings.paymentMethods.acceptsCredit;\r\n\t\t\tcase 'debit':\r\n\t\t\t\treturn portfolioSettings.paymentMethods.acceptsDebit;\r\n\t\t\tdefault:\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetAcceptedCards(portfolioSettings: any): string[] {\r\n\t\tlet cardNames: string[] = [];\r\n\t\tlet acceptedCards: any;\r\n\t\tif (this.isEzpay && !!portfolioSettings.ezPayMerchants && this.merchantKey > 0) {\r\n\t\t\tacceptedCards = portfolioSettings.ezPayMerchants.find(m => m.merchantKey == this.merchantKey).merchantSettings.cardsAccepted;\r\n\t\t} else {\r\n\t\t\tacceptedCards = portfolioSettings.merchantSettings.cardsAccepted;\r\n\t\t}\r\n\t\tconst acceptedCardKeys: string[] = Object.keys(acceptedCards);\r\n\r\n\t\tacceptedCardKeys.forEach((key) => {\r\n\t\t\tif (acceptedCards[key]) {\r\n\t\t\t\tcardNames.push(key);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn cardNames;\r\n\t}\r\n\r\n\tshowConvenienceFee(hideFeeTotal: boolean, convenienceFee: number) {\r\n\t\treturn !hideFeeTotal && convenienceFee;\r\n\t}\r\n\r\n\tget accountsBalance() {\r\n\t\tif (!this.cachedCombinedAccountsBalance) {\r\n\t\t\tthis.cachedCombinedAccountsBalance = 0;\r\n\t\t\tthis.accounts.forEach(account => {\r\n\t\t\t\tthis.cachedCombinedAccountsBalance += account.balance;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn this.cachedCombinedAccountsBalance;\r\n\t}\r\n\r\n\t@computedFrom('states')\r\n\tget stateIds(): string[] {\r\n\t\treturn this.states.map(s => s.id);\r\n\t}\r\n\r\n\t@computedFrom('states')\r\n\tget stateDescs(): string[] {\r\n\t\treturn this.states.map(s => s.name);\r\n\t}\r\n\r\n\t@computedFrom('model')\r\n\tget defaultState() {\r\n\t\treturn this.model.billingState;\r\n\t}\r\n\r\n\t// Both this and avalableCustomerDescs are called multiple times by\r\n\t// the view for unsure reasons; if there's a notable performance lag\r\n\t// in the future when switching customers/patients, try debugging here.\r\n\t@computedFrom('globalState')\r\n\tget availableCustomers(): Customer[] {\r\n\t\treturn [this.globalState.customer].concat(this.globalState.associatedCustomers);\r\n\t}\r\n\r\n\t@computedFrom('globalState')\r\n\tget availableCustomerDescs(): string[] {\r\n\t\treturn [this.globalState.customer].concat(this.globalState.associatedCustomers).map(c => c.name);\r\n\t}\r\n}\r\n\r\nexport class Model {\r\n\tcardData: any;\r\n\tcheckData: any;\r\n\twalletData: any;\r\n\tapplePaySettings: ApplePaySettings;\r\n\tpaymentMethod: any;\r\n\tthirdPartyAck: any;\r\n\tamount: any;\r\n\tconvenienceFee: any;\r\n\tfeeValue: number;\r\n\tfeeCalculationType: FeeCalculationType;\r\n\ttotalAmount: any;\r\n\tserviceFeeAck: any;\r\n\tbusinessLegalName: any;\r\n\tcsPhone: any;\r\n\tconvenienceFeeDisclosure: any;\r\n\taddPaymentMethodToWalletIsSelected: any;\r\n\tdescription: any;\r\n\tbillingAddress: any;\r\n\tbillingCity: any;\r\n\tbillingState: any;\r\n\tbillingPhone: any;\r\n\tbillingEmail: any;\r\n\tisEmailOptedIn: boolean;\r\n\taccountName: any;\r\n\taccountZip: any;\r\n\tbillingAddressSettings: any;\r\n\tbillingCitySettings: any;\r\n\tdescriptionRequiredStyle: any;\r\n\tbillingStateSettings: any;\r\n\tbillingPhoneSettings: any;\r\n\tbillingEmailSettings: any;\r\n\tdescriptionSettings: any;\r\n\tbillAddressRequiredStyle: any;\r\n\tbillCityRequiredStyle: any;\r\n\tbillStateRequiredStyle: any;\r\n\tbillPhoneRequiredStyle: any;\r\n\tbillEmailRequiredStyle: any;\r\n\tminPayment: any;\r\n\tmaxPayment: any;\r\n\tmaxIsBalanceDue: any;\r\n\tdisableAmountValidation: any = false;\r\n\twallet: any;\r\n\twalletSelect: any;\r\n\tdate: any;\r\n\tmerchantKey: any;\r\n\r\n\tconstructor(globalState, payrazrService, private i18n: I18N) {\r\n\t\tthis.cardData = new CardFormData(payrazrService, this.i18n);\r\n\t\tthis.cardData.cvvLabel = globalState.business.portalSettings.fields.cvv.label;\r\n\t\tthis.cardData.nameLabel = this.i18n.i18next.t('cardHolderName', 'Card Holder Name');\r\n\t\tthis.cardData.placeholder = this.i18n.i18next.t('enterCardHoldersName', 'Enter the card holder\\'s name.');\r\n\t\tthis.cardData.customFields = globalState.business.portalSettings.fields.cardCustom;\r\n\t\tthis.cardData.cvvRequired = globalState.business.portalSettings.fields.cvv.required;\r\n\r\n\t\tthis.checkData = new CheckFormData(this.i18n, globalState);\r\n\t\tthis.checkData.nameLabel = this.i18n.i18next.t('nameOnAccount', 'Name on Account');\r\n\t\tthis.checkData.placeholder = this.i18n.i18next.t('enterAccountHoldersName', 'Enter the account holder\\'s name.');\r\n\t\tthis.checkData.customFields = globalState.business.portalSettings.fields.checkCustom;\r\n\r\n\t\tthis.walletData = new WalletForm(globalState, payrazrService, this.i18n);\r\n\t\tthis.walletData.cvvLabel = globalState.business.portalSettings.fields.cvv.label;\r\n\t\tthis.walletData.cvvRequired = globalState.business.portalSettings.fields.cvv.required;\r\n\r\n\t\tthis.walletData.cardCustomFields = globalState.business.portalSettings.fields.cardCustom;\r\n\t\tthis.walletData.checkCustomFields = globalState.business.portalSettings.fields.checkCustom;\r\n\r\n\t\tthis.applePaySettings = new ApplePaySettings(this.i18n, globalState);\r\n\r\n\t\tthis.paymentMethod = null;\r\n\r\n\t\tthis.thirdPartyAck = false;\r\n\t\tthis.amount = 0;\r\n\t\tthis.convenienceFee = 0;\r\n\t\tthis.feeValue = 0;\r\n\t\tthis.feeCalculationType = FeeCalculationType.NotSet;\r\n\t\tthis.totalAmount = 0;\r\n\t\tthis.serviceFeeAck = false;\r\n\t\tthis.businessLegalName = globalState.business.legalName;\r\n\t\tthis.csPhone = globalState.business.portalSettings.csPhone;\r\n\t\tthis.convenienceFeeDisclosure = '';\r\n\r\n\t\tthis.addPaymentMethodToWalletIsSelected = false;\r\n\r\n\t\tthis.description = '';\r\n\t\tthis.billingAddress = '';\r\n\t\tthis.billingCity = '';\r\n\t\tthis.billingState = '';\r\n\t\tthis.billingPhone = '';\r\n\t\tthis.billingEmail = '';\r\n\t\tthis.isEmailOptedIn = false;\r\n\t\tthis.accountName = '';\r\n\t\tthis.accountZip = '';\r\n\t\tthis.merchantKey = 0;\r\n\r\n\t\tthis.billingAddressSettings = globalState.business.portalSettings.fields.billingAddress;\r\n\t\tif (!this.billingAddressSettings.label) { this.billingAddressSettings.label = this.i18n.i18next.t('billingAddress', 'Billing Address'); }\r\n\t\tthis.billingCitySettings = globalState.business.portalSettings.fields.billingCity;\r\n\t\tif (!!this.billingCitySettings && !this.billingCitySettings.label) { this.billingCitySettings.label = this.i18n.i18next.t('billingCity', 'Billing City'); }\r\n\t\tthis.billingStateSettings = globalState.business.portalSettings.fields.billingState;\r\n\t\tif (!!this.billingStateSettings && !this.billingStateSettings.label) { this.billingStateSettings.label = this.i18n.i18next.t('billingState', 'Billing State'); }\r\n\t\tthis.billingPhoneSettings = globalState.business.portalSettings.fields.billingPhone;\r\n\t\tif (!this.billingPhoneSettings.label) { this.billingPhoneSettings.label = this.i18n.i18next.t('billingPhoneNumber', 'Billing Phone Number'); }\r\n\t\tthis.billingEmailSettings = globalState.business.portalSettings.fields.billingEmail;\r\n\t\tif (!this.billingEmailSettings.label) { this.billingEmailSettings.label = this.i18n.i18next.t('email', 'Email'); }\r\n\t\tthis.descriptionSettings = globalState.business.portalSettings.fields.transactionDescription;\r\n\t\tif (!this.descriptionSettings.label) { this.descriptionSettings.label = this.i18n.i18next.t('description', 'Description'); }\r\n\r\n\t\tthis.descriptionRequiredStyle = this.descriptionSettings.required ? 'required' : 'optional';\r\n\t\tthis.billAddressRequiredStyle = this.billingAddressSettings.required ? 'required' : 'optional';\r\n\t\tthis.billCityRequiredStyle = (!!this.billingCitySettings && this.billingCitySettings.required) ? 'required' : 'optional';\r\n\t\tthis.billStateRequiredStyle = (!!this.billingStateSettings && this.billingStateSettings.required) ? 'required' : 'optional';\r\n\t\tthis.billPhoneRequiredStyle = this.billingPhoneSettings.required ? 'required' : 'optional';\r\n\t\tthis.billEmailRequiredStyle = this.billingEmailSettings.required ? 'required' : 'optional';\t\t\r\n\t}\r\n\r\n\t@computedFrom('paymentMethod')\r\n\tget isWalletSelected() {\r\n\t\ttry {\r\n\t\t\treturn (this.paymentMethod.isWallet !== undefined && this.paymentMethod.isWallet);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: CR - Rename the property to noun\r\n\t@computedFrom('accountName', 'paymentMethod', 'walletData.getSelectedPaymentMethod.checkInfoKey', 'walletData.getSelectedPaymentMethod.cardInfoKey')\r\n\tget getAccountName() {\r\n\t\ttry {\r\n\t\t\tif (this.isWalletSelected && (this.walletData.savedPaymentMethods.length > 0) && this.walletData.getSelectedPaymentMethod.name) {\r\n\t\t\t\tthis.accountName = this.walletData.getSelectedPaymentMethod.name;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.accountName;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn this.accountName;\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: CR - Rename the property to noun\r\n\tset getAccountName(param) {\r\n\t\tthis.accountName = param;\r\n\t}\r\n\r\n\t// TODO: CR - Rename the property to noun\r\n\t@computedFrom('accountZip', 'paymentMethod', 'walletData.getSelectedPaymentMethod.checkInfoKey', 'walletData.getSelectedPaymentMethod.cardInfoKey')\r\n\tget getZipCode() {\r\n\t\ttry {\r\n\t\t\tif (this.isWalletSelected && (this.walletData.savedPaymentMethods.length > 0) && this.walletData.getSelectedPaymentMethod.zipCode) {\r\n\t\t\t\tthis.accountZip = this.walletData.getSelectedPaymentMethod.zipCode;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.accountZip;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn this.accountZip;\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: CR - Rename the property to noun\r\n\tset getZipCode(param) {\r\n\t\tthis.accountZip = param;\r\n\t}\r\n\r\n\t@computedFrom('paymentMethod')\r\n\tget paymentViewModelName() {\r\n\t\tif (!this.paymentMethod) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.paymentMethod.vmName;\r\n\t}\r\n\r\n\t@computedFrom('paymentMethod')\r\n\tget paymentViewModelData() {\r\n\t\tif (!this.paymentMethod) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (this.merchantKey && this.merchantKey > 0) {\r\n\t\t\tthis.paymentMethod.vm.merchantKey = this.merchantKey;\r\n\t\t}\r\n\r\n\t\treturn this.paymentMethod.vm;\r\n\t}\r\n\r\n\tsetPaymentLimits(minimum, maximum, maxIsBalanceDue) {\r\n\t\tthis.minPayment = minimum;\r\n\t\tthis.maxPayment = maximum;\r\n\t\tthis.maxIsBalanceDue = maxIsBalanceDue;\r\n\t}\r\n}\r\n\r\nclass Validator {\r\n\terrors: any;\r\n\tmaxIsBalanceDue: any; // portal refactor note: had to add this here, even though it's not used in the class -- some external code was referencing/injecting it?\r\n\r\n\tconstructor(private i18n: I18N) {\r\n\t\tthis.errors = [];\r\n\t}\r\n\r\n\tvalidate(model: Model) {\r\n\t\tif (!model.disableAmountValidation && !ValidationHelpers.isNumeric(model.amount)) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('amountMustBeNumber', 'Amount must be a number'));\r\n\t\t} else if (!model.disableAmountValidation) {\r\n\t\t\tif (parseFloat(model.amount) < parseFloat(model.minPayment)) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('minimumPaymentAmountRequired', 'A minimum payment amount of') + ' ' + numeral(model.minPayment).format('$0,0.00') + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t} else if (model.maxPayment && parseFloat(model.amount) > parseFloat(model.maxPayment)) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('maximumPaymentAmountAllowed', 'Amount cannot be more than') + ' ' + numeral(model.maxPayment).format('$0,0.00'));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (parseFloat(model.amount) < 0) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('amountCannotBeLessThan', 'Amount cannot be less than') + ' ' + numeral(0).format('$0,0.00'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.billingPhoneSettings.visible && model.billingPhoneSettings.required) {\r\n\t\t\tif (model.billingPhone.length === 0) {\r\n\t\t\t\tthis.addError(model.billingPhoneSettings.label + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.billingPhoneSettings.visible && model.billingPhoneSettings.required) {\r\n\t\t\tif (model.billingPhone.length < 10) {\r\n\t\t\t\tthis.addError(model.billingPhoneSettings.label + ' ' + this.i18n.i18next.t('mustBeTenDigits', 'must be 10 digits'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.billingEmailSettings.visible && model.billingEmailSettings.required) {\r\n\t\t\tif (model.billingEmail.length === 0) {\r\n\t\t\t\tthis.addError(model.billingEmailSettings.label + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.billingEmailSettings.visible && model.billingEmail.length > 0 && !ValidationHelpers.isEmailAddress(model.billingEmail)) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('thisEmailAddressIsNotValid', 'This Email address is not valid.'));\r\n\t\t}\r\n\r\n\t\tif (model.descriptionSettings.visible && model.descriptionSettings.required) {\r\n\t\t\tif (model.description.length === 0) {\r\n\t\t\t\tthis.addError(model.descriptionSettings.label + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// digital wallet validation is handled by each digital wallet component\r\n\t\tif (!model.paymentMethod?.isDigitalWallet) {\r\n\t\t\tif (model.billingAddressSettings.visible && model.billingAddressSettings.required) {\r\n\t\t\t\tif (model.billingAddress.length === 0) {\r\n\t\t\t\t\tthis.addError(model.billingAddressSettings.label + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!!model.billingCitySettings && model.billingCitySettings.visible && model.billingCitySettings.required) {\r\n\t\t\t\tif (model.billingCity.length === 0) {\r\n\t\t\t\t\tthis.addError(model.billingCitySettings.label + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!!model.billingStateSettings && model.billingStateSettings.visible && model.billingStateSettings.required) {\r\n\t\t\t\tif (model.billingState.length === 0) {\r\n\t\t\t\t\tthis.addError(model.billingStateSettings.label + ' ' + this.i18n.i18next.t('isRequired', 'is required'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (model.accountName.length === 0) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('nameRequired', 'Name is required'));\r\n\t\t\t} else if (model.accountName.length > 25) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('nameCannotBeLongerThanTwentyFiveCharacters', 'Name cannot be longer than 25 characters'));\r\n\t\t\t}\r\n\r\n\t\t\tconst AccountNameHasAtLeastTwoNamesRegex = /[A-Za-z] +[A-Za-z]/;\r\n\t\t\tif (!AccountNameHasAtLeastTwoNamesRegex.test(model.accountName)) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('enterBothFirstAndLastName', 'Please enter both a first and last name'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.accountZip.length === 0) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('zipCodeIsRequired', 'Zip code is required'));\r\n\t\t\t} else if (!ValidationHelpers.isZipCode(model.accountZip)) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('enterValidFiveOrNineDigitZipCode', 'Please enter a valid 5- or 9-digit zip code'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet returnedPromise;\r\n\r\n\t\tif (!model.paymentViewModelData) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('selectOnePaymentMethod', 'Please select one payment method'));\r\n\t\t} else {\r\n\t\t\treturnedPromise = model.paymentViewModelData.validate(this.errors);\r\n\t\t}\r\n\t\tif (!returnedPromise) {\r\n\t\t\treturn Promise.resolve(this.errors.length > 0);\r\n\t\t}\r\n\r\n\t\treturn returnedPromise\r\n\t\t\t.then(() => {\r\n\t\t\t\treturn this.errors.length > 0;\r\n\t\t\t});\r\n\t}\r\n\r\n\taddError(error) {\r\n\t\tthis.errors.push(error);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#paymentMethods {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n flex-wrap: wrap;\\r\\n height: 35px;\\r\\n margin: 7px 0;\\r\\n}\\r\\n#paymentMethods .radio {\\r\\n padding: 0 5px;\\r\\n}\\r\\n\\r\\n.walletSelectSpacer {\\r\\n height: 28px;\\r\\n}\\r\\n\\r\\n.paymentForm .row {\\r\\n margin-bottom: 15px;\\r\\n}\\r\\n.paymentForm .col-lg-4 {\\r\\n border-right: 1px solid lightgrey;\\r\\n}\\r\\n.paymentForm .col-lg-4:last-child {\\r\\n border-right: none;\\r\\n}\\r\\n\\r\\n@media (min-width:360px) and (max-width:991px) {\\r\\n #payment-method-spacer {\\r\\n display: none;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(max-width:385px) {\\r\\n #button-spacer {\\r\\n margin: 1em;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(min-width:386px) {\\r\\n #button-spacer {\\r\\n display: none;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(max-width:768px){\\r\\n hr.column-hr {\\r\\n margin-left: 6em;\\r\\n margin-right: 6em;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(max-width: 991px){\\r\\n .walletSelectSpacer {\\r\\n height: 0px;\\r\\n }\\r\\n .paymentForm .col-lg-4 {\\r\\n border-right: none;\\r\\n }\\r\\n}\\r\\n.third-party-ack {\\r\\n color: #000;\\r\\n}\\r\\n\\r\\n.flex-col {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { I18N } from 'aurelia-i18n';\r\nimport { NavigationInstruction, Router } from 'aurelia-router';\r\nimport numeral from 'numeral';\r\nimport { anything, instance, mock, resetCalls, when } from 'ts-mockito';\r\nimport { Business } from '../../models/business';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { ServiceResponse } from '../../models/service-response';\r\nimport { State } from '../../services/global-state';\r\nimport { HpfPaymentMethodService } from '../../services/hpf-payment-method.service';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Model, PaymentFormCustomElement } from './payment-form';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\nimport { CheckFormData } from './check-form/check-form';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('components', () => {\r\n\t\tdescribe('paymentForm', () => {\r\n\t\t\tlet component: PaymentFormCustomElement;\r\n\t\t\tlet cleanModel: Model;\r\n\t\t\tlet stubState: State;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockElement: Element = mock(Element);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockHpfPaymentMethodService: HpfPaymentMethodService = mock(HpfPaymentMethodService);\r\n\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\r\n\t\t\tlet accounts: Account[] = [];\r\n\t\t\tlet firstAccount = new Account({});\r\n\t\t\tfirstAccount.portfolioName = 'TestPortfolio';\r\n\t\t\taccounts.push(firstAccount);\r\n\r\n\t\t\tlet portalSettings = {\r\n\t\t\t\tshowResetButton: true,\r\n\t\t\t\tresetButtonLabel: 'ResetLabelTest',\r\n\t\t\t\trequireMinPayment: true,\r\n\t\t\t\tminimumPaymentAmount: 500,\r\n\t\t\t\tmaximumPaymentAmount: 2500,\r\n\t\t\t\tfields: {\r\n\t\t\t\t\tcvv: {\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tlabel: 'testcvv'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcardCustom: [],\r\n\t\t\t\t\tcheckCustom: [],\r\n\t\t\t\t\tbillingAddress: {\r\n\t\t\t\t\t\tlabel: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbillingCity: {\r\n\t\t\t\t\t\tlabel: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbillingState: {\r\n\t\t\t\t\t\tlabel: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbillingPhone: {\r\n\t\t\t\t\t\tlabel: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbillingEmail: {\r\n\t\t\t\t\t\tlabel: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttransactionDescription: {\r\n\t\t\t\t\t\tlabel: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbankAccountNumberVerification: {\r\n\t\t\t\t\t\tvisible: false,\r\n\t\t\t\t\t\trequired: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcheckNumber: {\r\n\t\t\t\t\t\tvisible: false,\r\n\t\t\t\t\t\trequired: false\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\tenableApplePay: true\r\n\t\t\t\t},\r\n\t\t\t\tpaymentMethods: {\r\n\t\t\t\t\tallowApplePay: true,\r\n\t\t\t\t\tallowAch: false\r\n\t\t\t\t},\r\n\t\t\t\tsetDefaultPaymentMethodACH: false\r\n\t\t\t};\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\twhen(mockState.business).thenReturn(instance(mockBusiness));\r\n\t\t\t\twhen(mockBusiness.portalSettings).thenReturn(portalSettings);\r\n\t\t\t\twhen(mockRouter.currentInstruction).thenReturn({\r\n\t\t\t\t\tconfig: {\r\n\t\t\t\t\t\tname: 'ezpay',\r\n\t\t\t\t\t}\r\n\t\t\t\t} as NavigationInstruction);\r\n\r\n\t\t\t\twhen(mockPayrazrService.getCustomerPaymentMethodsByCustomerId()).thenResolve({\r\n\t\t\t\t\tisSuccessful: false\r\n\t\t\t\t});\r\n\r\n\t\t\t\tstubState = new State(\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\tstubState.business.addCustomerPortfolios = () => { };\r\n\r\n\t\t\t\tspyOn(stubState.business, 'addCustomerPortfolios')\r\n\t\t\t\t\t.and\r\n\t\t\t\t\t.callFake(() => { });\r\n\r\n\t\t\t\tcleanModel = new Model(\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\r\n\t\t\t\twhen(mockHpfPaymentMethodService\r\n\t\t\t\t\t.verifyCheckAccepted(\r\n\t\t\t\t\t\tmockCustomer.customerKey,\r\n\t\t\t\t\t\tcleanModel.paymentMethod,\r\n\t\t\t\t\t\t'C'))\r\n\t\t\t\t\t.thenResolve({\r\n\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t} as ServiceResponse);\r\n\r\n\t\t\t\tcomponent = new PaymentFormCustomElement(\r\n\t\t\t\t\tinstance(mockElement),\r\n\t\t\t\t\tstubState,\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockHpfPaymentMethodService),\r\n\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tcomponent.model = JSON.parse(JSON.stringify(cleanModel));\r\n\r\n\t\t\t\t// Injected @bindable properties\r\n\t\t\t\tcomponent.accounts = accounts;\r\n\r\n\t\t\t\t// TODO: Setup other bindable properties and required data such as payment methods\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('initalize', () => {\r\n\t\t\t\tit('should initialize component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\r\n\t\t\t\t\t// Initialized properties in the constructor\r\n\t\t\t\t\texpect(component.showResetButton).toEqual(portalSettings.showResetButton);\r\n\t\t\t\t\texpect(component.resetButtonLabel).toEqual(portalSettings.resetButtonLabel);\r\n\t\t\t\t\texpect(component.enforceMinPayment).toEqual(portalSettings.requireMinPayment);\r\n\t\t\t\t\texpect(component.disableField).toEqual(false);\r\n\t\t\t\t\texpect(component.showConvenienceFees).toEqual(false);\r\n\t\t\t\t\texpect(component.minimumPaymentAmount).toEqual(numeral(portalSettings.minimumPaymentAmount).format('$0,0.00'));\r\n\t\t\t\t\texpect(component.maximumPaymentAmount).toEqual(numeral(portalSettings.maximumPaymentAmount).format('$0,0.00'));\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('attached()', () => {\r\n\t\t\t\t// TODO: Write this test - it relies heavily on other functions being called to setup data. \r\n\t\t\t\twhen(mockBusiness.fetchPortfolioSettings(anything())).thenReturn({\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should return with no payment methods', () => {\r\n\t\t\t\t\tspyOn(component, 'showAcceptedPaymentMethods').and.stub();\r\n\t\t\t\t\t// component.attached();\r\n\t\t\t\t\t// expect(component.model.minPayment).toEqual(portalSettings.minimumPaymentAmount || 0.01);\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('applyQueryStringParams()', () => {\r\n\r\n\t\t\t\tlet params = {\r\n\t\t\t\t\tlocked: true,\r\n\t\t\t\t\tpaymentdescription: 'description',\r\n\t\t\t\t\tpaymentamount: '500',\r\n\t\t\t\t\tbillingaddress: '123 test',\r\n\t\t\t\t\tcustomername: 'testy mctesterson',\r\n\t\t\t\t\tzipcode: '85388',\r\n\t\t\t\t\tbillingcity: 'test',\r\n\t\t\t\t\tbillingstate: 'AZ',\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet UMparams = {\r\n\t\t\t\t\tumtransamt: '400',\r\n\t\t\t\t\tumdescription: 'um description',\r\n\t\t\t\t\tumname: 'um testy',\r\n\t\t\t\t\tumrouting: '123456789',\r\n\t\t\t\t\tumphonenumber: '1234567890',\r\n\t\t\t\t\tumemail: 'testy@test.test',\r\n\t\t\t\t\tumstreet: '123 test',\r\n\t\t\t\t\tumzip: '85388',\r\n\t\t\t\t};\r\n\r\n\t\t\t\tit('should not set values with empty params', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.getParameterValue(anything())).thenCall((key: string) => {\r\n\t\t\t\t\t\tkey = key.toLowerCase();\r\n\t\t\t\t\t\tconst value = params[key];\r\n\t\t\t\t\t\treturn value || '';\r\n\t\t\t\t\t});\r\n\t\t\t\t\tspyOn(component, 'calculateTotalAmount').and.stub();\r\n\t\t\t\t\tcomponent.model = cleanModel;\r\n\r\n\t\t\t\t\tcomponent.applyQueryStringParams();\r\n\t\t\t\t\texpect(component.model).toEqual(cleanModel);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set values with params', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.getParameterValue(anything())).thenCall((key: string) => {\r\n\t\t\t\t\t\tkey = key.toLowerCase();\r\n\t\t\t\t\t\tconst value = params[key];\r\n\t\t\t\t\t\treturn value || '';\r\n\t\t\t\t\t});\r\n\t\t\t\t\tspyOn(component, 'calculateTotalAmount').and.stub();\r\n\t\t\t\t\tcomponent.model = cleanModel;\r\n\r\n\t\t\t\t\tcomponent.applyQueryStringParams();\r\n\t\t\t\t\t// expect(component.disableField).toBeTruthy();\r\n\t\t\t\t\texpect(component.model.description).toEqual(params.paymentdescription.substr(0, 80));\r\n\t\t\t\t\texpect(component.model.amount).toEqual(params.paymentamount.substr(0, 12));\r\n\t\t\t\t\texpect(component.model.billingAddress).toEqual(params.billingaddress.substr(0, 50));\r\n\t\t\t\t\texpect(component.model.accountName).toEqual(params.customername.substr(0, 100));\r\n\t\t\t\t\texpect(component.model.accountZip).toEqual(params.zipcode.substr(0, 9));\r\n\t\t\t\t\texpect(component.model.billingCity).toEqual(params.billingcity.substr(0, 25));\r\n\t\t\t\t\texpect(component.model.billingState).toEqual(params.billingstate.substr(0, 5));\r\n\r\n\t\t\t\t\texpect(component.calculateTotalAmount).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set values with UM params', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.getParameterValue(anything())).thenCall((key: string) => {\r\n\t\t\t\t\t\tkey = key.toLowerCase();\r\n\t\t\t\t\t\tconst value = UMparams[key];\r\n\t\t\t\t\t\treturn value || '';\r\n\t\t\t\t\t});\r\n\t\t\t\t\tspyOn(component, 'calculateTotalAmount').and.stub();\r\n\t\t\t\t\tcomponent.model = cleanModel;\r\n\r\n\t\t\t\t\tcomponent.applyQueryStringParams();\r\n\t\t\t\t\texpect(component.model.amount).toEqual(UMparams.umtransamt.substr(0, 12));\r\n\t\t\t\t\texpect(component.model.description).toEqual(UMparams.umdescription.substr(0, 80));\r\n\t\t\t\t\texpect(component.model.accountName).toEqual(UMparams.umname.substr(0, 100));\r\n\t\t\t\t\texpect(component.model.checkData.transitNumber).toEqual(UMparams.umrouting.substr(0, 100));\r\n\t\t\t\t\texpect(component.model.billingPhone).toEqual(UMparams.umphonenumber.substr(0, 100));\r\n\t\t\t\t\texpect(component.model.billingEmail).toEqual(UMparams.umemail.substr(0, 100));\r\n\t\t\t\t\texpect(component.model.accountZip).toEqual(UMparams.umzip.substr(0, 9));\r\n\r\n\t\t\t\t\texpect(component.calculateTotalAmount).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\txdescribe('getFeeInformation()', () => {\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.model = JSON.parse(JSON.stringify(cleanModel));\r\n\t\t\t\t\tresetCalls(mockPayrazrService);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst fixedConvenienceFee = numeral(1.0).format('0.00');\r\n\t\t\t\tconst percentageConvenienceFee = numeral(20.0).format('0.00');\r\n\t\t\t\tconst feeInformationResponses =\r\n\t\t\t\t{\r\n\t\t\t\t\tfixed: {\r\n\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\tentity: {\r\n\t\t\t\t\t\t\tfee: 1.0,\r\n\t\t\t\t\t\t\tfeeValue: numeral(1.0).format('0.00'),\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.FixedAmount\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tpercentage: {\r\n\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\tentity: {\r\n\t\t\t\t\t\t\tfee: 20.0,\r\n\t\t\t\t\t\t\tfeeValue: numeral(20.0).format('0.0000'),\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.Percentage\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tconst testCaseEscenarios = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should get fee information for payment method card with feeCalculation type as FeeCalculationType.FixedAmount',\r\n\t\t\t\t\t\tfeeInformationResponse: feeInformationResponses.fixed,\r\n\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\tconvenienceFee: fixedConvenienceFee,\r\n\t\t\t\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\t\t\t\tisCard: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should get fee information for payment method card with feeCalculation type as FeeCalculationType.Percentage',\r\n\t\t\t\t\t\tfeeInformationResponse: feeInformationResponses.percentage,\r\n\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\tconvenienceFee: percentageConvenienceFee,\r\n\t\t\t\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\t\t\t\tisCard: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should get fee information for payment method card from wallet with feeCalculation type as FeeCalculationType.FixedAmount',\r\n\t\t\t\t\t\tfeeInformationResponse: feeInformationResponses.fixed,\r\n\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\tconvenienceFee: fixedConvenienceFee,\r\n\t\t\t\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\t\t\t\tisCard: false,\r\n\t\t\t\t\t\t\t\tisWallet: true,\r\n\t\t\t\t\t\t\t\tvm: {\r\n\t\t\t\t\t\t\t\t\tgetSelectedPaymentMethod: {\r\n\t\t\t\t\t\t\t\t\t\tcardInfoKey: 1\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should get fee information for payment method card from wallet with feeCalculation type as FeeCalculationType.Percentage',\r\n\t\t\t\t\t\tfeeInformationResponse: feeInformationResponses.percentage,\r\n\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\tconvenienceFee: percentageConvenienceFee,\r\n\t\t\t\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\t\t\t\tisCard: false,\r\n\t\t\t\t\t\t\t\tisWallet: true,\r\n\t\t\t\t\t\t\t\tvm: {\r\n\t\t\t\t\t\t\t\t\tgetSelectedPaymentMethod: {\r\n\t\t\t\t\t\t\t\t\t\tcardInfoKey: 1\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should get fee information for payment method ACH from wallet with feeCalculation type as FeeCalculationType.FixedAmount',\r\n\t\t\t\t\t\tfeeInformationResponse: feeInformationResponses.fixed,\r\n\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\tconvenienceFee: fixedConvenienceFee,\r\n\t\t\t\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\t\t\t\tisCard: false,\r\n\t\t\t\t\t\t\t\tisWallet: true,\r\n\t\t\t\t\t\t\t\tvm: {\r\n\t\t\t\t\t\t\t\t\tgetSelectedPaymentMethod: {\r\n\t\t\t\t\t\t\t\t\t\tcheckInfoKey: 1\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdescription: 'should get fee information for payment method ACH from wallet with feeCalculation type as FeeCalculationType.Percentage',\r\n\t\t\t\t\t\tfeeInformationResponse: feeInformationResponses.percentage,\r\n\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\tconvenienceFee: percentageConvenienceFee,\r\n\t\t\t\t\t\t\tpaymentMethod: {\r\n\t\t\t\t\t\t\t\tisCard: false,\r\n\t\t\t\t\t\t\t\tisWallet: true,\r\n\t\t\t\t\t\t\t\tvm: {\r\n\t\t\t\t\t\t\t\t\tgetSelectedPaymentMethod: {\r\n\t\t\t\t\t\t\t\t\t\tcheckInfoKey: 1\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\r\n\t\t\t\ttestCaseEscenarios.forEach((scenario) => {\r\n\t\t\t\t\tit(scenario.description, async () => {\r\n\r\n\t\t\t\t\t\t// arrenge\r\n\t\t\t\t\t\tcomponent.model.paymentMethod = scenario.input.paymentMethod;\r\n\r\n\t\t\t\t\t\tconst convenienceFee = numeral(scenario.feeInformationResponse.entity.fee).format('0.00');\r\n\t\t\t\t\t\tconst totalAmount = component.model.amount + scenario.feeInformationResponse.entity.fee;\r\n\r\n\t\t\t\t\t\tif (scenario.feeInformationResponse.entity.feeCalculationType === FeeCalculationType.Percentage) {\r\n\t\t\t\t\t\t\tscenario.feeInformationResponse.entity.feeValue = numeral(scenario.feeInformationResponse.entity.fee).format('0.0000');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tscenario.feeInformationResponse.entity.feeValue = numeral(scenario.feeInformationResponse.entity.fee).format('0.00');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\twhen(mockPayrazrService.calculateFee(anything(), anything(), anything(), anything(), anything(), anything(), anything(), anything(), anything())).thenResolve(scenario.feeInformationResponse);\r\n\r\n\t\t\t\t\t\tspyOn(component, 'calculateTotalAmount').and.callThrough();\r\n\r\n\t\t\t\t\t\t// act\r\n\t\t\t\t\t\tawait component.getFeeInformation();\r\n\t\t\t\t\t\tcomponent.calculateTotalAmount();\r\n\r\n\t\t\t\t\t\t// assert\r\n\t\t\t\t\t\texpect(component.fee).toBe(scenario.feeInformationResponse.entity.fee);\r\n\t\t\t\t\t\texpect(component.model.convenienceFee).toBe(convenienceFee);\r\n\t\t\t\t\t\texpect(component.feeCalculationType).toBe(scenario.feeInformationResponse.entity.feeCalculationType);\r\n\t\t\t\t\t\texpect(component.feeValue).toBe(scenario.feeInformationResponse.entity.feeValue);\r\n\t\t\t\t\t\texpect(component.totalAmount).toBe(totalAmount);\r\n\t\t\t\t\t\tif (scenario.input.paymentMethod.isCard) {\r\n\t\t\t\t\t\t\texpect(component.cardInfoKey).toBeNull();\r\n\t\t\t\t\t\t\texpect(component.cardNumber).not.toBeNull();\r\n\t\t\t\t\t\t} else if (scenario.input.paymentMethod.isWallet) {\r\n\t\t\t\t\t\t\tif (scenario.input.paymentMethod.vm.getSelectedPaymentMethod.cardInfoKey) {\r\n\t\t\t\t\t\t\t\texpect(component.cardInfoKey).not.toBeNull();\r\n\t\t\t\t\t\t\t} else if (scenario.input.paymentMethod.vm.getSelectedPaymentMethod.checkInfoKey) {\r\n\t\t\t\t\t\t\t\texpect(component.cardInfoKey).toBeNull();\r\n\t\t\t\t\t\t\t\texpect(component.cardNumber).toBeNull();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\texpect(component.calculateTotalAmount).toHaveBeenCalled();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should handle fail', () => {\r\n\t\t\t\t\twhen(mockPayrazrService.calculateFee(anything(), anything(), anything(), anything(), anything(), anything(), anything(), anything(), anything())).thenReject(new Error());\r\n\t\t\t\t\tconst spyGetFeeInformation = spyOn(component, 'getFeeInformation').and.stub();\r\n\r\n\t\t\t\t\tcomponent.getFeeInformation();\r\n\t\t\t\t\texpect(spyGetFeeInformation).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('showAcceptedPaymentMethods', () => {\r\n\t\t\t\tit('should add call getCustomerPaymentMethods() when Apple Pay enabled', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst mockPortfolio = mock(Portfolio);\r\n\t\t\t\t\tmockPortfolio.paymentMethods = {\r\n\t\t\t\t\t\tacceptsCredit: true,\r\n\t\t\t\t\t\tacceptsDebit: true\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tcomponent.globalState.features.enableApplePay = true;\r\n\t\t\t\t\tcomponent.paymentPlanType = PaymentPlanType.NotSet;\r\n\t\t\t\t\tcomponent.paymentMethods = null;\r\n\r\n\t\t\t\t\tspyOn(component, 'getCustomerPaymentMethods')\r\n\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t.returnValue(Promise.resolve());\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.showAcceptedPaymentMethods(mockPortfolio);\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(component.getCustomerPaymentMethods)\r\n\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('setDefaultPaymentMethod', () => {\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.paymentMethods = [];\r\n\t\t\t\t\tcomponent.globalState.business = instance(mockBusiness);\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.paymentMethods.allowAch = false;\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.setDefaultPaymentMethodACH = false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set Card as default payment method when no payment methods exists', () => {\r\n\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.paymentMethods.allowAch = false;\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.setDefaultPaymentMethod('cardLabel');\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.model.paymentMethod.name).toBe('cardLabel');\r\n\t\t\t\t\texpect(component.model.paymentMethod.isCard).toBeTrue();\r\n\t\t\t\t\texpect(component.paymentMethods.length).toBe(1);\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set eCheck as default payment method when ACH is available and Portal Settings allow it', () => {\r\n\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tcomponent.paymentMethods.push({ isCheck: true, name: 'eCheck' });\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.paymentMethods.allowAch = true;\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.setDefaultPaymentMethodACH = true;\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tcomponent.setDefaultPaymentMethod('cardLabel');\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(component.model.paymentMethod.name).toBe('eCheck');\r\n\t\t\t\t\texpect(component.model.paymentMethod.isCheck).toBeTrue();\r\n\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getSubmitEventData()',() => {\r\n\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should include error for non matching bank account number when payment method is ACH and verification is required', async () => {\r\n\r\n\t\t\t\t\tcomponent.globalState.business = instance(mockBusiness);\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.fields.bankAccountNumberVerification.visible = true;\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.fields.bankAccountNumberVerification.required = true;\r\n\r\n\t\t\t\t\tspyOn(i18next, 't')\r\n\t\t\t\t\t\t.withArgs('nameRequired', 'Name is required').and.returnValue('Name is required')\r\n\t\t\t\t\t\t.withArgs('enterBothFirstAndLastName', 'Please enter both a first and last name').and.returnValue('Please enter both a first and last name')\r\n\t\t\t\t\t\t.withArgs('zipCodeIsRequired', 'Zip code is required').and.returnValue('Zip code is required')\r\n\t\t\t\t\t\t.withArgs('transitNumberRequired', 'Transit number is required').and.returnValue('Transit number is required')\r\n\t\t\t\t\t\t.withArgs('bankAccountNumbersDoNotMatch', 'Bank Account Numbers do not match').and.returnValue('Bank Account Numbers do not match')\r\n\t\t\t\t\t\t;\r\n\r\n\t\t\t\t\tcomponent.maxIsBalanceDue = false;\r\n\t\t\t\t\tcomponent.model = cleanModel;\r\n\t\t\t\t\tcomponent.model.amount = 1;\r\n\t\t\t\t\tcomponent.model.accountName = \"Felipe Garcia\";\r\n\t\t\t\t\tcomponent.model.minPayment = 1;\r\n\t\t\t\t\tcomponent.model.maxPayment = 9999;\r\n\t\t\t\t\tcomponent.model.billingPhoneSettings.visible = false;\r\n\t\t\t\t\tcomponent.model.billingEmailSettings.visible = false;\r\n\t\t\t\t\tcomponent.model.descriptionSettings.visible = false;\r\n\t\t\t\t\tlet checkFormData = new CheckFormData(instance(mockI18N), component.globalState);\r\n\t\t\t\t\tcheckFormData.accountNumber = '12345678';\r\n\t\t\t\t\tcheckFormData.accountNumberVerification = '1234567';\r\n\t\t\t\t\tcheckFormData.customFields = [];\r\n\t\t\t\t\tcomponent.model.paymentMethod = { name: 'eCheck', vmName: './check-form/check-form', vm: checkFormData, isCheck: true };\r\n\t\t\t\t\tcomponent.merchantKey = 1;\r\n\r\n\t\t\t\t\tlet result = await component.getSubmitEventData();\r\n\r\n\t\t\t\t\texpect(result.errors).toBeTruthy();\r\n\t\t\t\t\texpect(result.errors.length).toBeGreaterThan(0);\r\n\t\t\t\t\texpect(result.errors.filter(x => x === 'Bank Account Numbers do not match').length).toBe(1);\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should include error for invalid email format input ', async () => {\r\n\r\n\t\t\t\t\tcomponent.globalState.business = instance(mockBusiness);\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.fields.bankAccountNumberVerification.visible = true;\r\n\t\t\t\t\tcomponent.globalState.business.portalSettings.fields.bankAccountNumberVerification.required = true;\r\n\r\n\t\t\t\t\tspyOn(i18next, 't')\r\n\t\t\t\t\t\t.withArgs('nameRequired', 'Name is required').and.returnValue('Name is required')\r\n\t\t\t\t\t\t.withArgs('enterBothFirstAndLastName', 'Please enter both a first and last name').and.returnValue('Please enter both a first and last name')\r\n\t\t\t\t\t\t.withArgs('zipCodeIsRequired', 'Zip code is required').and.returnValue('Zip code is required')\r\n\t\t\t\t\t\t.withArgs('transitNumberRequired', 'Transit number is required').and.returnValue('Transit number is required')\r\n\t\t\t\t\t\t.withArgs('bankAccountNumbersDoNotMatch', 'Bank Account Numbers do not match').and.returnValue('Bank Account Numbers do not match')\r\n\t\t\t\t\t\t.withArgs('thisEmailAddressIsNotValid', 'This Email address is not valid.').and.returnValue('This Email address is not valid.')\r\n\t\t\t\t\t\t;\r\n\r\n\t\t\t\t\tcomponent.maxIsBalanceDue = false;\r\n\t\t\t\t\tcomponent.model = cleanModel;\r\n\t\t\t\t\tcomponent.model.amount = 1;\r\n\t\t\t\t\tcomponent.model.accountName = \"test account\";\r\n\t\t\t\t\tcomponent.model.minPayment = 1;\r\n\t\t\t\t\tcomponent.model.maxPayment = 9999;\r\n\t\t\t\t\tcomponent.model.billingPhoneSettings.visible = false;\r\n\t\t\t\t\tcomponent.model.billingEmailSettings.visible = true;\r\n\t\t\t\t\tcomponent.model.billingEmail = \"yzhang123@ gmail.com\";\r\n\t\t\t\t\tcomponent.model.descriptionSettings.visible = false;\r\n\t\t\t\t\tlet checkFormData = new CheckFormData(instance(mockI18N), component.globalState);\r\n\t\t\t\t\tcheckFormData.accountNumber = '12345678';\r\n\t\t\t\t\tcheckFormData.accountNumberVerification = '12345678';\r\n\t\t\t\t\tcheckFormData.customFields = [];\r\n\t\t\t\t\tcomponent.model.paymentMethod = { name: 'eCheck', vmName: './check-form/check-form', vm: checkFormData, isCheck: true };\r\n\t\t\t\t\tcomponent.merchantKey = 1;\r\n\r\n\t\t\t\t\tlet result = await component.getSubmitEventData();\r\n\r\n\t\t\t\t\texpect(result.errors).toBeTruthy();\r\n\t\t\t\t\texpect(result.errors.length).toBeGreaterThan(0);\r\n\t\t\t\t\texpect(result.errors.filter(x => x === 'This Email address is not valid.').length).toBe(1);\r\n\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".add-to-wallet, .add-to-wallet * {\\r\\n cursor: pointer;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { computedFrom, autoinject, observable, bindable } from 'aurelia-framework';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class WalletForm {\r\n\tpaymentFormContext: any;\r\n\tselectedPaymentMethod: any;\r\n\tsavedPaymentMethods: any;\r\n\tcustomFields: any;\r\n\tcardCustomFields: any;\r\n\tcheckCustomFields: any;\r\n\tshowCvv: any;\r\n\tcvvRequired: any;\r\n\t@bindable cvv: any;\r\n\twalletData: WalletForm;\r\n\tportfolioName: any;\r\n\tcheckNumberSettings: any;\r\n\tcheckNumber: any;\r\n\r\n\tconstructor(private globalState: State, private payrazrService: PayrazrService, private i18n: I18N) {\r\n\t\tthis.selectedPaymentMethod = {};\r\n\t\tthis.savedPaymentMethods = [];\r\n\t\tthis.customFields = [];\r\n\t\tthis.cardCustomFields = [];\r\n\t\tthis.checkCustomFields = [];\r\n\t\tthis.showCvv = true;\r\n\t\tthis.cvvRequired = false;\r\n\t\tthis.cvv = '';\r\n\t\tthis.checkNumber = '';\r\n\t}\r\n\r\n\tactivate(walletData: WalletForm) {\r\n\t\tthis.walletData = walletData;\r\n\r\n\t\tthis.checkNumberSettings = this.globalState.business.portalSettings.fields.checkNumber;\r\n\t\tif (!!this.checkNumberSettings && !this.checkNumberSettings.label) {\r\n\t\t\tthis.checkNumberSettings.label = this.i18n.i18next.t('checkNumber', 'Check Number');\r\n\t\t}\r\n\t}\r\n\r\n\tdifferentPaymentMethodSelected() {\r\n\t\tthis.paymentFormContext?.getFeeInformation();\r\n\t}\r\n\r\n\tvalidate(errors) {\r\n\t\tif (!this.getSelectedPaymentMethod.cardInfoKey && !this.getSelectedPaymentMethod.checkInfoKey) {\r\n\t\t\terrors.push(this.i18n.i18next.t('paymentMethodRequired', 'Payment method is required'));\r\n\t\t}\r\n\r\n\t\tif (this.getSelectedPaymentMethod.cardInfoKey) {\r\n\t\t\tif (this.showCvv && this.cvvRequired) {\r\n\t\t\t\tif (this.cvv.length === 0) {\r\n\t\t\t\t\terrors.push(this.i18n.i18next.t('cardSecurityCodeRequired', 'Card security code is required'));\r\n\t\t\t\t} else if (this.cvv.length > 4) {\r\n\t\t\t\t\terrors.push(this.i18n.i18next.t('invalidCardSecurityCode', 'Invalid card security code'));\r\n\t\t\t\t} else if (!ValidationHelpers.isOnlyDigits(this.cvv)) {\r\n\t\t\t\t\terrors.push(this.i18n.i18next.t('invalidCardSecurityCode', 'Invalid card security code'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.isCardPaymentMethodSelected) {\r\n\t\t\tif (this.checkNumber.length === 0 && this.globalState.business.portalSettings.fields.checkNumber.required) {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('checkNumberRequired', 'Check Number is required'));\r\n\t\t\t} else if (!ValidationHelpers.isOnlyDigits(this.checkNumber)) {\r\n\t\t\t\terrors.push(this.i18n.i18next.t('checkNumberCanContainOnlyDigits', 'Check Number can contain only digits'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let ii = 0; ii < this.customFields.length; ++ii) {\r\n\t\t\tlet field = this.customFields[ii];\r\n\t\t\tif (field.visible && field.required && (!field.value || field.value.length === 0)) {\r\n\t\t\t\tlet label = field.label || `Custom Field ${ii + 1}`;\r\n\t\t\t\terrors.push(this.i18n.i18next.t('nameIsRequired', { defaultValue: `${label} is required`, name: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.getSelectedPaymentMethod.cardInfoKey && this.getSelectedPaymentMethod.cardInfoKey > 0) {\r\n\t\t\treturn this.payrazrService.checkCardType(0, this.portfolioName, this.getSelectedPaymentMethod.cardInfoKey)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tif (!response.isValid) {\r\n\t\t\t\t\t\terrors.push(response.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\treturn new Promise((accept: any, reject) => {\r\n\t\t\t\taccept();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tmapAccountTypeToApi() {\r\n\t\tswitch (this.getSelectedPaymentMethod.achAccountType) {\r\n\t\t\tcase 'PersonalChecking': return 1;\r\n\t\t\tcase 'PersonalSavings': return 2;\r\n\t\t\tcase 'BusinessChecking': return 3;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('selectedPaymentMethod')\r\n\tget isCardPaymentMethodSelected() {\r\n\t\tif (this.walletData) {\r\n\t\t\tthis.selectedPaymentMethod = this.walletData.selectedPaymentMethod;\r\n\t\t\tthis.cardCustomFields = this.walletData.cardCustomFields;\r\n\t\t\tthis.checkCustomFields = this.walletData.checkCustomFields;\r\n\t\t}\r\n\r\n\t\tif (this.selectedPaymentMethod && this.selectedPaymentMethod.cardInfoKey) {\r\n\t\t\tthis.customFields = this.cardCustomFields;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse if (this.selectedPaymentMethod) {\r\n\t\t\tthis.customFields = this.checkCustomFields;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.customFields = [];\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('walletData.savedPaymentMethods')\r\n\tget primaryPaymentMethod() {\r\n\t\treturn this.walletData.savedPaymentMethods.find(pm => pm.isPrimaryPaymentMethod);\r\n\t}\r\n\r\n\t@computedFrom('walletData.savedPaymentMethods')\r\n\tget savedPaymentMethodOptions() {\r\n\t\treturn this.walletData.savedPaymentMethods;\r\n\t}\r\n\r\n\t@computedFrom('walletData.savedPaymentMethods')\r\n\tget savedPaymentMethodDescs() {\r\n\t\treturn this.walletData.savedPaymentMethods.map(pm => `${pm.cardType || pm.achAccountType} ending ${pm.last4ofCard || pm.last4ofAccount}`);\r\n\t}\r\n\r\n\t@computedFrom('selectedPaymentMethod')\r\n\tget getSelectedPaymentMethod() {\r\n\t\treturn this.selectedPaymentMethod;\r\n\t}\r\n\r\n\t@computedFrom('getSelectedPaymentMethod')\r\n\tget nameLabel() {\r\n\t\tif (this.getSelectedPaymentMethod && this.getSelectedPaymentMethod.nameLabel) {\r\n\t\t\treturn this.getSelectedPaymentMethod.nameLabel;\r\n\t\t} else {\r\n\t\t\treturn 'Name';\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, autoinject, bindingMode } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport numeral from 'numeral';\r\nimport { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Portfolio } from '../../models/portfolio';\r\n\r\n@autoinject\r\nexport class PlanSummary {\r\n\t@bindable account: Account;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) plan;\r\n\tpaymentDateSettings: any;\r\n\tpaymentMethod: any;\r\n\tplannedPayments: Array;\r\n\tnextPaymentDate: string;\r\n\tplanEndDate: string;\r\n\thasServiceFee = false;\r\n\tisLoading = true;\r\n\tisIndefinite = false;\r\n\tisMapp = false;\r\n\tplanCustomerAccounts: string;\r\n\r\n\t// These may be needed over the account adjusted balances\r\n\trecurringPaymentAmount: number;\r\n\tamountPaidToDate: number;\r\n\trecurringPayment: number;\r\n\r\n\tconstructor(private state: State, private payrazrService: PayrazrService, private router: Router, private i18n: I18N) {\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.paymentDateSettings = this.state.business.portalSettings.fields.paymentDate;\r\n\t\tif (!!this.paymentDateSettings && !this.paymentDateSettings.label) { this.paymentDateSettings.label = this.i18n.i18next.t('paymentDate', 'Payment Date'); }\r\n\r\n\t\tthis.payrazrService.getPaymentPlanByCustomerAccountId(this.account.id)\r\n\t\t\t.then(result => {\r\n\t\t\t\tthis.plan = result;\r\n\t\t\t\tthis.isMapp = this.plan.isCombinedCustomerAccount;\r\n\t\t\t\tthis.planCustomerAccounts = this.plan.customerAccounts;\r\n\t\t\t\tthis.recurringPaymentAmount = result.recurringPaymentAmount;\r\n\t\t\t\tthis.amountPaidToDate = result.amountPaidToDate;\r\n\t\t\t\tif (result.endDate) {\r\n\t\t\t\t\tthis.planEndDate = moment(result.endDate).format('MM/DD/YYYY');\r\n\t\t\t\t\tthis.isIndefinite = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.planEndDate = 'Indefinite';\r\n\t\t\t\t\tthis.isIndefinite = true;\r\n\t\t\t\t}\r\n\t\t\t\tthis.paymentMethod = result.paymentMethod;\r\n\r\n\t\t\t\t// Get list of payments\r\n\t\t\t\tthis.payrazrService.getLatestActivePaymentPlanPlannedPaymentsByCustomerAccountId(this.account.id)\r\n\t\t\t\t\t.then(results => {\r\n\t\t\t\t\t\tthis.plannedPayments = results.plannedPayments;\r\n\t\t\t\t\t\tthis.paymentMethod = results.paymentMethod;\r\n\t\t\t\t\t\tthis.getFeeStatus();\r\n\t\t\t\t\t\tthis.getNextPaymentDate();\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t\tthis.showError('');\r\n\t\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tthis.amountPaidToDate = 0;\r\n\t\t\t\tthis.nextPaymentDate = '';\r\n\t\t\t\tthis.planEndDate = '';\r\n\t\t\t\tthis.paymentMethod = '';\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetNextPaymentDate() {\r\n\t\tif (this.plannedPayments && this.plannedPayments.length) {\r\n\t\t\tlet nextPayment = this.plannedPayments.find(p => p.status === 0 || p.status === 1);\r\n\t\t\tthis.nextPaymentDate = nextPayment ? moment(nextPayment.billDate).format('MM/DD/YYYY') : 'N/A';\r\n\t\t} else {\r\n\t\t\tthis.nextPaymentDate = 'N/A';\r\n\t\t}\r\n\t}\r\n\r\n\tgetFeeStatus() {\r\n\t\tif (this.plannedPayments && this.plannedPayments.length >= 1) {\r\n\t\t\tconst paymentsWithFees = this.plannedPayments.find(payment => payment.planedServiceFee > 0);\r\n\t\t\tthis.hasServiceFee = paymentsWithFees ? true : false;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tparseStatusToText(status) {\r\n\t\tif (status === 0 || status === 1) {\r\n\t\t\treturn this.i18n.i18next.t('scheduled', 'Scheduled');\r\n\t\t}\r\n\t\tif (status === 2 || status === 3 || status === 4) {\r\n\t\t\treturn this.i18n.i18next.t('cancelled', 'Cancelled');\r\n\t\t}\r\n\t\tif (status === 5) {\r\n\t\t\tif (this.paymentMethod.includes('card')) {\r\n\t\t\t\treturn this.i18n.i18next.t('approved', 'Approved');\r\n\t\t\t} else {\r\n\t\t\t\treturn this.i18n.i18next.t('submitted', 'Submitted');\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.i18n.i18next.t('unknown', 'Unknown');\r\n\r\n\t}\r\n\r\n\tactivate(params) {\r\n\t\tthis.account = this.state.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === params.id;\r\n\t\t});\r\n\t\tthis.state.business.applyPortfolioSettingsToPortal(this.account.portfolioName, false);\r\n\t}\r\n\r\n\tshowError(message: string) {\r\n\t\talert(message); // TODO: Use something other than alerts\r\n\t}\r\n\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#planHeader {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n}\\r\\n\\r\\ndiv.col-sm-6, div.col-md-3 {\\r\\n margin: .25em;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class EmailReceiptSender {\r\n\t@bindable isPaymentPlanEmailOption: boolean = false;\r\n\t@bindable customerAccountNumber: any;\r\n\t@bindable bucketKey: number = null;\r\n\t@bindable hasScheduledInReceipt: boolean = false;\r\n\t@bindable applyTemplateRequest: any;\r\n\telement: Element;\r\n\tpayrazr: any;\r\n\tglobalState: any;\r\n\tallowConsumerToUpdateTheEmail: any;\r\n\tallowConsumerToRequestAnEmailReceipt: any;\r\n\temailAddress: any;\r\n\temailMessage: any;\r\n\temailValidation: any;\r\n\trunPlannedPaymentDays: any;\r\n\tsendPlanReceiptToMerchant: any;\r\n\tmerchantConfiguredReceiptEmails: any;\r\n\treceiptSubject: any;\r\n\tisEmailAddress: any;\r\n\temailSent: any;\r\n\tprofileLink: string;\r\n\tpreferencesLink: string;\r\n\tchangeNotificationPreferences: string;\r\n\r\n\tconstructor(element: Element, payrazr: PayrazrService, globalState: State, private i18n: I18N) {\r\n\t\tthis.element = element;\r\n\t\tthis.payrazr = payrazr;\r\n\t\tthis.globalState = globalState;\r\n\t\tthis.allowConsumerToUpdateTheEmail = (this.globalState.customer && this.globalState.customer.notificationSettings) ? this.globalState.customer.notificationSettings.isEmailOptedIn : false;\r\n\t\tthis.allowConsumerToRequestAnEmailReceipt = this.globalState.business.portalSettings.allowConsumerToRequestAnEmailReceipt;\r\n\t\tthis.emailAddress = this.globalState.customer.email;\r\n\r\n\t\tthis.emailMessage = null;\r\n\t\tthis.emailValidation = null;\r\n\t\tthis.runPlannedPaymentDays = this.globalState.business.runPlannedPaymentDays;\r\n\r\n\t\t//todo: this should probably be handled on the API\r\n\t\tthis.sendPlanReceiptToMerchant = this.globalState.business.portalSettings.sendPlanReceiptToMerchant;\r\n\t\tthis.merchantConfiguredReceiptEmails = this.globalState.business.portalSettings.merchantConfiguredReceiptEmails;\r\n\r\n\r\n\t\tconst portalUrl = this.globalState.business.portalSettings.url;\r\n\t\tthis.preferencesLink = `${this.i18n.i18next.t('preferences', 'Preferences')}`;\r\n\t\tthis.profileLink = this.i18n.i18next.t('receiveEmailRemindersForUpcomingScheduleedPaymentsVisitProfilePage', {defaultValue: `If you would like to receive email reminders for upcoming scheduled payments,\r\n\t\t\tplease visit the ${this.preferencesLink} page and change your selection in the \"Notifications Preferences\" Section.`, link: this.preferencesLink});\r\n\r\n\t\tthis.changeNotificationPreferences = this.i18n.i18next.t('portalOptOutEmailNotifications', {\r\n\t\t\tdefaultValue: `If you would like to opt-out of receiving email notifications, please visit the ${this.preferencesLink}\r\n\t\t\t\t\t\t\tpage and change your selection in the \"Notifications Preferences\" Section.`,\r\n\t\t\tlink: this.preferencesLink\r\n\t\t});\r\n\t}\r\n\r\n\tapplyTemplateRequestChanged(newValue: any, oldValue: any) {\r\n\t\tif (newValue && this.applyTemplateRequest && this.hasScheduledInReceipt) {\r\n\t\t\tthis.sendUnderlyingPlanReceiptEmail();\r\n\t\t}\r\n\t}\r\n\r\n\tsendUnderlyingPlanReceiptEmail() {\r\n\t\tif (this.isPaymentPlanEmailOption && this.sendPlanReceiptToMerchant) {\r\n\t\t\tthis.receiptSubject = \"{MerchantName} Confirmation of Payment Plan\";\r\n\t\t\tvar fromAddress = \"\"; //This is overridden by the RestfulAPI service\r\n\t\t\tvar toAddress = this.merchantConfiguredReceiptEmails;\r\n\t\t\tvar subject = this.receiptSubject;\r\n\t\t\tvar customerAccountNumber = this.customerAccountNumber;\r\n\r\n\t\t\tthis.applyTemplateRequest.isForNotification = true;\r\n\t\t\treturn this.payrazr.sendEmailWithApplyTemplateRequest(fromAddress, toAddress, subject, this.applyTemplateRequest, customerAccountNumber, this.bucketKey)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsendEmail() {\r\n\t\tthis.emailMessage = null;\r\n\t\tthis.emailValidation = null;\r\n\t\tthis.receiptSubject = this.isPaymentPlanEmailOption ? \"{MerchantName} Confirmation of Payment Plan\" : \"{MerchantName} Receipt of Payment\";\r\n\t\tvar fromAddress = \"\"; //This is overridden by the RestfulAPI service\r\n\t\tvar toAddress = this.emailAddress;\r\n\t\tvar subject = this.receiptSubject;\r\n\t\t\r\n\t\tvar customerAccountNumber = this.customerAccountNumber;\r\n\r\n\t\tif (!this.validate()) {\r\n\t\t\tthis.emailValidation = this.i18n.i18next.t('thisEmailAddressIsNotValid', 'This Email address is not valid.');\r\n\t\t\tthis.isEmailAddress = false;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\tthis.emailValidation = this.i18n.i18next.t('thisEmailAddressIsValid', 'This Email address is valid.');\r\n\t\t\tthis.isEmailAddress = true;\r\n\t\t}\r\n\r\n\t\tthis.applyTemplateRequest.isForNotification = true;\r\n\t\treturn this.payrazr.sendEmailWithApplyTemplateRequest(fromAddress, toAddress, subject, this.applyTemplateRequest, customerAccountNumber, this.bucketKey)\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.emailSent = true;\r\n\t\t\t\tthis.emailMessage = this.i18n.i18next.t('receiptEmailSuccessful', 'Your receipt has been emailed to the address provided.');\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tthis.emailMessage = this.i18n.i18next.t('receiptEmailFailed', 'We\\'re sorry, there was a problem sending your email receipt. Please contact customer service or you may print the receipt for your records.');\r\n\t\t\t\tthis.emailSent = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tupdateEmail() {\r\n\t\tif (!this.validate()) {\r\n\t\t\tthis.emailValidation = this.i18n.i18next.t('thisEmailAddressIsNotValid', 'This Email address is not valid.');\r\n\t\t\tthis.isEmailAddress = false;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\tthis.emailValidation = this.i18n.i18next.t('thisEmailAddressIsValid', 'This Email address is valid.');\r\n\t\t\tthis.isEmailAddress = true;\r\n\t\t}\r\n\t\tthis.payrazr.updateEmailInfo(this.emailAddress, this.allowConsumerToUpdateTheEmail)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.isEmailAddress = true;\r\n\t\t\t\tthis.emailValidation = 'Update was successful';\r\n\t\t\t})\r\n\t\t\t.catch(response => {\r\n\t\t\t\tresponse\r\n\t\t\t\t\t.json()\r\n\t\t\t\t\t.then(error => {\r\n\t\t\t\t\t\tthis.isEmailAddress = false;\r\n\t\t\t\t\t\tthis.emailMessage = `Update was unsuccessful: ${error}`;\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tvar email = this.emailAddress;\r\n\t\treturn this.payrazr.validateEmail(email);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".receiptEmailContainer {\\r\\n display: flex;\\r\\n}\\r\\n.receiptEmailContainer input{\\r\\n}\\r\\n.receiptEmailContainer button{\\r\\n min-width: 125px;\\r\\n width: 175px;\\r\\n padding: 0;\\r\\n height: 33px;\\r\\n}\\r\\n\\r\\n@media(max-width: 575px){\\r\\n .receiptEmailContainer button {\\r\\n margin-top: 5px;\\r\\n }\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport $ from 'jquery';\r\nimport numeral from 'numeral';\r\nimport * as moment from 'moment';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport {\r\n\tPortalTemplateTypes,\r\n\tPortalTemplateTypesNames,\r\n\tApplyTemplateBaseRequest,\r\n\tApplyCardSinglePaymentTemplateRequest,\r\n\tApplyCheckSinglePaymentTemplateRequest,\r\n\tApplyCardInstallmentPlanReceiptTemplateRequest,\r\n\tApplyCheckInstallmentPlanReceiptTemplateRequest,\r\n\tApplyCardRecurringPlanReceiptTemplateRequest,\r\n\tApplyCheckRecurringPlanReceiptTemplateRequest,\r\n\tApplyAutopayPlanReceiptTemplateRequest,\r\n\tTemplateService,\r\n\tApplyTransactionFailedTemplateRequest\r\n} from '../../services/template-service';\r\nimport { ServiceResponse } from '../../models/service-response';\r\nimport { ICustomerAccountToPay } from '../../services/hpf-transaction-service';\r\n\r\n@autoinject\r\nexport class Receipt {\r\n\t@bindable customMessage: string = '';\r\n\t@bindable customerAccountNumber: string = '';\r\n\t@bindable isPaymentPlanReceipt: boolean = false;\r\n\t@bindable receiptType: PortalTemplateTypes;\r\n\t@bindable planId: string = '';\r\n\t@bindable pnref: number;\r\n\t@bindable merchantKey: number;\r\n\t@bindable savedPaymentMethodToWallet: boolean = null;\r\n\t@bindable resultCode: string = '';\r\n\t@bindable resultMessage: string = '';\r\n\t@bindable autopayKey: number;\r\n\t@bindable bucketKey: number = null;\r\n\t@bindable accountPayments: ICustomerAccountToPay[] = null;\r\n\t@bindable enableEditTransaction: boolean = false;\r\n\t@bindable isEzpay: boolean = false;\r\n\tcontent: any;\r\n\teditTransactionClickCount: number = 0;\r\n\tapplyTemplateRequest: any;\r\n\thasScheduledInReceipt: boolean = false;\r\n\r\n\tconstructor(private element: Element, private payrazrService: PayrazrService, private templateService: TemplateService, private i18n: I18N) {\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.customMessage = '';\r\n\t\tthis.customerAccountNumber = '';\r\n\t\tthis.resultCode = '';\r\n\t\tthis.resultMessage = '';\r\n\t\tthis.accountPayments = null;\r\n\t\tthis.content = '';\r\n\t}\r\n\r\n\tbuildTemplateRequestAndCallApplyTemplate() {\r\n\t\tswitch (this.receiptType) {\r\n\t\t\tcase PortalTemplateTypes.CreditCardSinglePaymentReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyCardSinglePaymentTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.pnref = this.pnref;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.accountPayments = this.accountPayments;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.CheckSinglePaymentReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyCheckSinglePaymentTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.pnref = this.pnref;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.accountPayments = this.accountPayments;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.CreditCardInstallmentPlanReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyCardInstallmentPlanReceiptTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.planId = this.planId;\r\n\t\t\t\tthis.applyTemplateRequest.merchantKey = this.merchantKey;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.accountPayments = this.accountPayments;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.CheckInstallmentPlanReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyCheckInstallmentPlanReceiptTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.planId = this.planId;\r\n\t\t\t\tthis.applyTemplateRequest.merchantKey = this.merchantKey;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.accountPayments = this.accountPayments;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.CreditCardRecurringPaymentPlanReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyCardRecurringPlanReceiptTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.planId = this.planId;\r\n\t\t\t\tthis.applyTemplateRequest.merchantKey = this.merchantKey;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.CheckRecurringPaymentPlanReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyCheckRecurringPlanReceiptTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.planId = this.planId;\r\n\t\t\t\tthis.applyTemplateRequest.merchantKey = this.merchantKey;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.AutopayPlanReceipt:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyAutopayPlanReceiptTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.autopayKey = this.autopayKey;\r\n\t\t\t\tthis.applyTemplateRequest.merchantKey = this.merchantKey;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tcase PortalTemplateTypes.TransactionFailed:\r\n\t\t\t\tthis.applyTemplateRequest = new ApplyTransactionFailedTemplateRequest();\r\n\t\t\t\tthis.applyTemplateRequest.resultCode = this.resultCode;\r\n\t\t\t\tthis.applyTemplateRequest.resultMessage = this.resultMessage;\r\n\t\t\t\tthis.applyTemplateRequest.savedPaymentMethodToWallet = this.savedPaymentMethodToWallet;\r\n\t\t\t\tthis.applyTemplateRequest.isEzpay = this.isEzpay;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.getTemplate(this.applyTemplateRequest);\r\n\t}\r\n\r\n\tgetTemplate(applyTemplateRequest: ApplyTemplateBaseRequest) {\r\n\t\ttry {\r\n\t\t\tthis.templateService.applyTemplate(applyTemplateRequest)\r\n\t\t\t\t.then((response: ServiceResponse) => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tthis.content = this.postReceiptUIControl(response.value);\r\n\t\t\t\t\t\tthis.hasScheduledInReceipt = this.content.includes('Scheduled');\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tconsole.log(response.resultMessage);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\t}\r\n\r\n\tpostReceiptUIControl(htmlsource: string) {\r\n\t\tlet tree = $('
' + htmlsource + '
');\r\n\r\n\t\tif (tree.find('#approveResult').length != 0) {\r\n\t\t\ttree.find('#approveResult').parent().parent().addClass('success');\r\n\t\t}\r\n\t\telse if (tree.find('#declineResult').length != 0) {\r\n\t\t\ttree.find('#declineResult').parent().parent().addClass('danger');\r\n\t\t}\r\n\t\treturn tree.html();\r\n\t}\r\n\r\n\tdoNext() {\r\n\t\tthis.clearQueryStringParams();\r\n\t\tthis.dispatchCustomEvent('receipt-next');\r\n\t}\r\n\r\n\tclearQueryStringParams() {\r\n\t\tthis.payrazrService.queryParameters = {};\r\n\t}\r\n\r\n\teditTransaction() {\r\n\t\tthis.editTransactionClickCount++;\r\n\t\tif (this.editTransactionClickCount > 3) {\r\n\t\t\tthis.enableEditTransaction = false;\r\n\t\t\tthis.customMessage = this.i18n.i18next.t('portalEditTransactionExceedRetries', { defaultValue: 'You have exceeded your retry attempts for this session. Please confirm your payment information and try again later.' });\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.reset();\r\n\t\tthis.dispatchCustomEvent('edit-transaction-call-back');\r\n\t}\r\n\r\n\tprint() {\r\n\t\twindow.print();\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.buildTemplateRequestAndCallApplyTemplate();\r\n\t}\r\n\r\n\tdispatchCustomEvent(eventName) {\r\n\t\tlet evt = DOM.createCustomEvent(eventName, { bubbles: true, cancelable: true });\r\n\r\n\t\tthis.element.dispatchEvent(evt);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"@media print {\\r\\n .receiptTemplate {\\r\\n background-color: white;\\r\\n height: 100%;\\r\\n width: 100%;\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n margin: 0;\\r\\n padding: 15px;\\r\\n font-size: 14px;\\r\\n line-height: 18px;\\r\\n z-index: 1000;\\r\\n }\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, when, anything, verify } from 'ts-mockito';\r\nimport { Receipt } from './receipt';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport {\r\n\tPortalTemplateTypes,\r\n\tApplyCardSinglePaymentTemplateRequest,\r\n\tApplyCheckSinglePaymentTemplateRequest,\r\n\tApplyCardInstallmentPlanReceiptTemplateRequest,\r\n\tApplyCheckInstallmentPlanReceiptTemplateRequest,\r\n\tApplyCardRecurringPlanReceiptTemplateRequest,\r\n\tApplyCheckRecurringPlanReceiptTemplateRequest,\r\n\tApplyAutopayPlanReceiptTemplateRequest,\r\n\tTemplateService,\r\n\tApplyTransactionFailedTemplateRequest\r\n} from '../../services/template-service';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('components', () => {\r\n\t\tdescribe('receipt', () => {\r\n\t\t\tlet component: Receipt;\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockTemplateService: TemplateService = mock(TemplateService);\r\n\t\t\tconst mockElement: Element = mock(Element);\r\n\r\n\t\t\tconst i18next = {\r\n\t\t\t\tt: (a, b) => a\r\n\t\t\t};\r\n\r\n\t\t\tbeforeEach(() => {\r\n\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\r\n\t\t\t\tcomponent = new Receipt(\r\n\t\t\t\t\tinstance(mockElement),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockTemplateService),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize Confirmation component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('attached()', () => {\r\n\t\t\t\tit('should call buildTemplateRequestAndCallApplyTemplate()', () => {\r\n\t\t\t\t\tspyOn(component, 'buildTemplateRequestAndCallApplyTemplate').and.stub();\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\texpect(component.buildTemplateRequestAndCallApplyTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('buildTemplateRequestAndCallApplyTemplate()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.pnref = 111;\r\n\t\t\t\t\tcomponent.savedPaymentMethodToWallet = true;\r\n\t\t\t\t\tcomponent.planId = 'P1234';\r\n\t\t\t\t\tcomponent.merchantKey = 123;\r\n\t\t\t\t\tcomponent.resultCode = 'Success';\r\n\t\t\t\t\tcomponent.resultMessage = 'Successful';\r\n\t\t\t\t\tcomponent.autopayKey = 321;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyCardSinglePaymentTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.CreditCardSinglePaymentReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyCardSinglePaymentTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.pnref).toBe(111);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyCheckSinglePaymentTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.CheckSinglePaymentReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyCheckSinglePaymentTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.pnref).toBe(111);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyCardInstallmentPlanReceiptTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.CreditCardInstallmentPlanReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyCardInstallmentPlanReceiptTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.planId).toBe('P1234');\r\n\t\t\t\t\texpect(component.applyTemplateRequest.merchantKey).toBe(123);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyCheckInstallmentPlanReceiptTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.CheckInstallmentPlanReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyCheckInstallmentPlanReceiptTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.planId).toBe('P1234');\r\n\t\t\t\t\texpect(component.applyTemplateRequest.merchantKey).toBe(123);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyCardRecurringPlanReceiptTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.CreditCardRecurringPaymentPlanReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyCardRecurringPlanReceiptTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.planId).toBe('P1234');\r\n\t\t\t\t\texpect(component.applyTemplateRequest.merchantKey).toBe(123);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyCheckRecurringPlanReceiptTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.CheckRecurringPaymentPlanReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyCheckRecurringPlanReceiptTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.planId).toBe('P1234');\r\n\t\t\t\t\texpect(component.applyTemplateRequest.merchantKey).toBe(123);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyAutopayPlanReceiptTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.AutopayPlanReceipt;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyAutopayPlanReceiptTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.autopayKey).toBe(321);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.merchantKey).toBe(123);\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set applyTemplateRequest as ApplyTransactionFailedTemplateRequest', () => {\r\n\t\t\t\t\tcomponent.receiptType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\tspyOn(component, 'getTemplate').and.stub();\r\n\r\n\t\t\t\t\tcomponent.buildTemplateRequestAndCallApplyTemplate();\r\n\t\t\t\t\texpect(component.applyTemplateRequest instanceof ApplyTransactionFailedTemplateRequest).toBeTruthy();\r\n\t\t\t\t\texpect(component.applyTemplateRequest.resultCode).toBe('Success');\r\n\t\t\t\t\texpect(component.applyTemplateRequest.resultMessage).toBe('Successful');\r\n\t\t\t\t\texpect(component.applyTemplateRequest.savedPaymentMethodToWallet).toBe(true);\r\n\t\t\t\t\texpect(component.getTemplate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getTemplate()', () => {\r\n\t\t\t\tit('should call templateService.applyTemplate()', () => {\r\n\t\t\t\t\twhen(mockTemplateService.applyTemplate(anything())).thenResolve({\r\n\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\tresultMessage: '',\r\n\t\t\t\t\t\tvalue: undefined\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tcomponent.getTemplate(anything());\r\n\t\t\t\t\tverify(mockTemplateService.applyTemplate(anything())).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('doNext()', () => {\r\n\t\t\t\tit('should call clearQueryStringParams() and dispatchCustomEvent()', () => {\r\n\t\t\t\t\tspyOn(component, 'clearQueryStringParams').and.stub();\r\n\t\t\t\t\tspyOn(component, 'dispatchCustomEvent').and.stub();\r\n\r\n\t\t\t\t\tcomponent.doNext();\r\n\t\t\t\t\texpect(component.clearQueryStringParams).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.dispatchCustomEvent).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('editTransaction()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.editTransactionClickCount = 3;\r\n\t\t\t\t\tcomponent.enableEditTransaction = true;\r\n\t\t\t\t});\r\n\t\t\t\tit('enableEditTransaction should be false after 3 retries', () => {\r\n\t\t\t\t\tspyOn(i18next, 't').and.returnValue('You have exceeded your retry attempts for this session. Please confirm your payment information and try again later.');\r\n\r\n\t\t\t\t\tcomponent.editTransaction();\r\n\t\t\t\t\texpect(component.enableEditTransaction).toBe(false);\r\n\t\t\t\t\texpect(component.customMessage).toBe('You have exceeded your retry attempts for this session. Please confirm your payment information and try again later.');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('editTransaction()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.editTransactionClickCount = 0;\r\n\t\t\t\t\tcomponent.enableEditTransaction = true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('enableEditTransaction should be true before 3 retries', () => {\r\n\t\t\t\t\tspyOn(component, 'dispatchCustomEvent').and.stub();\r\n\t\t\t\t\tspyOn(component, 'reset').and.stub();\r\n\r\n\t\t\t\t\tcomponent.editTransaction();\r\n\t\t\t\t\texpect(component.enableEditTransaction).toBe(true);\r\n\t\t\t\t\texpect(component.dispatchCustomEvent).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.reset).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('editTransaction() reset() called', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.editTransactionClickCount = 0;\r\n\t\t\t\t\tcomponent.enableEditTransaction = true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('reset function should be called', () => {\r\n\t\t\t\t\tspyOn(component, 'dispatchCustomEvent').and.stub();\r\n\t\t\t\t\tspyOn(component, 'reset').and.stub();\r\n\r\n\t\t\t\t\tcomponent.editTransaction();\r\n\t\t\t\t\texpect(component.reset).toHaveBeenCalled();\r\n\r\n\t\t\t\t\texpect(component.customMessage).toBe('');\r\n\t\t\t\t\texpect(component.customerAccountNumber).toBe('');\r\n\t\t\t\t\texpect(component.resultCode).toBe('');\r\n\t\t\t\t\texpect(component.resultMessage).toBe('');\r\n\t\t\t\t\texpect(component.accountPayments).toBeNull();\r\n\t\t\t\t\texpect(component.content).toBeUndefined();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject, bindable, computedFrom } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { State } from '../../services/global-state';\r\nimport { HPFServiceClient } from '../../services/hpfApi';\r\nimport { Bucket } from '../../models/bucket';\r\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\r\nimport { Uuid } from '../../helpers/uuid';\r\n\r\n@autoinject\r\nexport class SelectBucket {\r\n\tglobalState: State;\r\n\thpfServiceClient: HPFServiceClient;\r\n\tisBucketEnabled: boolean;\r\n\tbuckets: Array;\r\n\t@bindable selectedBucket: Bucket;\r\n\tisBucketRequired: boolean;\r\n\tlabel: string;\r\n\tselect: string;\r\n\terrorMessage: string;\r\n\t@bindable isRenderable: boolean;\r\n\t@bindable validationController: ValidationController;\r\n\t@bindable model: any;\r\n\tuuid: string;\r\n\t@bindable showConsumerLocationDisplayName: boolean = false;\r\n\r\n\tdefaultOptionItem: Bucket = {\r\n\t\tbucketKey: -999,\r\n\t\tbusinessKey: -1,\r\n\t\tconsumerDisplayName: '--- PLEASE SELECT ---',\r\n\t\tdisplayName: '--- PLEASE SELECT ---',\r\n\t\tisActive: false,\r\n\t\treferenceId: ''\r\n\t};\r\n\r\n\tconstructor(state: State, hpfServiceClient: HPFServiceClient, private i18n: I18N) {\r\n\t\tthis.globalState = state;\r\n\t\tthis.hpfServiceClient = hpfServiceClient;\r\n\t\tthis.uuid = Uuid.next();\r\n\t\tthis.label = this.i18n.i18next.t('location', { defaultValue: 'Location' });\r\n\t\tthis.select = this.i18n.i18next.t('select', { defaultValue: '--Select--' });\r\n\r\n\t\tthis.buckets = new Array();\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.isBucketEnabled = this.globalState.business.portalSettings.businessSettings.isBucketEnabled;\r\n\r\n\t\tthis.isBucketRequired = this.isBucketEnabled;\r\n\r\n\t\tthis.getBuckets();\r\n\r\n\t\tthis.configureValidationRules();\r\n\t}\r\n\r\n\t@computedFrom('buckets', 'getBuckets()')\r\n\tget bucketList() : Array {\r\n\t\treturn this.buckets;\r\n\t}\r\n\t@computedFrom('bucketList')\r\n\tget bucketDescriptions(): string[] {\r\n\t\treturn this.bucketList.map(b => this.showConsumerLocationDisplayName ? b.consumerDisplayName : b.displayName).sort();\r\n\t}\r\n\r\n\tgetBuckets() {\r\n\t\tthis.hpfServiceClient.getBuckets()\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.buckets = response.value;\r\n\r\n\t\t\t\t// When there is only one bucket, select it and hide the component.\r\n\t\t\t\tif (this.buckets.length === 1) {\r\n\t\t\t\t\tthis.selectedBucket = this.buckets[0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.isRenderable = this.isBucketEnabled && this.buckets.length > 1;\r\n\r\n\t\t\t\tif (this.isRenderable) {\r\n\t\t\t\t\tthis.buckets = this.buckets.sort((a, b) => this.sortItems(a, b, this.showConsumerLocationDisplayName));\r\n\t\t\t\t\tthis.buckets.unshift(this.defaultOptionItem);\r\n\t\t\t\t\tthis.selectedBucket = this.buckets[0];\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(response => {\r\n\t\t\t\t// TODO:\r\n\t\t\t\t// Is there an area to display errors?\r\n\t\t\t\t// Do we want to display an error when buckets cannot be fetched?\r\n\t\t\t\t// couldNotRetrieveLocations,Could not retrieve locations.\r\n\t\t\t\tthis.errorMessage = this.i18n.i18next.t('couldNotRetrieveLocations', {\r\n\t\t\t\t\tdefaultValue: 'Could not retrieve locations.'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\tvalidate(errors) {\r\n\t\tif (this.isBucketRequired && (!this.selectedBucket || this.selectedBucket.bucketKey === this.defaultOptionItem.bucketKey)) {\r\n\t\t\terrors.push(\r\n\t\t\t\tthis.i18n.i18next.t('pleaseSelectASomething', {\r\n\t\t\t\t\tdefaultValue: `Please select a ${this.label}.`,\r\n\t\t\t\t\tx: this.label\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureValidationRules() {\r\n\t\tif (this.isBucketRequired) {\r\n\t\t\tValidationRules\r\n\t\t\t\t.ensure('selectedBucket').displayName(this.label)\r\n\t\t\t\t.required()\r\n\t\t\t\t.on(this);\r\n\t\t}\r\n\t}\r\n\r\n\tsortItems(a, b, showDisplayName) {\r\n\t\tconst optionADisplayName = showDisplayName ? (a.consumerDisplayName ?? a.displayName) : a.displayName;\r\n\t\tconst optionBDisplayName = showDisplayName ? (b.consumerDisplayName ?? b.displayName) : b.displayName;\r\n\t\tif (optionADisplayName < optionBDisplayName) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\tif (optionADisplayName > optionBDisplayName) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n}","module.exports = \"\";","import { autoinject, bindable, computedFrom } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { State } from '../../services/global-state';\r\nimport { ValidationController } from 'aurelia-validation';\r\nimport { Uuid } from '../../helpers/uuid';\r\nimport { Merchant } from '../../models/merchant';\r\n\r\n@autoinject\r\nexport class SelectMerchant {\r\n\tglobalState: State;\r\n\t@bindable merchants: Array;\r\n\t@bindable selectedMerchant: Merchant;\r\n\t@bindable isMerchantRequired: boolean;\r\n\t@bindable addDefaultOption: boolean = true;\r\n\tlabel: string;\r\n\tselect: string;\r\n\terrorMessage: string;\r\n\t@bindable validationController: ValidationController;\r\n\tuuid: string;\r\n\t@bindable showMerchantDisplayName: boolean = false;\r\n\r\n\tdefaultOptionItem: Merchant = {\r\n\t\tmerchantKey: -999,\r\n\t\tmerchantName: '--- PLEASE SELECT ---',\r\n\t\tzid: '',\r\n\t\tcreateDate: new Date(),\r\n\t\tstatus: '',\r\n\t\tmerchantDisplayName: '--- PLEASE SELECT ---',\r\n\t\tmerchantSettings: {}\r\n\t};\r\n\r\n\tconstructor(state: State, private i18n: I18N) {\r\n\t\tthis.globalState = state;\r\n\t\tthis.uuid = Uuid.next();\r\n\t\tthis.label = this.i18n.i18next.t('consumerPortalEzPayMerchantSelect', { defaultValue: 'Select Merchant' });\r\n\t\tthis.select = this.i18n.i18next.t('select', { defaultValue: '--Select--' });\r\n\t\tthis.merchants = new Array();\r\n\t}\r\n\r\n\tsortItems(a, b, showDisplayName) {\r\n\t\tconst optionADisplayName = showDisplayName ? (a.merchantDisplayName ?? a.merchantName) : a.merchantName;\r\n\t\tconst optionBDisplayName = showDisplayName ? (b.merchantDisplayName ?? b.merchantName) : b.merchantName;\r\n\t\tif (optionADisplayName < optionBDisplayName) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\tif (optionADisplayName > optionBDisplayName) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t@computedFrom('merchants', 'getmerchants()')\r\n\tget merchantList(): Array {\r\n\t\tif (this.addDefaultOption && !this.merchants.find(x => x.merchantKey == this.defaultOptionItem.merchantKey)) {\r\n\t\t\tthis.merchants = this.merchants.sort((a, b) => this.sortItems(a, b, this.showMerchantDisplayName));\r\n\t\t\tthis.merchants.unshift(this.defaultOptionItem);\r\n\t\t}\r\n\t\treturn this.merchants;\r\n\t}\r\n\r\n\t@computedFrom('merchantList')\r\n\tget merchantDescriptions(): string[] {\r\n\t\treturn this.merchantList.map(b => this.showMerchantDisplayName ? (b.merchantDisplayName ?? b.merchantName) : b.merchantName).sort();\r\n\t}\r\n}","module.exports = \"\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport { Uuid } from '../../helpers/uuid';\r\n\r\n@autoinject\r\nexport class Spinner {\r\n\t@bindable id;\r\n\r\n\tattached() {\r\n\t\tif (!this.id) {\r\n\t\t\tthis.id = 'loading-spinner-' + Uuid.next();\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","import { bindable, inject } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\nimport { State } from '../../services/global-state';\r\n\r\n@inject(Element, State)\r\nexport class TermsConditionsCustomElement {\r\n\t@bindable hideAgreed: any;\r\n\telement: Element;\r\n\tstate: State;\r\n\tsmsEnabled: boolean;\r\n\r\n\tconstructor(element: Element, state: State) {\r\n\t\tthis.element = element;\r\n\t\tthis.state = state;\r\n\t\tthis.smsEnabled = false;\r\n\r\n\t\ttry {\r\n\t\t\tthis.smsEnabled = this.state.business.portalSettings.businessSettings.enableSMS;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tthis.smsEnabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\ttheyAgreed() {\r\n\t\tlet eventData = { value: true };\r\n\t\tlet evt = DOM.createCustomEvent('agreed', { bubbles: true, cancelable: true, detail: eventData });\r\n\t\tthis.element.dispatchEvent(evt);\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable} from 'aurelia-framework';\r\nimport { FeeCalculationValue } from '../../models/feeCalculationValue';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport numeral from 'numeral';\r\n\r\nexport class TieredFeesDisplay\r\n{\r\n\t@bindable allowFeesOnAutopays: boolean;\r\n\t@bindable feeValues: FeeCalculationValue[];\r\n\t@bindable isTieredFees: FeeCalculationValue[];\r\n\t@bindable formattedConvenienceFee: string;\r\n\r\n\tgetFormattedConvenienceFee(feeCalculationValue: FeeCalculationValue) {\r\n\t\treturn feeCalculationValue.feeCalculationType === FeeCalculationType.Percentage\r\n\t\t\t? `${ numeral(feeCalculationValue.feeValue).format('0.00')}%`\r\n\t\t\t: numeral(feeCalculationValue.feeValue).format('($0,0.00)');\r\n\t};\r\n}\r\n","module.exports = \"\\r\\n\";","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".timeoutModal {\\r\\n}\\r\\n\\r\\n/* The Modal (background) */\\r\\ntimeout-modal {\\r\\n display: none; /* Hidden by default */\\r\\n position: fixed; /* Stay in place */\\r\\n z-index: 1; /* Sit on top */\\r\\n padding-top: 100px; /* Location of the box */\\r\\n left: 0;\\r\\n top: 0;\\r\\n width: 100%; /* Full width */\\r\\n height: 100%; /* Full height */\\r\\n overflow: auto; /* Enable scroll if needed */\\r\\n background-color: rgb(0,0,0); /* Fallback color */\\r\\n background-color: rgba(0,0,0,0.4); /* Black w/ opacity */\\r\\n}\\r\\n\\r\\n/* Modal Content */\\r\\n.modal-content {\\r\\n background-color: #ffffff;\\r\\n margin: auto;\\r\\n padding: 30px;\\r\\n border: 1px solid #888;\\r\\n width: 25%;\\r\\n}\\r\\n\\r\\n/* The Close Button */\\r\\n/*.close {\\r\\n color: #aaaaaa;\\r\\n float: right;\\r\\n font-size: 28px;\\r\\n font-weight: bold;\\r\\n}\\r\\n\\r\\n .close:hover,\\r\\n .close:focus {\\r\\n color: #000;\\r\\n text-decoration: none;\\r\\n cursor: pointer;\\r\\n }*/\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport { Uuid } from '../../helpers/uuid';\r\n\r\n@autoinject\r\nexport class ValidationSummary {\r\n\treadonly uuid: string;\r\n\t@bindable errors: any;\r\n\r\n\tconstructor() {\r\n\t\tif (!this.uuid) {\r\n\t\t\tthis.uuid = Uuid.next();\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode, TaskQueue } from 'aurelia-framework';\r\nimport { Uuid } from '../../../helpers/uuid';\r\n\r\n/**\r\n * This is a WCAG AA-compliant replacement for select/option drop-downs.\r\n */\r\n@autoinject\r\nexport class ListBox {\r\n\t/**\r\n\t * Save a list of named combobox actions, for future readability.\r\n\t */\r\n\tprivate readonly SelectActions = {\r\n\t\tClose: 0,\r\n\t\tCloseSelect: 1,\r\n\t\tFirst: 2,\r\n\t\tLast: 3,\r\n\t\tNext: 4,\r\n\t\tOpen: 5,\r\n\t\tPageDown: 6,\r\n\t\tPageUp: 7,\r\n\t\tPrevious: 8,\r\n\t\tSelect: 9,\r\n\t\tType: 10\r\n\t};\r\n\r\n\tid: string;\r\n\treadonly selectedOptionBoxId: string;\r\n\treadonly listMenuId: string;\r\n\treadonly optionIdBase: string;\r\n\treadonly uuid: string;\r\n\r\n\tprivate isInitizialized: boolean = false;\r\n\r\n\t/**\r\n\t * The actual values which will be tied to the individual options.\r\n\t */\r\n\t@bindable options: any[] = [];\r\n\r\n\t/**\r\n\t * If needed, this is the name of the property on the option which will be used as the display string\r\n\t * (e.g. given \"name,\" the property \"name\" on the \"person\" option in will be displayed as the text for\r\n\t * the option - i.e., \"person.name\" will be used).\r\n\t */\r\n\t@bindable optionPropertyDisplayName: string;\r\n\r\n\t/**\r\n\t * In lieu of giving the display property name, an array of separate strings can be displayed\r\n\t * inside the list box indexed to its related-indexed option.\r\n\t */\r\n\t@bindable descriptions: any[] = [];\r\n\t/**\r\n\t * The default selected option (if given, otherwise ignored)\r\n\t */\r\n\t@bindable defaultOption: any;\r\n\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedOption: any;\r\n\r\n\t@bindable labelId: string;\r\n\r\n\t/**\r\n\t * Allows for some delegate to be executed when the selected option is changed.\r\n\t */\r\n\t@bindable selectedOptionChangedCallback = () => { };\r\n\r\n\tactiveIndex: number = 0;\r\n\tdefaultIndex: number = 0;\r\n\tisOpen: boolean = false;\r\n\tsearchString: string = '';\r\n\tsearchTimeout: any = null;\r\n\tignoreBlur: boolean;\r\n\r\n\tconstructor(\r\n\t\treadonly element: Element,\r\n\t\tprivate readonly taskQueue: TaskQueue) {\r\n\t\tthis.id = this.element.id;\r\n\t\tif (!this.id) {\r\n\t\t\tthis.id = 'u' + Uuid.next(); // in the case of a failure to pick up an id, we generate a uniqe id (which must start with a letter)\r\n\t\t}\r\n\t\tthis.selectedOptionBoxId = this.id + '-selected-option-box';\r\n\t\tthis.listMenuId = this.id + '-list-menu';\r\n\t\tthis.optionIdBase = this.id + '-option-';\r\n\t}\r\n\r\n\tattached(): void {\r\n\t\tif (this.listMenuDiv && this.selectedOptionDiv && this.options?.length > 0) {\r\n\t\t\tthis.init();\r\n\t\t}\r\n\t}\r\n\r\n\tinit(): void {\r\n\t\tif (!this.isInitizialized && this.listMenuDiv && this.selectedOptionDiv) {\r\n\t\t\t// add event listeners\r\n\t\t\tthis.listMenuDiv.addEventListener('blur', this.onListMenuBlur.bind(this));\r\n\t\t\tthis.selectedOptionDiv.addEventListener('blur', this.onSelectedOptionBlur.bind(this));\r\n\t\t\tthis.selectedOptionDiv.addEventListener('click', this.onComboClick.bind(this));\r\n\t\t\tthis.selectedOptionDiv.addEventListener('keydown', this.onComboKeyDown.bind(this));\r\n\r\n\t\t\tthis.refreshOptionDivs();\r\n\t\t\tthis.setDefaultOption();\r\n\r\n\t\t\tthis.isInitizialized = true;\r\n\t\t}\r\n\t}\r\n\r\n\t// #region Events\r\n\r\n\tonSelectedOptionBlur(event: any): void {\r\n\t\t// Prevent menu from closing when clicking on scrollbar\r\n\t\tif ((event?.relatedTarget?.id ?? '') === this.listMenuDiv.id) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// do not do blur action if ignoreBlur flag has been set\r\n\t\tif (this.ignoreBlur) {\r\n\t\t\tthis.ignoreBlur = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// select current option and close\r\n\t\tif (this.isOpen) {\r\n\t\t\tthis.selectOption(this.activeIndex);\r\n\t\t\tthis.updateMenuState(false, false);\r\n\t\t}\r\n\t}\r\n\r\n\tonListMenuBlur(): void {\r\n\t\tif (document.activeElement === (this.listMenuDiv as Element)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// do not do blur action if ignoreBlur flag has been set\r\n\t\tif (this.ignoreBlur) {\r\n\t\t\tthis.ignoreBlur = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// select current option and close\r\n\t\tif (this.isOpen) {\r\n\t\t\tthis.selectOption(this.activeIndex);\r\n\t\t\tthis.updateMenuState(false, false);\r\n\t\t}\r\n\t}\r\n\r\n\tonComboClick(): void {\r\n\t\tthis.updateMenuState(!this.isOpen, false);\r\n\t}\r\n\r\n\tonComboKeyDown(event: any): void {\r\n\t\tconst { key } = event;\r\n\t\tconst max = this.options.length - 1;\r\n\r\n\t\tconst action = this.getActionFromKey(event, this.isOpen);\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase this.SelectActions.Last:\r\n\t\t\tcase this.SelectActions.First:\r\n\t\t\t\tthis.updateMenuState(true);\r\n\t\t\t// intentional fallthrough\r\n\t\t\tcase this.SelectActions.Next:\r\n\t\t\tcase this.SelectActions.Previous:\r\n\t\t\tcase this.SelectActions.PageUp:\r\n\t\t\tcase this.SelectActions.PageDown:\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treturn this.changeOption(\r\n\t\t\t\t\tthis.getUpdatedIndex(this.activeIndex, max, action)\r\n\t\t\t\t);\r\n\t\t\tcase this.SelectActions.CloseSelect:\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tthis.selectOption(this.activeIndex);\r\n\t\t\t// intentional fallthrough\r\n\t\t\tcase this.SelectActions.Close:\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treturn this.updateMenuState(false);\r\n\t\t\tcase this.SelectActions.Type:\r\n\t\t\t\treturn this.onComboType(key);\r\n\t\t\tcase this.SelectActions.Open:\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treturn this.updateMenuState(true);\r\n\t\t}\r\n\t}\r\n\r\n\tonComboType(letter: any): void {\r\n\t\t// open the listbox if it is closed\r\n\t\tthis.updateMenuState(true);\r\n\r\n\t\t// find the index of the first matching option\r\n\t\tconst searchString = this.getSearchString(letter);\r\n\t\tconst searchIndex = this.getIndexByLetter(\r\n\t\t\tthis.descriptions,\r\n\t\t\tsearchString,\r\n\t\t\tthis.activeIndex + 1\r\n\t\t);\r\n\r\n\t\t// if a match was found, go to it\r\n\t\tif (searchIndex >= 0) {\r\n\t\t\tthis.changeOption(searchIndex);\r\n\t\t}\r\n\t\t// if no matches, clear the timeout and search string\r\n\t\telse {\r\n\t\t\twindow.clearTimeout(this.searchTimeout);\r\n\t\t\tthis.searchString = '';\r\n\t\t}\r\n\t}\r\n\r\n\tonOptionClick(index: number): void {\r\n\t\tthis.changeOption(index);\r\n\t\tthis.selectOption(index);\r\n\t\tthis.updateMenuState(false);\r\n\t}\r\n\r\n\tonOptionMouseDown(): void {\r\n\t\t// Clicking an option will cause a blur event,\r\n\t\t// but we don't want to perform the default keyboard blur action\r\n\t\tthis.ignoreBlur = true;\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region Option/Menu state\r\n\r\n\tchangeOption(index: number): void {\r\n\t\t// update state\r\n\t\tthis.activeIndex = index;\r\n\t\tconst activeDiv = this.optionDivs[this.activeIndex];\r\n\r\n\t\t// update aria-activedescendant\r\n\t\tthis.selectedOptionDiv.setAttribute('aria-activedescendant', activeDiv.id);\r\n\r\n\t\t[...this.optionDivs].forEach((optionDiv) => {\r\n\t\t\toptionDiv.classList.remove('combo-option-current');\r\n\t\t});\r\n\t\tactiveDiv.classList.add('combo-option-current');\r\n\r\n\t\t// ensure the new option is in view\r\n\t\tif (this.isScrollable(this.listMenuDiv)) {\r\n\t\t\tthis.maintainScrollVisibility(activeDiv, this.listMenuDiv);\r\n\t\t}\r\n\t}\r\n\r\n\tselectOption(index: number): void {\r\n\t\t// update state\r\n\t\tthis.activeIndex = index;\r\n\r\n\t\t// update displayed value\r\n\t\tthis.selectedOptionDiv.innerText = this.getOptionDescription(this.options[index], index);\r\n\t\tthis.selectedOptionDiv.setAttribute('value', this.options[index]);\r\n\t\tthis.selectedOption = this.options[index];\r\n\r\n\t\t[...this.optionDivs].forEach((optionDiv) => {\r\n\t\t\toptionDiv.setAttribute('aria-selected', 'false');\r\n\t\t});\r\n\t\tthis.optionDivs[index].setAttribute('aria-selected', 'true');\r\n\t}\r\n\r\n\tupdateMenuState(open: boolean, callFocus = true): void {\r\n\t\tif (this.isOpen === open) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// update state\r\n\t\tthis.isOpen = open;\r\n\r\n\t\t// update aria-expanded and styles\r\n\t\tthis.selectedOptionDiv.setAttribute('aria-expanded', `${open}`);\r\n\t\topen ? this.listMenuDiv.classList.add('combo-open') : this.listMenuDiv.classList.remove('combo-open');\r\n\r\n\t\t// update activedescendant\r\n\t\tconst activeID = open ? this.optionDivs[this.activeIndex].id : '';\r\n\t\tthis.selectedOptionDiv.setAttribute('aria-activedescendant', activeID);\r\n\r\n\t\t// move focus back to the combobox, if needed\r\n\t\tif (callFocus) {\r\n\t\t\tthis.selectedOptionDiv.focus();\r\n\t\t}\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region Helper functions\r\n\r\n\tgetSearchString(char: any): string {\r\n\t\t// reset typing timeout and start new timeout\r\n\t\t// this allows us to make multiple-letter matches, like a native select\r\n\t\tif (typeof this.searchTimeout === 'number') {\r\n\t\t\twindow.clearTimeout(this.searchTimeout);\r\n\t\t}\r\n\r\n\t\tthis.searchTimeout = window.setTimeout(() => {\r\n\t\t\tthis.searchString = '';\r\n\t\t}, 500);\r\n\r\n\t\t// add most recent letter to saved search string\r\n\t\tthis.searchString += char;\r\n\t\treturn this.searchString;\r\n\t}\r\n\r\n\t// filter an array of options against an input string\r\n\t// returns an array of options that begin with the filter string, case-independent\r\n\tfilterOptions(options = [], filter: string, exclude = []): any[] {\r\n\t\treturn options.filter((option) => {\r\n\t\t\tconst matches = option.toString().toLowerCase().indexOf(filter.toLowerCase()) === 0;\r\n\t\t\treturn matches && exclude.indexOf(option) < 0;\r\n\t\t});\r\n\t}\r\n\r\n\t// map a key press to an action\r\n\tgetActionFromKey(event: any, menuOpen: boolean): number {\r\n\t\tconst { key, altKey, ctrlKey, metaKey } = event;\r\n\t\tconst openKeys = ['ArrowDown', 'ArrowUp', 'Enter', ' ']; // all keys that will do the default open action\r\n\t\t// handle opening when closed\r\n\t\tif (!menuOpen && (openKeys.indexOf(key) > -1)) {\r\n\t\t\treturn this.SelectActions.Open;\r\n\t\t}\r\n\r\n\t\t// home and end move the selected option when open or closed\r\n\t\tif (key === 'Home') {\r\n\t\t\treturn this.SelectActions.First;\r\n\t\t}\r\n\t\tif (key === 'End') {\r\n\t\t\treturn this.SelectActions.Last;\r\n\t\t}\r\n\r\n\t\t// handle typing characters when open or closed\r\n\t\tif (\r\n\t\t\tkey === 'Backspace' ||\r\n\t\t\tkey === 'Clear' ||\r\n\t\t\t(key.length === 1 && key !== ' ' && !altKey && !ctrlKey && !metaKey)\r\n\t\t) {\r\n\t\t\treturn this.SelectActions.Type;\r\n\t\t}\r\n\r\n\t\t// handle keys when open\r\n\t\tif (menuOpen) {\r\n\t\t\tif (key === 'ArrowUp' && altKey) {\r\n\t\t\t\treturn this.SelectActions.CloseSelect;\r\n\t\t\t} else if (key === 'ArrowDown' && !altKey) {\r\n\t\t\t\treturn this.SelectActions.Next;\r\n\t\t\t} else if (key === 'ArrowUp') {\r\n\t\t\t\treturn this.SelectActions.Previous;\r\n\t\t\t} else if (key === 'PageUp') {\r\n\t\t\t\treturn this.SelectActions.PageUp;\r\n\t\t\t} else if (key === 'PageDown') {\r\n\t\t\t\treturn this.SelectActions.PageDown;\r\n\t\t\t} else if (key === 'Escape') {\r\n\t\t\t\treturn this.SelectActions.Close;\r\n\t\t\t} else if (key === 'Enter' || key === ' ') {\r\n\t\t\t\treturn this.SelectActions.CloseSelect;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// return the index of an option from an array of options, based on a search string\r\n\t// if the filter is multiple iterations of the same letter (e.g \"aaa\"), then cycle through first-letter matches\r\n\tgetIndexByLetter(options: any[], filter: string, startIndex = 0): number {\r\n\t\tconst orderedOptions = [\r\n\t\t\t...options.slice(startIndex),\r\n\t\t\t...options.slice(0, startIndex),\r\n\t\t];\r\n\t\tconst firstMatch = this.filterOptions(orderedOptions, filter)[0];\r\n\t\tconst allSameLetter = (array) => array.every((letter) => letter === array[0]);\r\n\r\n\t\t// first check if there is an exact match for the typed string\r\n\t\tif (firstMatch) {\r\n\t\t\treturn options.indexOf(firstMatch);\r\n\t\t}\r\n\t\t// if the same letter is being repeated, cycle through first-letter matches\r\n\t\telse if (allSameLetter(filter.split(''))) {\r\n\t\t\tconst matches = this.filterOptions(orderedOptions, filter[0]);\r\n\t\t\treturn options.indexOf(matches[0]);\r\n\t\t}\r\n\t\t// if no matches, return -1\r\n\t\telse {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\r\n\t// get an updated option index after performing an action\r\n\tgetUpdatedIndex(currentIndex: number, maxIndex: number, action: number): number {\r\n\t\tconst pageSize = 10; // used for pageup/pagedown\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase this.SelectActions.First:\r\n\t\t\t\treturn 0;\r\n\t\t\tcase this.SelectActions.Last:\r\n\t\t\t\treturn maxIndex;\r\n\t\t\tcase this.SelectActions.Previous:\r\n\t\t\t\treturn Math.max(0, currentIndex - 1);\r\n\t\t\tcase this.SelectActions.Next:\r\n\t\t\t\treturn Math.min(maxIndex, currentIndex + 1);\r\n\t\t\tcase this.SelectActions.PageUp:\r\n\t\t\t\treturn Math.max(0, currentIndex - pageSize);\r\n\t\t\tcase this.SelectActions.PageDown:\r\n\t\t\t\treturn Math.min(maxIndex, currentIndex + pageSize);\r\n\t\t\tdefault:\r\n\t\t\t\treturn currentIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t// check if an element is currently scrollable\r\n\tisScrollable(element: Element): boolean {\r\n\t\treturn element && element.clientHeight < element.scrollHeight;\r\n\t}\r\n\r\n\t// ensure a given child element is within the parent's visible scroll area\r\n\t// if the child is not visible, scroll the parent\r\n\tmaintainScrollVisibility(activeElement: HTMLElement, scrollParent: HTMLElement): void {\r\n\t\tconst { offsetHeight, offsetTop } = activeElement;\r\n\t\tconst { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent;\r\n\r\n\t\tconst isAbove = offsetTop < scrollTop;\r\n\t\tconst isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight;\r\n\r\n\t\tif (isAbove) {\r\n\t\t\tscrollParent.scrollTo(0, offsetTop);\r\n\t\t} else if (isBelow) {\r\n\t\t\tscrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight);\r\n\t\t}\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region Observable methods\r\n\r\n\toptionsChanged(): void {\r\n\t\tif (this.options?.length > 0) {\r\n\t\t\tif (!this.isInitizialized) {\r\n\t\t\t\tthis.init();\r\n\t\t\t} else {\r\n\t\t\t\tthis.refreshOptionDivs();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdescriptionsChanged(): void {\r\n\t\tif (this.descriptions?.length > 0) {\r\n\t\t\tif (!this.isInitizialized) {\r\n\t\t\t\tthis.init();\r\n\t\t\t} else {\r\n\t\t\t\tthis.refreshOptionDivs();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tselectedOptionChanged(): void {\r\n\t\tthis.selectedOptionChangedCallback();\r\n\r\n\t\tconst evt = new CustomEvent('change', {\r\n\t\t\tbubbles: true\r\n\t\t});\r\n\r\n\t\tthis.taskQueue.queueMicroTask(() => {\r\n\t\t\tthis.element.dispatchEvent(evt);\r\n\t\t});\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region Utility methods\r\n\r\n\t/**\r\n\t * Clear option divs (if they exist) and generate new option divs.\r\n\t */\r\n\trefreshOptionDivs(): void {\r\n\t\tif (this.options?.length > 0) {\r\n\t\t\tthis.createOptionDivs();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateOptionDivs(): void {\r\n\t\tthis.options.map((option: any, index: number) => {\r\n\t\t\tconst optionDiv = this.createOptionDiv(option, index);\r\n\t\t\t// prevents duped divs from being added\r\n\t\t\tconst addDiv = (this.optionDivs.length <= 0) || this.optionDivs.every(div => div.id !== optionDiv.id);\r\n\t\t\tif (addDiv) {\r\n\t\t\t\tthis.listMenuDiv.appendChild(optionDiv);\r\n\t\t\t} else {\r\n\t\t\t\toptionDiv.remove(); // remove dupes from the DOM\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcreateOptionDiv(option: any, index: number): HTMLDivElement {\r\n\t\tconst optionDiv = document.createElement('div');\r\n\t\toptionDiv.setAttribute('role', 'option');\r\n\t\toptionDiv.id = this.createOptionId(index);\r\n\t\toptionDiv.className =\r\n\t\t\tindex === this.activeIndex ? 'combo-option form-control combo-option-current' : 'combo-option form-control';\r\n\t\toptionDiv.setAttribute('aria-selected', `${index === this.activeIndex}`);\r\n\t\toptionDiv.setAttribute('value', option);\r\n\t\toptionDiv.innerText = this.getOptionDescription(option, index);\r\n\r\n\t\toptionDiv.addEventListener('click', (event) => {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis.onOptionClick(index);\r\n\t\t});\r\n\r\n\t\toptionDiv.addEventListener('mousedown', this.onOptionMouseDown.bind(this));\r\n\r\n\t\treturn optionDiv;\r\n\t}\r\n\r\n\tgetOptionDescription(option: any, index: number): string {\r\n\t\tif (this.optionPropertyDisplayName) {\r\n\t\t\treturn option[this.optionPropertyDisplayName];\r\n\t\t} else if (this.descriptions.length > 0) {\r\n\t\t\treturn this.descriptions[index];\r\n\t\t} else {\r\n\t\t\treturn option.toString();\r\n\t\t}\r\n\t}\r\n\r\n\tcreateOptionId(index: number): string {\r\n\t\treturn this.optionIdBase + index.toString();\r\n\t}\r\n\r\n\t/**\r\n\t * Set default option, if one exists\r\n\t */\r\n\tsetDefaultOption() {\r\n\t\tif (!this.isInitizialized) {\r\n\r\n\t\t\tthis.defaultIndex = 0;\r\n\t\t\tif (this.defaultOption) {\r\n\t\t\t\tthis.defaultIndex = this.options.findIndex(opt => opt === this.defaultOption);\r\n\t\t\t\tif (this.defaultIndex === -1) {\r\n\t\t\t\t\tthis.defaultIndex = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.activeIndex = this.defaultIndex;\r\n\t\t}\r\n\r\n\t\tthis.onOptionClick(this.activeIndex); // force a default option to be selected\r\n\t}\r\n\r\n\t// #endregion\r\n\r\n\t// #region Getters/Setters\r\n\r\n\tget optionDivs(): HTMLDivElement[] {\r\n\t\treturn Array.from(this.listMenuDiv.querySelectorAll('[role=option]'));\r\n\t}\r\n\r\n\tget selectedOptionDiv(): HTMLDivElement {\r\n\t\treturn this.element.querySelector('#' + this.selectedOptionBoxId) as HTMLDivElement;\r\n\t}\r\n\r\n\tget listMenuDiv(): HTMLDivElement {\r\n\t\treturn this.element.querySelector('#' + this.listMenuId) as HTMLDivElement;\r\n\t}\r\n\r\n\t// #endregion\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".combo *,\\r\\n.combo *::before,\\r\\n.combo *::after {\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\n.combo {\\r\\n display: block;\\r\\n position: relative;\\r\\n padding: 0;\\r\\n border: none;\\r\\n}\\r\\n\\r\\n .combo::after {\\r\\n border-bottom: 2px solid rgba(0, 0, 0, 0.75);\\r\\n border-right: 2px solid rgba(0, 0, 0, 0.75);\\r\\n content: \\\"\\\";\\r\\n display: block;\\r\\n height: .5em;\\r\\n pointer-events: none;\\r\\n position: absolute;\\r\\n right: 1em;\\r\\n top: 50%;\\r\\n transform: translate(0, -65%) rotate(45deg);\\r\\n width: .5em;\\r\\n }\\r\\n\\r\\n.combo-input {\\r\\n border-radius: 0 !important;\\r\\n display: inline-block;\\r\\n font-size: 1em;\\r\\n height: 100%;\\r\\n text-align: left;\\r\\n width: 100%;\\r\\n padding-right: 4em;\\r\\n}\\r\\n\\r\\n.combo-menu {\\r\\n border: 1px solid #ced4da;\\r\\n display: none;\\r\\n max-height: 25em;\\r\\n overflow-y: scroll;\\r\\n left: 0;\\r\\n position: absolute;\\r\\n top: 100%;\\r\\n width: 100%;\\r\\n z-index: 100;\\r\\n background-color: white;\\r\\n}\\r\\n\\r\\n.combo-open {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.combo-option {\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\n .combo-option:hover {\\r\\n background-color: rgb(0, 95, 178, 0.2 );\\r\\n }\\r\\n\\r\\n\\r\\n .combo-option[aria-selected=\\\"true\\\"] {\\r\\n padding-right: 30px;\\r\\n position: relative;\\r\\n }\\r\\n\\r\\n .combo-option[aria-selected=\\\"true\\\"]::after {\\r\\n content: \\\"\\\";\\r\\n height: 16px;\\r\\n position: absolute;\\r\\n right: 15px;\\r\\n top: 50%;\\r\\n transform: translate(0, -50%) rotate(45deg);\\r\\n width: 8px;\\r\\n }\\r\\n\\r\\n.combo-option-current {\\r\\n outline: 3px solid var(--payrazr-dark-blue);\\r\\n outline-offset: -3px;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\";","var config: any = {\r\n\tserviceUrl: `${window.location.protocol}//${window.location.hostname}/PayrazrApiWeb`,\r\n\thpfServiceUrl: `${window.location.protocol}//${window.location.hostname}/HostedPaymentFormApi`,\r\n\tportalUrl: `${window.location.protocol}//${window.location.hostname}/NewPortalWeb`\r\n};\r\n\r\nexport default config;\r\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\r\\nul.pagination li a {\\r\\n cursor: pointer;\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.pageSize label {\\r\\n padding: 0 5px;\\r\\n}\\r\\n\\r\\n.table-center th, \\r\\n.table-center td {\\r\\n text-align: center;\\r\\n}\\r\\n.table-left th, \\r\\n.table-left td {\\r\\n text-align: left;\\r\\n}\\r\\n.table-right th, \\r\\n.table-right td {\\r\\n text-align: right;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* datepicker overrides */\\r\\n.day {\\r\\n padding: 1px;\\r\\n border: solid 1px silver !important;\\r\\n}\\r\\n\\r\\n.disabled.day {\\r\\n border: none !important;\\r\\n}\\r\\n\\r\\n.btn-outline-success {\\r\\n color: #5cb85c;\\r\\n background-image: none;\\r\\n background-color: transparent;\\r\\n border-color: #5cb85c !important;\\r\\n}\\r\\n\\r\\nux-dialog-container {\\r\\n background-color: rgba(0, 0, 0, 0.5) !important;\\r\\n}\\r\\n\\r\\n ux-dialog-container > div {\\r\\n padding: initial !important;\\r\\n }\\r\\n\\r\\n/*BootStrap Animated Checkbox style*/\\r\\n.checkbox .cr, .radio .cr {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n border: 1px solid #a9a9a9;\\r\\n border-radius: .25em;\\r\\n width: 1.3em;\\r\\n height: 1.3em;\\r\\n float: left;\\r\\n margin-right: .5em;\\r\\n}\\r\\n\\r\\n.checkbox label input[type=\\\"checkbox\\\"]:checked + .cr > .cr-icon, .radio label input[type=\\\"radio\\\"]:checked + .cr > .cr-icon {\\r\\n transform: scale(1) rotateZ(0deg);\\r\\n opacity: 1;\\r\\n background-color: red;\\r\\n}\\r\\n\\r\\n.checkbox label input[type=\\\"checkbox\\\"] + .cr > .cr-icon, .radio label input[type=\\\"radio\\\"] + .cr > .cr-icon {\\r\\n transform: scale(3) rotateZ(-20deg);\\r\\n opacity: 0;\\r\\n transition: all .3s ease-in;\\r\\n}\\r\\n\\r\\n.checkbox .cr .cr-icon, .radio .cr .cr-icon {\\r\\n position: absolute;\\r\\n font-size: .8em;\\r\\n line-height: 0;\\r\\n top: 50%;\\r\\n left: 20%;\\r\\n}\\r\\n\\r\\n/* Overrides button styles */\\r\\n.btn.btn-link.btn-link-focusable:focus {\\r\\n outline: 1px dotted;\\r\\n outline: -webkit-focus-ring-color auto 1px;\\r\\n}\\r\\n\\r\\nhr.dashed {\\r\\n border-top: 1px dashed lightgray;\\r\\n}\\r\\n\\r\\nlabel {\\r\\n margin-bottom: 0.25rem;\\r\\n}\\r\\n\\r\\n/* table styles */\\r\\ntd {\\r\\n vertical-align: middle !important;\\r\\n}\\r\\n\\r\\n/* WCAG Compliance */\\r\\n\\r\\n.form-control {\\r\\n transition: none;\\r\\n}\\r\\n\\r\\n .form-control:focus {\\r\\n box-shadow: 0 0 0 .15em black;\\r\\n outline: none;\\r\\n transition: none;\\r\\n }\\r\\n\\r\\n.btn-link {\\r\\n color: var(--payrazr-dark-blue)\\r\\n}\\r\\n\\r\\n.btn {\\r\\n transition: none;\\r\\n}\\r\\n\\r\\n .btn:focus {\\r\\n box-shadow: 0 0 0 .15em black;\\r\\n outline: none;\\r\\n transition: none;\\r\\n }\\r\\n\\r\\n.validation-errors, div.invalid {\\r\\n color: var(--payrazr-dark-red) !important;\\r\\n background-color: var(--payrazr-dark-gray) !important;\\r\\n}\\r\\n\\r\\n.visuallyhidden {\\r\\n position: absolute;\\r\\n clip: rect(0 0 0 0);\\r\\n border: 0;\\r\\n width: 1px;\\r\\n height: 1px;\\r\\n margin: -1px;\\r\\n overflow: hidden;\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\n/* overrides same selectors in css/checkbox.css */\\r\\ndiv.checkbox input[type=\\\"checkbox\\\"]:focus + .cr {\\r\\n box-shadow: 0 0 0 .15em black;\\r\\n outline: none;\\r\\n}\\r\\n\\r\\n.checkbox .cr, .radio .cr {\\r\\n border: .1em solid black;\\r\\n}\\r\\n\\r\\na, a:hover {\\r\\n color: var(--payrazr-dark-blue); /* default site blue color - defined in styles.css */\\r\\n}\\r\\n\\r\\n/* hide reCaptcha from screen readers and disbale focus */\\r\\n.grecaptcha-badge {\\r\\n display:none !important;\\r\\n}\\r\\n\\r\\n.input-invalid {\\r\\n box-shadow: 0 0 0 .15em #af0101;\\r\\n outline: none;\\r\\n}\\r\\n\\r\\n.red-text-cell {\\r\\n color: #EE0000 !important;\\r\\n}\\r\\n\\r\\n.installments-logo-text2 {\\r\\n color: #767676 !important;\\r\\n}\\r\\n\\r\\n.payrazr-flex {\\r\\n display: flex;\\r\\n}\\r\\n\\r\\n.payrazr-sidebar-toggle {\\r\\n margin-top: 0px !important;\\r\\n}\\r\\n\\r\\n@media (min-width: 0px) {\\r\\n .payrazr-flex-xsmall-col {\\r\\n -ms-flex-direction: column !important;\\r\\n flex-direction: column !important;\\r\\n justify-content: space-between;\\r\\n }\\r\\n\\r\\n .header {\\r\\n height: auto !important;\\r\\n }\\r\\n\\r\\n .header-right {\\r\\n justify-content: space-between !important;\\r\\n }\\r\\n\\r\\n .payrazr-flex-xsmall-col-rev {\\r\\n -ms-flex-direction: column-reverse !important;\\r\\n flex-direction: column-reverse !important;\\r\\n justify-content: space-between;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(min-width: 412px) {\\r\\n .payrazr-flex-sm-row {\\r\\n -ms-flex-direction: row !important;\\r\\n flex-direction: row !important;\\r\\n }\\r\\n\\r\\n .header {\\r\\n height: 80px;\\r\\n }\\r\\n\\r\\n .header-right {\\r\\n justify-content: flex-end !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.form-group.required label:after {\\r\\n content: '' !important; /*cannot have embedded css content per WCAG compliance rules */\\r\\n}\\r\\n\\r\\n.input-required-marker {\\r\\n color: var(--payrazr-required-field);\\r\\n font-weight: bolder;\\r\\n}\\r\\n\\r\\nmain {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\nsection {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\narticle {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.checkbox-div, .checkbox-div * {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.checkbox-div {\\r\\n margin: .4em;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\ninput[type=\\\"checkbox\\\"] {\\r\\n width: 1.25em;\\r\\n height: 1.25em;\\r\\n margin: .5em;\\r\\n}\\r\\n\\r\\n.text-success {\\r\\n color: var(--payrazr-dark-green) !important;\\r\\n border: .01em solid var(--payrazr-dark-green);\\r\\n border-radius: .5em;\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n@media(max-width:991px) {\\r\\n .row-mobile {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(max-width:575px) {\\r\\n .sub-row-mobile {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n }\\r\\n}\", \"\"]);\n\n// exports\n","var escape = require(\"../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \" div.checkbox input[type=\\\"checkbox\\\"] {\\r\\n opacity: 0;\\r\\n width: 0;\\r\\n margin: 0;\\r\\n padding: 0;\\r\\n }\\r\\n\\r\\n div.checkbox input[type=\\\"checkbox\\\"] + label {\\r\\n display: inline-block;\\r\\n padding-left: 25px;\\r\\n height: 20px;\\r\\n background: url(\" + escape(require(\"../images/unchecked.png\")) + \") left top no-repeat;\\r\\n }\\r\\n\\r\\n div.checkbox input[type=\\\"checkbox\\\"] + label:hover {\\r\\n background: url(\" + escape(require(\"../images/radio-hover.png\")) + \") left top no-repeat;\\r\\n }\\r\\n\\r\\n div.checkbox input[type=\\\"checkbox\\\"]:checked + label {\\r\\n background: url(\" + escape(require(\"../images/radio-checked.png\")) + \") left top no-repeat;\\r\\n }\\r\\n\\r\\n div.checkbox label {\\r\\n cursor: pointer;\\r\\n }\\r\\n\\r\\n input[type=\\\"checkbox\\\"] {\\r\\n vertical-align: middle;\\r\\n }\\r\\n\\r\\n /*Required to override the global styles applied to checkbox.*/\\r\\n .checkbox-default label {\\r\\n color: black !important;\\r\\n padding-left: 0 !important;\\r\\n }\\r\\n\\r\\n .checkbox-default {\\r\\n text-align: left !important;\\r\\n }\\r\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".form-control {\\r\\n border-radius: 0;\\r\\n border-color: #799A9A;\\r\\n background-clip: initial;\\r\\n}\\r\\n.error { \\r\\n color: red;\\r\\n}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".pointer {\\r\\n cursor: pointer;\\r\\n}\\r\\n.float-right {\\r\\n float: right;\\r\\n}\\r\\n.float-left {\\r\\n float: left;\\r\\n}\\r\\na.black-link, a.black-link:hover {\\r\\n color: #000;\\r\\n}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".main-wrapper {\\r\\n display: flex;\\r\\n max-width: 1400px;\\r\\n margin: 0 auto;\\r\\n padding-top: 15px;\\r\\n}\\r\\n\\r\\n.sidebar-desktop {\\r\\n display: none;\\r\\n flex-direction: column;\\r\\n width: 150px;\\r\\n text-align: right;\\r\\n border-right: lightgray 1px solid;\\r\\n}\\r\\n.sidebar-desktop ul {\\r\\n padding: 0\\r\\n}\\r\\n.sidebar-desktop li {\\r\\n padding: 15px 15px;\\r\\n text-decoration: none;\\r\\n list-style-type: none;\\r\\n margin-bottom: -1px;\\r\\n}\\r\\n.sidebar-desktop li a {\\r\\n display: block;\\r\\n}\\r\\n\\r\\nrouter-view {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n\\r\\n@media screen and (min-width: 1400px) {\\r\\n .sidebar-desktop {\\r\\n display: flex;\\r\\n }\\r\\n}\\r\\n\\r\\n.padding-0-5 {\\r\\n padding: 0 5px;\\r\\n}\\r\\n.padding-5-0 {\\r\\n padding: 5px 0;\\r\\n}\\r\\n\\r\\n.margin-bottom-10 {\\r\\n margin-bottom: 10px;\\r\\n}\\r\\n.margin-top-10 {\\r\\n margin-top: 10px;\\r\\n}\\r\\n.margin-top-20 {\\r\\n margin-top: 20px;\\r\\n}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Set Width of table */\\r\\ntable.table-mobile {\\r\\n min-width: 330px;\\r\\n max-width: 540px;\\r\\n width: 100%;\\r\\n}\\r\\ntable.table-mobile tbody tr td {\\r\\n min-width: 330px;\\r\\n max-width: 545px;\\r\\n width: 545px;\\r\\n}\\r\\n\\r\\n.mobile-grid-button {\\r\\n margin-left: 0px;\\r\\n}\\r\\n\\r\\n.mobile-grid-header,\\r\\n.mobile-grid-header-50 {\\r\\n display: inline-block;\\r\\n font-weight: bold;\\r\\n min-width: 120px;\\r\\n width: 20%;\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.mobile-grid-data,\\r\\n.mobile-grid-data-50 {\\r\\n display: inline-block;\\r\\n min-width: 150px;\\r\\n width: 56%;\\r\\n text-align: left;\\r\\n}\\r\\n\\r\\n.mobile-grid-header-50,\\r\\n.mobile-grid-data-50 {\\r\\n width: 49%\\r\\n}\\r\\n\\r\\n.mobile-grid-data-no-header {\\r\\n display: inline-block;\\r\\n text-align: center;\\r\\n\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","var escape = require(\"../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\nexports.push([module.id, \"@import url(https://fonts.googleapis.com/css?family=Lato);\", \"\"]);\n\n// module\nexports.push([module.id, \"/* \\r\\n The custom colors are loaded/generated in ClientApp/Models/portal.ts, if you need to find it to configure other settings.\\r\\n When generating a new portal, these colors are also the default in BillingTree.VirtualTerminalWeb/src/model/portal.js \\r\\n*/\\r\\n:root {\\r\\n --payrazr-light-blue: #3FA9F5; /* original Payrazr blue color - not WCAG compliant with white background/text */\\r\\n --payrazr-dark-blue: #005FB2; /* WCAG-compliant blue - currently used as default for all Payrazr blues */\\r\\n --payrazr-light-green: #7AC943; /* original Payrazr green color - not WCAG compliant with white background/text */\\r\\n --payrazr-dark-green: #01892C; /* WCAG-compliant blue - currently used as default for all Payrazr green */\\r\\n --payrazr-dark-red: #af0101; /* WCAG-compliant dark red for validation errors */\\r\\n --payrazr-dark-gray: #d0d0d0; /* complimentary dark gray color for --payrazr-dar-red */\\r\\n --payrazr-required-field: #D00000; /* visible red color */\\r\\n}\\r\\n\\r\\n* {\\r\\n font-family: Lato;\\r\\n}\\r\\n\\r\\nbody {\\r\\n margin: 0;\\r\\n -webkit-overflow-scrolling: touch !important;\\r\\n}\\r\\n\\r\\nh1, .h1 {\\r\\n font-size: 36px;\\r\\n}\\r\\n\\r\\nh1, .h1, .title {\\r\\n color: var(--payrazr-dark-blue);\\r\\n}\\r\\n\\r\\n.item-title {\\r\\n font-size: 22px;\\r\\n font-weight: bold;\\r\\n}\\r\\n\\r\\n.portal-header {\\r\\n font-size: 20px;\\r\\n font-weight: bold;\\r\\n color: #333333;\\r\\n}\\r\\n\\r\\n.second-item-title {\\r\\n font-size: 18px;\\r\\n font-weight: bold;\\r\\n}\\r\\n\\r\\nh4.green, .lead {\\r\\n color: var(--payrazr-dark-green);\\r\\n font-weight: bold;\\r\\n}\\r\\n\\r\\nh4 {\\r\\n font-weight: bold;\\r\\n margin-bottom: 5px;\\r\\n}\\r\\n\\r\\nh1 {\\r\\n margin-bottom: -5px !important;\\r\\n}\\r\\n\\r\\np.text-justify:first-of-type {\\r\\n margin-top: 30px;\\r\\n}\\r\\n\\r\\np.text-justify {\\r\\n margin-bottom: 30px;\\r\\n}\\r\\n\\r\\n.page-host {\\r\\n position: absolute;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0px; /*keep this way otherwise nav bar hidden on iphone*/\\r\\n bottom: 0;\\r\\n overflow-x: hidden;\\r\\n overflow-y: auto;\\r\\n}\\r\\n\\r\\n@media print {\\r\\n .page-host {\\r\\n position: absolute;\\r\\n left: 10px;\\r\\n right: 0;\\r\\n top: 50px;\\r\\n bottom: 0;\\r\\n overflow-y: inherit;\\r\\n overflow-x: inherit;\\r\\n }\\r\\n}\\r\\n\\r\\n.pictureDetail {\\r\\n max-width: 425px;\\r\\n}\\r\\n\\r\\n/* animate page transitions */\\r\\nsection.au-enter-active {\\r\\n -webkit-animation: fadeInRight 1s;\\r\\n animation: fadeInRight 1s;\\r\\n}\\r\\n\\r\\ndiv.au-stagger {\\r\\n /* 50ms will be applied between each successive enter operation */\\r\\n -webkit-animation-delay: 50ms;\\r\\n animation-delay: 50ms;\\r\\n}\\r\\n\\r\\n\\r\\n .has-success label {\\r\\n color: #3c763d;\\r\\n }\\r\\n\\r\\n .has-warning label {\\r\\n color: red;\\r\\n }\\r\\n\\r\\n .has-warning input {\\r\\n background-color: #ffe5e5;\\r\\n border-color: red;\\r\\n }\\r\\n\\r\\n .validation-errors {\\r\\n background-color: lightgrey;\\r\\n padding: 0.5em;\\r\\n margin-bottom: 0.5em;\\r\\n }\\r\\n\\r\\n .validation-errors ul {\\r\\n list-style: none;\\r\\n }\\r\\n\\r\\n .validation-errors div.invalid,\\r\\n .validation-errors li.invalid {\\r\\n color: red;\\r\\n font-weight: bold;\\r\\n }\\r\\n\\r\\n div.invalid {\\r\\n color: red;\\r\\n }\\r\\n\\r\\n a.pointer {\\r\\n cursor: pointer;\\r\\n }\\r\\n\\r\\n .payrazr-blue {\\r\\n color: var(--payrazr-dark-blue); /* WCAG compliance color */\\r\\n }\\r\\n\\r\\n \\r\\n\\r\\n .form-group.required label:after {\\r\\n position: relative;\\r\\n content: '*';\\r\\n color: red;\\r\\n left: 5px;\\r\\n top: 0px;\\r\\n }\\r\\n\\r\\n .input-group.required div {\\r\\n position: relative;\\r\\n margin-right: 15px;\\r\\n }\\r\\n\\r\\n .input-group.required div:after {\\r\\n position: absolute;\\r\\n content: '*';\\r\\n color: red;\\r\\n right: -10px;\\r\\n top: 0;\\r\\n }\\r\\n\\r\\n /* animation definitions */\\r\\n @-webkit-keyframes fadeInRight {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n -webkit-transform: translate3d(100%, 0, 0);\\r\\n transform: translate3d(100%, 0, 0)\\r\\n }\\r\\n\\r\\n 100% {\\r\\n opacity: 1;\\r\\n -webkit-transform: none;\\r\\n transform: none\\r\\n }\\r\\n }\\r\\n\\r\\n @keyframes fadeInRight {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n -webkit-transform: translate3d(100%, 0, 0);\\r\\n -ms-transform: translate3d(100%, 0, 0);\\r\\n transform: translate3d(100%, 0, 0)\\r\\n }\\r\\n\\r\\n 100% {\\r\\n opacity: 1;\\r\\n -webkit-transform: none;\\r\\n -ms-transform: none;\\r\\n transform: none\\r\\n }\\r\\n }\\r\\n\\r\\n @-webkit-keyframes fadeIn {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n\\r\\n 100% {\\r\\n opacity: 1;\\r\\n }\\r\\n }\\r\\n\\r\\n @keyframes fadeIn {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n\\r\\n 100% {\\r\\n opacity: 1;\\r\\n }\\r\\n }\\r\\n\\r\\n /* r2 styles */\\r\\n .btn-group-vertical > .btn {\\r\\n border-top-left-radius: 6px !important;\\r\\n border-top-right-radius: 6px !important;\\r\\n border-bottom-right-radius: 6px !important;\\r\\n border-bottom-left-radius: 6px !important;\\r\\n margin: 10px 0;\\r\\n }\\r\\n\\r\\n /* Buttons*/\\r\\n \\r\\n\\r\\n .btn-default {\\r\\n text-shadow: none;\\r\\n }\\r\\n\\r\\n .btn-primary {\\r\\n color: #fff;\\r\\n background-color: var(--payrazr-dark-blue) !important;\\r\\n border: 0 !important;\\r\\n }\\r\\n\\r\\n .btn-group-vertical {\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n .btn-group-vertical a {\\r\\n padding: 10px 16px;\\r\\n font-size: 18px;\\r\\n line-height: 1.3333333;\\r\\n border-radius: 6px;\\r\\n }\\r\\n\\r\\n .btn-group-vertical a i {\\r\\n display: none;\\r\\n }\\r\\n\\r\\n .button-extra:hover,\\r\\n .button-blue:hover,\\r\\n .button-green:hover,\\r\\n .button-extra:active,\\r\\n .button-blue:active,\\r\\n .button-green:active,\\r\\n .button-extra:visited,\\r\\n .button-blue:visited,\\r\\n .button-green:visited,\\r\\n .button-extra:focus,\\r\\n .button-blue:focus,\\r\\n .button-green:focus {\\r\\n color: #fff !important;\\r\\n }\\r\\n\\r\\n\\r\\n .button-extra {\\r\\n color: #fff;\\r\\n background-color: #ff931e;\\r\\n }\\r\\n /*.button-extra:hover {// theres a change we may need later so i prefer to keep instead of git search it\\r\\n background-color: #e67700 !important;\\r\\n}*/\\r\\n\\r\\n .button-blue {\\r\\n color: #fff;\\r\\n background-color: var(--payrazr-dark-blue);\\r\\n }\\r\\n /*.button-blue:hover {// theres a change we may need later so i prefer to keep instead of git search it\\r\\n background-color: #0b84da !important; \\r\\n}*/\\r\\n\\r\\n .button-green {\\r\\n color: #fff;\\r\\n background-color: var(--payrazr-dark-green) !important;\\r\\n background-image: none !important;\\r\\n }\\r\\n /*.button-green:hover {// theres a change we may need later so i prefer to keep instead of git search it\\r\\n background-color: #68b234; \\r\\n}*/\\r\\n\\r\\n .dashboard-button {\\r\\n margin-bottom: 5px;\\r\\n }\\r\\n\\r\\n .center {\\r\\n text-align: center;\\r\\n }\\r\\n\\r\\n hr.blue {\\r\\n border: 1px solid var(--payrazr-dark-blue);\\r\\n }\\r\\n\\r\\n hr.green {\\r\\n /*border: 1px solid var(--payrazr-dark-green);*/\\r\\n }\\r\\n\\r\\n /* Various Icons */\\r\\n .help {\\r\\n padding-left: 25px;\\r\\n /*background: url(../images/question.png);*/\\r\\n background-repeat: no-repeat;\\r\\n background-position: top left;\\r\\n width: 115px;\\r\\n margin: 0 auto 15px auto;\\r\\n color: black;\\r\\n height: 21px;\\r\\n }\\r\\n\\r\\n .help:hover, .help:active {\\r\\n padding-left: 25px;\\r\\n /*background: url(../images/question-ha.png);*/\\r\\n background-repeat: no-repeat;\\r\\n background-position: top left;\\r\\n width: 115px;\\r\\n margin: 0 auto 15px auto;\\r\\n color: black;\\r\\n height: 21px;\\r\\n }\\r\\n\\r\\n\\r\\n .expand, .expand:after {\\r\\n cursor: pointer;\\r\\n display: inline-block;\\r\\n content: \\\"+\\\";\\r\\n color: #777 !important;\\r\\n font-size: 30px;\\r\\n }\\r\\n\\r\\n .collapse-btn, .collapse-btn:after {\\r\\n cursor: pointer;\\r\\n display: inline-block;\\r\\n content: \\\"\\\\2212\\\";\\r\\n color: #777 !important;\\r\\n font-size: 30px;\\r\\n font-weight: bold;\\r\\n }\\r\\n\\r\\n /* text */\\r\\n /*legend {\\r\\n font-size: 16px;\\r\\n color: #8acaf8;\\r\\n border-bottom: none;\\r\\n}*/\\r\\n\\r\\n div.tooltip-inner {\\r\\n max-width: 350px;\\r\\n }\\r\\n\\r\\n /* dashboard pages */\\r\\n .title {\\r\\n font-weight: normal;\\r\\n text-transform: uppercase;\\r\\n color: var(--payrazr-dark-blue);\\r\\n font-size: 2em;\\r\\n padding-right: 1em;\\r\\n }\\r\\n\\r\\n .accounts thead tr th:last-child,\\r\\n .accounts .row.thead:last-child {\\r\\n padding-left: 75px;\\r\\n }\\r\\n\\r\\n .payments {\\r\\n margin: 20px 0;\\r\\n }\\r\\n\\r\\n .accounts tbody tr td,\\r\\n .payments tbody tr td,\\r\\n .accounts .row.tbody {\\r\\n margin-top: 20px;\\r\\n margin-bottom: 10px;\\r\\n }\\r\\n\\r\\n .documents .row.tbody {\\r\\n margin-top: 25px;\\r\\n margin-bottom: 25px;\\r\\n }\\r\\n\\r\\n .documents thead tr th,\\r\\n .accounts thead tr th,\\r\\n .payments thead tr th {\\r\\n border-bottom: 2px solid var(--payrazr-dark-green);\\r\\n }\\r\\n\\r\\n .documents thead tr th {\\r\\n text-align: center;\\r\\n }\\r\\n\\r\\n .accounts tfoot tr th,\\r\\n .accounts .row.tfoot > div {\\r\\n padding-bottom: 20px;\\r\\n padding-top: 10px;\\r\\n }\\r\\n\\r\\n .accounts tbody tr td button,\\r\\n .accounts .tbody button {\\r\\n width: 150px;\\r\\n font-size: 16px;\\r\\n }\\r\\n\\r\\n .row.thead > div {\\r\\n vertical-align: bottom;\\r\\n font-weight: bold;\\r\\n padding: 5px;\\r\\n }\\r\\n\\r\\n .payments .row.tbody:nth-child(odd) > div {\\r\\n background-color: #f9f9f9;\\r\\n }\\r\\n\\r\\n /* input fields */\\r\\n input[type=\\\"number\\\"], input[type=\\\"date\\\"] {\\r\\n height: 35px;\\r\\n }\\r\\n\\r\\n label.green {\\r\\n color: var(--payrazr-dark-green);\\r\\n }\\r\\n\\r\\n email-receipt-sender label.valid {\\r\\n color: green;\\r\\n }\\r\\n\\r\\n email-receipt-sender label.invalid {\\r\\n color: red;\\r\\n }\\r\\n\\r\\n /* AURELIA STYLES BEGIN */\\r\\n ai-dialog-container, ai-dialog-overlay {\\r\\n z-index: 1050 !important;\\r\\n overflow-y: hidden;\\r\\n position: absolute;\\r\\n top: -100px;\\r\\n margin-left: auto;\\r\\n margin-right: auto;\\r\\n }\\r\\n\\r\\n ai-dialog-overlay.active {\\r\\n background-color: black;\\r\\n opacity: .5;\\r\\n }\\r\\n\\r\\n .aurelia-validation-message {\\r\\n display: inline;\\r\\n margin-left: 5px;\\r\\n }\\r\\n /* AURELIA STYLES BEGIN END */\\r\\n\\r\\n @media (min-width: 1200px) {\\r\\n .modal-dialog.dialog-lg {\\r\\n width: 1170px;\\r\\n }\\r\\n }\\r\\n\\r\\n /* after is for firefox support otherwise it will not display*/\\r\\n /* certifications - *** certifications should be no larger than 140 x 50, resize in Photoshop if needed*/\\r\\n .poweredBy, .poweredBy::after {\\r\\n content: url(\" + escape(require(\"../images/poweredBy.png\")) + \");\\r\\n }\\r\\n\\r\\n .cert {\\r\\n margin: 10px 0;\\r\\n }\\r\\n .footer-logo {\\r\\n max-width: 300px;\\r\\n }\\r\\n\\r\\n /* after is for firefox support otherwise it will not display*/\\r\\n /* credit cards */\\r\\n .card-visa, .card-visa::after {\\r\\n content: url(\" + escape(require(\"../images/cards/visa.png\")) + \");\\r\\n }\\r\\n\\r\\n .card-amex, .card-amex::after {\\r\\n content: url(\" + escape(require(\"../images/cards/amex_logo.png\")) + \");\\r\\n }\\r\\n\\r\\n .card-diners, .card-diners::after {\\r\\n content: url(\" + escape(require(\"../images/cards/diners.png\")) + \");\\r\\n }\\r\\n\\r\\n .card-jcb, .card-jcb::after {\\r\\n content: url(\" + escape(require(\"../images/cards/jcb.png\")) + \");\\r\\n }\\r\\n\\r\\n .card-mastercard, .card-mastercard::after {\\r\\n content: url(\" + escape(require(\"../images/cards/mastercard_logo.png\")) + \");\\r\\n }\\r\\n\\r\\n .card-discover, .card-discover::after {\\r\\n content: url(\" + escape(require(\"../images/cards/discover.png\")) + \");\\r\\n }\\r\\n\\r\\n /* margins */\\r\\n .margin-left-sm {\\r\\n margin-left: 5px !important;\\r\\n }\\r\\n\\r\\n .margin-right-sm {\\r\\n margin-right: 5px !important;\\r\\n }\\r\\n\\r\\n .margin-both-sm {\\r\\n margin: 0 5px;\\r\\n }\\r\\n\\r\\n .align-left {\\r\\n text-align: left;\\r\\n }\\r\\n\\r\\n .installments-dollar, .installments-dollar:after {\\r\\n content: url(\" + escape(require(\"../images/installments_dollar.svg\")) + \");\\r\\n }\\r\\n\\r\\n .side-by-side-controls {\\r\\n display: inline-block;\\r\\n width: 49%\\r\\n }\\r\\n\\r\\n .blank-img, .blank-img::after {\\r\\n content: url(\" + escape(require(\"../images/blank.png\")) + \");\\r\\n }\\r\\n\\r\\n\\r\\n\\r\\n /* PAYMENT FLOWS STYLES - START */\\r\\n .mobile-grid {\\r\\n width: 100%;\\r\\n display: none;\\r\\n margin: 25px 0 30px 0;\\r\\n }\\r\\n\\r\\n .mobile-grid button {\\r\\n font-size: 1.25em;\\r\\n }\\r\\n\\r\\n .mobile-grid tr {\\r\\n height: 35px !important;\\r\\n }\\r\\n\\r\\n .mobile-grid tr td {\\r\\n border-bottom: solid 1px #ddd;\\r\\n padding: 5px 0;\\r\\n }\\r\\n\\r\\n .mobile-grid tr td:first-child {\\r\\n text-align: right;\\r\\n width: 40%;\\r\\n padding-right: 5px;\\r\\n }\\r\\n\\r\\n .mobile-grid tr td:nth-child(1) {\\r\\n /*text-transform: uppercase;*/\\r\\n color: #949999;\\r\\n }\\r\\n\\r\\n .mobile-grid tr td:nth-child(2) {\\r\\n font-weight: bold;\\r\\n }\\r\\n\\r\\n .mobile-grid tr:last-child td {\\r\\n border-bottom: 0 !important;\\r\\n }\\r\\n /*.mobile-grid tr:nth-child(4) td {\\r\\n border-bottom: 0 !important;\\r\\n }*/\\r\\n\\r\\n\\r\\n \\r\\n .single-row-grid {\\r\\n font-size: 20px !important;\\r\\n font-weight: bold;\\r\\n }\\r\\n\\r\\n .single-row-grid tr {\\r\\n height: 60px;\\r\\n }\\r\\n\\r\\n .single-row-grid tr th {\\r\\n border-top: 0 !important;\\r\\n border-bottom: solid 1px #ddd;\\r\\n color: #a8a8a8;\\r\\n /*text-transform: uppercase;*/\\r\\n text-align: center;\\r\\n }\\r\\n\\r\\n\\r\\n .borderless-bottom {\\r\\n border-bottom: 0 !important;\\r\\n }\\r\\n\\r\\n .red-text-cell {\\r\\n color: red;\\r\\n }\\r\\n\\r\\n .installments-logo {\\r\\n text-align: center;\\r\\n margin-top: 25px;\\r\\n }\\r\\n\\r\\n .installments-logo-text1 {\\r\\n font-size: 1.75em;\\r\\n color: #888;\\r\\n }\\r\\n\\r\\n .installments-logo-text2 {\\r\\n font-size: 1.25em;\\r\\n color: #a8a8a8;\\r\\n }\\r\\n\\r\\n .mobile-grid-button {\\r\\n margin-top: 10px;\\r\\n }\\r\\n\\r\\n\\r\\n @media (max-width: 480px) {\\r\\n .mobile-grid {\\r\\n display: inline-table;\\r\\n }\\r\\n\\r\\n .options-grid {\\r\\n display: none;\\r\\n }\\r\\n\\r\\n .single-row-grid {\\r\\n display: none;\\r\\n }\\r\\n }\\r\\n /* PAYMENT FLOWS STYLES - END */\\r\\n\\r\\n/* PDF PREVIEW STYLES */\\r\\n.view-pdf-container {\\r\\n width: 65vw;\\r\\n height: 80vh;\\r\\n}\\r\\n\\r\\n.view-pdf-header {\\r\\n display: flex;\\r\\n align-items: flex-start;\\r\\n justify-content: space-between;\\r\\n padding: 5px;\\r\\n}\\r\\n\\r\\n/* Expand to the entire container */\\r\\n.view-pdf {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\n.view-pdf-close {\\r\\n cursor: pointer;\\r\\n font-size: 1.5rem;\\r\\n}\\r\\n\\r\\n\\r\\n\", \"\"]);\n\n// exports\n","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class BankAccountNumber {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) accountNumber: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class BankAccountType {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedBankAccountType: any;\r\n\tbankAccountTypes: any;\r\n\r\n\tconstructor(private i18n:I18N) {\r\n\t\tthis.bankAccountTypes = this.getBankAccountTypes();\r\n\t}\r\n\r\n\tgetBankAccountTypes(): any {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tvalue: \"PersonalChecking\",\r\n\t\t\t\tdescription: this.i18n.i18next.t('personalCheckingAccount',\"Personal Checking Account\")\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: \"PersonalSavings\",\r\n\t\t\t\tdescription: this.i18n.i18next.t('personalSavingsAccount',\"Personal Savings Account\")\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: \"BusinessChecking\",\r\n\t\t\t\tdescription: this.i18n.i18next.t('businessCheckingAccount',\"Business Checking Account\")\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class BankRoutingNumber {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) routingNumber: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class BillingFirstName {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) firstName: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class BillingLastName {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) lastName: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class BillingName {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) billingName: any;\r\n\t@bindable({ defaultBindingMode: bindingMode.oneWay }) label: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class BillingZipcode {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) zipcode: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class CreditCardExpirationV2 {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) cardExpiration: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode, computedFrom } from 'aurelia-framework';\r\nimport { StringHelper } from '../../helpers/string-helper';\r\n\r\nexport class CreditCardExpiration {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) cardExpiration: any;\r\n\tcurrentDate: any;\r\n\tmonths: any;\r\n\tyears: any;\r\n\tselectedMonth: string;\r\n\tselectedYear: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.currentDate = new Date();\r\n\t\tthis.months = this.monthsList();\r\n\t\tthis.years = this.yearsList();\r\n\r\n\t\tthis.selectedMonth = '';\r\n\t\tthis.selectedYear = '';\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.setDefaultExpiration();\r\n\t}\r\n\r\n\tsetDefaultExpiration() {\r\n\t\t// javascript Months are 0 based.\r\n\t\tthis.selectedMonth = (this.currentDate.getMonth() + 1).toString().padStart(2, '0');\r\n\t\tthis.selectedYear = this.currentDate.getFullYear().toString();\r\n\t}\r\n\r\n\tmonthsList() {\r\n\t\tlet list = [];\r\n\t\tfor (let i = 1; i <= 12; i++) {\r\n\t\t\tlist.push(StringHelper.padLeft(i.toString(), '0', 2));\r\n\t\t}\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\tyearsList() {\r\n\t\tlet list = [];\r\n\t\tlet currentYear = this.currentDate.getFullYear();\r\n\t\tfor (let i = 0; i < 20; ++i) {\r\n\t\t\tlist.push(currentYear + i);\r\n\t\t}\r\n\r\n\t\treturn list;\r\n\t}\r\n\r\n\t@computedFrom('selectedMonth', 'selectedYear')\r\n\tget expirationDate() {\r\n\t\treturn this.cardExpiration = this.selectedMonth + this.selectedYear % 100;\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class CreditCardNumber {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) cardNumber;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode, computedFrom } from 'aurelia-framework';\r\n\r\nexport class PaymentMethodTypes {\r\n\t@bindable({ defaultBindingMode: bindingMode.oneWay }) paymentMethodTypeOptions: any;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedPaymentMethodType: any;\r\n\tpaymentMethods: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.paymentMethods = this.getPaymentMethods();\r\n\t}\r\n\r\n\tgetPaymentMethods() {\r\n\t\treturn [\r\n\t\t\t{ name: 'wallet', value: 0, enabled: true, label: 'Wallet' },\r\n\t\t\t{ name: 'card', value: 1, enabled: true, label: 'Card' },\r\n\t\t\t{ name: 'ach', value: 2, enabled: true, label: 'E-Check' }\r\n\t\t];\r\n\t}\r\n\r\n\t@computedFrom('paymentMethodTypeOptions')\r\n\tget paymentMethodTypes() {\r\n\t\ttry {\r\n\t\t\tif (!this.paymentMethodTypeOptions)\r\n\t\t\t\treturn this.paymentMethods;\r\n\r\n\t\t\tthis.paymentMethods[0].enabled = this.paymentMethodTypeOptions.showWallet;\r\n\t\t\tthis.paymentMethods[1].enabled = this.paymentMethodTypeOptions.showCard;\r\n\t\t\tthis.paymentMethods[2].enabled = this.paymentMethodTypeOptions.showAch;\r\n\r\n\t\t\tif (this.paymentMethodTypeOptions.walletLabel)\r\n\t\t\t\tthis.paymentMethods[0].label = this.paymentMethodTypeOptions.walletLabel;\r\n\r\n\t\t\tif (this.paymentMethodTypeOptions.cardLabel)\r\n\t\t\t\tthis.paymentMethods[1].label = this.paymentMethodTypeOptions.cardLabel;\r\n\r\n\t\t\tif (this.paymentMethodTypeOptions.achLabel)\r\n\t\t\t\tthis.paymentMethods[2].label = this.paymentMethodTypeOptions.achLabel;\r\n\r\n\t\t\treturn this.paymentMethods;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn this.paymentMethods;\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\n\r\n@autoinject\r\nexport class RecaptchaCheckbox {\r\n\tconstructor(private element: Element) { }\r\n\r\n\t// DOM element assigned before attached\r\n\trecaptchaCheckbox: Element;\r\n\r\n\tattached() {\r\n\t\tthis.initializeRecaptcha();\r\n\t}\r\n\r\n\tinitializeRecaptcha() {\r\n\t\tif (window.grecaptcha) {\r\n\t\t\twindow.grecaptcha.render(this.recaptchaCheckbox, {\r\n\t\t\t\t'sitekey': '6LcPPwMpAAAAAMcW-PBeJd7hvAUY1r3mZtfhvH_e',\r\n\t\t\t\t// bind this to the component instance so it's not 'lost' in the callback\r\n\t\t\t\t'callback': this.onVerifyRecaptcha.bind(this),\r\n\t\t\t\t'expired-callback': this.onRecaptchaExpired.bind(this),\r\n\t\t\t\t'error-callback': this.onRecaptchaError.bind(this)\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconsole.error('grecaptcha is not defined');\r\n\t\t}\r\n\t}\r\n\r\n\tonVerifyRecaptcha(token: string) {\r\n\t\ttry {\r\n\t\t\tthis.dispatchVerifyCaptchaEvent('verify-captcha', token);\r\n\t\t}\r\n\t\tcatch {\r\n\t\t\tthis.dispatchVerifyCaptchaEvent('verify-captcha', 'Invalid Token');\r\n\t\t}\r\n\t}\r\n\r\n\tonRecaptchaExpired() {\r\n\t\tthis.dispatchVerifyCaptchaEvent('captcha-expired');\r\n\t}\r\n\r\n\tonRecaptchaError() {\r\n\t\tthis.dispatchVerifyCaptchaEvent('captcha-error');\r\n\t}\r\n\r\n\tdispatchVerifyCaptchaEvent(eventName: string, eventData?: any) {\r\n\t\tlet verifyCaptchaEvent = DOM.createCustomEvent(eventName, { bubbles: true, cancelable: true, detail: eventData });\r\n\t\tthis.element.dispatchEvent(verifyCaptchaEvent);\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class WalletList {\r\n\t@bindable({ defaultBindingMode: bindingMode.oneWay }) paymentMethodList: any;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedPaymentMethod: any;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","export class ArrayHelper {\r\n\tstatic move(array: any, fromIndex: number, toIndex: number) {\r\n\t\tlet element = array[fromIndex];\r\n\t\tarray.splice(fromIndex, 1);\r\n\t\tarray.splice(toIndex, 0, element);\r\n\t}\r\n\r\n\tstatic insert(array: any, item: any, toIndex: number) {\r\n\t\tarray.splice(toIndex, 0, item);\r\n\t}\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { NavigationInstruction } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class AuthorizationRedirectManager {\r\n\tprivate navigationInstruction: NavigationInstruction;\r\n\r\n\t// store the navigationInstruction to get preAuthUri and return login uri for redirect\r\n\thandleNotAuthorized(navigationInstruction: NavigationInstruction): string {\r\n\t\tthis.navigationInstruction = navigationInstruction;\r\n\r\n\t\treturn `portal/${this.navigationInstruction.params.id}/login`;\r\n\t}\r\n\r\n\t// use the navigationInstruction to re-create the pre auth uri\r\n\tgetPreAuthUri(): string {\r\n\t\tif (!this.navigationInstruction) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t// replaces existing view model invoking router lifecycle hooks\r\n\t\tlet uri = this.navigationInstruction.router.generate(this.navigationInstruction.config.name,\r\n\t\t\tthis.navigationInstruction.params);\r\n\r\n\t\tthis.navigationInstruction = null; // clear after used once\r\n\r\n\t\treturn uri;\r\n\t}\r\n\r\n\tget NavigationInstruction() {\r\n\t\treturn this.navigationInstruction;\r\n\t}\r\n}\r\n","import { AuthorizationRedirectManager } from './authorization-redirect-manager';\r\nimport { Router, NavigationInstruction, RouteConfig, NavigationInstructionInit } from 'aurelia-router';\r\nimport { mock } from 'ts-mockito';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('helpers', () => {\r\n\t\tdescribe('authorization-redirect-manager', () => {\r\n\t\t\tlet component: AuthorizationRedirectManager;\r\n\t\t\tlet navigationInit: NavigationInstructionInit;\r\n\t\t\tlet navigationInstruction: NavigationInstruction;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\r\n\t\t\t// Initialize Component and NavigationInstruction\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tcomponent = new AuthorizationRedirectManager();\r\n\t\t\t\tlet config = { route: 'test/route', name: 'test' };\r\n\t\t\t\tlet params = { id: '1' };\r\n\t\t\t\tnavigationInit = { fragment: '', router: mockRouter, config, params };\r\n\t\t\t\t// using instaniated instance to cleanly add router, config and params properties that all get used\r\n\t\t\t\tnavigationInstruction = new NavigationInstruction(navigationInit);\r\n\t\t\t\tspyOn(mockRouter, 'generate').and.returnValue('test/route');\r\n\t\t\t});\r\n\r\n\t\t\tit('should handle not authorized and preAuthUri should be generated from navigationInstruction', () => {\r\n\t\t\t\tlet loginUri: string = component.handleNotAuthorized(navigationInstruction);\r\n\t\t\t\tlet savedNavigationInstruction: NavigationInstruction = component.NavigationInstruction;\r\n\r\n\t\t\t\texpect(savedNavigationInstruction).toEqual(navigationInstruction);\r\n\t\t\t\texpect(loginUri).toEqual(`portal/${savedNavigationInstruction.params.id}/login`);\r\n\r\n\t\t\t\tlet preAuthUri = component.getPreAuthUri();\r\n\t\t\t\texpect(preAuthUri).toBe('test/route');\r\n\r\n\t\t\t\t// getPreAuthUri() should set navigationInstruction to null\r\n\t\t\t\tsavedNavigationInstruction = component.NavigationInstruction;\r\n\t\t\t\texpect(savedNavigationInstruction).toBeNull();\r\n\t\t\t});\r\n\r\n\t\t\tit('pre auth uri should be null when navigationInstruction is null', () => {\r\n\t\t\t\tlet preAuthUri: string = component.getPreAuthUri();\r\n\t\t\t\texpect(preAuthUri).toBeNull();\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","export class CoalesceValueConverter {\r\n\ttoView(value: any, replacement: any) {\r\n\t\treturn value ? value : replacement;\r\n\t}\r\n}","const numeral: any = require('numeral');\r\n\r\nexport class CurrencyFormatValueConverter {\r\n\ttoView(value: any) {\r\n\t\treturn numeral(value).format('($0,0.00)');\r\n\t}\r\n\tfromView(value: any) {\r\n\t\treturn numeral(value).value();\r\n\t}\r\n}\r\n","import * as moment from 'moment';\r\n\r\nexport class DateFormatValueConverter {\r\n\ttoView(value: any, format: any) {\r\n\t\treturn value ? moment(value).format(format) : value;\r\n\t}\r\n}\r\n","const numeral: any = require('numeral');\r\n\r\nexport class FormattingHelper {\r\n\tstatic mask(text: string): string {\r\n\t\treturn '****' + (text.length < 4 ? '' : text.substring(text.length - 4));\r\n\t}\r\n\r\n\tstatic formatCurrency(amount: number): string {\r\n\t\treturn numeral(amount).format('($0,0.00)');\r\n\t}\r\n}\r\n","export class HtmlHelper {\r\n\tstatic HtmlBreak(value: string): string {\r\n\t\treturn value\r\n\t\t\t.replace(/ 0) {\r\n\t\t\treturn Cookies.get(cookies[0]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tgetCookiesByPrefix(id: string): string[] {\r\n\t\tconst prefix = this.getMfaCookieName(id);\r\n\t\treturn document.cookie.split(';').filter((c) =>\r\n\t\t\tc.trim().indexOf(prefix) === 0\r\n\t\t).map((c) => c.trim().split('=')[0]);\r\n\t}\r\n\r\n\tprivate shouldRedirectToPreferredLanguagePage(): boolean {\r\n\t\tif (this.globalState.business?.portalSettings?.businessSettings == null ||\r\n\t\t\tthis.globalState.customer == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.globalState.business.portalSettings.businessSettings.enablePreferredLanguageAcknowledgement &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.preferredLanguageCode == null &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.declinedToStatePreferredLanguage == null &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.otherPreferredLanguage == null;\r\n\t}\r\n}\r\n\r\nexport class CalculateRouteResponse {\r\n\troute: string;\r\n\trouteSettings: any;\r\n\r\n\tconstructor(route: string, routeSettings: any = null) {\r\n\t\tthis.route = route;\r\n\t\tthis.routeSettings = routeSettings;\r\n\t}\r\n}\r\n\r\nexport interface IPostLogingRouteSettings {\r\n\tchangePassword: boolean;\r\n}\r\n","export class SortValueConverter {\r\n\ttoView(array: any, propertyName: any, direction: any) {\r\n\t\tvar factor = direction === 'ascending' ? 1 : -1;\r\n\r\n\t\tif (!array) return array;\r\n\r\n\t\treturn array\r\n\t\t\t.slice(0)\r\n\t\t\t.sort((a, b) => {\r\n\t\t\t\treturn a[propertyName] < b[propertyName]\r\n\t\t\t\t\t? -1 * factor\r\n\t\t\t\t\t: factor;\r\n\t\t\t});\r\n\t}\r\n}\r\n","export class StringHelper {\r\n\tstatic padLeft(text: string, padChar: string, size: number): string {\r\n\t\treturn (String(padChar).repeat(size) + text).substr((size * -1), size);\r\n\t}\r\n}\r\n","export class TextFilterValueConverter {\r\n\ttoView(value: any, when: any, replaceWith: any) {\r\n\t\treturn value.toString() === when ? replaceWith : value;\r\n\t}\r\n}\r\n","export class TrimValueConverter {\r\n\tfromView(value: any) {\r\n\t\treturn value ? value.trim() : '';\r\n\t}\r\n\ttoView(value: any) {\r\n\t\treturn value ? value.trim() : '';\r\n\t}\r\n}","import $ from 'jquery';\r\n\r\nexport class PortalUtility {\r\n\tscrollToTop() {\r\n\t\t$(\".page-host\").animate({ scrollTop: 0 }, \"fast\");\r\n\t}\r\n}\r\n","/**\r\n * Not for cryptographic use.\r\n */\r\nexport class Uuid {\r\n\t/**\r\n\t * Generate UUID to prevent id clashes for screenreaders.\r\n\t * This is *good enough* for ID generation.\r\n\t */\r\n\tstatic next() {\r\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tlet r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n\t\t\treturn v.toString(16);\r\n\t\t});\r\n\t}\r\n}","export class ValueHelper {\r\n\tstatic getValueOrDefault(value: any, defaultValue: any): any {\r\n\r\n\t\t/*\r\n\t\tif (typeof param === 'string') {\r\n\t\t\tthis.myvariable = \"\";\r\n\t\t}\r\n\t\telse if (typeof param === 'number') {\r\n\t\t\tthis.myvariable = 0;\r\n\t\t}\r\n\t\t*/\r\n\t\treturn (value !== undefined ? value : defaultValue);\r\n\t}\r\n}\r\n","export class AchToken {\r\n\taccountName: string = '';\r\n\taba: string = '';\r\n\taccountNumber: string = '';\r\n\taccountType: string = '';\r\n\taddressLine1: string = '';\r\n\tzipCode: string = '';\r\n\tcheckInfoKey: string = '';\r\n}\r\n","import { IApiResponse } from \"../interfaces/IApiResponse\";\r\n\r\nexport class ApiResponse implements IApiResponse {\r\n isSuccessful: boolean = false;\r\n resultCode?: string = '';\r\n value?: any = null;\r\n logMessages?: string[] = [];\r\n errors?: string[] = [];\r\n\r\n constructor(config: IApiResponse) {\r\n this.isSuccessful = config.isSuccessful;\r\n if (config.resultCode != undefined)\r\n this.resultCode = config.resultCode;\r\n if (config.value != undefined)\r\n this.value = config.value;\r\n if (config.logMessages != undefined)\r\n this.logMessages = config.logMessages;\r\n if (config.errors != undefined)\r\n this.errors = config.errors;\r\n }\r\n\r\n // at this point we're not taking advantage of multiple error messages, so this is a helper method to get\r\n // the only error message. If we support multiple errors in the future, we should do this differently \r\n // (at the very least rename this to getFirstErrorMessage() or something like that).\r\n getErrorMessage(): string {\r\n if (!this.isSuccessful)\r\n return (this.errors.length > 0) ? this.errors[0] : this.resultCode;\r\n return '';\r\n }\r\n}\r\n","import {\r\n\tAutopayFrequencyOption,\r\n\tAch,\r\n\tCard,\r\n\tPaymentMethodType\r\n} from './';\r\nimport { FeeCalculationType } from '../feeCalculationType';\r\nimport { FeeCalculationValue } from '../feeCalculationValue';\r\n\r\nexport class Autopay {\r\n\tkey?: number;\r\n\tcustomerAccountKey?: number;\r\n\tmaxPaymentAmount?: number;\r\n\tpayInFull?: boolean;\r\n\tfrequency?: AutopayFrequencyOption;\r\n\tdayOfMonth?: number;\r\n\tstartDate?: Date;\r\n\tendDate?: Date;\r\n\tnumberOfPayments?: number;\r\n\tpaymentMethod?: Ach | Card;\r\n\toverriddenFeeAmount?: number;\r\n\tfeeCalculationType: FeeCalculationType;\r\n\tfeeValue?: number;\r\n\tfeeValues: FeeCalculationValue[];\r\n}\r\n\r\nexport class AutopayResponse {\r\n\tautopayKey?: number;\r\n\tcustomerAccountKey?: number;\r\n\tmaxPaymentAmount?: number;\r\n\texpirationType?: number;\r\n\twillPayInFull?: boolean;\r\n\ttrigger?: AutopayFrequencyOption;\r\n\tstartDate?: string;\r\n\tdayOfMonth?: number;\r\n\tendDate?: string;\r\n\tnumberOfPayments?: number;\r\n\tpaymentMethod?: Ach | Card;\r\n\toverriddenFeeAmount?: number;\r\n\tfeeCalculationType: FeeCalculationType;\r\n\tfeeValue?: number;\r\n\tfeeValues: FeeCalculationValue[];\r\n}\r\n","export enum ExpirationType {\r\n\tEndDate = 0,\r\n\tNumberOfPayments = 1,\r\n\tIndefinite = 2\r\n}\r\n","export class AutopaySettings {\r\n\tenableAutopay: boolean;\r\n\tmaxFutureStartDateInDays: number;\r\n\tnumberofRetriesForCardDeclines: number;\r\n\tpayInFullOnly: boolean;\r\n\tportfolioKey: number;\r\n\tautopayPaymentOptions: Array;\r\n}\r\n\r\nexport class AutopayPaymentOptions {\r\n\tautopayRuleType: number;\r\n\tautopayRuleValue: number;\r\n\tportfolioKey: number;\r\n}\r\n\r\nexport class AutopayFrequencyOption {\r\n\tautopayTriggerType: number;\r\n\tvalue: number;\r\n\tdescription: string;\r\n\tplanType: number;\r\n}\r\n","export * from './autopay-expiration-type';\r\nexport * from './autopay-settings';\r\nexport * from './payment-method-type';\r\nexport * from './payment-method';\r\nexport * from './autopay';\r\n","import { PaymentMethodType } from \"./payment-method-type\";\r\n\r\nexport class PaymentMethod {\r\n public customerKey: number;\r\n public paymentMethodType: PaymentMethodType;\r\n public paymentMethodKey: number | null;\r\n\tpublic isPrimaryPaymentMethod: boolean;\r\n\tpublic isThirdParty: boolean;\r\n public accountName: string;\r\n public accountNumber: string;\r\n\tpublic city: string;\r\n\tpublic state: string;\r\n public zipCode: string;\r\n public paymentAccountNickname: string;\r\n \r\n\tconstructor() {\r\n\t\tthis.customerKey = -1;\r\n this.paymentMethodType = PaymentMethodType.NotSet;\r\n this.paymentMethodKey = null;\r\n this.isPrimaryPaymentMethod = false;\r\n this.accountName = '';\r\n this.accountNumber = '';\r\n this.zipCode = '';\r\n\t\tthis.paymentAccountNickname = '';\r\n\t}\r\n\r\n\tdeserialize(input: any): PaymentMethod {\r\n\t\tvar self: any = this;\r\n\t\tfor (let prop in input) {\r\n\t\t\tself[prop] = input[prop];\r\n\t\t}\r\n\t\treturn self;\r\n\t}\r\n}\r\n\r\nexport class Ach extends PaymentMethod {\r\n\tpublic aba: string;\r\n\tpublic achAccountType: AchAccountType\r\n}\r\n\r\nexport class Card extends PaymentMethod {\r\n\tpublic expirationMonth: number;\r\n\tpublic expirationYear: number;\r\n\tpublic cvv: string;\r\n\tpublic cardNetworkName: string;\r\n}\r\n\r\nexport enum AchAccountType {\r\n\tchecking = 1,\r\n\tsavings = 2,\r\n\tbusinessChecking = 3\r\n}\r\n","export enum PaymentMethodType {\r\n\tNotSet = -1,\r\n ECheck = 0,\r\n Card = 1\r\n}\r\n","export class BankAccount {\r\n\tbillingFirstName: string = '';\r\n\tbillingLastName: string = '';\r\n\tbillingName: string = '';\r\n\tbankAccountType: string = '';\r\n\tbankRoutingNumber: string = '';\r\n\tbankAccountNumber: string = '';\r\n\tbillingZipcode: string = '';\r\n}\r\n","export class Bucket {\r\n\tbucketKey: number;\r\n\tbusinessKey: number;\r\n\treferenceId: string;\r\n\tdisplayName: string;\r\n\tisActive: boolean;\r\n\tconsumerDisplayName: string;\r\n}\r\n","export class Business {\r\n\t// TODO: Add models for all this stuff\r\n\tportfolioSettings: any;\r\n\tezpayPortfolio: any;\r\n\tcanonicalPortfolio: any;\r\n\tportalSettings: any;\r\n\tsessionId: string;\r\n\tbusinessTimezone: any;\r\n\r\n\tconstructor(config: any) {\r\n\t\tif (config) {\r\n\t\t\tObject.assign(this, config);\r\n\r\n\t\t\tthis.portfolioSettings = [];\r\n\t\t\tif (this.ezpayPortfolio != null) {\r\n\t\t\t\tthis.portfolioSettings[this.ezpayPortfolioName] = this.ezpayPortfolio;\r\n\t\t\t\tthis.ezpayPortfolio.portfolioName = this.ezpayPortfolioName;\r\n\t\t\t}\r\n\r\n\t\t\tthis.canonicalPortfolio = null;\r\n\t\t\tif (this.ezpayPortfolio) {\r\n\t\t\t\tthis.canonicalPortfolio = this.ezpayPortfolio;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget ezpayPortfolioName() { return '___ezpay'; }\r\n\r\n\t// Retrieve a singular portfolio whose settings can be used to determine what value a business-constant property might have.\r\n\tfetchCanonicalPortfolioSettings() {\r\n\r\n\t\tif (!this.canonicalPortfolio) {\r\n\t\t\tvar portfolio = {\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tisAccountTypeVisible: false,\r\n\t\t\t\t\tisAccountTypeRequired: false\r\n\t\t\t\t},\r\n\t\t\t\tmerchantSettings: {\r\n\t\t\t\t\tportalRegistrationWithoutZipCode: false\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\treturn portfolio;\r\n\t\t}\r\n\r\n\t\treturn this.canonicalPortfolio;\r\n\t}\r\n\r\n\tfetchPortfolioSettings(portfolioName: any) {\r\n\t\tif (portfolioName) {\r\n\t\t\treturn this.portfolioSettings[portfolioName];\r\n\t\t}\r\n\t}\r\n\r\n\tgetMerchantZidAssociatedToPortfolioByPortfolioName(portfolioName: any) {\r\n\t\tvar portfolioSettings = this.fetchPortfolioSettings(portfolioName);\r\n\t\treturn portfolioSettings.merchantSettings.zid;\r\n\t}\r\n\r\n\tgetMerchantKeyAssociatedToPortfolioByPortfolioName(portfolioName: any) {\r\n\t\tvar portfolioSettings = this.fetchPortfolioSettings(portfolioName);\r\n\t\treturn portfolioSettings.merchantSettings.merchantKey;\r\n\t}\r\n\r\n\taddCustomerPortfolios(customerPortfolios: any) {\r\n\t\t// clear the original array, we are going to put everything back in\r\n\t\tthis.portfolioSettings.length = 0;\r\n\r\n\t\tif (this.ezpayPortfolio != null) {\r\n\t\t\tthis.portfolioSettings[this.ezpayPortfolioName] = this.ezpayPortfolio;\r\n\t\t}\r\n\t\tif (customerPortfolios) {\r\n\t\t\tfor (let ii = 0; ii < customerPortfolios.length; ++ii) {\r\n\t\t\t\tthis.portfolioSettings[customerPortfolios[ii].name] = customerPortfolios[ii];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// The canonical portfolio would preferably be a customer one, not ezpay.\r\n\t\tthis.canonicalPortfolio = null;\r\n\t\tif (customerPortfolios && customerPortfolios.length > 0) {\r\n\t\t\tthis.canonicalPortfolio = customerPortfolios[0];\r\n\t\t} else if (this.ezpayPortfolio) {\r\n\t\t\tthis.canonicalPortfolio = this.ezpayPortfolio;\r\n\t\t}\r\n\t}\r\n\r\n\t//Everything but TOPS you requires zipcode to register. Tops can only have one merchant, so I am only checking the first item in the array.\r\n\tallowsPortalRegistrationWithoutZipCode() {\r\n\t\tvar canonical = this.fetchCanonicalPortfolioSettings();\r\n\t\tif (canonical) {\r\n\t\t\treturn canonical.merchantSettings.portalRegistrationWithoutZipCode;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tapplyBusinessSettings(businessSettings: any) {\r\n\t\tthis.portalSettings.applyBusinessSettings(businessSettings);\r\n\t}\r\n\r\n\tapplyPortfolioSettingsToPortal(portfolioName: any, isForEzpay: any, merchantKey: number = 0) {\r\n\t\tlet portfolio = this.fetchPortfolioSettings(portfolioName);\r\n\t\tthis.portalSettings.applyPortfolioSettings(portfolio, isForEzpay, merchantKey);\r\n\t}\r\n}\r\n","export class CardToken {\r\n\tcardInfoKey: string = '';\r\n\tcardNumber: string = '';\r\n\texpirationDate: string = '';\r\n\tcardholderName: string = '';\r\n\taddressLine1: string = '';\r\n\tzipCode: string = '';\r\n}\r\n","export class CarouselItem {\r\n\taltText: string;\r\n\tlink: string;\r\n\timage: string;\r\n\torder: number;\r\n\r\n\tconstructor(item) {\r\n\t\tthis.altText = item.altText;\r\n\t\tthis.link = item.hyperlinkUrl;\r\n\t\tthis.order = item.orderNumber;\r\n\t\tthis.image = item.imageData\r\n\t\t\t? `data:image/png;base64,${item.imageData}`\r\n\t\t\t: null;\r\n\t}\r\n}","export class CombinedInstallmentAccountItem {\r\n\tcustomerAccountId: string;\r\n\tamount: number;\r\n}\r\n","export class ContactInformation {\r\n\tcustomerId: number = 0;\r\n\thomePhone: string = '';\r\n\tworkPhone: string = '';\r\n\tmobilePhone: string = '';\r\n\tsmsNotificationsEnabled: boolean = false;\r\n\temailAddress: string = '';\r\n\temailNotificationsEnabled: boolean = false;\r\n\tisPaperStatementsOptedIn: boolean = false;\r\n\tisEmailStatementsOptedIn: boolean = false;\r\n}\r\n","export class CreditCard {\r\n\tbillingName: string = '';\r\n\tbillingFirstName: string = '';\r\n\tbillingLastName: string = '';\r\n\tcreditCardNumber: string = '';\r\n\texpirationDate: string = '';\r\n\tbillingZipcode: string = '';\r\n}\r\n","import { computedFrom } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport * as numeral from 'numeral';\r\nimport { FormattingHelper } from '../helpers/formatting-helper';\r\nimport { Portfolio } from './portfolio';\r\nimport { PaymentHistory } from './payment-history';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Bucket } from './bucket';\r\nimport { MfaTwoFactorMethod } from './mfa/mfa-two-factor-method';\r\n\r\n\r\nexport class Customer {\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\taccounts: Array;\r\n\tsecuritySettings: any;\r\n\tprimaryAddress: any;\r\n\tid: any;\r\n\tcustomerKey: number;\r\n\tnotificationSettings: any;\r\n\tdocumentSettings: CustomerDocumentSettings;\r\n\tisTemporaryPassword: any;\r\n\temail: any;\r\n\tmessages: any;\r\n\thomePhone: any;\r\n\tworkPhone: any;\r\n\tmobilePhone: any;\r\n\tisRegistered: any;\r\n\thasPrimaryPaymentMethod: boolean;\r\n\tpreferences: any;\r\n\tpaymentMethods: any;\r\n\tportfolios: any;\r\n\tpreferredLanguageSettings: CustomerPreferredLanguageSettings;\r\n\tmfaSettings: CustomerMfaSettings;\r\n \r\n\tconstructor(business: any, config?: any) {\r\n\t\tif (config) {\r\n\t\t\tthis.initialize(business, config);\r\n\t\t} else {\r\n\t\t\tlet sessionCustomer = sessionStorage.customer;\r\n\t\t\tif (sessionCustomer) {\r\n\t\t\t\tlet parsedCustomer = JSON.parse(sessionCustomer);\r\n\t\t\t\tif (parsedCustomer) {\r\n\t\t\t\t\tthis.initialize(business, parsedCustomer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('firstName', 'lastName')\r\n\tget name() {\r\n\t\tlet fullName: string = '';\r\n\t\tif (this.firstName) {\r\n\t\t\tfullName += this.firstName;\r\n\t\t}\r\n\t\tif (this.lastName) {\r\n\t\t\tif (fullName.length > 0) {\r\n\t\t\t\tfullName += ' ';\r\n\t\t\t}\r\n\t\t\tfullName += this.lastName;\r\n\t\t}\r\n\t\treturn fullName;\r\n\t}\r\n\r\n\tcalculateLastActivityOld(paymentList: any) {\r\n\t\tlet now = moment();\r\n\t\tthis.accounts.forEach(account => {\r\n\t\t\taccount.lastActivity = null;\r\n\r\n\t\t\tpaymentList.forEach(payment => {\r\n\t\t\t\tlet m = moment(payment.paymentDate);\r\n\t\t\t\tif (m < now && payment.accountName === account.name && (payment.result === 'Approved' || payment.transactionType === 'Rehab event')) {\r\n\t\t\t\t\tif (account.lastActivity === null) {\r\n\t\t\t\t\t\taccount.lastActivity = payment.paymentDate;\r\n\t\t\t\t\t} else if (moment(account.lastActivity) < m) {\r\n\t\t\t\t\t\taccount.lastActivity = payment.paymentDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\tcalculateLastActivity(paymentList: any, i18n: I18N) {\r\n\t\tlet now = moment();\r\n\t\tthis.accounts.forEach(account => {\r\n\t\t\taccount.lastActivity = null;\r\n\t\t\tpaymentList.forEach(payment => {\r\n\t\t\t\tlet m = moment(payment.paymentDate);\r\n\t\t\t\tif (payment.accountName === account.name) {\r\n\t\t\t\t\tif (payment.message !== null && payment.message.slice(-1) === '.') {\r\n\t\t\t\t\t\tpayment.message = payment.message.substring(0, payment.message.length - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar message = i18n.i18next.t('paymentReceivedOn',\"Payment received on \") + \" \";\r\n\t\t\t\t\tif (payment.result !== \"Approved\")\r\n\t\t\t\t\t\tmessage = i18n.i18next.t('paymentXOn', { defaultValue: \"Payment \" + payment.result.toLowerCase() + \" on \", result: payment.result.toLowerCase() }) + \" \";\r\n\r\n\t\t\t\t\tif (account.lastActivity === null || moment(account.lastActivity) < m) {\r\n\t\t\t\t\t\taccount.lastActivity = payment.paymentDate;\r\n\t\t\t\t\t\tif (payment.message !== null && payment.message.search('Pending first scheduled payment') > -1) m = moment(payment.startDate);\r\n\t\t\t\t\t\taccount.lastActivityMessage = payment.transactionType === 'Rehab event'\r\n\t\t\t\t\t\t\t? payment.message + ' on ' + m.format('M/D/YYYY')\r\n\t\t\t\t\t\t\t: (message + m.format('M/D/YYYY'));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tupdateSecuritySettings(username: any, question1: any, question2: any) {\r\n\t\tif (!this.securitySettings) {\r\n\t\t\tthis.securitySettings = {};\r\n\t\t}\r\n\r\n\t\tthis.securitySettings.username = username;\r\n\t\tthis.securitySettings.question1 = question1;\r\n\t\tthis.securitySettings.question2 = question2;\r\n\t}\r\n\r\n\tsetZipCode(zip: any) {\r\n\t\tif (!this.primaryAddress) {\r\n\t\t\tthis.primaryAddress = new Address();\r\n\t\t}\r\n\t\tthis.primaryAddress.zip = zip;\r\n\t}\r\n\r\n\tstatic anonymous(business: any, accountId: any, systemId: any, zipCode?: any, bucketKey?: number) {\r\n\t\treturn new Customer(business, {\r\n\t\t\tfirstName: 'Anonymous',\r\n\t\t\tprimaryAddress: {\r\n\t\t\t\tzip: zipCode\r\n\t\t\t},\r\n\t\t\taccounts: [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: accountId,\r\n\t\t\t\t\tportfolioName: business.ezpayPortfolioName,\r\n\t\t\t\t\tname: accountId,\r\n\t\t\t\t\toriginalBalance: 0,\r\n\t\t\t\t\tbalance: Number.MAX_VALUE,\r\n\t\t\t\t\tsystemId: systemId,\r\n\t\t\t\t\tbucketKey: bucketKey\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t});\r\n\t}\r\n\r\n\tinitialize(business: any, config: any) {\r\n\t\tthis.id = config.id;\r\n\t\tthis.customerKey = config.customerKey;\r\n\t\tthis.securitySettings = new CustomerSecuritySettings(config.securitySettings);\r\n\t\tthis.notificationSettings = new CustomerNotificationSettings(config.notificationSettings);\r\n\t\tthis.documentSettings = new CustomerDocumentSettings(config.documentSettings);\r\n\t\tthis.preferredLanguageSettings = new CustomerPreferredLanguageSettings(config);\r\n\t\tthis.mfaSettings = new CustomerMfaSettings(config.mfaSettings);\r\n\r\n\t\tif (!config.customerAccounts && !config.accounts) {\r\n\t\t\tthis.isTemporaryPassword = true;\r\n\t\t} else {\r\n\t\t\tthis.firstName = config.firstName || \"\";\r\n\t\t\tthis.lastName = config.lastName || \"\";\r\n\t\t\tthis.email = config.email || \"\";\r\n\r\n\t\t\tthis.messages = (config.messages || []).map((item) => new Message(item));\r\n\r\n\t\t\tthis.accounts = (config.customerAccounts || config.accounts).map((item) => new Account(item));\r\n\r\n\t\t\tif (config.primaryAddress) {\r\n\t\t\t\tthis.primaryAddress = new Address(config.primaryAddress);\r\n\t\t\t} else {\r\n\t\t\t\tthis.primaryAddress = new Address({\r\n\t\t\t\t\tline1: config.addressLine1,\r\n\t\t\t\t\tline2: config.addressLine2,\r\n\t\t\t\t\tcity: config.addressCity,\r\n\t\t\t\t\tstate: config.addressState,\r\n\t\t\t\t\tzip: config.addressZip\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.homePhone = config.phone || config.homePhone || \"\";\r\n\t\t\tthis.workPhone = config.workPhone || \"\";\r\n\t\t\tthis.mobilePhone = config.mobilePhone || \"\";\r\n\r\n\t\t\tthis.isRegistered = !!config.securitySettings;\r\n\r\n\t\t\tthis.hasPrimaryPaymentMethod = config.hasPrimaryPaymentMethod;\r\n\r\n\t\t\tthis.preferences = new CustomerPreferences(config.preferences);\r\n\r\n\t\t\tthis.paymentMethods = (config.paymentMethods || []).map((item) => new CustomerPaymentMethod(item));\r\n\r\n\t\t\tthis.isTemporaryPassword = false;\r\n\r\n\t\t\tthis.portfolios = config.portfolios;\r\n\t\t\tif (business) {\r\n\t\t\t\tif (!!config.portfolios && Array.isArray(config.portfolios)) {\r\n\t\t\t\t\tbusiness.addCustomerPortfolios(this.portfolios.map(item => new Portfolio(item)));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbusiness.addCustomerPortfolios();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class Message {\r\n\tid: any;\r\n\teffectiveDate: any;\r\n\ttext: any;\r\n\r\n\tconstructor(config: any) {\r\n\t\tthis.id = config.id;\r\n\t\tthis.effectiveDate = config.effectiveDate;\r\n\t\tthis.text = config.text;\r\n\t}\r\n}\r\n\r\nexport class Account {\r\n\tstatus: any;\r\n\tstate: any;\r\n\tstateDescription: any;\r\n\tid: string;\r\n\tcustomerAccountKey: number;\r\n\tname: string;\r\n\tcontactName: string;\r\n\treferenceId: string;\r\n\tdisplayName: string;\r\n\toriginalBalance: number;\r\n\tbalance: number;\r\n\tsystemId: string;\r\n\tportfolioName: string;\r\n\thasExternalPaymentPlans: boolean;\r\n\tpaymentPlans: any;\r\n\tshowRehabPaymentTerms: any;\r\n\tproposedAmount: any;\r\n\tadjustedBalances: any;\r\n\tdescription: any;\r\n\tbalanceItems: any;\r\n\tminPayment: any;\r\n\tlastActivity: Date;\r\n\tlastActivityMessage: string;\r\n\thasActiveAutopay: boolean;\r\n\tbucket: Bucket | null;\r\n\tbucketKey: number | null;\r\n\toriginalLenderName: string;\r\n\trepaymentType: string;\r\n\r\n\tconstructor(config: any) {\r\n\t\tthis.status = config.status;\r\n\t\tthis.state = config.state;\r\n\t\tthis.stateDescription = config.stateDescription;\r\n\t\tthis.id = config.id || \"\";\r\n\t\tthis.customerAccountKey = config.customerAccountKey;\r\n\t\tthis.name = config.name || config.referenceId || config.id || \"\";\r\n\t\tthis.contactName = config.contactName;\r\n\t\tthis.referenceId = config.referenceId;\r\n\t\tthis.displayName = config.displayName || this.name;\r\n\t\tthis.originalBalance = config.originalBalance || 0;\r\n\t\tthis.balance = config.balance || 0;\r\n\t\tthis.systemId = config.systemId || '0';\r\n\t\tthis.portfolioName = config.portfolioName || '';\r\n\t\tthis.hasExternalPaymentPlans = config.hasExternalPaymentPlans || false;\r\n\t\tthis.paymentPlans = (config.paymentPlans || []).map((item => new PaymentPlan(item)));\r\n\t\tthis.showRehabPaymentTerms = config.showRehabPaymentTerms;\r\n\t\tthis.proposedAmount = config.proposedAmount;\r\n\t\tthis.adjustedBalances = config.adjustedBalances;\r\n\t\tthis.description = config.description;\r\n\t\tthis.balanceItems = config.balanceItems;\r\n\t\tthis.minPayment = config.minPayment;\r\n\t\tthis.hasActiveAutopay = config.hasActiveAutopay || false;\r\n\t\tthis.bucketKey = config.bucketKey || null;\r\n\t\tthis.bucket = config.bucket || null;\r\n\t\tthis.originalLenderName = config.originalLenderName || '';\r\n\t\tthis.repaymentType = config.repaymentType || '';\r\n\t}\r\n}\r\n\r\nexport class Payment {\r\n\tpaymentDate: string;\r\n\taccountName: string;\r\n\tcontactName: string;\r\n\tpaymentAmount: number;\r\n\tresult: string;\r\n\tPNRef: string;\r\n\ttransactionType: string;\r\n\tmessage: string;\r\n\tstartDate: string;\r\n\tbucketKey: number;\r\n\r\n\tconstructor(item: PaymentHistory) {\r\n\t\tthis.paymentDate = item.paymentDate;\r\n\t\tthis.accountName = item.accountNumber;\r\n\t\tthis.contactName = item.contactName;\r\n\t\tthis.paymentAmount = item.paymentAmount;\r\n\t\tthis.result = item.paymentResult || \"Approved\";\r\n\t\tthis.PNRef = item.pnRef;\r\n\t\tthis.transactionType = item.transactionType;\r\n\t\tthis.message = item.message;\r\n\t\tthis.startDate = item.startDate;\r\n\t}\r\n\r\n\tstatic fetchFromSession() {\r\n\t\tlet session = sessionStorage.payments; // portal refactor note: with the below commented out, this does nothing?\r\n\t\t// portal refactor note: sessionpayments doesn't appear to be declared/used anywhere else, so commenting this out\r\n\t\t//if (sessionpayments) {\r\n\t\t// let parsed = JSON.parse(session);\r\n\t\t// if (parsed) {\r\n\t\t// return parsed.map(f => new Payment(f)); \r\n\t\t// }\r\n\t\t//} \r\n\t}\r\n}\r\n\r\nexport class PaymentPlan {\r\n\tstartDate: any;\r\n\tnextPaymentDate: any;\r\n\tmostRecentPaymentDate: any;\r\n\tplanEndDate: any;\r\n\ttotalPayments: any;\r\n\tpaymentsSoFar: any;\r\n\tnextPaymentAmount: any;\r\n\tamountRemaining: any;\r\n\tpaymentsSkipped: boolean;\r\n\tid: any;\r\n\tkey: number;\r\n\tstatus: any;\r\n\tpayments: any;\r\n\tpaymentInstrument: any;\r\n\tisRecurring: boolean;\r\n\tisSingleFuture: boolean;\r\n\tisCombinedCustomerAccount: boolean;\r\n\r\n\tconstructor(config: any) {\r\n\t\tthis.startDate = config.startDate;\r\n\t\tthis.nextPaymentDate = config.nextPaymentDate;\r\n\t\tthis.mostRecentPaymentDate = config.mostRecentPaymentDate;\r\n\t\tthis.planEndDate = config.planEndDate;\r\n\t\tthis.totalPayments = config.totalPayments;\r\n\t\tthis.paymentsSoFar = config.paymentsSoFar;\r\n\t\tthis.nextPaymentAmount = config.nextPaymentAmount;\r\n\t\tthis.amountRemaining = config.amountRemaining;\r\n\t\tthis.paymentsSkipped = config.paymentsSkipped;\r\n\t\tthis.id = config.id;\r\n\t\tthis.key = config.key;\r\n\t\tthis.status = config.status;\r\n\t\tthis.payments = config.payments;\r\n\t\tthis.paymentInstrument = config.paymentInstrument;\r\n\t\tthis.isRecurring = config.isRecurring || false;\r\n\t\tthis.isSingleFuture = config.isSingleFuture || false;\r\n\t\tthis.isCombinedCustomerAccount = config.isCombinedCustomerAccount || false;\r\n\t}\r\n}\r\n\r\nexport class Address {\r\n\tline1: string = '';\r\n\tline2: string = '';\r\n\tcity: string = '';\r\n\tstate: string = '';\r\n\tzip: string = '';\r\n\r\n\tconstructor(config?: any) {\r\n\t\tthis.line1 = config.line1 || \"\";\r\n\t\tthis.line2 = config.line2 || \"\";\r\n\t\tthis.city = config.city || \"\";\r\n\t\tthis.state = config.state || \"\";\r\n\t\tthis.zip = config.zip || \"\";\r\n\t}\r\n\r\n\t@computedFrom('city', 'state', 'zip')\r\n\tget cityStateZip() {\r\n\t\tlet comma = !!this.city && !!this.state ? ', ' : '';\r\n\t\treturn `${this.city}${comma}${this.state} ${this.zip}`;\r\n\t}\r\n}\r\n\r\nexport class CustomerPreferences {\r\n\temailWhenDue: boolean;\r\n\temailWhenLate: boolean;\r\n\temailWhenPaymentIsProcessed: boolean;\r\n\temailWhenPaymentFails: boolean;\r\n\tphoneCalls: boolean;\r\n\r\n\tconstructor(config: any) {\r\n\t\tif (config) {\r\n\t\t\tthis.emailWhenDue = config.emailWhenDue || false;\r\n\t\t\tthis.emailWhenLate = config.emailWhenLate || false;\r\n\t\t\tthis.emailWhenPaymentIsProcessed = config.emailWhenPaymentIsProcessored || false;\r\n\t\t\tthis.emailWhenPaymentFails = config.emailWhenPaymentFails || false;\r\n\t\t\tthis.phoneCalls = config.phoneCalls || false;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class CustomerNotificationSettings {\r\n\tsmsIsOptedIn: boolean;\r\n\tsmsIsValidated: boolean;\r\n\tisEmailOptedIn: boolean;\r\n\r\n\tconstructor(config: any) {\r\n\t\tif (!config)\r\n\t\t\tconfig = {};\r\n\t\tthis.smsIsOptedIn = (config.smsIsOptedIn === null || typeof (config.smsIsOptedIn) === \"undefined\") ? false : config.smsIsOptedIn;\r\n\t\tthis.smsIsValidated = (config.smsIsValidated === null || typeof (config.smsIsValidated) === \"undefined\") ? false : config.smsIsValidated;\r\n\t\tthis.isEmailOptedIn = config.isEmailOptedIn || false;\r\n\t}\r\n}\r\n\r\nexport class CustomerDocumentSettings {\r\n\tisPaperOptedIn: boolean;\r\n\tisEmailOptedIn: boolean;\r\n\r\n\tconstructor(config: any) {\r\n\t\tconfig = config || {};\r\n\t\tthis.isPaperOptedIn = config.isPaperOptedIn || false;\r\n\t\tthis.isEmailOptedIn = config.isEmailOptedIn || false;\r\n\t}\r\n}\r\n\r\nexport class CustomerSecuritySettings {\r\n\tusername: string;\r\n\tquestion1: string;\r\n\tquestion2: string;\r\n\twantsEmailNotifications: boolean;\r\n\r\n\tconstructor(config: any) {\r\n\t\tif (!config) config = {};\r\n\t\tthis.username = config.username || \"\";\r\n\t\tthis.question1 = config.securityQuestion1 || \"\";\r\n\t\tthis.question2 = config.securityQuestion2 || \"\";\r\n\t}\r\n}\r\n\r\nexport class CustomerPaymentMethod {\r\n\tid: any;\r\n\tname: string;\r\n\tdescription: string;\r\n\r\n\tconstructor(config: any) {\r\n\t\tthis.id = config.id;\r\n\t\tthis.name = config.name || \"\";\r\n\t\tthis['type'] = config['type'] || \"\";\r\n\t\tthis.description = config.description || \"\";\r\n\t}\r\n}\r\n\r\nexport class CustomerPreferredLanguageSettings {\r\n\tpreferredLanguageCode: string | null;\r\n\tdeclinedToStatePreferredLanguage: boolean | null;\r\n\totherPreferredLanguage: string | null;\r\n\r\n\tconstructor(config: any) {\r\n\t\tthis.preferredLanguageCode = config.preferredLanguageCode;\r\n\t\tthis.declinedToStatePreferredLanguage = config.declinedToStatePreferredLanguage;\r\n\t\tthis.otherPreferredLanguage = config.otherPreferredLanguage;\r\n\t}\r\n}\r\n\r\nexport class CustomerMfaSettings {\r\n\ttwoFactorEnabled: boolean;\r\n\tpreferredTwoFactorMethod: MfaTwoFactorMethod;\r\n\ttwoFactorVerified: boolean;\r\n\temail: string;\r\n\tphone: string;\r\n\r\n\tconstructor(config: any) {\r\n\t\tif (!config) { config = {}; }\r\n\t\tthis.twoFactorEnabled = config.twoFactorEnabled || false;\r\n\t\tthis.preferredTwoFactorMethod = (MfaTwoFactorMethod)[config.preferredTwoFactorMethod] || MfaTwoFactorMethod.NotSet;\r\n\t\tthis.twoFactorVerified = false;\r\n\t\tthis.email = config.email || null;\r\n\t\tthis.phone = config.phone || null;\r\n\t}\r\n}\r\n\r\nexport class TemplateEngine {\r\n\taccount: any;\r\n\tbusiness: any;\r\n\tpaymentInformation: any;\r\n\r\n\tconstructor(config: any) {\r\n\t\tthis.account = config.account;\r\n\t\tthis.business = config.business;\r\n\t\tthis.paymentInformation = config.business.portalSettings.merchantInformation === undefined ? null : config.portalSettings.merchantInformation;\r\n\t}\r\n\r\n\trun(str: any, obj0?: any) {\r\n\t\tif (!str)\r\n\t\t\treturn null;\r\n\t\tvar obj = this.buildTemplateKeyValueMap(obj0);\r\n\t\tvar temp = \"\";\r\n\t\tvar newStr = \"\";\r\n\t\tvar isParsing = false;\r\n\t\tfor (var i = 0, len = str.length; i < len; i++) {\r\n\t\t\tif (isParsing) {\r\n\t\t\t\tif (str[i] === \"{\") {\r\n\t\t\t\t\tnewStr += \"{\" + temp;\r\n\t\t\t\t\ttemp = \"\";\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tif (str[i] === \"}\") {\r\n\t\t\t\t\tif (obj[temp])\r\n\t\t\t\t\t\tnewStr += obj[temp];\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tnewStr += temp;\r\n\t\t\t\t\ttemp = \"\";\r\n\t\t\t\t\tisParsing = false;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\ttemp += str[i];\r\n\t\t\t} else {\r\n\t\t\t\tif (str[i] === \"{\") {\r\n\t\t\t\t\tisParsing = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewStr += str[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn newStr;\r\n\t}\r\n\r\n\tbuildTemplateKeyValueMap(obj0: any) {\r\n\t\tif (!obj0)\r\n\t\t\tobj0 = {};\r\n\t\tvar obj1 = this.buildAccountTemplateKeyValueMap();\r\n\t\tvar obj2 = this.buildMerchantTemplateKeyValueMap();\r\n\t\tvar obj3 = this.buildPaymentInformationTemplateKeyValueMap();\r\n\t\tvar obj = Object.assign({}, obj0, obj1, obj2, obj3);\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tbuildAccountTemplateKeyValueMap() {\r\n\t\tvar obj = {};\r\n\t\tif (this.account) {\r\n\t\t\tobj = {\r\n\t\t\t\t\"accountNumber\": this.account.name,\r\n\t\t\t\t\"account\": this.account.name,\r\n\t\t\t\t\"balance\": numeral(this.account.balance).format('($0,0.00)'),\r\n\t\t\t\t\"paidBalance\": \"$0,0.00\",\r\n\t\t\t\t\"PendingBalance\": \"$0,0.00\"\r\n\t\t\t}\r\n\t\t\tif (this.account.adjustedBalances) {\r\n\t\t\t\tobj[\"paidBalance\"] = this.account.adjustedBalances.paidBalance;\r\n\t\t\t\tobj[\"PendingBalance\"] = this.account.adjustedBalances.pendingBalance\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tbuildMerchantTemplateKeyValueMap() {\r\n\t\tvar obj = {};\r\n\t\tif (this.business) {\r\n\t\t\tobj = {\r\n\t\t\t\t\"accountNumberLabel\": this.business.portalSettings.accountNumberLabel,\r\n\t\t\t\t\"merchantName\": this.business.name,\r\n\t\t\t\t\"rehabPhoneNumber\": this.business.phone,\r\n\t\t\t\t\"merchantPhoneNumber\": this.business.phone,\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tbuildPaymentInformationTemplateKeyValueMap() {\r\n\t\tvar obj = {};\r\n\t\tif (this.paymentInformation) {\r\n\t\t\tobj = {\r\n\t\t\t\t\"date\": moment(this.paymentInformation.transactionDate).format('M/D/YYYY'),\r\n\t\t\t\t\"transactionDate\": moment(this.paymentInformation.transactionDate).format('M/D/YYYY'),\r\n\t\t\t\t\"discount\": this.paymentInformation.discount,\r\n\t\t\t\t\"accountName\": this.paymentInformation.name,\r\n\t\t\t\t\"zipCode\": this.paymentInformation.zipCode,\r\n\t\t\t\t\"zip\": this.paymentInformation.zipCode,\r\n\t\t\t\t\"description\": this.paymentInformation.transactionDescription,\r\n\t\t\t\t\"transactionDescription\": this.paymentInformation.transactionDescription,\r\n\t\t\t\t\"fee\": numeral(this.paymentInformation.fee).format('($0,0.00)'),\r\n\t\t\t\t\"serviceFee\": numeral(this.paymentInformation.fee).format('($0,0.00)'),\r\n\t\t\t\t\"amount\": numeral(this.paymentInformation.amount).format('($0,0.00)'),\r\n\t\t\t\t\"sumOfInstallment\": numeral(this.paymentInformation.amount).format('($0,0.00)'),\r\n\t\t\t\t\"subtotal\": numeral(this.paymentInformation.amount).format('($0,0.00)'),\r\n\t\t\t\t\"total\": numeral(this.paymentInformation.amount + this.paymentInformation.fee).format('($0,0.00)'),\r\n\t\t\t\t\"totalAmount\": numeral(this.paymentInformation.amount + this.paymentInformation.fee).format('($0,0.00)'),\r\n\t\t\t\t\"address1\": this.paymentInformation.address1,\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.installment) {\r\n\t\t\t\tobj[\"numberOfRetries\"] = this.paymentInformation.installment.numberOfRetriesForCardDeclines;\r\n\t\t\t\tobj[\"nextPaymentDate\"] = this.paymentInformation.installment.nextPaymentDate;\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.card) {\r\n\t\t\t\tobj[\"cardNumber\"] = typeof this.paymentInformation.card.cardNumber !== 'undefined' ? '***' + FormattingHelper.mask(this.paymentInformation.card.cardNumber) : \"\";\r\n\t\t\t\tobj[\"expDate\"] = this.paymentInformation.card.expirationDate;\r\n\t\t\t\tobj[\"paymentMethod\"] = this.paymentInformation.card.description;\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.check) {\r\n\t\t\t\tobj[\"bankAccount\"] = typeof this.paymentInformation.check.bankAccount !== 'undefined' ? '***' + FormattingHelper.mask(this.paymentInformation.check.bankAccount.mask) : \"\",\r\n\t\t\t\t\tobj[\"transitNumber\"] = this.paymentInformation.check.transitNumber;\r\n\t\t\t\tobj[\"checkNumber\"] = this.paymentInformation.check.checkNumber;\r\n\t\t\t\tobj[\"paymentMethod\"] = this.paymentInformation.check.description;\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn obj;\r\n\t}\r\n}\r\n","export class ApplePayLineItem implements ApplePayJSV14.ApplePayLineItem {\r\n\tlabel: string;\r\n\tamount: string;\r\n\ttype?: ApplePayJS.ApplePayLineItemType;\r\n\tpaymentTiming?: ApplePayJSV14.ApplePayPaymentTiming;\r\n\trecurringPaymentStartDate?: Date;\r\n\trecurringPaymentEndDate?: Date;\r\n\trecurringPaymentIntervalUnit?: ApplePayJSV14.ApplePayRecurringPaymentDateUnit;\r\n\trecurringPaymentIntervalCount?: number;\r\n\tdeferredPaymentDate?: Date;\r\n}\r\n","export class ApplePayPaymentMethodUpdate implements ApplePayJSV14.ApplePayPaymentMethodUpdate {\r\n\tnewTotal: ApplePayJS.ApplePayLineItem;\r\n\tnewRecurringPaymentRequest?: ApplePayJSV14.ApplePayRecurringPaymentRequest;\r\n\terrors?: ApplePayError[];\r\n\tnewLineItems?: ApplePayJS.ApplePayLineItem[];\r\n}\r\n","export class ApplePayPaymentRequest implements ApplePayJSV14.ApplePayPaymentRequest {\r\n\ttotal: ApplePayJSV14.ApplePayLineItem;\r\n\tcountryCode: string;\r\n\tcurrencyCode: string;\r\n\tmerchantCapabilities: ApplePayJS.ApplePayMerchantCapability[];\r\n\tsupportedNetworks: string[];\r\n\tlineItems?: ApplePayJS.ApplePayLineItem[];\r\n\tbillingContact?: ApplePayJS.ApplePayPaymentContact;\r\n\trequiredBillingContactFields?: ApplePayJS.ApplePayContactField[];\r\n\trequiredShippingContactFields?: ApplePayJS.ApplePayContactField[];\r\n\tshippingContact?: ApplePayJS.ApplePayPaymentContact;\r\n\tshippingMethods?: ApplePayJS.ApplePayShippingMethod[];\r\n\tshippingType?: ApplePayJS.ApplePayShippingType;\r\n\tsupportedCountries?: string[];\r\n\tapplicationData?: string;\r\n\trecurringPaymentRequest?: ApplePayJSV14.ApplePayRecurringPaymentRequest;\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { State } from '../../../services/global-state';\r\nimport { DigitalWalletSettings, DigitalWalletType } from '..';\r\n\r\nexport class ApplePaySettings extends DigitalWalletSettings {\r\n\tversion: number;\r\n\tacceptsCredit: boolean;\r\n\tacceptsDebit: boolean;\r\n\tsupportedNetworks: string[];\r\n\ttotalAmount?: string;\r\n\ttotalLabel?: string;\r\n\ttotalType?: ApplePayJS.ApplePayLineItemType;\r\n\tcountryCode?: string;\r\n\tcurrencyCode?: string;\r\n\t// recurring request specific\r\n\trecurringAmount?: string;\r\n\trecurringLabel?: string;\r\n\tpaymentDescription?: string;\r\n\tpaymentTiming?: ApplePayJSV14.ApplePayPaymentTiming;\r\n\trecurringPaymentStartDate?: Date;\r\n\trecurringPaymentEndDate?: Date;\r\n\trecurringPaymentIntervalUnit?: ApplePayJSV14.ApplePayRecurringPaymentDateUnit;\r\n\trecurringPaymentIntervalCount?: number;\r\n\tbillingAgreement?: string;\r\n\tmangementURL?: string;\r\n\t// deferred request specific\r\n\tdeferredPaymentDate?: Date;\r\n\r\n\tconstructor(protected i18n: I18N, protected globalState: State) {\r\n\t\tsuper(i18n, globalState, DigitalWalletType.ApplePay);\r\n\t}\r\n\r\n\t// version 2 includes all cards Payrazr accepts\r\n\t// we are using version 3 to match imported @types/applepayjs and stay aligned with channels\r\n\t// https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/1916122-supportednetworks\r\n\thasValidVersion(): boolean {\r\n\t\treturn this.version && !isNaN(this.version) && this.version > 0;\r\n\t}\r\n\r\n\tvalidate(errors: any) {\r\n\t\tif (!this.acceptsCredit && !this.acceptsDebit) {\r\n\t\t\terrors.push(this.i18n.i18next.t('merchantMustAcceptDebitOrCreditCards', 'Merchant must accept Debit or Credit cards'));\r\n\t\t}\r\n\r\n\t\tif (!this.supportedNetworks || this.supportedNetworks.length === 0) {\r\n\t\t\terrors.push(this.i18n.i18next.t('invalidNetowrks', 'Invalid networks') + `: a valid network is required`);\r\n\t\t}\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../merchant-consumer-portal-fee-settings';\r\nimport { PaymentMethodType } from '../../../services/hpf-transaction-service';\r\nimport { InstallmentFrequency } from '../../installment-frequency';\r\n\r\nexport class ApplePayUtil {\r\n\tstatic getRecurringPaymentDateUnit(selectedFrequency: InstallmentFrequency): ApplePayJSV14.ApplePayRecurringPaymentDateUnit {\r\n\t\tswitch (selectedFrequency) {\r\n\t\t\tcase InstallmentFrequency.Monthly:\r\n\t\t\tcase InstallmentFrequency.FifteenthOfEachMonth:\r\n\t\t\tcase InstallmentFrequency.EndOfMonth:\r\n\t\t\tcase InstallmentFrequency.Every2Months:\r\n\t\t\t\treturn 'month';\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'day';\r\n\t\t}\r\n\t}\r\n\r\n\tstatic getRecurringPaymentIntervalCount(selectedFrequency: InstallmentFrequency): number {\r\n\t\tswitch (selectedFrequency) {\r\n\t\t\t// months\r\n\t\t\tcase InstallmentFrequency.Monthly:\r\n\t\t\tcase InstallmentFrequency.FifteenthOfEachMonth:\r\n\t\t\tcase InstallmentFrequency.EndOfMonth:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase InstallmentFrequency.Every2Months:\r\n\t\t\t\treturn 2;\r\n\t\t\t// days\r\n\t\t\tcase InstallmentFrequency.Weekly:\r\n\t\t\t\treturn 7;\r\n\t\t\tcase InstallmentFrequency.Every2Weeks:\r\n\t\t\t\treturn 14;\r\n\t\t\tcase InstallmentFrequency.Every28Days:\r\n\t\t\t\treturn 28;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic getBillingAgreement(merchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings, i18n: I18N): string {\r\n\t\tif (!merchantConsumerPortalFeeSettings.feesEnabled || !merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\treturn merchantConsumerPortalFeeSettings.allowServiceFeesOnEveryTransaction\r\n\t\t\t? i18n.i18next.t('serviceFeeOnEveryTransaction', 'A service fee will be charged on every transaction')\r\n\t\t\t: i18n.i18next.t('serviceFeeOnFirstTransaction', 'A service fee will be charged on the first transaction');\r\n\t}\r\n\r\n\tstatic getPaymentMethodType(paymentMethod: ApplePayJS.ApplePayPaymentMethod): PaymentMethodType {\r\n\t\t// map to PaymentMethodType\r\n\t\tlet paymentMethodType: PaymentMethodType = PaymentMethodType.NotSet;\r\n\t\tswitch (paymentMethod.type.toLowerCase()) {\r\n\t\t\tcase 'credit':\r\n\t\t\t\tpaymentMethodType = PaymentMethodType.Credit;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'debit':\r\n\t\t\tcase 'prepaid':\r\n\t\t\t\tpaymentMethodType = PaymentMethodType.Debit;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tpaymentMethodType = PaymentMethodType.NotSet;\r\n\t\t}\r\n\r\n\t\treturn paymentMethodType;\r\n\t}\r\n\r\n\tstatic completeSession(submitApplePayEvent: CustomEvent, isSuccessful: boolean): void {\r\n\t\tconst applePayResult = isSuccessful ? ApplePaySession.STATUS_SUCCESS : ApplePaySession.STATUS_FAILURE;\r\n\t\tsubmitApplePayEvent.detail.digitalWalletSession?.completePayment(applePayResult);\r\n\t\tif (!isSuccessful) {\r\n\t\t\t// close the session. we display error on receipt page\r\n\t\t\tsubmitApplePayEvent.detail.digitalWalletSession?.abort();\r\n\t\t}\r\n\t}\r\n}\r\n","import { ApplePayLineItem } from '../apple-pay-line-item';\r\n\r\nexport class ApplePayLineItemBuilder {\r\n\tprivate applePayLineItem: ApplePayJSV14.ApplePayLineItem;\r\n\r\n\tconstructor() {\r\n\t\tthis.applePayLineItem = new ApplePayLineItem();\r\n\t}\r\n\r\n\tsetLabel(label?: string): this {\r\n\t\tthis.applePayLineItem.label = label ?? '';\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetAmount(amount: string): this {\r\n\t\tthis.applePayLineItem.amount = amount ?? '0';\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetType(type?: ApplePayJS.ApplePayLineItemType): this {\r\n\t\tthis.applePayLineItem.type = type ?? 'final';\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetPaymentTiming(paymentTiming: ApplePayJSV14.ApplePayPaymentTiming): this {\r\n\t\tthis.applePayLineItem.paymentTiming = paymentTiming;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetDeferredPaymentDate(deferredDate: Date): this {\r\n\t\tthis.applePayLineItem.deferredPaymentDate = deferredDate;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tgetApplePayLineItem(): ApplePayJSV14.ApplePayLineItem {\r\n\t\treturn this.applePayLineItem;\r\n\t}\r\n}\r\n","import { ApplePayPaymentMethodUpdate } from '../..';\r\n\r\nexport class ApplePayPaymentMethodUpdateBuilder {\r\n\tprivate applePayPaymentMethodUpdate: ApplePayJSV14.ApplePayPaymentMethodUpdate;\r\n\r\n\tconstructor() {\r\n\t\tthis.applePayPaymentMethodUpdate = new ApplePayPaymentMethodUpdate();\r\n\t}\r\n\r\n\tsetTotal(total: ApplePayJSV14.ApplePayLineItem): this {\r\n\t\tthis.applePayPaymentMethodUpdate.newTotal = total;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetNewLineItems(lineItems: ApplePayJSV14.ApplePayLineItem[]): this {\r\n\t\tthis.applePayPaymentMethodUpdate.newLineItems = lineItems;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetRecurringPaymentRequest(recurringPaymentRequest: ApplePayJSV14.ApplePayRecurringPaymentRequest): this {\r\n\t\tthis.applePayPaymentMethodUpdate.newRecurringPaymentRequest = recurringPaymentRequest;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tgetApplePayPaymentMethodUpdate(): ApplePayJSV14.ApplePayPaymentMethodUpdate {\r\n\t\treturn this.applePayPaymentMethodUpdate;\r\n\t}\r\n}\r\n","import { ApplePaySettings, ApplePayPaymentRequest } from '../..';\r\n\r\nexport class ApplePayPaymentRequestBuilder {\r\n\tprivate applePayPaymentRequest: ApplePayJSV14.ApplePayPaymentRequest;\r\n\r\n\tconstructor(private applePaySettings: ApplePaySettings) {\r\n\t\tthis.applePayPaymentRequest = new ApplePayPaymentRequest();\r\n\t}\r\n\r\n\tsetTotal(total: ApplePayJSV14.ApplePayLineItem): this {\r\n\t\tthis.applePayPaymentRequest.total = total;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetCountryCode(): this {\r\n\t\tthis.applePayPaymentRequest.countryCode = this.applePaySettings.countryCode ?? 'US';\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetCurrencyCode(): this {\r\n\t\tthis.applePayPaymentRequest.currencyCode = this.applePaySettings.currencyCode ?? 'USD';\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetMerchantCapabilites(): this {\r\n\t\tlet merchantCapabilities: ApplePayJS.ApplePayMerchantCapability[] = ['supports3DS']; // required\r\n\t\tif (this.applePaySettings.acceptsCredit) {\r\n\t\t\tmerchantCapabilities.push('supportsCredit');\r\n\t\t}\r\n\t\tif (this.applePaySettings.acceptsDebit) {\r\n\t\t\tmerchantCapabilities.push('supportsDebit');\r\n\t\t}\r\n\r\n\t\tthis.applePayPaymentRequest.merchantCapabilities = merchantCapabilities;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetSupportedNetworks(): this {\r\n\t\tthis.applePayPaymentRequest.supportedNetworks = this.applePaySettings.supportedNetworks;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetRequiredBillingContactFields(requiredFields?: ApplePayJS.ApplePayContactField[]): this {\r\n\t\tthis.applePayPaymentRequest.requiredBillingContactFields = requiredFields ?? [\r\n\t\t\t'name',\r\n\t\t\t'postalAddress'\r\n\t\t];\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetRecurringPaymentRequest(recurringAmount: string): this {\r\n\t\tconst applePayRecurringRequest: ApplePayJSV14.ApplePayRecurringPaymentRequest = {\r\n\t\t\tpaymentDescription: this.applePaySettings.paymentDescription,\r\n\t\t\tregularBilling: this.getRegularBilling(recurringAmount),\r\n\t\t\tbillingAgreement: this.applePaySettings.billingAgreement,\r\n\t\t\tmanagementURL: this.applePaySettings.mangementURL\r\n\t\t};\r\n\r\n\t\tthis.applePayPaymentRequest.recurringPaymentRequest = applePayRecurringRequest;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tprivate getRegularBilling(recurringAmount: string): ApplePayJSV14.ApplePayLineItem {\r\n\t\tconst regularBilling: ApplePayJSV14.ApplePayLineItem = {\r\n\t\t\tlabel: this.applePaySettings.recurringLabel,\r\n\t\t\tamount: recurringAmount ?? '0',\r\n\t\t\tpaymentTiming: this.applePaySettings.paymentTiming,\r\n\t\t\trecurringPaymentStartDate: this.applePaySettings.recurringPaymentStartDate,\r\n\t\t\trecurringPaymentIntervalUnit: this.applePaySettings.recurringPaymentIntervalUnit,\r\n\t\t\trecurringPaymentIntervalCount: this.applePaySettings.recurringPaymentIntervalCount,\r\n\t\t};\r\n\r\n\t\tif (this.applePaySettings.recurringPaymentEndDate) {\r\n\t\t\tregularBilling.recurringPaymentEndDate = this.applePaySettings.recurringPaymentEndDate;\r\n\t\t}\r\n\r\n\t\treturn regularBilling;\r\n\t}\r\n\r\n\tgetApplePayPaymentRequest(): ApplePayJSV14.ApplePayPaymentRequest {\r\n\t\treturn this.applePayPaymentRequest;\r\n\t}\r\n}\r\n","import { DigitalWalletType } from './';\r\n\r\nexport class DigitalWalletPaymentDetails {\r\n\tauthenticationPaymentToken: string;\r\n\tdigitalWalletType: DigitalWalletType;\r\n\tisCreditCard: boolean;\r\n\tisDebitCard: boolean;\r\n\taccountName?: string;\r\n\taddress?: string;\r\n\tzipCode: string;\r\n\tpaymentAmount?: number;\r\n\tdiscountAmount?: number | null;\r\n\tcalculatedServiceFee?: number;\r\n\tdescription?: string;\r\n\temail?: string;\r\n\tisEmailOptedIn?: boolean;\r\n\tcustomFields?: Array;\r\n}\r\n","import { DigitalWalletType } from '.';\r\n\r\nexport class DigitalWalletPaymentPlanDetails {\r\n\tauthenticationPaymentToken: string;\r\n\tdigitalWalletType: DigitalWalletType;\r\n\tisCreditCard: boolean;\r\n\tisDebitCard: boolean;\r\n\taccountName?: string;\r\n\tcalculatedServiceFee?: number;\r\n\tcustomFields?: Array;\r\n\taddressLine1: string;\r\n\tbillingCity: string;\r\n\tbillingState: string;\r\n\tzipCode: string;\r\n\tphoneNumber: string;\r\n\tphoneNumberIsMobile: boolean;\r\n\temail: string;\r\n\tisThirdParty: boolean;\r\n\tsaveToWallet: boolean;\r\n\tnumberOfPayments: number;\r\n\tpaymentAmount: number;\r\n\tserviceFee: number;\r\n\tfirstPaymentDate: any;\r\n\tmaxRetries: number;\r\n\tisRehab: boolean;\r\n\tdescription: string;\r\n\tdiscountAmount?: number;\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { DigitalWalletType } from '../../models/digital-wallet';\r\nimport { State } from '../../services/global-state';\r\n\r\nexport abstract class DigitalWalletSettings {\r\n\tprivate digitalWalletType: DigitalWalletType = DigitalWalletType.NotSet;\r\n\r\n\tconstructor(\r\n\t\tprotected i18n: I18N,\r\n\t\tprotected globalState: State,\r\n\t\tdigitalWalletType: DigitalWalletType) {\r\n\t\tthis.digitalWalletType = digitalWalletType;\r\n\t}\r\n\r\n\tisApplePay(): boolean {\r\n\t\treturn this.digitalWalletType === DigitalWalletType.ApplePay;\r\n\t}\r\n\r\n\tisCard(): boolean {\r\n\t\treturn this.digitalWalletType === DigitalWalletType.ApplePay;\r\n\t}\r\n\r\n\tgetDigitalWalletType(): DigitalWalletType {\r\n\t\treturn this.digitalWalletType;\r\n\t}\r\n\r\n\tgetDigitalWalletName(): string {\r\n\t\tswitch (this.digitalWalletType) {\r\n\t\t\tcase DigitalWalletType.ApplePay:\r\n\t\t\t\treturn 'Apple Pay';\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'Not Set';\r\n\t\t}\r\n\t}\r\n}\r\n","export enum DigitalWalletType {\r\n\tNotSet = -1,\r\n\tApplePay = 1\r\n}\r\n","export { DigitalWalletType } from './digital-wallet-type';\r\nexport { DigitalWalletPaymentDetails } from './digital-wallet-payment-details';\r\nexport { DigitalWalletPaymentPlanDetails } from './digital-wallet-payment-plan-details';\r\nexport { DigitalWalletSettings } from './digital-wallet-settings';\r\nexport { ApplePaySettings } from './apple-pay/apple-pay-settings';\r\nexport { ApplePayPaymentRequest } from './apple-pay/apple-pay-payment-request';\r\nexport { ApplePayPaymentRequestBuilder } from './apple-pay/builders/apple-pay-payment-request-builder';\r\nexport { ApplePayPaymentMethodUpdate } from './apple-pay/apple-pay-payment-method-update';\r\nexport { ApplePayPaymentMethodUpdateBuilder } from './apple-pay/builders/apple-pay-payment-method-update-builder';\r\nexport { ApplePayLineItem } from './apple-pay/apple-pay-line-item';\r\nexport { ApplePayLineItemBuilder } from './apple-pay/builders/apple-pay-line-item-builder';\r\nexport { ApplePayUtil } from './apple-pay/apple-pay-util';\r\n","export class Features {\r\n\tenablePortalAutopay: boolean = false;\r\n\tenableCardPresentVTSale: boolean = false;\r\n\tportalMultiAccountPaymentPlan: boolean = false;\r\n\tenableApplePay: boolean = false;\r\n\tconsumerPortalMultiZidEzPay: boolean = false;\r\n\tpayableSchedule: boolean = false;\r\n\tmfaConsumerPortal: boolean = false;\r\n\tuseRecaptchaV2ForEzPay: boolean = false;\r\n\tunvalidatedEzPayMFA: boolean = false;\r\n\r\n\tconstructor(params: any) {\r\n\t\ttry {\t\t\t\r\n\t\t\tif (params) {\r\n\t\t\t\t// We still keep this method for future use\r\n\t\t\t\tthis.enablePortalAutopay = params.enablePortalAutopay || false;\r\n\t\t\t\tthis.enableCardPresentVTSale = params.enableCardPresentVTSale;\r\n\t\t\t\tthis.portalMultiAccountPaymentPlan = params.portalMultiAccountPaymentPlan || false;\r\n\t\t\t\tthis.enableApplePay = params.applePay || false;\r\n\t\t\t\tthis.consumerPortalMultiZidEzPay = params.consumerPortalMultiZidEzPay || false;\r\n\t\t\t\tthis.payableSchedule = params.payableSchedule || false;\r\n\t\t\t\tthis.mfaConsumerPortal = params.mfaConsumerPortal || false;\r\n\t\t\t\tthis.useRecaptchaV2ForEzPay = params.useRecaptchaV2ForEzPay || false;\r\n\t\t\t\tthis.unvalidatedEzPayMFA = params.unvalidatedEzPayMFA || false;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.info('No Features Enabled.');\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error occurred in features ctor');\r\n\t\t}\r\n\t}\r\n}\r\n","export enum FeeCalculationType {\r\n\tNotSet = 0,\r\n\tFixedAmount = 1,\r\n\tPercentage = 2\r\n}\r\n","import { PaymentMethodType } from './autopay';\r\nimport { FeeCalculationType } from './feeCalculationType';\r\nimport { SourcePayRazrApplication } from './sourcePayRazrApplication';\r\n\r\nexport class FeeCalculationValue {\r\n\tsourcePayRazrApplication: SourcePayRazrApplication;\r\n\tfeePaymentMethodType: PaymentMethodType;\r\n\tfeeValue: number;\r\n\tfeeCalculationType: FeeCalculationType;\r\n\ttierLimitKey: number;\r\n\ttierLimitAmount: number;\r\n}\r\n","import { PaymentMethodType } from '../../services/hpf-transaction-service';\r\nimport { PaymentFeeType } from './payment-fee-type';\r\n\r\nexport class CalculateFeeRequest {\r\n\tuserType: string;\r\n\tmerchantKeys: Array;\r\n\tzipCode: string;\r\n\tconvenienceFeeOverrideAmount: number | undefined;\r\n\tpaymentMethodType: PaymentMethodType;\r\n\tamountUsedToCalculateSurchargeOnIfApplicable: number;\r\n\tpaymentMethodKey: number | undefined;\r\n\taccountNumber: string | undefined;\r\n\tcustomerAccountKeys: number[] | undefined;\r\n\tpaymentFeeType: PaymentFeeType | undefined;\r\n}\r\n","import { CalculateFeeRequest } from './calculate-fee-request';\r\nimport { PaymentMethodType } from '../../services/hpf-transaction-service';\r\nimport { PaymentFeeType } from './payment-fee-type';\r\n\r\nexport class CalculateFeeRequestBuilder {\r\n\tprivate calculateFeeRequest: CalculateFeeRequest;\r\n\r\n\tconstructor() {\r\n\t\tthis.calculateFeeRequest = new CalculateFeeRequest();\r\n\t}\r\n\r\n\tsetUserType(userType: string): this {\r\n\t\tthis.calculateFeeRequest.userType = userType;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetMerchantKeys(merchantKeys: number[]): this {\r\n\t\tthis.calculateFeeRequest.merchantKeys = merchantKeys;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetZipCode(zipCode: string): this {\r\n\t\tthis.calculateFeeRequest.zipCode = zipCode;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetPaymentMethodType(paymentMethodType: PaymentMethodType): this {\r\n\t\tthis.calculateFeeRequest.paymentMethodType = paymentMethodType;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetAmountUsedToCalculateSurchargeOnIfApplicable(amount: number): this {\r\n\t\tthis.calculateFeeRequest.amountUsedToCalculateSurchargeOnIfApplicable = amount;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetCustomerAccountKeys(customerAccountKeys: number[]): this {\r\n\t\tthis.calculateFeeRequest.customerAccountKeys = customerAccountKeys;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetPaymentFeeType(feeType?: PaymentFeeType): this {\r\n\t\tthis.calculateFeeRequest.paymentFeeType = feeType ?? PaymentFeeType.SingleOrSingleFuturePayment;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tgetCalculateFeeRequest(): CalculateFeeRequest {\r\n\t\treturn this.calculateFeeRequest;\r\n\t}\r\n}\r\n","import { PaymentMethod, ExpirationType } from '../autopay';\r\n\r\nexport class CreateAutopayRequest {\r\n\tpostedInfo = null;\r\n\tconstructor(\r\n\t\tpublic customerAccountKey: number,\r\n\t\tpublic autopayTriggerType: number,\r\n\t\tpublic autopayTriggerValue: number,\r\n\t\tpublic expirationType: ExpirationType,\r\n\t\tpublic maxPaymentAmount: number,\r\n\t\tpublic payInFull: boolean,\r\n\t\tpublic paymentMethod: PaymentMethod,\r\n\t\tpublic overriddenFeeAmount?: number,\r\n\t\tpublic numberOfPayments?: number,\r\n\t\tpublic endDate?: Date,\r\n\t){ }\r\n}\r\n","export class CreateApplePayWebSessionRequest {\r\n\tmerchantKey: number;\r\n}\r\n","export * from './create-autopay-request';\r\nexport * from './update-autopay-request';\r\nexport * from './digital-wallet/create-apple-pay-web-session-request';\r\nexport * from './calculate-fee-request';\r\nexport * from './payment-fee-type';\r\n","export enum PaymentFeeType {\r\n\tSingleOrSingleFuturePayment,\r\n\tPaymentPlan,\r\n\tAutopay\r\n}\r\n","import { PaymentMethod } from \"../autopay\";\r\n\r\nexport class UpdateAutopayRequest {\r\n\tpostedInfo = null;\r\n constructor(\r\n public paymentMethod: PaymentMethod,\r\n public maxPaymentAmount?: number,\r\n public payInFull?: boolean,\r\n ){ }\r\n}\r\n\r\n","export class Installment {\r\n\tpayToday;\r\n\tnextPaymentDate;\r\n\tselectedFrequency;\r\n\ttotalAmount: string;\r\n\tnumber: number;\r\n\tfirstPayment: number;\r\n\tpaymentAfterFirst: number;\r\n\tdiscountPercent: number;\r\n}\r\n","export enum InstallmentFrequency {\r\n\tWeekly = 1,\r\n\tEvery2Weeks = 2,\r\n\tEvery28Days = 3,\r\n\tMonthly = 4,\r\n\tFifteenthOfEachMonth = 5,\r\n\tEndOfMonth = 6,\r\n\tEvery2Months = 7\r\n}\r\n","export class Language {\r\n\tlanguageCode: string;\r\n\tlanguageName: string;\r\n\tlanguageNativeName: string;\r\n\r\n\tconstructor(languageCode: string = null, languageName: string = null, languageNativeName: string = null) {\r\n\t\tthis.languageCode = languageCode;\r\n\t\tthis.languageName = languageName;\r\n\t\tthis.languageNativeName = languageNativeName;\r\n\t}\r\n\r\n\tgetLanguageDropDownName(): string {\r\n\t\tif (this.languageNativeName && this.languageNativeName !== '' && this.languageNativeName !== 'English') {\r\n\t\t\treturn `${this.languageName} (${this.languageNativeName})`;\r\n\t\t}\r\n\r\n\t\treturn this.languageName;\r\n\t}\r\n}\r\n","export class Merchant {\r\n merchantKey: number;\r\n merchantName: string;\r\n zid: string;\r\n createDate: Date;\r\n status: any;\r\n merchantDisplayName: string;\r\n merchantSettings: any;\r\n}","export class MerchantConsumerPortalFeeSettings {\r\n\tfeesEnabled: boolean;\r\n\tallowFeesOnPaymentPlans: boolean;\r\n\tallowServiceFeesOnEveryTransaction: boolean;\r\n}\r\n","import { MfaTwoFactorMethod } from './mfa-two-factor-method';\r\n\r\nexport class MfaSetupDetails {\r\n\r\n\ttwoFactorMethod: MfaTwoFactorMethod = MfaTwoFactorMethod.NotSet;\r\n\ttwoFactorValue: string|null;\r\n\tforceTwoFactorValue: boolean;\r\n\tmerchantKey: number | null;\r\n\tusername: number | null;\r\n\tpassword: number | null;\r\n\tcookieName: string | null;\r\n\r\n\tconstructor() {\r\n\t\tthis.twoFactorMethod = MfaTwoFactorMethod.NotSet;\r\n\t\tthis.twoFactorValue = null;\r\n\t\tthis.forceTwoFactorValue = false;\r\n\t\tthis.merchantKey = null;\r\n\t\tthis.username = null;\r\n\t\tthis.password = null;\r\n\t\tthis.cookieName = null;\r\n\t}\r\n}\r\n","export enum MfaTwoFactorMethod {\r\n\tNotSet = 0,\r\n\tEmail = 1,\r\n\tSMS = 2\r\n}\r\n","import { MfaSetupDetails } from './mfa-setup-details';\r\n\r\nexport class MfaVerificationCode extends MfaSetupDetails {\r\n\r\n\tcode: string;\r\n\trememberMe: boolean;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n}\r\n","export class Offer {\r\n\tfrequency: number;\r\n\tamount: number;\r\n\tnumberOfPayments: number;\r\n\tbalance: number;\r\n\tdiscount: number;\r\n\ttotalPaid: number;\r\n}","export class PaymentAccountDisplayName {\r\n\treferenceId: string;\r\n\tdisplayName: string;\r\n\r\n\tconstructor(referenceId: string, displayName: string) {\r\n\t\tthis.referenceId = referenceId;\r\n\t\tthis.displayName = displayName;\r\n\t}\r\n}\r\n","export class PaymentHistory {\r\n\taccountNumber: string;\r\n\tcontactName: string;\r\n\tpaymentAmount: number;\r\n\tpaymentDate: string;\r\n\tpaymentResult: string;\r\n\tpnRef: string;\r\n\ttransactionType: string;\r\n\tmessage: string;\r\n\tstartDate: string;\r\n}\r\n","export class PaymentMethodTypeOptions {\r\n\twalletLabel: any = null;\r\n\tcardLabel: any = null;\r\n\tachLabel: any = null;\r\n\tshowWallet: boolean = true;\r\n\tshowCard: boolean = true;\r\n\tshowAch: boolean = true;\r\n}\r\n","import { PaymentFeeType } from './hpfApi';\r\nimport { PaymentPlanType } from './paymentPlanType';\r\nimport { Installment } from './installment';\r\nimport { Recurring } from './recurring';\r\n\r\nexport class PaymentPlanSettings {\r\n\tpaymentPlanType: PaymentPlanType;\r\n\tpaymentFeeType?: PaymentFeeType;\r\n\tinstallment?: Installment;\r\n\trecurring?: Recurring;\r\n\taccountId?: string;\r\n\tendDate?: Date;\r\n\r\n\tconstructor() {\r\n\t\tthis.paymentPlanType = PaymentPlanType.NotSet;\r\n\t}\r\n\r\n\tisPaymentPlan(): boolean {\r\n\t\treturn this.paymentPlanType !== PaymentPlanType.NotSet;\r\n\t}\r\n\r\n\tisInstallmentPlan(): boolean {\r\n\t\treturn this.isPaymentPlan() && this.paymentPlanType === PaymentPlanType.Installment;\r\n\t}\r\n\r\n\tisRecurringPlan(): boolean {\r\n\t\treturn this.isPaymentPlan() && this.paymentPlanType === PaymentPlanType.Recurring;\r\n\t}\r\n}\r\n","export enum PaymentPlanType {\r\n\tNotSet = -1,\r\n\tRecurring = 1,\r\n\tAutopay = 2,\r\n\tInstallment = 3\r\n}\r\n","import config from '../config/config';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\nexport class Portal {\r\n\ttheme: any;\r\n\tsettings: any;\r\n\tezpay: any;\r\n\tfields: any;\r\n\tbusinessSettings: any;\r\n\tpaymentMethods: any;\r\n\tpaymentTypes: any;\r\n\thasAccountTypeFor3rdParty: any;\r\n\tportalRegistrationWithoutZipCode: any;\r\n\trequireMinPayment: any;\r\n\tfeeSettings: any;\r\n\tsendPlanReceiptToMerchant: any;\r\n\tmerchantConfiguredReceiptEmails: any;\r\n\tcardsAccepted: any;\r\n\taccountNumberSettings: any;\r\n\taccountNumberLabel: string;\r\n\taccountNumberTooltip: any;\r\n\tminimumPaymentAmount: any;\r\n\tmaximumPaymentAmount: any;\r\n\tshowMinMaxPaymentVerbiage: any;\r\n\tdisplayMinimumPaymentAmountOnPortal: boolean;\r\n\tid: any;\r\n\tdateUpdated: any;\r\n\tactive: boolean;\r\n\r\n\tconstructor(portal: any, private i18n:I18N) {\r\n\t\tthis.setPortalDefaults(portal);\r\n\t}\r\n\r\n\tsetPortalDefaults(portal: any) {\r\n\t\t// String settings first, then override with any changes that have been made while the site is running. This is mostly a problem\r\n\t\t//// when the user refreshes; otherwise, we never re-hydrate the Portal.\r\n\t\tlet settings = JSON.parse(portal.settings);\r\n\t\tObject.assign(this, settings);\r\n\t\tthis.theme = JSON.parse(portal.settings).theme;\r\n\t\tObject.assign(this, portal);\r\n\t\tthis.settings = {};\r\n\t\tObject.assign(this.settings, settings);\r\n\t\tthis.requireProperty(this, 'ezpay');\r\n\t\tthis.requireProperty(this.ezpay, 'paymentTypes');\r\n\t\tthis.requireProperty(this, 'paymentTypes');\r\n\t\tthis.requireProperty(this, 'paymentMethods');\r\n\t\tthis.requireProperty(this, 'fields');\r\n\t\tthis.requireProperty(this.fields, 'billingAddress');\r\n\t\tthis.requireProperty(this.fields, 'billingPhone');\r\n\t\tthis.requireProperty(this.fields, 'billingEmail');\r\n\t\tthis.requireProperty(this.fields, 'totalAmount');\r\n\t\tthis.requireProperty(this.fields, 'transactionDescription');\r\n\t\tthis.requireProperty(this.fields, 'cvv');\r\n\r\n\t\tif (!this.fields.hasOwnProperty('cardCustom')) {\r\n\t\t\tthis.fields.cardCustom = [\r\n\t\t\t\t{},\r\n\t\t\t\t{},\r\n\t\t\t\t{},\r\n\t\t\t\t{},\r\n\t\t\t\t{}\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (!this.fields.hasOwnProperty('checkCustom')) {\r\n\t\t\tthis.fields.checkCustom = [\r\n\t\t\t\t{},\r\n\t\t\t\t{},\r\n\t\t\t\t{},\r\n\t\t\t\t{},\r\n\t\t\t\t{}\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (this.ezpay && !this.ezpay.accountNumberHandling) {\r\n\t\t\tif (this.ezpay.lookupCustomerAccount) {\r\n\t\t\t\t// ezpay validation is on. \"lookup\" account before accepting a payment.\r\n\t\t\t\tthis.ezpay.accountNumberHandling = 'lookup';\r\n\t\t\t} else {\r\n\t\t\t\t// ezpay validation is off. \"allow\" payments without validation\r\n\t\t\t\tthis.ezpay.accountNumberHandling = 'allow';\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.ezpay && !this.ezpay.accountNumberSettings) {\r\n\t\t\tvar ezpaySettings = this.ezpay;\r\n\t\t\tthis.ezpay.accountNumberSettings = [];\r\n\t\t\tthis.accountNumberSettings.forEach(function (setting) {\r\n\t\t\t\tezpaySettings.accountNumberSettings.push(setting);\r\n\t\t\t});\r\n\t\t\tthis.ezpay = ezpaySettings;\r\n\t\t\t// 8.2 and previous settings coming in.\r\n\t\t\tif (!this.ezpay.registrationIdSettings) {\r\n\t\t\t\t// If the 8.2 settings were using referenceId as validation attribute, make sure it is enabled in new settings.\r\n\t\t\t\tif (this.ezpay.validationAttribute === 'referenceId') {\r\n\t\t\t\t\tthis.ezpay.accountNumberSettings[0].required = true;\r\n\t\t\t\t}\r\n\t\t\t\t// We were using registration id, so we don't want reference ID to be required.\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.ezpay.accountNumberSettings[0].required = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.accountNumberLabel) {\r\n\t\t\tthis.accountNumberLabel = this.i18n.i18next.t('accountNumber', 'Account Number');\r\n\t\t}\r\n\r\n\t\tif (!this.theme) {\r\n\t\t\tthis.theme = {\r\n\t\t\t\tprimaryButtonColor: '#005fb2',\r\n\t\t\t\tsecondaryButtonColor: '#01892c',\r\n\t\t\t\tprimaryButtonFontColor: '#FFFFFF',\r\n\t\t\t\tsecondaryButtonFontColor: '#FFFFFF',\r\n\t\t\t\tfontPrimaryColor: '#005fb2',\r\n\t\t\t\tfontSecondaryColor: '#01892c'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.active = true;\r\n\t}\r\n\r\n\t//Overrides default portal settings.\r\n\tapplyPortfolioSettings(portfolio: any, isForEzpay: any, merchantKey: number = 0) {\r\n\t\tif (portfolio) {\r\n\t\t\tlet merchantAllowsSinglePayments = isForEzpay ? true : this.businessSettings.allowSinglePayment;\r\n\t\t\tlet currentMerchantSettings = portfolio.merchantSettings;\r\n\t\t\tif (isForEzpay && merchantKey > 0 && !!portfolio.ezPayMerchants) {\r\n\t\t\t\tcurrentMerchantSettings = {};\r\n\t\t\t\tconst currentMerchantSelected = portfolio.ezPayMerchants.find(m => m.merchantKey == merchantKey);\r\n\t\t\t\tif (!!currentMerchantSelected && currentMerchantSelected.merchantSettings){\r\n\t\t\t\t\tcurrentMerchantSettings = currentMerchantSelected.merchantSettings;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!currentMerchantSettings || Object.keys(currentMerchantSettings).length == 0) {\r\n\t\t\t\tthis.applyDefaultPortfolioSettings();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// using portfolio. instead of portfolio.settings. because these could have been overridden by merchant settings so we need the \"computed\" version of these properties.\r\n\t\t\tthis.paymentMethods.allowCreditCard = portfolio.paymentMethods.allowCreditCard;\r\n\t\t\tthis.paymentMethods.allowAch = portfolio.paymentMethods.allowAch;\r\n\t\t\tthis.paymentMethods.allowApplePay = portfolio.paymentMethods.allowApplePay;\r\n\r\n\t\t\tlet canAcceptPayments = this.paymentMethods.allowCreditCard || this.paymentMethods.allowAch;\r\n\t\t\tthis.paymentTypes.allowSingle = merchantAllowsSinglePayments && portfolio.settings.paymentTypes.allowSingle && canAcceptPayments;\r\n\t\t\tthis.paymentTypes.allowFuture = merchantAllowsSinglePayments && portfolio.settings.paymentTypes.allowFuture && canAcceptPayments;\r\n\t\t\tthis.paymentTypes.allowNegotiator = this.businessSettings.allowNegotiator && portfolio.settings.paymentTypes.allowNegotiator && canAcceptPayments;\r\n\t\t\tthis.paymentTypes.allowInstallments = this.businessSettings.allowInstallments && portfolio.settings.paymentTypes.allowInstallments && canAcceptPayments;\r\n\t\t\tthis.paymentTypes.allowRehab = this.businessSettings.allowRehab && portfolio.settings.paymentTypes.allowRehab;\r\n\r\n\t\t\tthis.setMaxFuturePaymentDays(portfolio, isForEzpay, currentMerchantSettings);\r\n\r\n\t\t\tthis.paymentTypes.rehab = {\r\n\t\t\t\tpayInFull: this.businessSettings.allowRehab && portfolio.settings.paymentTypes.allowRehab && portfolio.settings.paymentTypes.rehab.payInFull && canAcceptPayments\r\n\t\t\t};\r\n\r\n\t\t\tthis.setPaymentAmounts(portfolio, currentMerchantSettings);\r\n\r\n\t\t\tthis.hasAccountTypeFor3rdParty = currentMerchantSettings.hasAccountTypeFor3rdParty;\r\n\t\t\tthis.portalRegistrationWithoutZipCode = portfolio.settings.portalRegistrationWithoutZipCode;\r\n\t\t\tthis.requireMinPayment = portfolio.settings.requireMinPayment;\r\n\t\t\tthis.feeSettings = currentMerchantSettings.feeSettings;\r\n\t\t\tthis.sendPlanReceiptToMerchant = currentMerchantSettings.sendPlanReceiptToMerchant;\r\n\t\t\tthis.merchantConfiguredReceiptEmails = currentMerchantSettings.merchantConfiguredReceiptEmails;\r\n\t\t\tthis.cardsAccepted = currentMerchantSettings.cardsAccepted;\r\n\r\n\t\t\t// 6.3.1 - CDW - accountNumberSettings array introduced. Extra code here to port old settings, which had just\r\n\t\t\t// accountNumberLabel and accountNumberTooltip, into the accountNumberSettings array if needed. Also code here\r\n\t\t\t// to handle (probably testing only) situation where the format has changed since the portal was defined.\r\n\t\t\t// Moved here from Business (Merchant) for MMIDs\r\n\t\t\t// Updated by Ming on 03142018: Add required and visible in accountNumberSettings. In short, this.accountNumberSettings will not be changed for new data.\r\n\r\n\t\t\tif (currentMerchantSettings.accountNumberFormat) {\r\n\t\t\t\t// If we have already mapped an accountNumberFormat object into accountNumberSettings\r\n\t\t\t\tif (this.accountNumberSettings) {\r\n\t\t\t\t\t// The merchantSettings version of AccountNumberFormat doesn't match the length of the \"existing\" mapped accountNumberSettings\r\n\t\t\t\t\tif (currentMerchantSettings.accountNumberFormat.segments.length != this.accountNumberSettings.length) {\r\n\t\t\t\t\t\t// Going from a two-segment accountNumber (CU) to single segment accountNumber\r\n\t\t\t\t\t\tif (currentMerchantSettings.accountNumberFormat.numberOfSegments === 1 && this.accountNumberSettings.length === 2) {\r\n\t\t\t\t\t\t\tthis.accountNumberSettings = this.accountNumberSettings.slice(0, 1);\r\n\r\n\t\t\t\t\t\t\t// Going from a single-segment accountNumber to two-segment accountNumber\r\n\t\t\t\t\t\t} else if (currentMerchantSettings.accountNumberFormat.numberOfSegments === 2 && this.accountNumberSettings.length === 1) {\r\n\t\t\t\t\t\t\tthis.accountNumberSettings.push({\r\n\t\t\t\t\t\t\t\titem: currentMerchantSettings.accountNumberFormat.segments[1].label,\r\n\t\t\t\t\t\t\t\ttooltip: '',\r\n\t\t\t\t\t\t\t\trequired: currentMerchantSettings.accountNumberFormat.segments[1].required,\r\n\t\t\t\t\t\t\t\tvisible: currentMerchantSettings.accountNumberFormat.segments[1].visible\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// We haven't mapped accountNumberFormat into accountNumberSettings yet.\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.accountNumberSettings = currentMerchantSettings.accountNumberFormat.segments.map(item => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tlabel: item.label,\r\n\t\t\t\t\t\t\ttooltip: '',\r\n\t\t\t\t\t\t\trequired: item.required,\r\n\t\t\t\t\t\t\tvisible: item.visible\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t// If we don't have an accountNumberFormat in merchant settings:\r\n\t\t\t} else {\r\n\t\t\t\tif (this.accountNumberSettings) {\r\n\t\t\t\t\tthis.accountNumberSettings = this.accountNumberSettings.slice(0, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.accountNumberSettings = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: this.accountNumberLabel,\r\n\t\t\t\t\t\t\ttooltip: this.accountNumberTooltip\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.applyDefaultPortfolioSettings();\r\n\t\t}\r\n\t}\r\n\r\n\tapplyDefaultPortfolioSettings() {\r\n\t\tthis.paymentTypes.allowSingle = false;\r\n\t\tthis.paymentTypes.allowFuture = false;\r\n\t\tthis.paymentTypes.allowNegotiator = false;\r\n\t\tthis.paymentTypes.allowInstallments = false;\r\n\t\tthis.paymentTypes.allowRehab = false;\r\n\t\tthis.paymentTypes.rehab = {\r\n\t\t\tpayInFull: false\r\n\t\t};\r\n\t\tthis.paymentTypes.maxFutureDays = 1;\r\n\t\tthis.paymentMethods.allowCreditCard = false;\r\n\t\tthis.paymentMethods.allowAch = false;\r\n\t\tthis.accountNumberSettings = {};\r\n\t\tthis.hasAccountTypeFor3rdParty = false;\r\n\t\tthis.portalRegistrationWithoutZipCode = false;\r\n\t\tthis.requireMinPayment = false;\r\n\t\tthis.feeSettings = {};\r\n\t\tthis.sendPlanReceiptToMerchant = false;\r\n\t\tthis.merchantConfiguredReceiptEmails = false;\r\n\t\tthis.cardsAccepted = {};\r\n\t\tthis.accountNumberSettings = [{}];\r\n\t}\r\n\r\n\tsetPaymentAmounts(portfolio: any, currentMerchantSettings: any) {\r\n\r\n\t\t//FYI : this.settings = portal settings\r\n\t\tif (parseFloat(this.settings.minimumPaymentAmount) > 0 && parseFloat(portfolio.settings.minimumPaymentAmount) > 0) {\r\n\t\t\tthis.minimumPaymentAmount = Math.max(this.settings.minimumPaymentAmount, portfolio.settings.minimumPaymentAmount);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.minimumPaymentAmount = this.settings.minimumPaymentAmount ? this.settings.minimumPaymentAmount : portfolio.settings.minimumPaymentAmount;\r\n\t\t}\r\n\r\n\t\tif (parseFloat(this.settings.maximumPaymentAmount) > 0 && parseFloat(portfolio.settings.maximumPaymentAmount) > 0) {\r\n\t\t\tthis.maximumPaymentAmount = Math.min(this.settings.maximumPaymentAmount, portfolio.settings.maximumPaymentAmount);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.maximumPaymentAmount = this.settings.maximumPaymentAmount ? this.settings.maximumPaymentAmount : portfolio.settings.maximumPaymentAmount;\r\n\t\t}\r\n\r\n\t\tif (parseFloat(currentMerchantSettings.maximumPayment) > 0) {\r\n\t\t\tthis.maximumPaymentAmount = currentMerchantSettings.maximumPayment;\r\n\t\t}\r\n\r\n\t\tthis.showMinMaxPaymentVerbiage = portfolio.settings.showMinMaxPaymentVerbiage;\r\n\t}\r\n\r\n\tsetMaxFuturePaymentDays(portfolio: any, isForEzpay: any, currentMerchantSettings: any) {\r\n\t\t// this.PaymentTypes.maxFutureDays is merchant's max future days\r\n\t\t// portfolio.settings.paymentTypes.maxFutureDays is the portfolio's\r\n\t\t// this.settings.ezpay.maxFutureDays is the portal's and should only apply if this is ezpay\r\n\t\tlet merchantMaxFutureDays = parseInt(currentMerchantSettings.maxFutureDays);\r\n\t\tlet portfolioMaxFutureDays = parseInt(portfolio.settings.paymentTypes.maxFutureDays);\r\n\t\tlet portalMaxFutureDays = parseInt(this.settings.ezpay.maxFutureDays);\r\n\r\n\t\t// check if merchant, portfolio and portal allow post date payments\r\n\t\tif (!merchantMaxFutureDays) merchantMaxFutureDays = Number.MAX_VALUE;\r\n\t\tif (!portfolioMaxFutureDays || !portfolio.settings.paymentTypes.allowFuture) portfolioMaxFutureDays = Number.MAX_VALUE;\r\n\t\tif (!portalMaxFutureDays || !this.settings.ezpay.paymentTypes.allowFuture) portalMaxFutureDays = Number.MAX_VALUE;\r\n\r\n\t\tif (isForEzpay) {\r\n\t\t\tif (merchantMaxFutureDays > 0 && portfolioMaxFutureDays > 0 && portalMaxFutureDays > 0) {\r\n\t\t\t\tif (this.settings.ezpay.accountNumberHandling == 'lookup') {\r\n\t\t\t\t\t//the code logic in this if affects/drives function \"applyPortfolioSettingsToPage\" values in ezpay.js\r\n\t\t\t\t\tthis.paymentTypes.maxFutureDays = Math.min(merchantMaxFutureDays, portfolioMaxFutureDays);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.paymentTypes.maxFutureDays = Math.min(merchantMaxFutureDays, portalMaxFutureDays);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.paymentTypes.maxFutureDays = merchantMaxFutureDays;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (merchantMaxFutureDays > 0 && portfolioMaxFutureDays > 0) {\r\n\t\t\t\tthis.paymentTypes.maxFutureDays = Math.min(merchantMaxFutureDays, portfolioMaxFutureDays);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.paymentTypes.maxFutureDays = merchantMaxFutureDays;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tapplyBusinessSettings(businessSettings) {\r\n\t\tthis.businessSettings = businessSettings;\r\n\r\n\t\tif (!this.ezpay.paymentMethods) {\r\n\t\t\tthis.ezpay.paymentMethods = {\r\n\t\t\t\tallowCreditCard: false,\r\n\t\t\t\tallowAch: false,\r\n\t\t\t\tallowApplePay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis.ezpay.enabled = this.ezpay.enabled && this.businessSettings.allowEzpay;\r\n\r\n\r\n\t\t// TODO: MMIDs: Where do custom field labels come from in this new world? Probably need to pull them with the portfolio like nearly everything else.\r\n\t\t// for (let ii = 0 ; ii < 5 ; ++ii) {\r\n\t\t// if (businessSettings.customFieldLabels[ii]) {\r\n\t\t// if (!this.fields.cardCustom[ii].label) {\r\n\t\t// this.fields.cardCustom[ii].label = businessSettings.customFieldLabels[ii];\r\n\t\t// }\r\n\t\t// if (!this.fields.checkCustom[ii].label) {\r\n\t\t// this.fields.checkCustom[ii].label = businessSettings.customFieldLabels[ii];\r\n\t\t// }\r\n\t\t// }\r\n\t\t// }\r\n\t}\r\n\r\n\tstringify() {\r\n\t\treturn JSON.stringify(this, (key, value) => {\r\n\t\t\tif (key.toLowerCase() === 'id') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'name') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'settings') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'datecreated') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'dateupdated') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'isactive') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'disclosurenames') { return undefined; }\r\n\t\t\tif (key.toLowerCase() === 'templatenames') { return undefined; }\r\n\r\n\t\t\treturn value;\r\n\t\t});\r\n\t}\r\n\r\n\trequireProperty(object, fieldName) {\r\n\t\tif (!object.hasOwnProperty(fieldName)) {\r\n\t\t\tobject[fieldName] = {};\r\n\t\t}\r\n\t}\r\n\r\n\tfieldSettings(fieldName) {\r\n\t\tif (!this.fields || !this.fields.hasOwnField(fieldName)) { return {}; }\r\n\t\treturn this.fields[fieldName];\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget url() {\r\n\t\treturn `${config.portalUrl}/portal/${this.id}`;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget bannerImageUrl() {\r\n\t\tlet updated = new Date(this.dateUpdated).getTime();\r\n\t\treturn `${config.serviceUrl}/portal/${this.id}/banner/true?${updated}`;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget logoImageUrl() {\r\n\t\tlet updated = new Date(this.dateUpdated).getTime();\r\n\t\treturn `${config.serviceUrl}/portal/${this.id}/logo/true?${updated}`;\r\n\t}\r\n\r\n\thexToRgb(hex) {\r\n\t\tlet result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n\t\treturn result ? {\r\n\t\t\tr: parseInt(result[1], 16),\r\n\t\t\tg: parseInt(result[2], 16),\r\n\t\t\tb: parseInt(result[3], 16)\r\n\t\t} : null;\r\n\t}\r\n\r\n\t//TODO: Chris - add computedFrom\r\n\tget styles() {\r\n\t\tlet secondaryColorRgb = this.hexToRgb(this.theme.secondaryButtonColor);\r\n\t\treturn `\r\n `;\r\n\t}\r\n}\r\n","import { AutopaySettings } from \"./autopay\";\r\n\r\nexport class Portfolio {\r\n\tportfolioKey: any;\r\n\tname: any;\r\n\tsettings: any;\r\n\tmerchantSettings: any;\r\n\tpaymentMethods: any;\r\n\tautopaySettings: AutopaySettings;\r\n\tezPayMerchants: any;\r\n\r\n\tconstructor(portfolio) {\r\n\t\tif (portfolio.key) {\r\n\t\t\tObject.assign(this, portfolio);\r\n\t\t} else {\r\n\t\t\tthis.portfolioKey = portfolio.portfolioKey;\r\n\t\t\tthis.name = portfolio.portfolioName;\r\n\t\t\tthis.settings = {};\r\n\t\t\tthis.merchantSettings = {};\r\n\t\t\tif (portfolio.portalSettings) {\r\n\t\t\t\tObject.assign(this.settings, JSON.parse(portfolio.portalSettings));\r\n\t\t\t}\r\n\t\t\tif (portfolio.merchantSettings) {\r\n\t\t\t\tObject.assign(this.merchantSettings, portfolio.merchantSettings);\r\n\t\t\t}\r\n\t\t\tif (portfolio.ezPayMerchants) {\r\n\t\t\t\tthis.ezPayMerchants = portfolio.ezPayMerchants;\r\n\t\t\t}\r\n\t\t\tthis.requireProperty(this, 'paymentTypes');\r\n\t\t\tthis.requireProperty(this, 'paymentMethods');\r\n\r\n\t\t\tif (this.merchantSettings) {\r\n\t\t\t\tthis.paymentMethods.allowAch = this.hasSettings && this.settings.paymentMethods.allowAch && this.merchantSettings.canProcessAch;\r\n\t\t\t\tthis.paymentMethods.allowCreditCard = this.hasSettings && this.settings.paymentMethods.allowCreditCard && this.merchantSettings.canProcessCreditCard;\r\n\t\t\t\tthis.paymentMethods.allowApplePay = this.hasSettings && this.settings.paymentMethods.allowApplePay && this.merchantSettings.canProcessApplePay;\r\n\t\t\t\tthis.paymentMethods.acceptsDebit = this.merchantSettings.acceptsDebit;\r\n\t\t\t\tthis.paymentMethods.acceptsCredit = this.merchantSettings.acceptsCredit;\r\n\t\t\t}\r\n\r\n\t\t\tthis.autopaySettings = portfolio.autopaySettings;\r\n\t\t}\r\n\t}\r\n\r\n\tget hasSettings() {\r\n\t\treturn (this.settings && this.settings.paymentMethods);\r\n\t}\r\n\r\n\trequireProperty(object, fieldName) {\r\n\t\tif (!object.hasOwnProperty(fieldName)) {\r\n\t\t\tobject[fieldName] = {};\r\n\t\t}\r\n\t}\r\n}\r\n","import { InstallmentFrequency } from './installment-frequency';\r\n\r\nexport class Recurring {\r\n\tfirstPaymentDate: string;\r\n\tfrequency: InstallmentFrequency;\r\n\tlastPaymentDate: string;\r\n\tnumberOfRetriesForCardDeclines: number;\r\n\tpaymentAmount: string;\r\n}\r\n","import { IServiceResponse } from \"../interfaces/IServiceResponse\";\r\n\r\nexport class ServiceResponse implements IServiceResponse {\r\n isSuccessful: boolean;\r\n resultMessage: string;\r\n value: any;\r\n\r\n constructor(config: IServiceResponse) {\r\n this.isSuccessful = config.isSuccessful;\r\n this.resultMessage = config.resultMessage;\r\n this.value = config.value;\r\n }\r\n}","import { ICustomerAccountToPay } from '../../services/hpf-transaction-service';\r\n\r\nexport class SinglePaymentReceiptRouteSettings {\r\n\taccountPayments: ICustomerAccountToPay[];\r\n\tpaymentInformation: any;\r\n}\r\n","export class SinglePaymentRouteSettings {\r\n\tpayInFull: boolean;\r\n\tisPayOffEarly?: boolean;\r\n\tselectedCustomerAccountKeys: number[];\r\n}\r\n","export enum SourcePayRazrApplication {\r\n\tUnknown = 0,\r\n\tVirtualTerminal = 1,\r\n\tConsumerPortal = 2,\r\n\tApi = 3,\r\n\tFileImport = 6,\r\n\tCardPresent = 7\r\n}\r\n","import { DigitalWalletPaymentDetails } from './digital-wallet';\r\n\r\nexport class SubmitDigitalWalletPaymentRequest {\r\n\tcustomerAccountId: string;\r\n\tportalId: string;\r\n\tbucketKey: number;\r\n\tmerchantKey: number;\r\n\tdigitalWalletPaymentDetails: DigitalWalletPaymentDetails;\r\n}\r\n","import { ICustomerAccountToPay } from '../services/hpf-transaction-service';\r\nimport { FeeCalculationValue } from './feeCalculationValue';\r\n\r\nexport class TemplateData {\r\n\tcustomObject: any;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n\tfeeValues: FeeCalculationValue[];\r\n\tisEzpay: boolean;\r\n\tmerchantKey: number;\r\n\r\n\tconstructor(customObject: any, merchantKey: number = null, accountPayments: ICustomerAccountToPay[] = null, feeValues: FeeCalculationValue[] = null, isEzpay: boolean = false) {\r\n\t\tthis.customObject = customObject;\r\n\t\tthis.accountPayments = accountPayments;\r\n\t\tthis.feeValues = feeValues;\r\n\t\tthis.isEzpay = isEzpay;\r\n\t\tthis.merchantKey = merchantKey;\r\n\t}\r\n}\r\n","import { AchToken } from '../models/ach-token';\r\n\r\nexport class UpdateAchPaymentModel {\r\n\tachToken: AchToken;\r\n\tcustomerId: any = '';\r\n}\r\n","import { CardToken } from '../models/card-token';\r\n\r\nexport class UpdateCardPaymentModel\r\n{\r\n\tcardToken: CardToken;\r\n\tcustomerId: any = '';\r\n}\r\n","// Keep on sync with Provision.VerticalMarket.sql\r\nexport enum VerticalMarket {\r\n\tAccountsReceivableManagement = 1,\r\n\tPropertyManagement = 2,\r\n\tFinanceCreditUnion = 3,\r\n\tFinanceAuto = 4,\r\n\tPharmacy = 5,\r\n\tHealthCare = 6,\r\n\tB2B = 7,\r\n\tEnergy = 8,\r\n}\r\n","import { autoinject, BindingEngine, ICollectionObserverSplice } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationController, ValidationControllerFactory, ValidationRules } from 'aurelia-validation';\r\nimport { State } from '../../services/global-state';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { HpfConsumerService, SetCustomerNotificationSettingsRequest } from '../../services/hpf-consumer.service';\r\n\r\n@autoinject\r\nexport class AddCustomerNotificationPreferences {\r\n\r\n\tvalidationController: ValidationController;\r\n\r\n\tisInvoiceEnabled: boolean = true;\r\n\tisEmailOptedIn: boolean;\r\n\tisSmsEnabled: boolean = true;\r\n\tisSmsOptedIn: boolean;\r\n\r\n\t// Statement Notifications data source.\r\n\tchkStatementNotifications: Array = [];\r\n\t// Hidden selected Statement Notifications list.\r\n\thiddenStatementNotifications: Array = [];\r\n\t// Visible Selected Statement Notifications list.\r\n\tchkGroupStatementNotificiations: Array = [];\r\n\r\n\tchkAccountNotifications: Array = [];\r\n\thiddenAccountNotifications: Array = [];\r\n\tchkGroupAccountNotificiations: Array = [];\r\n\r\n\tvalueEmailAddress: string = '';\r\n\tvalueEmailAddressConfirm: string = '';\r\n\tvalueMobileNumber: string = '';\r\n\r\n\tnewCustomer: any;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate bindingEngine: BindingEngine,\r\n\t\tprivate consumerService: HpfConsumerService,\r\n\t\tvalidationControllerFactory: ValidationControllerFactory) {\r\n\r\n\t\tthis.isInvoiceEnabled = this.globalState.business.portalSettings.businessSettings.isInvoiceEnabled;\r\n\t\tthis.isSmsEnabled = this.globalState.business.portalSettings.businessSettings.enableSMS;\r\n\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope();\r\n\r\n\t\tthis.bindingEngine.collectionObserver(this.chkGroupStatementNotificiations)\r\n\t\t\t.subscribe(this.chkGroupStatementNotificationsChanged.bind(this));\r\n\r\n\t\tthis.bindingEngine.collectionObserver(this.chkGroupAccountNotificiations)\r\n\t\t\t.subscribe(this.chkGroupAccountNotificationsChanged.bind(this));\r\n\r\n\t\tthis.chkStatementNotifications = [\r\n\t\t\t{ value: StatementNotificationType.Paper, label: this.i18n.i18next.t('paper', 'Paper') },\r\n\t\t\t{ value: StatementNotificationType.Email, label: this.i18n.i18next.t('email', 'Email') },\r\n\t\t];\r\n\r\n\t\tthis.chkAccountNotifications = [\r\n\t\t\t{ value: AccountNotificationType.Email, label: this.i18n.i18next.t('email', 'Email') },\r\n\t\t];\r\n\r\n\t\tif (this.isSmsEnabled) {\r\n\t\t\tthis.chkAccountNotifications.push(\r\n\t\t\t\t{ value: AccountNotificationType.Sms, label: this.i18n.i18next.t('smsText', 'SMS (Text)') },\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.configureValidationRules();\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.chkGroupAccountNotificiations.push(AccountNotificationType.Email);\r\n\r\n\t\tif (this.isSmsEnabled) {\r\n\t\t\tthis.chkGroupAccountNotificiations.push(AccountNotificationType.Sms);\r\n\t\t}\r\n\r\n\t\tthis.newCustomer = !!this.globalState.associatedCustomers.length ?\r\n\t\t\tthis.globalState.associatedCustomers[this.globalState.associatedCustomers.length - 1] :\r\n\t\t\tnull;\r\n\r\n\t\tif (!this.newCustomer) {\r\n\t\t\talert('A newly associated customer is required.');\r\n\t\t\tthis.router.navigateToRoute('dashboard');\r\n\t\t}\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.validationController.validate()\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.valid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.validationController.errors = [];\r\n\r\n\t\t\t\tlet request = new SetCustomerNotificationSettingsRequest();\r\n\t\t\t\trequest.customerKey = this.newCustomer.customerKey;\r\n\t\t\t\trequest.emailAddress = this.newCustomer.email;\r\n\t\t\t\trequest.isEmailOptedIn = this.isEmailOptedIn;\r\n\t\t\t\trequest.isSmsOptedIn = this.isSmsOptedIn;\r\n\t\t\t\trequest.isSmsValidated = this.newCustomer.notificationSettings.smsIsValidated;\r\n\t\t\t\trequest.mobilePhoneNumber = this.valueMobileNumber;\r\n\r\n\t\t\t\treturn this.consumerService.setAssociatedCustomerNotificationPreferences(request);\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\t\tthrow new Error(response.resultMessage);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet verifySms = this.isSmsOptedIn\r\n\t\t\t\t\t&& !this.newCustomer.notificationSettings.smsIsValidated;\r\n\r\n\t\t\t\tif (verifySms) {\r\n\t\t\t\t\tlet routeSettings = {\r\n\t\t\t\t\t\tredirectTo: 'dashboard',\r\n\t\t\t\t\t\tphoneNumber: this.valueMobileNumber,\r\n\t\t\t\t\t\tcustomerId: this.newCustomer.id,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.router.currentInstruction.config.settings = routeSettings;\r\n\t\t\t\t\tthis.router.navigateToRoute('verification');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.router.navigateToRoute('dashboard');\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(reason => {\r\n\t\t\t\tthis.handleErrors();\r\n\t\t\t});\r\n\t}\r\n\r\n\thandleErrors() {\r\n\t\tlet baseMessage = this.i18n.i18next.t(\r\n\t\t\t'unableToRetrieveAccountInformation',\r\n\t\t\t'We are unable to retrieve your account information, please try again shortly.'\r\n\t\t);\r\n\r\n\t\tlet message = baseMessage;\r\n\r\n\t\tif (this.globalState.business.portalSettings.csPhone) {\r\n\t\t\tmessage = baseMessage +\r\n\t\t\t\t' ' +\r\n\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t'ifIssuePersistsPleaseContact',\r\n\t\t\t\t\t'If the issue persists please contact us at') +\r\n\t\t\t\t' ' +\r\n\t\t\t\tthis.globalState.business.portalSettings.csPhone +\r\n\t\t\t\t'.';\r\n\t\t}\r\n\r\n\t\tthis.validationController.errors = this.validationController.errors\r\n\t\t\t.concat([message]);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.router.navigateToRoute('dashboard');\r\n\t}\r\n\r\n\t// Using an observable to update the hidden selected Statement Notifications list.\r\n\t// See the ValidationRules comments towards the end of this file for a quick\r\n\t// explanation as to why this approach was taken.\r\n\tchkGroupStatementNotificationsChanged(splices: Array>) {\r\n\t\tthis.hiddenStatementNotifications = this.chkGroupStatementNotificiations;\r\n\r\n\t\tthis.updateIsEmailOptedIn();\r\n\t}\r\n\r\n\tchkGroupAccountNotificationsChanged(splices: Array>) {\r\n\t\tthis.hiddenAccountNotifications = this.chkGroupAccountNotificiations;\r\n\r\n\t\tthis.updateIsEmailOptedIn();\r\n\t\tthis.updateIsSmsOptedIn();\r\n\t}\r\n\r\n\tupdateIsEmailOptedIn() {\r\n\t\tthis.isEmailOptedIn = this.hiddenStatementNotifications.indexOf(StatementNotificationType.Email) > -1\r\n\t\t\t|| this.hiddenAccountNotifications.indexOf(AccountNotificationType.Email) > -1;\r\n\t}\r\n\r\n\tupdateIsSmsOptedIn() {\r\n\t\tthis.isSmsOptedIn = this.isSmsEnabled\r\n\t\t\t&& this.hiddenAccountNotifications.indexOf(AccountNotificationType.Sms) > -1;\r\n\t}\r\n\r\n\tconfigureValidationRules() {\r\n\t\t// Required for .ensureObject()\r\n\t\tthis.validationController.addObject(this);\r\n\t\tlet self = this;\r\n\t\tValidationRules\r\n\t\t\t// Validating a hidden control in order to make it easier to display the validation\r\n\t\t\t// error message once.\r\n\t\t\t.ensure((x: AddCustomerNotificationPreferences) => x.hiddenStatementNotifications)\r\n\t\t\t.minItems(1)\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => self.isInvoiceEnabled)\r\n\t\t\t.withMessage(\r\n\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t'aPaperOrEmailStatementNotificationsSelectionIsRequired',\r\n\t\t\t\t\t'A Paper or Email Statement Notifications selection is required.'\r\n\t\t\t\t)\r\n\t\t\t)\r\n\r\n\t\t\t.ensure((x: AddCustomerNotificationPreferences) => x.hiddenAccountNotifications)\r\n\t\t\t.minItems(1)\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => self.isInvoiceEnabled)\r\n\t\t\t.withMessage(\r\n\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t'anEmailOrSmsAccountNotificationsSelectionIsRequired',\r\n\t\t\t\t\t'An Email or SMS (Text) Account Notifications selection is required.'\r\n\t\t\t\t)\r\n\t\t\t)\r\n\r\n\t\t\t.ensure((x: AddCustomerNotificationPreferences) => x.valueEmailAddress)\r\n\t\t\t.displayName(\r\n\t\t\t\tthis.i18n.i18next.t('email', 'Email Address')\r\n\t\t\t)\r\n\t\t\t.email()\r\n\t\t\t.required()\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => x.isEmailOptedIn)\r\n\r\n\t\t\t.then()\r\n\t\t\t.ensure((x: AddCustomerNotificationPreferences) => x.valueEmailAddressConfirm)\r\n\t\t\t.displayName(\r\n\t\t\t\tthis.i18n.i18next.t('confirmEmailAddress', 'Confirm Email Address')\r\n\t\t\t)\r\n\t\t\t.email()\r\n\t\t\t.required()\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => x.isEmailOptedIn && !!x.valueEmailAddress.length)\r\n\r\n\t\t\t.then()\r\n\t\t\t.ensureObject()\r\n\t\t\t.satisfies((x: AddCustomerNotificationPreferences) => x.valueEmailAddressConfirm === x.valueEmailAddress)\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => x.isEmailOptedIn\r\n\t\t\t\t&& !!x.valueEmailAddressConfirm.length\r\n\t\t\t\t&& !!x.valueEmailAddress.length\r\n\t\t\t)\r\n\t\t\t.withMessage(\r\n\t\t\t\tthis.i18n.i18next.t('emailAddressesDoNotMatch', 'The email addresses do not match.')\r\n\t\t\t)\r\n\r\n\t\t\t.ensure((x: AddCustomerNotificationPreferences) => x.valueMobileNumber)\r\n\t\t\t.displayName(\r\n\t\t\t\tthis.i18n.i18next.t('mobileNumber', 'Mobile Number')\r\n\t\t\t)\r\n\t\t\t.required()\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => x.isSmsOptedIn)\r\n\r\n\t\t\t.ensureObject()\r\n\t\t\t.satisfies((x: AddCustomerNotificationPreferences) =>\r\n\t\t\t\tValidationHelpers.isPhoneNumber(x.valueMobileNumber)\r\n\t\t\t)\r\n\t\t\t.withMessage(\r\n\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t'enterTenDigitPhoneNumber',\r\n\t\t\t\t\t'Please enter a 10 digit mobile phone number.'\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t\t.when((x: AddCustomerNotificationPreferences) => !!x.valueMobileNumber.length)\r\n\r\n\t\t\t.on(this);\r\n\t}\r\n}\r\n\r\nexport interface ICheckBoxGroup {\r\n\tvalue: number;\r\n\tlabel: string;\r\n}\r\n\r\nexport enum StatementNotificationType {\r\n\tPaper = 0,\r\n\tEmail\r\n}\r\n\r\nexport enum AccountNotificationType {\r\n\tEmail = 0,\r\n\tSms\r\n}\r\n","module.exports = \"\";","export class AddRemoveCustomer {\r\n\t// TODO\r\n}","module.exports = \"\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { inject, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Redirect } from 'aurelia-router';\r\nimport { Features } from '../models/features';\r\nimport { FeatureService } from '../services/feature-service';\r\nimport { State } from '../services/global-state';\r\nimport { SessionManager } from \"../services/session-manager\";\r\nimport { HTTPInjector } from \"../services/http-injector\";\r\nimport { AuthorizationRedirectManager } from '../helpers/authorization-redirect-manager';\r\n\r\n// Note: this is the same event from aurelia i18next\r\nexport const I18N_EA_SIGNAL = \"i18n:locale:changed\";\r\n\r\n@autoinject\r\nexport class App {\r\n\tupdateTranslationsSubscriber: any;\r\n\r\n\tconstructor(\r\n public httpInjector: HTTPInjector, //Load the injector to be used app wide\r\n private globalState: State,\r\n private featureService: FeatureService,\r\n\t\tprivate eventAggregator: EventAggregator,\r\n private i18n: I18N,\r\n private element: Element\r\n ) {\r\n\t\tlet self = this;\r\n\r\n this.updateTranslationsSubscriber = this.eventAggregator.subscribe(I18N_EA_SIGNAL, () => {\r\n\t\t\tself.i18n.updateTranslations(self.element);\r\n\t\t});\r\n\t}\r\n\r\n\tactivate() {\r\n\t\treturn this.featureService.getFeatures().then(response => {\r\n\t\t\ttry {\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tthis.globalState.features = new Features(response.entity);\r\n\t\t\t\t\tconsole.log('Features loaded.');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('getFeatures failed to retrieve features.')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch (err) {\r\n\t\t\t\tconsole.log('Error occurred while assigning features.');\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\tconsole.log('getFeatures failed.', error);\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tconfigureRouter(config, router) {\r\n\t\tconfig.title = 'myPayrazr portal';\r\n\t\tconfig.options.pushState = true;\r\n\t\tconfig.options.root = '/NewPortalWeb/';\r\n\t\tconfig.addPipelineStep('authorize', TimeoutStep);\r\n\t\tconfig.map([\r\n\t\t\t{ route: ['portal/:id', 'm/:id'], name: 'portal', moduleId: './portal' },\r\n\t\t\t{ route: '401', name: '401', moduleId: './http-status/401', title: 'Session expired' },\r\n\t\t\t{ route: 'inactive', name: 'inactive', moduleId: './login-register/inactive', title: 'Inactive Portal' },\r\n\t\t\t{ route: 'error', name: 'error', moduleId: './error/error', title: 'An Error Occurred' },\r\n\t\t\t{ route: 'terms', name: 'terms', moduleId: './legal/terms', title: 'Website terms of use' },\r\n\t\t\t{ route: 'disclosures', name: 'disclosures', moduleId: './legal/disclosures', title: 'Website legal disclosures' },\r\n\t\t\t{ route: 'privacy-policy', name: 'privacy-policy', moduleId: './legal/privacy-policy', title: 'Privacy Policy' }\r\n\t\t]);\r\n\r\n\t\tconfig.mapUnknownRoutes('./http-status/404');\r\n\r\n\t}\r\n}\r\n\r\n@autoinject\r\nclass TimeoutStep {\r\n\r\n\tconstructor(private sessionManager: SessionManager, private authRedirectManager: AuthorizationRedirectManager,\r\n\t\tprivate globalState: State) {\r\n\t}\r\n\r\n\trun(navigationInstruction: any, next: any) {\r\n\t\tlet timedOut = !this.sessionManager.sessionTimer;\r\n\r\n\t\tif (timedOut) {\r\n\t\t\tnext.cancel(new Redirect('401'));\r\n\t\t}\r\n\r\n\t\t// only secure routes require auth check\r\n\t\tlet isAuthRequired: boolean = navigationInstruction.getAllInstructions().some(i => i.config.settings?.auth ?? false);\r\n\t\tif (!isAuthRequired) {\r\n\t\t\treturn next();\r\n\t\t}\r\n\t\t// check to make sure token has consumerUserId before accessing secure pages\r\n\t\tif (!this.sessionManager.isAuthenticated()) {\r\n\t\t\treturn next.cancel(new Redirect(this.authRedirectManager.handleNotAuthorized(navigationInstruction)));\r\n\t\t}\r\n\t\t// if populated, redirectUri will be the original destination uri before auth failed\r\n\t\tlet redirectUri = this.authRedirectManager.getPreAuthUri();\r\n\t\tif (redirectUri) {\r\n\t\t\treturn next.cancel(new Redirect(redirectUri));\r\n\t\t}\r\n\r\n\t\treturn next();\r\n\r\n\t\treturn next();\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { bindable, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { AutopayService } from './autopay.service';\r\nimport { Account } from '../../models/customer';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { Autopay } from '../../models/autopay';\r\nimport { PortalTemplateTypes } from '../../services/template-service';\r\n\r\n@autoinject\r\nexport class EditAutopayReceipt {\r\n\tisLoading = true;\r\n\tpaymentInformation: any;\r\n\taccount: Account;\r\n\tportfolio: Portfolio;\r\n\tautopay: Autopay;\r\n\tbucketKey: number | null;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate eventAggregator: EventAggregator,\r\n\t\tprivate autopayService: AutopayService\r\n\t) {\r\n\t}\r\n\tactivate(model) {\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === model.id;\r\n\t\t});\r\n\t\tthis.portfolio = this.globalState.customer.portfolios.find((element, index, array) => {\r\n\t\t\treturn element.portfolioName === this.account.portfolioName;\r\n\t\t});\r\n\t\tthis.bucketKey = this.account.bucket\r\n\t\t\t? this.account.bucket.bucketKey\r\n\t\t\t: this.account.bucketKey || null;\r\n\r\n\t\tif (!this.autopayService.autopay) {\r\n\t\t\tthis.goToView();\r\n\t\t}\r\n\r\n\t\tthis.getPaymentInformation();\r\n\t}\r\n\r\n\tgetPaymentInformation() {\r\n\t\tthis.paymentInformation = {\r\n\t\t\tportalTemplateType: PortalTemplateTypes.AutopayPlanReceipt,\r\n\t\t\tautopayKey: this.autopayService.autopay.key,\r\n\t\t\tmerchantKey: '',\r\n\t\t\tsavedPaymentMethodToWallet: this.autopayService.savedToWallet\r\n\t\t};\r\n\r\n\t\tif (this.globalState.business.portalSettings.businessSettings.enableCustomerAccountName) {\r\n\t\t\tthis.paymentInformation.customerAccountName = this.account.name;\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tshowError(error: string) {\r\n\t\t// TODO: Use something other than alerts here, like toast\r\n\t\talert(error);\r\n\t}\r\n\r\n\tgoToView() {\r\n\t\tthis.router.navigateToRoute('autopay/view-autopay', { id: this.account.id });\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport numeral from 'numeral';\r\nimport { HPFServiceClient } from '../../services/hpfApi';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Autopay, AutopayResponse, Ach, Card, ExpirationType } from '../../models/autopay';\r\nimport { UpdateAutopayRequest, CreateAutopayRequest } from '../../models/hpfApi';\r\nimport { ApiResponse } from '../../models/api-response';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { FormattingHelper } from '../../helpers/formatting-helper';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { State } from '../../services/global-state';\r\n\r\n@autoinject\r\nexport class AutopayService {\r\n\tautopay: Autopay;\r\n\tformattedConvenienceFee: string;\r\n\tisTieredFees: boolean;\r\n\tsavedToWallet: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate payrazrApi: PayrazrService,\r\n\t\tprivate hpfApi: HPFServiceClient,\r\n\t\tprivate globalState: State\r\n\t) { }\r\n\r\n\tgetLatestAutopay(customerAccountKey: number): Promise {\r\n\t\treturn this.hpfApi.getAutopayByAccount(customerAccountKey.toString())\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.isSuccessful) {\r\n\t\t\t\t\treturn this.autopay = this.parseAutopayResponse(result.value, customerAccountKey);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetUpdatedAutopay(): Promise {\r\n\t\treturn this.hpfApi.getAutopayByKey(this.autopay.key.toString());\r\n\t}\r\n\r\n\tupdateAutopay(autopayKey: number, method: Ach | Card, maxPaymentAmount?: number, payInFull?: boolean): Promise {\r\n\t\tconst request = new UpdateAutopayRequest(\r\n\t\t\tmethod,\r\n\t\t\tmaxPaymentAmount,\r\n\t\t\tpayInFull\r\n\t\t);\r\n\t\treturn this.hpfApi.updateAutopay(autopayKey.toString(), request);\r\n\t}\r\n\r\n\tcreateAutopay(autopay: Autopay): Promise {\r\n\t\tthis.autopay = autopay; // store the autopay for use in receipt page\r\n\t\tconst request = new CreateAutopayRequest(\r\n\t\t\tautopay.customerAccountKey,\r\n\t\t\tautopay.frequency.autopayTriggerType,\r\n\t\t\tautopay.frequency.autopayTriggerType === 5 ? autopay.dayOfMonth : autopay.frequency.value,\r\n\t\t\tthis.getExpirationType(autopay),\r\n\t\t\tautopay.maxPaymentAmount,\r\n\t\t\tautopay.payInFull,\r\n\t\t\tautopay.paymentMethod,\r\n\t\t\tautopay.overriddenFeeAmount,\r\n\t\t\tautopay.numberOfPayments,\r\n\t\t\tautopay.endDate\r\n\t\t);\r\n\t\treturn this.hpfApi.createAutopay(request);\r\n\t}\r\n\r\n\tparseAutopayResponse(autopayResponse: AutopayResponse, customerAccountKey: number): Autopay {\r\n\t\tlet autopay = new Autopay();\r\n\t\tautopay.customerAccountKey = customerAccountKey;\r\n\t\tautopay.endDate = autopayResponse.endDate ? new Date(autopayResponse.endDate) : null;\r\n\t\tautopay.frequency = autopayResponse.trigger;\r\n\t\tautopay.key = autopayResponse.autopayKey;\r\n\t\tautopay.maxPaymentAmount = autopayResponse.maxPaymentAmount;\r\n\t\tautopay.numberOfPayments = autopayResponse.numberOfPayments;\r\n\t\tautopay.payInFull = autopayResponse.willPayInFull;\r\n\t\tautopay.paymentMethod = autopayResponse.paymentMethod;\r\n\t\tautopay.startDate = new Date(autopayResponse.startDate);\r\n\t\tautopay.feeCalculationType = autopayResponse.feeCalculationType;\r\n\t\tautopay.feeValue = autopayResponse.feeValue;\r\n\t\tautopay.feeValues = autopayResponse.feeValues;\r\n\t\treturn autopay;\r\n\t}\r\n\r\n\tsetFeeSettings(autopay: Autopay, isFeeEnabled: boolean) {\r\n\t\tif (autopay && isFeeEnabled) {\r\n\t\t\t// overridden fee\r\n\t\t\tif (autopay.feeValue !== null) {\r\n\t\t\t\t// overridden fees are always fixed\r\n\t\t\t\tthis.formattedConvenienceFee = numeral(autopay.feeValue).format('($0,0.00)');\r\n\t\t\t}\r\n\t\t\t// single fee\r\n\t\t\telse if (autopay.feeValues !== null && autopay.feeValues.length > 0 && autopay.feeValues.every(fv => fv.tierLimitKey === 1)) {\r\n\t\t\t\tlet tier1FeeValue = autopay.feeValues.find(fv => fv.tierLimitKey === 1);\r\n\r\n\t\t\t\tthis.formattedConvenienceFee = tier1FeeValue.feeCalculationType === FeeCalculationType.Percentage\r\n\t\t\t\t\t? `${numeral(tier1FeeValue.feeValue).format('0.[0000]')}%`\r\n\t\t\t\t\t: numeral(tier1FeeValue.feeValue).format('($0,0.00)');\r\n\t\t\t}\r\n\t\t\t// tiered fees\r\n\t\t\telse {\r\n\t\t\t\tthis.formattedConvenienceFee = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetConfirmationTemplate(data: any): Promise {\r\n\t\tlet templateData: TemplateData = new TemplateData(data);\r\n\t\treturn this.payrazrApi.applyTemplateAndReturnHash('Autopay Plan Confirmation', templateData);\r\n\t}\r\n\r\n\tgetStartDate(): string {\r\n\t\tlet startDate = '';\r\n\r\n\t\tif (this.autopay && this.autopay.startDate) {\r\n\t\t\tstartDate = new Date(this.autopay.startDate).toLocaleDateString();\r\n\t\t}\r\n\r\n\t\treturn startDate;\r\n\t}\r\n\r\n\tgetEndDate(): string {\r\n\t\tlet endDate = 'N/A';\r\n\r\n\t\tif (this.autopay) {\r\n\t\t\tif (this.autopay.endDate) {\r\n\t\t\t\tendDate = new Date(this.autopay.endDate).toLocaleDateString();\r\n\t\t\t} else if (!this.autopay.numberOfPayments) {\r\n\t\t\t\tendDate = this.i18n.i18next.t('indefinite', 'Indefinite');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn endDate;\r\n\t}\r\n\r\n\tgetPaymentLimit(): string {\r\n\t\tlet limit: string = '';\r\n\r\n\t\tif (!this.autopay) {\r\n\t\t\treturn limit;\r\n\t\t}\r\n\r\n\t\tif (this.autopay.payInFull) {\r\n\t\t\tlimit = this.i18n.i18next.t('payInFull', 'Pay In Full');\r\n\t\t} else if (this.autopay.maxPaymentAmount) {\r\n\t\t\tlimit = FormattingHelper.formatCurrency(this.autopay.maxPaymentAmount);\r\n\t\t}\r\n\r\n\t\treturn limit;\r\n\t}\r\n\r\n\tgetExpirationType(autopay: Autopay): ExpirationType {\r\n\t\tlet type = null;\r\n\r\n\t\tif (autopay.endDate) {\r\n\t\t\ttype = ExpirationType.EndDate;\r\n\t\t} else if (autopay.numberOfPayments) {\r\n\t\t\ttype = ExpirationType.NumberOfPayments;\r\n\t\t} else {\r\n\t\t\ttype = ExpirationType.Indefinite;\r\n\t\t}\r\n\r\n\t\treturn type;\r\n\t}\r\n\r\n\tgetIsTieredFees() {\r\n\t\treturn this.autopay.overriddenFeeAmount == null && this.autopay.feeValues.some(fv => fv.tierLimitKey > 1);\r\n\t}\r\n}\r\n\r\nexport interface ITemplateResponse {\r\n\ttemplateHtml: string;\r\n\thashedValue: string;\r\n}\r\n","import { mock, instance, when, verify, anything } from 'ts-mockito';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { AutopayService } from './autopay.service';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Autopay, AutopayResponse } from '../../models/autopay/autopay';\r\nimport numeral from 'numeral';\r\nimport { State } from '../../services/global-state';\r\nimport { HPFServiceClient } from '../../services/hpfApi';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { SourcePayRazrApplication } from '../../models/sourcePayRazrApplication';\r\nimport { Ach, AutopayFrequencyOption, ExpirationType, PaymentMethodType } from '../../models/autopay';\r\nimport { FormattingHelper } from '../../helpers/formatting-helper';\r\nimport { ApiResponse } from '../../models/api-response';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('autopay', () => {\r\n\t\t\tdescribe('service', () => {\r\n\t\t\t\tlet svc: AutopayService;\r\n\t\t\t\tconst mockHPFServiceClient: HPFServiceClient = mock(HPFServiceClient);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockState: State = mock();\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tlet modelAutopay: Autopay = new Autopay();\r\n\t\t\t\tlet isFeeEnabled = true;\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tsvc = new AutopayService(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\t\tinstance(mockHPFServiceClient),\r\n\t\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should initialize', () => {\r\n\t\t\t\t\texpect(svc).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('setFeeSettings()', () => {\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tmodelAutopay = new Autopay();\r\n\t\t\t\t\t\tsvc.autopay = new Autopay();\r\n\t\t\t\t\t\tmodelAutopay.feeValue = 10;\r\n\t\t\t\t\t\tmodelAutopay.overriddenFeeAmount = null;\r\n\t\t\t\t\t\tmodelAutopay.feeValues = [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tsourcePayRazrApplication: SourcePayRazrApplication.ConsumerPortal,\r\n\t\t\t\t\t\t\t\tfeePaymentMethodType: PaymentMethodType.Card,\r\n\t\t\t\t\t\t\t\tfeeValue: modelAutopay.feeValue,\r\n\t\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.FixedAmount,\r\n\t\t\t\t\t\t\t\ttierLimitKey: 1,\r\n\t\t\t\t\t\t\t\ttierLimitAmount: 100\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t];\r\n\t\t\t\t\t\tmodelAutopay.feeCalculationType = FeeCalculationType.FixedAmount;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should override fee amount when autopay.overriddenFeeAmount is not null for fee calculation type FixedAmount', () => {\r\n\t\t\t\t\t\tsvc.autopay.overriddenFeeAmount = 10;\r\n\t\t\t\t\t\tmodelAutopay.overriddenFeeAmount = 10;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tsvc.setFeeSettings(modelAutopay, isFeeEnabled);\r\n\t\t\t\t\t\texpect(svc.formattedConvenienceFee).toBe(numeral(svc.autopay.overriddenFeeAmount).format('($0,0.00)'))\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should formattedConvenienceFee be same as fee value for fee calculation type FixedAmount', () => {\r\n\t\t\t\t\t\tsvc.setFeeSettings(modelAutopay, isFeeEnabled);\r\n\t\t\t\t\t\texpect(svc.formattedConvenienceFee).toBe(numeral(modelAutopay.feeValue).format('($0,0.00)'))\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set formattedConvenienceFee from tier fees when payInFull for fee calculation type FixedAmount', () => {\r\n\t\t\t\t\t\tmodelAutopay.payInFull = true;\r\n\t\t\t\t\t\tsvc.setFeeSettings(modelAutopay, isFeeEnabled);\r\n\t\t\t\t\t\texpect(svc.formattedConvenienceFee).toBe(numeral(modelAutopay.feeValues[0].feeValue).format('($0,0.00)'))\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set formattedConvenienceFee from tier fees when payInFull for fee calculation type Percentage', () => {\r\n\t\t\t\t\t\tmodelAutopay.feeValue = null;\r\n\t\t\t\t\t\tmodelAutopay.feeCalculationType = FeeCalculationType.Percentage;\r\n\t\t\t\t\t\tmodelAutopay.feeValues[0].feeCalculationType = modelAutopay.feeCalculationType;\r\n\t\t\t\t\t\tmodelAutopay.payInFull = true;\r\n\t\t\t\t\t\tsvc.setFeeSettings(modelAutopay, isFeeEnabled);\r\n\t\t\t\t\t\texpect(svc.formattedConvenienceFee).toBe(`${numeral(modelAutopay.feeValues[0].feeValue).format('0.[0000]')}%`)\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set formattedConvenienceFee from tier fees when payInFull is false for fee calculation type FixedAmount', () => {\r\n\t\t\t\t\t\tmodelAutopay.payInFull = false;\r\n\t\t\t\t\t\tmodelAutopay.maxPaymentAmount = 150;\r\n\t\t\t\t\t\tmodelAutopay.feeValues.push({\r\n\t\t\t\t\t\t\tsourcePayRazrApplication: SourcePayRazrApplication.ConsumerPortal,\r\n\t\t\t\t\t\t\tfeePaymentMethodType: PaymentMethodType.Card,\r\n\t\t\t\t\t\t\tfeeValue: modelAutopay.feeValue,\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.FixedAmount,\r\n\t\t\t\t\t\t\ttierLimitKey: 2,\r\n\t\t\t\t\t\t\ttierLimitAmount: 150\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tmodelAutopay.feeValues.push({\r\n\t\t\t\t\t\t\tsourcePayRazrApplication: SourcePayRazrApplication.ConsumerPortal,\r\n\t\t\t\t\t\t\tfeePaymentMethodType: PaymentMethodType.Card,\r\n\t\t\t\t\t\t\tfeeValue: modelAutopay.feeValue,\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.FixedAmount,\r\n\t\t\t\t\t\t\ttierLimitKey: 3,\r\n\t\t\t\t\t\t\ttierLimitAmount: 160\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tsvc.setFeeSettings(modelAutopay, isFeeEnabled);\r\n\t\t\t\t\t\texpect(svc.formattedConvenienceFee).toBe(numeral(modelAutopay.feeValues[1].feeValue).format('($0,0.00)'))\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set formattedConvenienceFee from tier fees when payInFull is false for fee calculation type Percentage', () => {\r\n\t\t\t\t\t\tmodelAutopay.payInFull = false;\r\n\t\t\t\t\t\tmodelAutopay.maxPaymentAmount = 200;\r\n\t\t\t\t\t\tmodelAutopay.feeValue = null,\r\n\t\t\t\t\t\tmodelAutopay.feeValues.push({\r\n\t\t\t\t\t\t\tsourcePayRazrApplication: SourcePayRazrApplication.ConsumerPortal,\r\n\t\t\t\t\t\t\tfeePaymentMethodType: PaymentMethodType.Card,\r\n\t\t\t\t\t\t\tfeeValue: modelAutopay.feeValue,\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.Percentage,\r\n\t\t\t\t\t\t\ttierLimitKey: 1,\r\n\t\t\t\t\t\t\ttierLimitAmount: 140\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tmodelAutopay.feeValues.push({\r\n\t\t\t\t\t\t\tsourcePayRazrApplication: SourcePayRazrApplication.ConsumerPortal,\r\n\t\t\t\t\t\t\tfeePaymentMethodType: PaymentMethodType.Card,\r\n\t\t\t\t\t\t\tfeeValue: modelAutopay.feeValue,\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.Percentage,\r\n\t\t\t\t\t\t\ttierLimitKey: 2,\r\n\t\t\t\t\t\t\ttierLimitAmount: 150\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tmodelAutopay.feeValues.push({\r\n\t\t\t\t\t\t\tsourcePayRazrApplication: SourcePayRazrApplication.ConsumerPortal,\r\n\t\t\t\t\t\t\tfeePaymentMethodType: PaymentMethodType.Card,\r\n\t\t\t\t\t\t\tfeeValue: modelAutopay.feeValue,\r\n\t\t\t\t\t\t\tfeeCalculationType: FeeCalculationType.Percentage,\r\n\t\t\t\t\t\t\ttierLimitKey: 3,\r\n\t\t\t\t\t\t\ttierLimitAmount: 160\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tsvc.setFeeSettings(modelAutopay, isFeeEnabled);\r\n\t\t\t\t\t\texpect(svc.formattedConvenienceFee).toBe(null);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getExpirationType()', () => {\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tmodelAutopay = new Autopay();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return ExpirationType.Indefinite when no type has been set', () => {\r\n\t\t\t\t\t\tvar result = svc.getExpirationType(modelAutopay);\r\n\t\t\t\t\t\texpect(result).toBe(ExpirationType.Indefinite);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return ExpirationType.EndDate when model endDate has value', () => {\r\n\t\t\t\t\t\tmodelAutopay.endDate = new Date();\r\n\t\t\t\t\t\tvar result = svc.getExpirationType(modelAutopay);\r\n\t\t\t\t\t\texpect(result).toBe(ExpirationType.EndDate);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return ExpirationType.NumberOfPayments when model numberOfPayments has value', () => {\r\n\t\t\t\t\t\tmodelAutopay.numberOfPayments = 1;\r\n\t\t\t\t\t\tvar result = svc.getExpirationType(modelAutopay);\r\n\t\t\t\t\t\texpect(result).toBe(ExpirationType.NumberOfPayments);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getPaymentLimit()', () => {\r\n\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tsvc.autopay = new Autopay();\r\n\t\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return limit as empty when no autopay has been set', () => {\r\n\t\t\t\t\t\tsvc.autopay = null;\r\n\t\t\t\t\t\tvar result = svc.getPaymentLimit();\r\n\t\t\t\t\t\texpect(result).not.toBe(null);\r\n\t\t\t\t\t\texpect(result).toBe('');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return Pay In Full when model autopay has payInFull as true', () => {\r\n\t\t\t\t\t\tsvc.autopay.payInFull = true;\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue('Pay In Full');\r\n\t\t\t\t\t\tvar result = svc.getPaymentLimit();\r\n\t\t\t\t\t\texpect(result).toBe('Pay In Full');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return maxPaymentAmount when model autopay has payInFull as false', () => {\r\n\t\t\t\t\t\tsvc.autopay.payInFull = false;\r\n\t\t\t\t\t\tsvc.autopay.maxPaymentAmount = 100;\r\n\t\t\t\t\t\tvar result = svc.getPaymentLimit();\r\n\t\t\t\t\t\texpect(result).toBe(FormattingHelper.formatCurrency(svc.autopay.maxPaymentAmount));\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getEndDate()', () => {\r\n\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tsvc.autopay = new Autopay();\r\n\t\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return N/A when no autopay has been set', () => {\r\n\t\t\t\t\t\tsvc.autopay = null;\r\n\t\t\t\t\t\tvar result = svc.getEndDate();\r\n\t\t\t\t\t\texpect(result).not.toBe(null);\r\n\t\t\t\t\t\texpect(result).toBe('N/A');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return Indefinete when model autopay has not set the number of payments', () => {\r\n\t\t\t\t\t\tsvc.autopay.numberOfPayments = null;\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue('Indefinite');\r\n\t\t\t\t\t\tvar result = svc.getEndDate();\r\n\t\t\t\t\t\texpect(result).toBe('Indefinite');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return endDate when model autopay has set a endDate as false', () => {\r\n\t\t\t\t\t\tconst endDate = new Date();\r\n\t\t\t\t\t\tsvc.autopay.endDate = endDate;\r\n\t\t\t\t\t\tsvc.autopay.maxPaymentAmount = 100;\r\n\t\t\t\t\t\tvar result = svc.getEndDate();\r\n\t\t\t\t\t\texpect(result).toBe(new Date(endDate).toLocaleDateString());\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getStartDate()', () => {\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tsvc.autopay = new Autopay();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return empty string when no autopay has been set', () => {\r\n\t\t\t\t\t\tsvc.autopay = null;\r\n\t\t\t\t\t\tvar result = svc.getStartDate();\r\n\t\t\t\t\t\texpect(result).not.toBe(null);\r\n\t\t\t\t\t\texpect(result).toBe('');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return startDate when autopay startDate has been set', () => {\r\n\t\t\t\t\t\tconst startDate = new Date();\r\n\t\t\t\t\t\tsvc.autopay.startDate = startDate;\r\n\t\t\t\t\t\tvar result = svc.getStartDate();\r\n\t\t\t\t\t\texpect(result).not.toBe(null);\r\n\t\t\t\t\t\texpect(result).toBe(new Date(startDate).toLocaleDateString());\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('parseAutopayResponse()', () => {\r\n\r\n\t\t\t\t\tit('should return an autopay object with same properties values as the AutoPayResponse object', () => {\r\n\t\t\t\t\t\tconst customerAccountKey = 1;\r\n\t\t\t\t\t\tlet autopayResponse = new AutopayResponse();\r\n\t\t\t\t\t\tlet autopayFrequencyOption = new AutopayFrequencyOption();\r\n\t\t\t\t\t\tautopayResponse.trigger = autopayFrequencyOption;\r\n\t\t\t\t\t\tautopayResponse.autopayKey = 1;\r\n\t\t\t\t\t\tautopayResponse.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tautopayResponse.numberOfPayments = 1;\r\n\t\t\t\t\t\tautopayResponse.overriddenFeeAmount = 1;\r\n\t\t\t\t\t\tautopayResponse.willPayInFull = true;\r\n\t\t\t\t\t\tautopayResponse.paymentMethod = new Ach();\r\n\t\t\t\t\t\tautopayResponse.startDate = '2021-10-04';\r\n\t\t\t\t\t\tautopayResponse.feeCalculationType = FeeCalculationType.FixedAmount;\r\n\t\t\t\t\t\tautopayResponse.feeValue = 1;\r\n\t\t\t\t\t\tautopayResponse.feeValues = [];\r\n\r\n\t\t\t\t\t\tlet result = svc.parseAutopayResponse(autopayResponse, customerAccountKey);\r\n\t\t\t\t\t\texpect(result.customerAccountKey).toBe(customerAccountKey);\r\n\t\t\t\t\t\texpect(result.frequency).toBe(autopayFrequencyOption);\r\n\t\t\t\t\t\texpect(result.key).toBe(autopayResponse.autopayKey);\r\n\t\t\t\t\t\texpect(result.maxPaymentAmount).toBe(autopayResponse.maxPaymentAmount);\r\n\t\t\t\t\t\texpect(result.numberOfPayments).toBe(autopayResponse.numberOfPayments);\r\n\t\t\t\t\t\texpect(result.payInFull).toBe(autopayResponse.willPayInFull);\r\n\t\t\t\t\t\texpect(result.paymentMethod).toBe(autopayResponse.paymentMethod);\r\n\t\t\t\t\t\texpect(result.startDate).toEqual(new Date(autopayResponse.startDate));\r\n\t\t\t\t\t\texpect(result.feeCalculationType).toBe(autopayResponse.feeCalculationType);\r\n\t\t\t\t\t\texpect(result.feeValue).toBe(autopayResponse.feeValue);\r\n\t\t\t\t\t\texpect(result.feeValues).toBe(autopayResponse.feeValues);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('createAutopay()', () => {\r\n\r\n\t\t\t\t\tit('should call hpfApi.createAutopay to create a autopay', () => {\r\n\r\n\t\t\t\t\t\tlet autopay = new Autopay();\r\n\t\t\t\t\t\tautopay.customerAccountKey = 1;\r\n\t\t\t\t\t\tautopay.frequency = new AutopayFrequencyOption();\r\n\t\t\t\t\t\tautopay.frequency.autopayTriggerType = 5;\r\n\t\t\t\t\t\tautopay.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tautopay.payInFull = true;\r\n\t\t\t\t\t\tautopay.paymentMethod = new Ach();\r\n\t\t\t\t\t\tautopay.overriddenFeeAmount = 1;\r\n\t\t\t\t\t\tautopay.numberOfPayments = 1;\r\n\t\t\t\t\t\tautopay.endDate = new Date();\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockHPFServiceClient.createAutopay(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tsvc.createAutopay(autopay);\r\n\r\n\t\t\t\t\t\tverify(mockHPFServiceClient.createAutopay(anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('updateAutopay()', () => {\r\n\r\n\t\t\t\t\tit('should call hpfApi.updateAutopay to update an autopay', () => {\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockHPFServiceClient.updateAutopay(anything(), anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tsvc.updateAutopay(anything(), anything(), anything(), anything());\r\n\r\n\t\t\t\t\t\tverify(mockHPFServiceClient.updateAutopay(anything(), anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getUpdatedAutopay()', () => {\r\n\r\n\t\t\t\t\tit('should call hpfApi.getAutopayByKey to retrieve an autopay', () => {\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockHPFServiceClient.getAutopayByKey(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tsvc.autopay = new Autopay();\r\n\t\t\t\t\t\tsvc.autopay.key = 1;\r\n\r\n\t\t\t\t\t\tsvc.getUpdatedAutopay();\r\n\r\n\t\t\t\t\t\tverify(mockHPFServiceClient.getAutopayByKey(anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getLatestAutopay()', () => {\r\n\r\n\t\t\t\t\tit('should return an autopay object and call hpfApi.getAutopayByAccount to retrieve an autopay by customer account key', async () => {\r\n\r\n\t\t\t\t\t\tlet autopay = new Autopay();\r\n\t\t\t\t\t\tautopay.customerAccountKey = 1;\r\n\t\t\t\t\t\tautopay.frequency = new AutopayFrequencyOption();\r\n\t\t\t\t\t\tautopay.frequency.autopayTriggerType = 5;\r\n\t\t\t\t\t\tautopay.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tautopay.payInFull = true;\r\n\t\t\t\t\t\tautopay.paymentMethod = new Ach();\r\n\t\t\t\t\t\tautopay.overriddenFeeAmount = 1;\r\n\t\t\t\t\t\tautopay.numberOfPayments = 1;\r\n\t\t\t\t\t\tautopay.endDate = new Date();\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\tvalue: autopay\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockHPFServiceClient.getAutopayByAccount(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tvar result = await svc.getLatestAutopay(anything());\r\n\r\n\t\t\t\t\t\tverify(mockHPFServiceClient.getAutopayByAccount(anything())).called();\r\n\t\t\t\t\t\texpect(result).not.toBe(null);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return null and call hpfApi.getAutopayByAccount to retrieve an autopay by customer account key is not found', async () => {\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: false\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockHPFServiceClient.getAutopayByAccount(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tvar result = await svc.getLatestAutopay(anything());\r\n\r\n\t\t\t\t\t\tverify(mockHPFServiceClient.getAutopayByAccount(anything())).called();\r\n\t\t\t\t\t\texpect(result).toBe(null);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getConfirmationTemplate()', () => {\r\n\r\n\t\t\t\t\tit('should callpayrazrApi.applyTemplateAndReturnHash to retrieve the confirmation template', () => {\r\n\r\n\t\t\t\t\t\twhen(mockPayrazrService.applyTemplateAndReturnHash(anything(), anything())).thenResolve({\r\n\t\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tsvc.getConfirmationTemplate(anything());\r\n\r\n\t\t\t\t\t\tverify(mockPayrazrService.applyTemplateAndReturnHash(anything(), anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import {DialogController} from 'aurelia-dialog';\r\nimport { I18N } from 'aurelia-i18n';\r\n \r\nexport class CancelAutopayDialog {\r\n\tstatic inject = [DialogController, I18N];\r\n\theader: string;\r\n\tsubheader: string;\r\n\r\n\tconstructor(public controller, private i18n) { }\r\n\r\n\tactivate() {\r\n\t\tthis.header = this.i18n.i18next.t('cancelAutopay', 'Cancel Autopay');\r\n\t\tthis.subheader = this.i18n.i18next.t('confirmCancelAutopay', 'You are about to cancel this autopay plan, do you wish to continue?');\r\n\t}\r\n}\r\n","module.exports = \" \\r\\n \\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Router } from 'aurelia-router';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport numeral from 'numeral';\r\nimport { State } from '../../services/global-state';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { PortalTemplateTypes } from '../../services/template-service';\r\nimport {\r\n\tAutopay,\r\n\tExpirationType,\r\n\tAchAccountType,\r\n\tCard,\r\n\tAch,\r\n\tPaymentMethodType\r\n} from '../../models/autopay';\r\nimport { Account } from '../../models/customer';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { AutopayService } from './autopay.service';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { FeeCalculationValue } from '../../models/feeCalculationValue';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\n\r\n@autoinject\r\nexport class AutopayConfirmation {\r\n\tpaymentInformation: any; // TODO: Build class around this\r\n\tisLoading = false;\r\n\tisSubmitting = false;\r\n\tstate = 'edit';\r\n\tautopay: Autopay;\r\n\taccount: Account;\r\n\tportfolio: Portfolio;\r\n\tisChangingPaymentMethod = false;\r\n\tvalidationErrors: string[];\r\n\tnumberOfRetries = 0;\r\n\ttoday: string; // formatted date\r\n\tcontent: string;\r\n\thashedContent: string;\r\n\ttotalServiceFee: number;\r\n\tpaymentDate: moment.Moment;\r\n\ttransactionError: any;\r\n\tmakePaymentLabel: string;\r\n\tconfirmationTemplateData: TemplateData;\r\n\tconfirmationTitle: string;\r\n\tfeeValues: FeeCalculationValue[]; // Needed to update tiered fees when payment method changes\r\n\tpaymentPlanType: PaymentPlanType = PaymentPlanType.Autopay;\r\n\tformattedConvenienceFee: string;\r\n\tisFeeOverridden: boolean;\r\n\tisTieredFees: boolean;\r\n\tallowFeesOnAutopays: boolean;\r\n\tpaymentMethodKey: number;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tpublic i18n: I18N,\r\n\t\tpublic autopayService: AutopayService\r\n\t) {\r\n\t\tthis.confirmationTitle = this.i18n.i18next.t('completePlanSetUp', 'Please review the below information, enter the Account Holder Name EXACTLY AS IT APPEARS BELOW, and click \"I Accept\", in order to complete the plan set-up.');\r\n\t}\r\n\r\n\tactivate(model) {\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === model.id;\r\n\t\t});\r\n\r\n\t\tthis.portfolio = this.globalState.customer.portfolios.find((element, index, array) => {\r\n\t\t\treturn element.portfolioName === this.account.portfolioName;\r\n\t\t});\r\n\r\n\t\tif (!this.autopayService.autopay) {\r\n\t\t\tthis.goBack();\r\n\t\t}\r\n\r\n\t\tthis.autopay = { ...this.autopayService.autopay };\r\n\t\tthis.feeValues = this.autopay.feeValues;\r\n\t\tthis.formattedConvenienceFee = this.autopayService.formattedConvenienceFee;\r\n\t\t// fee overrides populate the autopay fee value column\r\n\t\tthis.isFeeOverridden = this.autopay.feeValue != null;\r\n\t\t// if overridden, that fee value is always used in portal\r\n\t\tthis.isTieredFees = !this.isFeeOverridden && this.autopayService.getIsTieredFees();\r\n\t\tthis.allowFeesOnAutopays = this.portfolio.merchantSettings.feeSettings.allowFeesOnAutopays;\r\n\t\tthis.paymentMethodKey = this.autopay.paymentMethod ? this.autopay.paymentMethod.paymentMethodKey : null;\r\n\t}\r\n\r\n\tget paymentMethod() {\r\n\t\tif (!this.paymentInformation) {\r\n\t\t\treturn this.autopay.paymentMethod.accountNumber;\r\n\t\t}\r\n\r\n\t\tif (this.paymentInformation.isWallet) {\r\n\t\t\tif (this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.card.selectedPaymentMethod.cardType} ending ${this.paymentInformation.card.selectedPaymentMethod.last4ofCard}`, paymentMethodTypes: this.paymentInformation.card.selectedPaymentMethod.cardType, accountNumber: this.paymentInformation.card.selectedPaymentMethod.last4ofCard });\r\n\t\t\t}\r\n\t\t\telse if (this.paymentInformation.check && this.paymentInformation.check.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.check.selectedPaymentMethod.achAccountType} ending ${this.paymentInformation.check.selectedPaymentMethod.last4ofAccount}`, paymentMethodTypes: this.paymentInformation.check.selectedPaymentMethod.achAccountType, accountNumber: this.paymentInformation.check.selectedPaymentMethod.last4ofAccount });\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.paymentInformation.isCardPayment){\r\n\t\t\t\treturn this.paymentInformation.card.description;\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.isCheckPayment){\r\n\t\t\t\treturn this.paymentInformation.check.description;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowConfirmation(event) {\r\n\t\tthis.validationErrors = event? event.detail.errors : [];\r\n\t\tthis.validate();\r\n\r\n\t\tif (this.validationErrors.length === 0) {\r\n\t\t\tthis.state = 'confirm';\r\n\t\t\tthis.paymentInformation = event ? event.detail : null;\r\n\t\t\tthis.confirmationTemplateData = this.getConfirmationTemplateData(this.feeValues);\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tthis.validationErrors = this.validationErrors || [];\r\n\t\tconst isMaxPaymentEmpty = !this.autopay.maxPaymentAmount && !this.autopay.payInFull;\r\n\t\tif (isMaxPaymentEmpty) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('maxPaymentAmountRequired','Max payment amount is required'));\r\n\t\t}\r\n\r\n\t\tconst isDirty =\r\n\t\t\tthis.autopay.maxPaymentAmount !== this.autopayService.autopay.maxPaymentAmount ||\r\n\t\t\tthis.autopay.payInFull !== this.autopayService.autopay.payInFull;\r\n\t\tif (!this.isChangingPaymentMethod && !isDirty) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('noChangesHaveBeenMade','No changes have been made'));\r\n\t\t}\r\n\t}\r\n\r\n\tgetConfirmationTemplateData(feeValues: FeeCalculationValue[]) {\r\n\t\tthis.totalServiceFee = 0;\r\n\r\n\t\tlet endDate = this.autopay.endDate || 'N/A';\r\n\t\tif (!this.autopay.numberOfPayments && !this.autopay.endDate) {\r\n\t\t\tendDate = 'Indefinite';\r\n\t\t}\r\n\r\n\t\tlet customObject: any = {\r\n\t\t\tpaymentAmountLimit: numeral(this.autopay.maxPaymentAmount).format('($0,0.00)'),\r\n\t\t\tpayInFull: this.autopay.payInFull,\r\n\t\t\taccountNumberLabel: this.globalState.business.portalSettings.accountNumberLabel,\r\n\t\t\tcustomerAccountNumber: this.account.referenceId,\r\n\t\t\taccountNumber: this.account.referenceId, // backwards comaptbility\r\n\t\t\tcustomerAccountName: this.account.name,\r\n\t\t\tbalance: numeral(this.account.balance).format('($0,0.00)'),\r\n\t\t\tserviceFee: this.formattedConvenienceFee,\r\n\t\t\tplanFrequency: this.autopay.frequency.description,\r\n\t\t\tplanStartDate: moment(this.autopay.startDate).format('MM/DD/YYYY'),\r\n\t\t\tplanEndDate: endDate !== 'Indefinite' ? moment(endDate).format('MM/DD/YYYY') : endDate,\r\n\t\t\tnumberOfPayments: this.autopay.numberOfPayments || 'N/A',\r\n\t\t\tmerchantName: this.globalState.business.name,\r\n\t\t\tpaymentScheduleTable: '',\r\n\t\t\taccountName: this.paymentInformation ? this.paymentInformation.name : this.autopay.paymentMethod.accountName,\r\n\t\t\tzipCode: this.paymentInformation ? this.paymentInformation.zipCode : this.autopay.paymentMethod.zipCode,\r\n\t\t\tpaymentMethod: this.paymentMethod,\r\n\t\t\tcustomerAccountLocationName: (this.account.bucket) ? this.account.bucket.displayName : '',\r\n\t\t\tcustomerAccountLocationReferenceId: (this.account.bucket) ? this.account.bucket.referenceId : '',\r\n\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\tbillingEmail: this.globalState.customer.email\r\n\t\t};\r\n\r\n\t\tif (this.isFeeOverridden) {\r\n\t\t\tfeeValues = null;\r\n\t\t}\r\n\r\n\t\tconst merchantKey = this.globalState.business.getMerchantKeyAssociatedToPortfolioByPortfolioName(this.account.portfolioName);\r\n\t\treturn new TemplateData(customObject, merchantKey, null, feeValues);\r\n\t}\r\n\r\n\tgetFormattedConvenienceFee(feeCalculationValue: FeeCalculationValue) {\r\n\t\treturn feeCalculationValue.feeCalculationType === FeeCalculationType.Percentage\r\n\t\t\t? `${numeral(feeCalculationValue.feeValue).format('0.00')}%`\r\n\t\t\t: numeral(feeCalculationValue.feeValue).format('($0,0.00)');\r\n\t}\r\n\r\n\tgetAutopayPaymentMethod(): Card|Ach {\r\n\t\tlet method: Card|Ach = null;\r\n\t\tif (!this.paymentInformation) {\r\n\t\t\tmethod = this.autopay.paymentMethod;\r\n\t\t} else {\r\n\t\t\tlet paymentDetails = this.paymentInformation.isCardPayment ? this.paymentInformation.card : this.paymentInformation.check;\r\n\t\t\tlet wallet = paymentDetails.selectedPaymentMethod;\r\n\r\n\t\t\tif (this.paymentInformation.isCardPayment) {\r\n\t\t\t\tmethod = new Card();\r\n\t\t\t\tmethod.paymentMethodType = PaymentMethodType.Card;\r\n\t\t\t\tif (wallet) {\r\n\t\t\t\t\tmethod.paymentMethodKey = wallet.cardInfoKey;\r\n\t\t\t\t\tthis.autopayService.savedToWallet = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmethod.accountNumber = paymentDetails.cardNumber;\r\n\t\t\t\t\tmethod.expirationMonth = paymentDetails.expMonth;\r\n\t\t\t\t\tmethod.expirationYear = paymentDetails.expYear;\r\n\t\t\t\t\tmethod.cvv = paymentDetails.cvv;\r\n\t\t\t\t\tthis.autopayService.savedToWallet = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tmethod = new Ach();\r\n\t\t\t\tmethod.paymentMethodType = PaymentMethodType.ECheck;\r\n\t\t\t\tif (wallet) {\r\n\t\t\t\t\tmethod.paymentMethodKey = wallet.checkInfoKey;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmethod.accountNumber = paymentDetails.accountNumber;\r\n\t\t\t\t\tmethod.aba = paymentDetails.transitNumber;\r\n\r\n\t\t\t\t\tif (paymentDetails.accountType === 'checking') {\r\n\t\t\t\t\t\tmethod.achAccountType = AchAccountType.checking;\r\n\t\t\t\t\t} else if (paymentDetails.accountType === 'savings') {\r\n\t\t\t\t\t\tmethod.achAccountType = AchAccountType.savings;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmethod.achAccountType = AchAccountType.businessChecking;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmethod.isThirdParty = this.paymentInformation.isThirdPartyPayment;\r\n\t\t\tmethod.accountName = this.paymentInformation.name;\r\n\t\t\tmethod.city = this.paymentInformation.billingCity;\r\n\t\t\tmethod.state = this.paymentInformation.billingState;\r\n\t\t\tmethod.customerKey = this.globalState.customer.customerKey;\r\n\t\t\tmethod.isPrimaryPaymentMethod = true;\r\n\t\t\tmethod.zipCode = this.paymentInformation.zipCode;\r\n\t\t}\r\n\r\n\t\treturn method;\r\n\t}\r\n\r\n\tshowError(message: string) {\r\n\t\talert(message); // TODO: use something other than alerts\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tconst method = this.getAutopayPaymentMethod();\r\n\t\tthis.autopayService.updateAutopay(this.autopay.key, method, this.autopay.maxPaymentAmount, this.autopay.payInFull)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tif (result.isSuccessful) {\r\n\t\t\t\t\tthis.autopayService.autopay.key = result.value.autopayKey;\r\n\t\t\t\t\tthis.goToReceipt();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.showError(this.i18n.i18next.t('anErrorOccurred', 'An Error Occurred'));\r\n\t\t\t});\r\n\r\n\t}\r\n\r\n\tgoToReceipt() {\r\n\t\tthis.router.navigateToRoute('autopay/autopay-receipt', { id: this.account.id });\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tif (this.state === 'edit') {\r\n\t\t\tthis.router.navigateToRoute('autopay/view-autopay', { id: this.account.id });\r\n\t\t} else if (this.state === 'confirm') {\r\n\t\t\tthis.content = '';\r\n\t\t\tthis.state = 'edit';\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".info {\\r\\n padding-bottom: 15px;\\r\\n}\\t\\r\\n.info label {\\r\\n width: 100%;\\r\\n}\\r\\n.methodEditLink {\\r\\n margin-left: 10px;\\r\\n cursor: pointer;\\r\\n}\\r\\n.paymentAmountGroup{\\r\\n width: 350px;\\r\\n margin: auto;\\r\\n}\\r\\n.paymentAmount{\\r\\n width: 180px !important;\\r\\n}\\r\\n.endDateOption{\\r\\n height:40px;\\r\\n}\\r\\n.endDateOptionText{\\r\\n width: 200px;\\r\\n display: inline-block;\\r\\n float: right;\\r\\n}\\r\\n.flexRow {\\r\\n display: flex;\\r\\n flex-direction: row;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account, Address, Customer, CustomerDocumentSettings, CustomerMfaSettings, CustomerNotificationSettings, CustomerPreferences, CustomerPreferredLanguageSettings, CustomerSecuritySettings } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { Business } from '../../models/business';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { mock, instance, when, verify, anything, resetCalls } from 'ts-mockito';\r\nimport { AutopayConfirmation } from './edit-autopay';\r\nimport { AutopayService } from './autopay.service';\r\nimport { Autopay, AutopayFrequencyOption } from '../../models/autopay';\r\nimport { ApiResponse } from '../../models/api-response';\r\nimport { FeeCalculationValue } from '../../models/feeCalculationValue';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { Portfolio } from '../../models/portfolio';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('autopay', () => {\r\n\t\t\tdescribe('editautopay', () => {\r\n\t\t\t\tlet component: AutopayConfirmation;\r\n\t\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\t\tlet stubState: State;\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockAutoPayService: AutopayService = mock(AutopayService);\r\n\t\t\t\tlet mockAccount: Account = mock(Account);\r\n\t\t\t\tconst mockAutoPay: Autopay = mock(Autopay);\r\n\t\t\t\tconst mockFeeCalculationValue: FeeCalculationValue = mock(FeeCalculationValue);\r\n\t\t\t\tconst mockAutopayFrequencyOption: AutopayFrequencyOption = mock(AutopayFrequencyOption);\r\n\t\t\t\tconst mockCustomerSecuritySettings: CustomerSecuritySettings = mock(CustomerSecuritySettings);\r\n\t\t\t\tconst mockCustomerNotificationSettings: CustomerNotificationSettings = mock(CustomerNotificationSettings);\r\n\t\t\t\tconst mockCustomerDocumentSettings: CustomerDocumentSettings = mock(CustomerDocumentSettings);\r\n\t\t\t\tconst mockCustomerPreferredLanguageSettings: CustomerPreferredLanguageSettings = mock(CustomerPreferredLanguageSettings);\r\n\t\t\t\tconst mockCustomerMfaSettings: CustomerMfaSettings = mock(CustomerMfaSettings);\r\n\t\t\t\tconst mockAddress: Address = mock(Address);\r\n\t\t\t\tconst mockCustomerPreferences: CustomerPreferences = mock(CustomerPreferences);\r\n\t\t\t\tlet mockPortfolio: Portfolio = mock(Portfolio);\r\n\r\n\t\t\t\tlet currentCustomer: Customer;\r\n\t\t\t\tlet customerConfig: any = {\r\n\t\t\t\t\tsecuritySettings: instance(mockCustomerSecuritySettings),\r\n\t\t\t\t\tnotificationSettings: instance(mockCustomerNotificationSettings),\r\n\t\t\t\t\tdocumentSettings: instance(mockCustomerDocumentSettings),\r\n\t\t\t\t\tpreferredLanguageSettings: instance(mockCustomerPreferredLanguageSettings),\r\n\t\t\t\t\tmfaSettings: instance(mockCustomerMfaSettings),\r\n\t\t\t\t\tprimaryAddress: instance(mockAddress),\r\n\t\t\t\t\tpreferences: instance(mockCustomerPreferences),\r\n\t\t\t\t\tportfolios: instance(mockPortfolio)\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a) => a\r\n\t\t\t\t};\r\n\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\t\tstubState.business.addCustomerPortfolios = () => { };\r\n\r\n\t\t\t\t\tcurrentCustomer = new Customer(stubState.business, customerConfig);\r\n\r\n\t\t\t\t\tstubState.customer = currentCustomer;\r\n\r\n\t\t\t\t\tspyOn(stubState.business, 'addCustomerPortfolios').and.callFake(() => { });\r\n\r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\r\n\t\t\t\t\tcomponent = new AutopayConfirmation(\r\n\t\t\t\t\t\tstubState,\r\n\t\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockAutoPayService)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tcomponent.state = 'edit';\r\n\t\t\t\t\tcomponent.feeValues = [];\r\n\t\t\t\t\tcomponent.autopayService.autopay = new Autopay();\r\n\r\n\t\t\t\t\tresetCalls(mockRouter);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tafterEach(() => {\r\n\t\t\t\t\tcomponent.account = null;\r\n\t\t\t\t\tcomponent.state = 'edit';\r\n\t\t\t\t\tcomponent.autopayService.autopay = null\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should initialize EditAutoPay component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('goToReceipt()', () => {\r\n\r\n\t\t\t\t\tit('should redirect to autopay receipt', () => {\r\n\r\n\t\t\t\t\t\tcomponent.account = instance(mockAccount);\r\n\t\t\t\t\t\tcomponent.account.id = '999';\r\n\r\n\t\t\t\t\t\twhen(mockRouter.navigateToRoute(anything(), anything())).thenReturn();\r\n\t\t\t\t\t\tcomponent.goToReceipt();\r\n\r\n\t\t\t\t\t\tverify(mockRouter.navigateToRoute(anything(), anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('goBack()', () => {\r\n\r\n\t\t\t\t\tit('should redirect to view-autopay', () => {\r\n\r\n\t\t\t\t\t\tcomponent.account = instance(mockAccount);\r\n\t\t\t\t\t\tcomponent.account.id = '999';\r\n\r\n\t\t\t\t\t\twhen(mockRouter.navigateToRoute(anything(), anything())).thenReturn();\r\n\t\t\t\t\t\tcomponent.goBack();\r\n\r\n\t\t\t\t\t\tverify(mockRouter.navigateToRoute(anything(), anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set state as edit when current state is confirm', () => {\r\n\r\n\t\t\t\t\t\tcomponent.state = 'confirm';\r\n\r\n\t\t\t\t\t\tcomponent.goBack();\r\n\r\n\t\t\t\t\t\texpect(component.content).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.content).toBe('');\r\n\t\t\t\t\t\texpect(component.state).toBe('edit');\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('submit()', () => {\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tcomponent.autopay = new Autopay();\r\n\t\t\t\t\t\tcomponent.autopay.key = 999;\r\n\t\t\t\t\t\tcomponent.autopay.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tcomponent.autopay.payInFull = true;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should redirect to autopay receipt on success', async () => {\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\tvalue: {\r\n\t\t\t\t\t\t\t\tautopayKey: 123\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tspyOn(component, 'getAutopayPaymentMethod').and.stub();\r\n\t\t\t\t\t\tspyOn(component, 'goToReceipt').and.stub();\r\n\r\n\t\t\t\t\t\twhen(mockAutoPayService.updateAutopay(anything(), anything(), anything(), anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tawait (await component.submit());\r\n\r\n\t\t\t\t\t\tverify(mockAutoPayService.updateAutopay(anything(), anything(), anything(), anything())).called();\r\n\t\t\t\t\t\texpect(component.getAutopayPaymentMethod).toHaveBeenCalled();\r\n\t\t\t\t\t\texpect(component.goToReceipt).toHaveBeenCalled();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should handle failure', async () => {\r\n\r\n\t\t\t\t\t\tspyOn(component, 'getAutopayPaymentMethod').and.stub();\r\n\t\t\t\t\t\twhen(mockAutoPayService.updateAutopay(anything(), anything(), anything(), anything())).thenReject((new Error('Some error')));\r\n\t\t\t\t\t\tspyOn(component, 'showError').and.stub();\r\n\r\n\t\t\t\t\t\tawait (await component.submit());\r\n\r\n\t\t\t\t\t\texpect(component.getAutopayPaymentMethod).toHaveBeenCalled();\r\n\t\t\t\t\t\tverify(mockAutoPayService.updateAutopay(anything(), anything(), anything(), anything())).called();\r\n\t\t\t\t\t\texpect(component.showError).toHaveBeenCalled();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('showConfirmation()', () => {\r\n\r\n\t\t\t\t\tit('should change state to confirm and call getConfirmationTemplateData()', () => {\r\n\r\n\t\t\t\t\t\tcomponent.feeValues = [];\r\n\t\t\t\t\t\tcomponent.feeValues.push(mockFeeCalculationValue);\r\n\r\n\t\t\t\t\t\tspyOn(component, 'validate').and.stub();\r\n\t\t\t\t\t\tspyOn(component, 'getConfirmationTemplateData').withArgs(component.feeValues).and.stub();\r\n\r\n\t\t\t\t\t\tcomponent.showConfirmation(null);\r\n\r\n\t\t\t\t\t\texpect(component.getConfirmationTemplateData).toHaveBeenCalledWith(component.feeValues);\r\n\t\t\t\t\t\texpect(component.state).toBe('confirm');\r\n\t\t\t\t\t\texpect(component.paymentInformation).toBe(null);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('validate()', () => {\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tcomponent.autopay = new Autopay();\r\n\t\t\t\t\t\tcomponent.autopay.payInFull = false;\r\n\t\t\t\t\t\tcomponent.autopayService.autopay = instance(mockAutoPay);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should get no errors', () => {\r\n\r\n\t\t\t\t\t\tcomponent.autopay.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tcomponent.autopay.payInFull = true;\r\n\r\n\t\t\t\t\t\tcomponent.autopayService.autopay.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tcomponent.autopayService.autopay.payInFull = true;\r\n\t\t\t\t\t\tcomponent.isChangingPaymentMethod = true;\r\n\r\n\t\t\t\t\t\tcomponent.validate();\r\n\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(0);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should get errors', () => {\r\n\r\n\t\t\t\t\t\tcomponent.autopay.maxPaymentAmount = null;\r\n\r\n\t\t\t\t\t\tcomponent.autopayService.autopay.maxPaymentAmount = null;\r\n\t\t\t\t\t\tcomponent.autopayService.autopay.payInFull = true;\r\n\t\t\t\t\t\tcomponent.isChangingPaymentMethod = false;\r\n\r\n\t\t\t\t\t\tcomponent.validate();\r\n\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBeGreaterThan(0);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getConfirmationTemplateData()', () => {\r\n\r\n\t\t\t\t\tit('should create a new TemplateData object', () => {\r\n\r\n\t\t\t\t\t\tcomponent.feeValues = [];\r\n\t\t\t\t\t\tcomponent.feeValues.push(mockFeeCalculationValue);\r\n\r\n\t\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\t\taccountNumberLabel: 'Label'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tname: 'Business Name',\r\n\r\n\t\t\t\t\t\t\tgetMerchantKeyAssociatedToPortfolioByPortfolioName: () => { }\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.autopay = new Autopay();\r\n\t\t\t\t\t\tcomponent.autopay.maxPaymentAmount = 1;\r\n\t\t\t\t\t\tcomponent.autopay.payInFull = false;\r\n\t\t\t\t\t\tcomponent.autopay.frequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.autopay.frequency.description = 'here';\r\n\t\t\t\t\t\tcomponent.account = instance(mockAccount);\r\n\t\t\t\t\t\tcomponent.account.referenceId = '123';\r\n\t\t\t\t\t\tcomponent.account.name = 'name';\r\n\t\t\t\t\t\tcomponent.paymentInformation = {};\r\n\t\t\t\t\t\tcomponent.paymentInformation.firstPaymentFee = 1;\r\n\t\t\t\t\t\tcomponent.paymentInformation.autopay = {\r\n\t\t\t\t\t\t\tmaxPaymentAmount: 1,\r\n\t\t\t\t\t\t\tpayInFull: true,\r\n\t\t\t\t\t\t\tfrequency: {\r\n\t\t\t\t\t\t\t\tdescription: 'NotSet'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tspyOn(stubState.business, 'getMerchantKeyAssociatedToPortfolioByPortfolioName').and.stub();\r\n\r\n\t\t\t\t\t\tlet result = component.getConfirmationTemplateData(anything());\r\n\r\n\t\t\t\t\t\texpect(result).not.toBe(null);\r\n\t\t\t\t\t\texpect(result).toBeInstanceOf(TemplateData);\r\n\t\t\t\t\t\texpect(result.customObject).not.toBe(null);\r\n\t\t\t\t\t\texpect(result.feeValues).not.toBe(null);\r\n\t\t\t\t\t\texpect(result.accountPayments).toBe(null);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('activate()', () => {\r\n\t\t\t\t\tconst model = { id: '123' };\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tstubState.customer = currentCustomer;\r\n\t\t\t\t\t\tstubState.customer.accounts = Array();\r\n\t\t\t\t\t\tcomponent.account = {\r\n\t\t\t\t\t\t\tid: '123',\r\n\t\t\t\t\t\t\tportfolioName: 'portfolioName'\r\n\t\t\t\t\t\t} as Account;\r\n\t\t\t\t\t\tstubState.customer.accounts.push(component.account);\r\n\t\t\t\t\t\tstubState.customer.portfolios = [{\r\n\t\t\t\t\t\t\tportfolioName: component.account.portfolioName,\r\n\t\t\t\t\t\t\tmerchantSettings: {\r\n\t\t\t\t\t\t\t\tfeeSettings: {\r\n\t\t\t\t\t\t\t\t\tallowFeesOnAutopays: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}];\r\n\r\n\t\t\t\t\t\tcomponent.autopay = new Autopay();\r\n\t\t\t\t\t\tcomponent.autopay.feeValues = [];\r\n\t\t\t\t\t\tcomponent.autopay.feeValues.push(instance(mockFeeCalculationValue));\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should goback if autopay is not enabled', () => {\r\n\r\n\t\t\t\t\t\tcomponent.autopayService.autopay = null;\r\n\r\n\t\t\t\t\t\tspyOn(component, 'goBack').and.stub();\r\n\r\n\t\t\t\t\t\tcomponent.activate(model);\r\n\r\n\t\t\t\t\t\texpect(component.goBack).toHaveBeenCalled();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set account, portfolio, autopay and feeValues ', () => {\r\n\r\n\t\t\t\t\t\tcomponent.autopayService.autopay = instance(mockAutoPay);\r\n\r\n\t\t\t\t\t\tcomponent.activate(model);\r\n\r\n\t\t\t\t\t\texpect(component.account).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.portfolio).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.autopay).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.feeValues).not.toBe(null);\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});","import { autoinject, computedFrom, observable } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport * as numeral from 'numeral';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport { AutopayFrequencyOption } from '../../models/autopay';\r\nimport { Ach, AchAccountType, Autopay, Card, PaymentMethodType } from '../../models/autopay/';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { State } from '../../services/global-state';\r\nimport { HPFServiceClient } from '../../services/hpfApi';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { AutopayService } from './autopay.service';\r\nimport { FeeCalculationValue } from '../../models/feeCalculationValue';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\n\r\n@autoinject\r\nexport class SetupAutopay {\r\n\taccount: Account;\r\n\tcustomer: Customer;\r\n\tportfolio: Portfolio;\r\n\tisLoading = true;\r\n\tisSubmitting = false;\r\n\tvalidationErrors: Array;\r\n\tstate: string = 'setup';\r\n\tconfirmationTemplateData: TemplateData;\r\n\tconfirmationTitle: string;\r\n\terror;\r\n\r\n\tamount;\r\n\tpaymentInformation;\r\n\tendDateOption: string = 'indefinite';\r\n\tpaymentAmount: string;\r\n\tpayInFull: boolean = true;\r\n\tdayOfMonth: number;\r\n\tlastPaymentDate: Date;\r\n\tlastPaymentPayments: number = 0;\r\n\tselectedFrequency: AutopayFrequencyOption;\r\n\tavailableFrequencies: Array;\r\n\tagreeToTerms: boolean;\r\n\tminFutureStartDateDays: number;\r\n\tmaxFutureStartDateDays: number;\r\n\tcalculatedFeeAmount: number;\r\n\tcalculatedTotalAmount: number;\r\n\tserviceFeeEnabled: boolean = false;\r\n\tcardNumber: string;\r\n\tcardInfoKey: string;\r\n\tdaysOfMonth: Array = new Array();\r\n\t@observable feeCalculationType: FeeCalculationType = FeeCalculationType.FixedAmount;\r\n\tfeeValue: number;\r\n\tpaymentLimitToolip: string;\r\n\tfeeValues: FeeCalculationValue[];\r\n\tisTieredFees: boolean;\r\n\tpaymentPlanType: PaymentPlanType = PaymentPlanType.Autopay;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate hpfApi: HPFServiceClient,\r\n\t\tpublic autopayService: AutopayService,\r\n\t\tprivate i18n: I18N\r\n\t) {\r\n\t\tthis.confirmationTitle = this.i18n.i18next.t('completePlanSetUp', 'Please review the below information, enter the Account Holder Name EXACTLY AS IT APPEARS BELOW, and click \"I Accept\", in order to complete the plan set-up.');\r\n\t\tthis.paymentLimitToolip = this.i18n.i18next.t('paymentLimitDescription', 'Enter the amount you wish to set as the autopay amount. Check the \"Pay In Full\" checkbox to the side if you wish to pay off your entire balance for this account.');\r\n\t}\r\n\r\n\tactivate(model) {\r\n\t\tfor (let i = 1; i <= 31; i++) {\r\n\t\t\tthis.daysOfMonth.push(i);\r\n\t\t}\r\n\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === model.id;\r\n\t\t});\r\n\r\n\t\tthis.customer = this.globalState.customer;\r\n\r\n\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\tcustomer.accounts.forEach(account => {\r\n\t\t\t\t\tif (this.account.customerAccountKey === account.customerAccountKey) {\r\n\t\t\t\t\t\tthis.customer = customer;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.portfolio = this.globalState.customer.portfolios.find((element, index, array) => {\r\n\t\t\treturn element.portfolioName === this.account.portfolioName;\r\n\t\t});\r\n\t\tthis.autopayService.getLatestAutopay(this.account.customerAccountKey)\r\n\t\t\t.then((ap) => {\r\n\t\t\t\tif (ap) {\r\n\t\t\t\t\tthis.showError(this.i18n.i18next.t('errorLoadingPageData', 'Error loading page data'));\r\n\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis.amount = this.account.balance;\r\n\r\n\t\t\t\t\tthis.configureFeeSettings();\r\n\t\t\t\t\tthis.getFrequencies().then(() => {\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.setMaxStartDate();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetFrequencies(): Promise {\r\n\t\treturn this.hpfApi.getPortfolioAutopaySettings(this.portfolio.portfolioKey)\r\n\t\t\t.then((response) => {\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tthis.availableFrequencies = response.value.autopayTriggerOptions;\r\n\t\t\t\t\tif (response.value.selectableDaysOfMonth) {\r\n\t\t\t\t\t\tthis.daysOfMonth = response.value.selectableDaysOfMonth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tconfigureFeeSettings() {\r\n\t\tthis.serviceFeeEnabled = this.portfolio.merchantSettings.feeSettings.allowFeesOnAutopays;\r\n\t}\r\n\r\n\tsetMaxStartDate() {\r\n\t\tthis.minFutureStartDateDays = 0;\r\n\t\tthis.maxFutureStartDateDays = this.portfolio.autopaySettings.maxFutureStartDateInDays;\r\n\t}\r\n\r\n\tnext(event) {\r\n\t\tthis.validationErrors = event.detail.errors;\r\n\t\tthis.validate();\r\n\t\tif (this.validationErrors.length === 0) {\r\n\t\t\tthis.paymentInformation = event.detail;\r\n\t\t\tthis.cardNumber = this.paymentInformation.card ? this.paymentInformation.card.cardNumber : null;\r\n\t\t\tthis.cardInfoKey = this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod ? this.paymentInformation.card.selectedPaymentMethod.cardInfoKey : null;\r\n\t\t\tthis.getAutopayInfo();\r\n\r\n\t\t\tif (!this.account.portfolioName) {\r\n\t\t\t\tconsole.error('Portfolio name is empty in PayInRecurringForm');\r\n\t\t\t}\r\n\r\n\t\t\tthis.payrazrService.calculateFee(event.detail.card ? true : false, this.account.portfolioName, event.detail.zipCode, event.detail.amount, this.cardNumber, this.cardInfoKey, [this.account.customerAccountKey])\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tif (this.serviceFeeEnabled) {\r\n\t\t\t\t\t\tthis.paymentInformation.firstPaymentFee = result.entity.feeValue;\r\n\t\t\t\t\t\tlet feeOnSubsequentPayments = this.globalState.business.portalSettings.feeSettings.allowServiceFeesOnEveryAutopayTransaction ? result.entity.feeValue : 0;\r\n\t\t\t\t\t\tthis.paymentInformation.subsequentPaymentFee = feeOnSubsequentPayments;\r\n\t\t\t\t\t\tthis.feeValue = result.entity.feeValue;\r\n\t\t\t\t\t\tthis.feeCalculationType = result.entity.feeCalculationType;\r\n\t\t\t\t\t\tthis.feeValues = result.entity.feeValues;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.feeValue = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.getConfirmationTemplateData(this.feeValues);\r\n\t\t\t\t\tthis.showConfirmation();\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\talert(this.i18n.i18next.t('unableToCommunicateWithServer', 'Unable to communicate with the server. Please try again.'));\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tshowConfirmation() {\r\n\t\tthis.state = 'confirmation';\r\n\t}\r\n\r\n\thideConfirmation() {\r\n\t\tthis.state = 'setup';\r\n\t}\r\n\r\n\t// Get object used to construct the template\r\n\tgetConfirmationTemplateData(feeValues: Array) {\r\n\t\tlet totalAmount: number = numeral(this.calculatedTotalAmount).format('($0,0.00)');\r\n\r\n\t\tlet endDate = this.paymentInformation.autopay.endDate || 'N/A';\r\n\t\tif (!this.paymentInformation.autopay.numberOfPayments && !this.paymentInformation.autopay.endDate) {\r\n\t\t\tendDate = 'Indefinite';\r\n\t\t}\r\n\r\n\t\tlet formattedFeeAmount: string;\r\n\t\tif (this.feeCalculationType === FeeCalculationType.Percentage) {\r\n\t\t\tformattedFeeAmount = `${numeral(this.paymentInformation.firstPaymentFee).format('0.[0000]')}%`;\r\n\t\t} else {\r\n\t\t\tformattedFeeAmount = numeral(this.paymentInformation.firstPaymentFee).format('($0,0.00)');\r\n\t\t}\r\n\r\n\t\tlet customObject: any = {\r\n\t\t\tpaymentAmountLimit: numeral(this.paymentInformation.autopay.maxPaymentAmount).format('($0,0.00)'),\r\n\t\t\tpayInFull: this.paymentInformation.autopay.payInFull,\r\n\t\t\taccountNumberLabel: this.globalState.business.portalSettings.accountNumberLabel,\r\n\t\t\tcustomerAccountNumber: this.account.referenceId,\r\n\t\t\taccountNumber: this.account.referenceId, // backwards compatibility\r\n\t\t\tcustomerAccountName: this.account.name,\r\n\t\t\tbalance: numeral(this.account.balance).format('($0,0.00)'),\r\n\t\t\tserviceFee: formattedFeeAmount,\r\n\t\t\tplanFrequency: this.paymentInformation.autopay.frequency.description,\r\n\t\t\ttotal: totalAmount,\r\n\t\t\tplanStartDate: moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'),\r\n\t\t\tplanEndDate: endDate,\r\n\t\t\tnumberOfPayments: this.paymentInformation.autopay.numberOfPayments || 'N/A',\r\n\t\t\tmerchantName: this.globalState.business.name,\r\n\t\t\tpaymentScheduleTable: '',\r\n\t\t\taccountName: this.customer.name,\r\n\t\t\tzipCode: this.paymentInformation.zipCode,\r\n\t\t\tpaymentMethod: this.paymentMethodDescription,\r\n\t\t\tcustomerAccountLocationName: (this.account.bucket) ? this.account.bucket.displayName : '',\r\n\t\t\tcustomerAccountLocationReferenceId: (this.account.bucket) ? this.account.bucket.referenceId : '',\r\n\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\tbillingEmail: this.globalState.customer.email\r\n\t\t};\r\n\r\n\t\tconst merchantKey = this.globalState.business.getMerchantKeyAssociatedToPortfolioByPortfolioName(this.account.portfolioName);\r\n\t\tthis.confirmationTemplateData = new TemplateData(customObject, merchantKey, null, feeValues);\r\n\t}\r\n\r\n\tget paymentMethodDescription() {\r\n\t\tif (this.paymentInformation.isWallet) {\r\n\t\t\tif (this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.card.selectedPaymentMethod.cardType} ending ${this.paymentInformation.card.selectedPaymentMethod.last4ofCard}`, paymentMethodTypes: this.paymentInformation.card.selectedPaymentMethod.cardType, accountNumber: this.paymentInformation.card.selectedPaymentMethod.last4ofCard });\r\n\t\t\t}\r\n\t\t\telse if (this.paymentInformation.check && this.paymentInformation.check.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.check.selectedPaymentMethod.achAccountType} ending ${this.paymentInformation.check.selectedPaymentMethod.last4ofAccount}`, paymentMethodTypes: this.paymentInformation.check.selectedPaymentMethod.achAccountType, accountNumber: this.paymentInformation.check.selectedPaymentMethod.last4ofAccount });\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.paymentInformation.isCardPayment){\r\n\t\t\t\treturn this.paymentInformation.card.description;\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.isCheckPayment){\r\n\t\t\t\treturn this.paymentInformation.check.description;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetAutopayPaymentMethod(): Card|Ach {\r\n\t\tlet method: Card|Ach = null;\r\n\t\tlet paymentDetails = this.paymentInformation.isCardPayment ? this.paymentInformation.card : this.paymentInformation.check;\r\n\t\tlet wallet = paymentDetails.selectedPaymentMethod;\r\n\r\n\t\tif (this.paymentInformation.isCardPayment) {\r\n\t\t\tmethod = new Card();\r\n\t\t\tmethod.paymentMethodType = PaymentMethodType.Card;\r\n\t\t\tif (wallet) {\r\n\t\t\t\tmethod.paymentMethodKey = wallet.cardInfoKey;\r\n\t\t\t\tthis.autopayService.savedToWallet = false;\r\n\t\t\t} else {\r\n\t\t\t\tmethod.accountNumber = paymentDetails.cardNumber;\r\n\t\t\t\tmethod.expirationMonth = paymentDetails.expMonth;\r\n\t\t\t\tmethod.expirationYear = paymentDetails.expYear;\r\n\t\t\t\tmethod.cvv = paymentDetails.cvv;\r\n\t\t\t\tthis.autopayService.savedToWallet = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tmethod = new Ach();\r\n\t\t\tmethod.paymentMethodType = PaymentMethodType.ECheck;\r\n\t\t\tif (wallet) {\r\n\t\t\t\tmethod.paymentMethodKey = wallet.checkInfoKey;\r\n\t\t\t} else {\r\n\t\t\t\tmethod.accountNumber = paymentDetails.accountNumber;\r\n\t\t\t\tmethod.aba = paymentDetails.transitNumber;\r\n\r\n\t\t\t\tif (paymentDetails.accountType === 'checking') {\r\n\t\t\t\t\tmethod.achAccountType = AchAccountType.checking;\r\n\t\t\t\t} else if (paymentDetails.accountType === 'savings') {\r\n\t\t\t\t\tmethod.achAccountType = AchAccountType.savings;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmethod.achAccountType = AchAccountType.businessChecking;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmethod.isThirdParty = this.paymentInformation.isThirdPartyPayment;\r\n\t\tmethod.accountName = this.paymentInformation.name;\r\n\t\tmethod.city = this.paymentInformation.billingCity;\r\n\t\tmethod.state = this.paymentInformation.billingState;\r\n\t\tmethod.customerKey = this.globalState.customer.customerKey;\r\n\t\tmethod.isPrimaryPaymentMethod = true;\r\n\t\tmethod.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\treturn method;\r\n\t}\r\n\r\n\tgetAutopayInfo() {\r\n\t\tthis.paymentInformation.autopay = {\r\n\t\t\tmaxPaymentAmount: this.paymentAmount,\r\n\t\t\tpayInFull: this.payInFull,\r\n\t\t\tfrequency: this.selectedFrequency,\r\n\t\t\tdayOfMonth: this.dayOfMonth,\r\n\t\t\tendDate: this.lastPaymentDate || null,\r\n\t\t\tnumberOfPayments: this.lastPaymentPayments || null,\r\n\t\t};\r\n\t}\r\n\r\n\t@computedFrom('availableFrequencies')\r\n\tget availableFreqs(): AutopayFrequencyOption[] {\r\n\t\treturn this.availableFrequencies;\r\n\t}\r\n\r\n\t@computedFrom('availableFreqs')\r\n\tget availableFrequencyDescs(): string[] {\r\n\t\treturn this.availableFreqs.map(f => f.description);\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tthis.validationErrors = this.validationErrors || [];\r\n\r\n\t\tif (!this.payInFull && (!this.paymentAmount || parseInt(this.paymentAmount, 10) <= 0)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectPaymentAmount', 'Please select a payment amount'));\r\n\t\t}\r\n\r\n\t\tif (!this.selectedFrequency) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectFrequencyOfAutopayPayments', 'Please select the frequency of autopay payments'));\r\n\t\t}\r\n\r\n\t\tif (this.endDateOption === 'date' && !this.lastPaymentDate) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectValidLastPaymentDate', 'Please select a valid last payment date'));\r\n\t\t}\r\n\t\tif (this.endDateOption === 'payments' && this.lastPaymentPayments < 1) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectValidLastPaymentPayments', 'Please select a valid number of payments'));\r\n\t\t}\r\n\r\n\t\tif (this.selectedFrequency\r\n\t\t\t&& this.selectedFrequency.autopayTriggerType === 5\r\n\t\t\t&& this.endDateOption === 'date'\r\n\t\t\t&& this.lastPaymentDate )\r\n\t\t{\r\n\t\t\tlet endDate = moment(this.lastPaymentDate, 'MM/DD/YYYY');\r\n\t\t\tlet endDateDay = endDate.date();\r\n\t\t\tif (!(endDateDay >= this.dayOfMonth\r\n\t\t\t\t\t|| (this.isLastDayOfMonth(endDate.toDate())\r\n\t\t\t\t\t\t&& this.dayOfMonth > endDateDay)\r\n\t\t\t\t))\r\n\t\t\t{\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('autoPayErrorEndDateDayOfMonth', 'End date cannot be before first trigger date.'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tisLastDayOfMonth(date) {\r\n\t\tlet month = date.getMonth();\r\n\t\tlet newDate = date;\r\n\t\tnewDate.setDate(date.getDate() + 1);\r\n\t\tif (newDate.getMonth() !== month) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tendDateOptionChanged() {\r\n\t\tif (this.endDateOption === 'indefinite') {\r\n\t\t\tthis.lastPaymentDate = null;\r\n\t\t\tthis.lastPaymentPayments = null;\r\n\t\t} else if (this.endDateOption === 'date') {\r\n\t\t\tthis.lastPaymentPayments = null;\r\n\t\t} else if (this.endDateOption === 'payments') {\r\n\t\t\tthis.lastPaymentDate = null;\r\n\t\t}\r\n\t}\r\n\r\n\tsetSelectedEndOption() {\r\n\t\tif (this.lastPaymentDate) {\r\n\t\t\tthis.endDateOption = 'date';\r\n\t\t} else if (this.lastPaymentPayments) {\r\n\t\t\tthis.endDateOption = 'payments';\r\n\t\t} else {\r\n\t\t\tthis.endDateOption = 'indefinite';\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tshowError(error: string) {\r\n\t\tthis.error = error;\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.validationErrors = new Array();\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tconst autopay = new Autopay();\r\n\t\tautopay.customerAccountKey = this.account.customerAccountKey;\r\n\t\tautopay.maxPaymentAmount = this.paymentAmount ? numeral(this.paymentAmount).value() : null;\r\n\t\tautopay.payInFull = this.payInFull;\r\n\t\tautopay.frequency = this.selectedFrequency;\r\n\t\tautopay.dayOfMonth = this.dayOfMonth;\r\n\t\tautopay.endDate = this.lastPaymentDate;\r\n\t\tautopay.numberOfPayments = this.lastPaymentPayments;\r\n\t\tautopay.paymentMethod = this.getAutopayPaymentMethod();\r\n\t\tthis.autopayService.createAutopay(autopay).then(\r\n\t\t\t(response) => {\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tthis.autopayService.autopay.key = response.value.autopayKey;\r\n\t\t\t\t\tthis.router.navigateToRoute('autopay/autopay-receipt', { id: this.account.id });\r\n\t\t\t\t}\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t},\r\n\t\t\t(error) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.showError(this.i18n.i18next.t('anErrorOccurred', 'An Error Occurred'));\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".paymentAmountGroup{\\r\\n margin: auto;\\r\\n}\\r\\n.amountAndFullChk{\\r\\n display:flex;\\r\\n align-items:center;\\r\\n}\\r\\n\\r\\n.pay-in-full-div {\\r\\n width: 100%;\\r\\n justify-content: left;\\r\\n}\\r\\n\\r\\n.pay-in-full-div > * {\\r\\n margin: .25em;\\r\\n}\\r\\n\\r\\n.paymentAmountInput {\\r\\n max-width: 100%;\\r\\n}\\r\\n.paymentAmountMobileLabel {\\r\\n vertical-align:top !important;\\r\\n}\\r\\n\\r\\n.endDateOption {\\r\\n width: 12em;\\r\\n align-items: stretch !important;\\r\\n}\\r\\n.endDateOption, .endDateOption > *, .endDateOption > * > * {\\r\\n display: flex;\\r\\n width: auto;\\r\\n align-items: center;\\r\\n margin: .45em;\\r\\n}\\r\\n\\r\\n.frequency-div > * {\\r\\n margin-bottom: .5em;\\r\\n}\\r\\n\\r\\n.endDateOptionText { \\r\\n width: 25em;\\r\\n display: inline-block;\\r\\n}\\r\\n.endDateOption input[type=\\\"radio\\\"] {\\r\\n height: 40px;\\r\\n vertical-align: middle;\\r\\n}\\r\\n.noPadding {\\r\\n padding: 0;\\r\\n}\\r\\n.feeBlock {\\r\\n padding: 5px 15px;\\r\\n}\\r\\n\\r\\n.end-opt-div {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n.end-date-div > * {\\r\\n margin: .45em;\\r\\n}\\r\\n\\r\\n@media(max-width:425px){\\r\\n .disappear-below-425px {\\r\\n position: absolute;\\r\\n clip: rect(0 0 0 0);\\r\\n border: 0;\\r\\n width: 1px;\\r\\n height: 1px;\\r\\n margin: -1px;\\r\\n overflow: hidden;\\r\\n padding: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n/*\\r\\n@media(max-width:1200px){\\r\\n .endDateOptionText{\\r\\n width:150px;\\r\\n }\\r\\n}\\r\\n\\r\\n@media(max-width:990px) {\\r\\n .paymentAmount {\\r\\n display: initial;\\r\\n }\\r\\n}\\r\\n */\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { Router, NavModel } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { Business } from '../../models/business';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { mock, instance, when, anything, verify } from 'ts-mockito';\r\nimport { AutopayConfirmation } from './edit-autopay';\r\nimport { AutopayService } from './autopay.service';\r\nimport numeral from 'numeral';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { SourcePayRazrApplication } from '../../models/sourcePayRazrApplication';\r\nimport { Ach, Autopay, AutopayFrequencyOption, AutopaySettings, Card, PaymentMethodType } from '../../models/autopay';\r\nimport { SetupAutopay } from './setup-autopay';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { HPFServiceClient } from '../../services/hpfApi';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { ApiResponse } from '../../models/api-response';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('autopay', () => {\r\n\t\t\tdescribe('setupautopay', () => {\r\n\t\t\t\tlet component: SetupAutopay;\r\n\t\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\t\tlet stubState: State;\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockAutoPayService: AutopayService = mock(AutopayService);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockHPFApi: HPFServiceClient = mock(HPFServiceClient);\r\n\t\t\t\tconst mockAccount: Account = mock(Account);\r\n\t\t\t\tconst mockPortfolio: Portfolio = mock(Portfolio);\r\n\t\t\t\tconst mockAutopaySettings: AutopaySettings = mock(AutopaySettings);\r\n\t\t\t\tconst mockAutopayFrequencyOption: AutopayFrequencyOption = mock(AutopayFrequencyOption);\r\n\t\t\t\tconst mockAutoPay: Autopay = mock(Autopay);\r\n\r\n\t\t\t\tlet cleanPaymentInformation = {\r\n\t\t\t\t\tisCardPayment: false,\r\n\t\t\t\t\tcard: {\r\n\t\t\t\t\t\tselectedPaymentMethod: {\r\n\t\t\t\t\t\t\tcardInfoKey: 1\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tcardNumber: '1234',\r\n\t\t\t\t\t\texpMonth: 1,\r\n\t\t\t\t\t\texpYear: 2030,\r\n\t\t\t\t\t\tcvv: '123'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcheck: {\r\n\t\t\t\t\t\tselectedPaymentMethod: {\r\n\t\t\t\t\t\t\tcheckInfoKey: 1\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\taccountNumber: '123',\r\n\t\t\t\t\t\ttransitNumber: '123',\r\n\t\t\t\t\t\taccountType: 'checking'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tisThirdPartyPayment: true,\r\n\t\t\t\t\tname: 'Fake one',\r\n\t\t\t\t\tbillingCity: 'Scottsdale',\r\n\t\t\t\t\tbillingState: 'AZ',\r\n\t\t\t\t\tzipCode: '85001'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\r\n\t\t\t\t\tcomponent = new SetupAutopay(\r\n\t\t\t\t\t\tstubState,\r\n\t\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\t\tinstance(mockHPFApi),\r\n\t\t\t\t\t\tinstance(mockAutoPayService),\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t\tit('should initialize SetupAutoPay component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getConfirmationTemplateData()', () => {\r\n\t\t\t\t\tit('should set confirmationTemplateData as a new TemplateData object with given values', () => {\r\n\r\n\t\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\t\taccountNumberLabel: 'Label'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tname: 'Business Name',\r\n\r\n\t\t\t\t\t\t\tgetMerchantKeyAssociatedToPortfolioByPortfolioName: () => { }\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.customer = instance(mockCustomer);\r\n\t\t\t\t\t\tcomponent.account = instance(mockAccount);\r\n\t\t\t\t\t\tcomponent.calculatedFeeAmount = 1;\r\n\t\t\t\t\t\tcomponent.paymentInformation = {};\r\n\t\t\t\t\t\tcomponent.paymentInformation.firstPaymentFee = 1;\r\n\t\t\t\t\t\tcomponent.paymentInformation.autopay = {\r\n\t\t\t\t\t\t\tmaxPaymentAmount: 1,\r\n\t\t\t\t\t\t\tpayInFull: true,\r\n\t\t\t\t\t\t\tfrequency: {\r\n\t\t\t\t\t\t\t\tdescription: 'NotSet'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tspyOn(stubState.business, 'getMerchantKeyAssociatedToPortfolioByPortfolioName').and.stub();\r\n\r\n\t\t\t\t\t\tcomponent.getConfirmationTemplateData(anything());\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\texpect(component.confirmationTemplateData).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.confirmationTemplateData.accountPayments).toBe(null);\r\n\t\t\t\t\t\texpect(component.confirmationTemplateData.feeValues).toEqual(anything());\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('showConfirmation()', () => {\r\n\t\t\t\t\tit('should set state as confirmation', () => {\r\n\r\n\t\t\t\t\t\tcomponent.showConfirmation();\r\n\r\n\t\t\t\t\t\texpect(component.state).toBe('confirmation');\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('hideConfirmation()', () => {\r\n\t\t\t\t\tit('should set state as setup', () => {\r\n\r\n\t\t\t\t\t\tcomponent.hideConfirmation();\r\n\r\n\t\t\t\t\t\texpect(component.state).toBe('setup');\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('configureFeeSettings()', () => {\r\n\t\t\t\t\tit('should set serviceFeeEnabled flag as allowFeesOnAutopays for merchant settings on portfolio', () => {\r\n\r\n\t\t\t\t\t\tcomponent.portfolio = instance(mockPortfolio);\r\n\t\t\t\t\t\tcomponent.portfolio.merchantSettings = {\r\n\t\t\t\t\t\t\tfeeSettings: {\r\n\t\t\t\t\t\t\t\tallowFeesOnAutopays: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcomponent.configureFeeSettings();\r\n\r\n\t\t\t\t\t\texpect(component.serviceFeeEnabled).toBe(component.portfolio.merchantSettings.feeSettings.allowFeesOnAutopays);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getFrequencies()', () => {\r\n\t\t\t\t\tit('should call hpfApi.getPortfolioAutopaySettings and set available frequencies', async () => {\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\tvalue: {\r\n\t\t\t\t\t\t\t\tautopayTriggerOptions: 1,\r\n\t\t\t\t\t\t\t\tselectableDaysOfMonth: 2\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tcomponent.portfolio = instance(mockPortfolio);\r\n\r\n\t\t\t\t\t\twhen(mockHPFApi.getPortfolioAutopaySettings(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tawait component.getFrequencies();\r\n\r\n\t\t\t\t\t\tverify(mockHPFApi.getPortfolioAutopaySettings(anything())).called();\r\n\r\n\t\t\t\t\t\texpect(component.availableFrequencies).toBe(apiResponse.value.autopayTriggerOptions);\r\n\t\t\t\t\t\texpect(component.daysOfMonth).toBe(apiResponse.value.selectableDaysOfMonth);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('setMaxStartDate()', () => {\r\n\t\t\t\t\tit('should set maxFutureStartDateDays to portfolio.autopaySettings.maxFutureStartDateInDays', () => {\r\n\r\n\t\t\t\t\t\tcomponent.portfolio = instance(mockPortfolio);\r\n\t\t\t\t\t\tcomponent.portfolio.autopaySettings = instance(mockAutopaySettings);\r\n\r\n\t\t\t\t\t\tcomponent.setMaxStartDate();\r\n\r\n\t\t\t\t\t\texpect(component.minFutureStartDateDays).toBe(0);\r\n\t\t\t\t\t\texpect(component.maxFutureStartDateDays).toBe(component.portfolio.autopaySettings.maxFutureStartDateInDays);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('validate()', () => {\r\n\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\t\tcomponent.validationErrors = [];\r\n\t\t\t\t\t\tcomponent.dayOfMonth = 0;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should not be any errors', () => {\r\n\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.endDateOption = 'indefinite';\r\n\r\n\t\t\t\t\t\tcomponent.validate();\r\n\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(0);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should have error : Please select a payment amount', () => {\r\n\t\t\t\t\t\tconst message = 'Please select a payment amount';\r\n\t\t\t\t\t\tcomponent.payInFull = false;\r\n\t\t\t\t\t\tcomponent.paymentAmount = '0';\r\n\t\t\t\t\t\tcomponent.selectedFrequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.endDateOption = 'indefinite';\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue(message);\r\n\t\t\t\t\t\tcomponent.validate();\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(1);\r\n\t\t\t\t\t\texpect(component.validationErrors[0]).toBe(message);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should have error : Please select the frequency of autopay payments', () => {\r\n\t\t\t\t\t\tconst message = 'Please select the frequency of autopay payments';\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = null;\r\n\t\t\t\t\t\tcomponent.endDateOption = 'indefinite';\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue(message);\r\n\t\t\t\t\t\tcomponent.validate();\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(1);\r\n\t\t\t\t\t\texpect(component.validationErrors[0]).toBe(message);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should have error : Please select a valid last payment date', () => {\r\n\t\t\t\t\t\tconst message = 'Please select a valid last payment date';\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.endDateOption = 'date';\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue(message);\r\n\t\t\t\t\t\tcomponent.validate();\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(1);\r\n\t\t\t\t\t\texpect(component.validationErrors[0]).toBe(message);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should have error : Please select a valid number of payments', () => {\r\n\t\t\t\t\t\tconst message = 'Please select a valid number of payments';\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.endDateOption = 'payments';\r\n\t\t\t\t\t\tcomponent.lastPaymentPayments = 0;\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue(message);\r\n\t\t\t\t\t\tcomponent.validate();\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(1);\r\n\t\t\t\t\t\texpect(component.validationErrors[0]).toBe(message);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should have error : End date cannot be before first trigger date.', () => {\r\n\t\t\t\t\t\tconst message = 'End date cannot be before first trigger date.';\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = {\r\n\t\t\t\t\t\t\tautopayTriggerType : 5,\r\n\t\t\t\t\t\t\tvalue: 0,\r\n\t\t\t\t\t\t\tdescription: '',\r\n\t\t\t\t\t\t\tplanType: 0,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tcomponent.dayOfMonth = 8;\r\n\t\t\t\t\t\tconst currentDate = new Date();\r\n\t\t\t\t\t\tcomponent.lastPaymentDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, component.dayOfMonth - 1);\r\n\t\t\t\t\t\tcomponent.endDateOption = 'date';\r\n\t\t\t\t\t\tspyOn(component, 'isLastDayOfMonth').and.returnValue(false);\r\n\t\t\t\t\t\tspyOn(i18next, 't').and.returnValue(message);\r\n\t\t\t\t\t\tcomponent.validate();\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(1);\r\n\t\t\t\t\t\texpect(component.validationErrors[0]).toBe(message);\r\n\t\t\t\t\t\texpect(component.isLastDayOfMonth).toHaveBeenCalled();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('endDateOptionChanged()', () => {\r\n\t\t\t\t\tit('should set lastPaymentDate and lastPaymentPayments to null when endDateOption is indefinite', () => {\r\n\t\t\t\t\t\tcomponent.endDateOption = 'indefinite';\r\n\t\t\t\t\t\tcomponent.endDateOptionChanged();\r\n\t\t\t\t\t\texpect(component.lastPaymentDate).toBe(null);\r\n\t\t\t\t\t\texpect(component.lastPaymentPayments).toBe(null);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tit('should set lastPaymentPayments to null when endDateOption is date', () => {\r\n\t\t\t\t\t\tcomponent.endDateOption = 'date';\r\n\t\t\t\t\t\tcomponent.endDateOptionChanged();\r\n\t\t\t\t\t\texpect(component.lastPaymentPayments).toBe(null);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tit('should set lastPaymentDate to null when endDateOption is payments', () => {\r\n\t\t\t\t\t\tcomponent.endDateOption = 'payments';\r\n\t\t\t\t\t\tcomponent.endDateOptionChanged();\r\n\t\t\t\t\t\texpect(component.lastPaymentDate).toBe(null);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('setSelectedEndOption()', () => {\r\n\t\t\t\t\tit('should set endDateOption as date when lastPaymentDate has value', () => {\r\n\t\t\t\t\t\tcomponent.lastPaymentDate = new Date();\r\n\t\t\t\t\t\tcomponent.lastPaymentPayments = null;\r\n\t\t\t\t\t\tcomponent.setSelectedEndOption();\r\n\t\t\t\t\t\texpect(component.endDateOption).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.endDateOption).toBe('date');\r\n\t\t\t\t\t});\r\n\t\t\t\t\tit('should set endDateOption as payments when lastPaymentPayments has value', () => {\r\n\t\t\t\t\t\tcomponent.lastPaymentDate = null;\r\n\t\t\t\t\t\tcomponent.lastPaymentPayments = 1;\r\n\t\t\t\t\t\tcomponent.setSelectedEndOption();\r\n\t\t\t\t\t\texpect(component.endDateOption).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.endDateOption).toBe('payments');\r\n\t\t\t\t\t});\r\n\t\t\t\t\tit('should set endDateOption as indefinite when lastPaymentDate and lastPaymentPayments has value', () => {\r\n\t\t\t\t\t\tcomponent.lastPaymentDate = null;\r\n\t\t\t\t\t\tcomponent.lastPaymentPayments = null;\r\n\t\t\t\t\t\tcomponent.setSelectedEndOption();\r\n\t\t\t\t\t\texpect(component.endDateOption).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.endDateOption).toBe('indefinite');\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('showError()', () => {\r\n\t\t\t\t\tit('should set error as the passed value', () => {\r\n\t\t\t\t\t\tconst message = 'this is a error';\r\n\t\t\t\t\t\tcomponent.showError(message);\r\n\t\t\t\t\t\texpect(component.error).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.error).toBe(message);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('reset()', () => {\r\n\t\t\t\t\tit('should reset the errors', () => {\r\n\t\t\t\t\t\tcomponent.reset();\r\n\t\t\t\t\t\texpect(component.validationErrors).not.toBe(null);\r\n\t\t\t\t\t\texpect(component.validationErrors.length).toBe(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('goBack()', () => {\r\n\t\t\t\t\tit('should change the route to secure', () => {\r\n\t\t\t\t\t\tcomponent.goBack();\r\n\t\t\t\t\t\tverify(mockRouter.navigateToRoute('secure')).called();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('getAutopayPaymentMethod()', () => {\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\t\t\t\t\t\tcomponent.paymentInformation = cleanPaymentInformation;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return Card as payment method from wallet', () => {\r\n\t\t\t\t\t\tcomponent.paymentInformation.isCardPayment = true;\r\n\t\t\t\t\t\tvar result = component.getAutopayPaymentMethod();\r\n\t\t\t\t\t\texpect(result).toBeInstanceOf(Card);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return Card as payment method from details', () => {\r\n\t\t\t\t\t\tcomponent.paymentInformation.isCardPayment = true;\r\n\t\t\t\t\t\tcomponent.paymentInformation.card.selectedPaymentMethod = null;\r\n\t\t\t\t\t\tvar result = component.getAutopayPaymentMethod();\r\n\t\t\t\t\t\texpect(result).toBeInstanceOf(Card);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return ACH as payment method from wallet', () => {\r\n\t\t\t\t\t\tcomponent.paymentInformation.isCardPayment = false;\r\n\t\t\t\t\t\tvar result = component.getAutopayPaymentMethod();\r\n\t\t\t\t\t\texpect(result).toBeInstanceOf(Ach);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should return ACH as payment method from details', () => {\r\n\t\t\t\t\t\tcomponent.paymentInformation.isCardPayment = false;\r\n\t\t\t\t\t\tcomponent.paymentInformation.check.selectedPaymentMethod = null;\r\n\t\t\t\t\t\tvar result = component.getAutopayPaymentMethod();\r\n\t\t\t\t\t\texpect(result).toBeInstanceOf(Ach);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('submit()', () => {\r\n\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\r\n\t\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\t\t\t\t\t\tcomponent.paymentInformation = cleanPaymentInformation;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should create an autopay and navigate to autopay-receipt', () => {\r\n\t\t\t\t\t\tcomponent.account = instance(mockAccount);\r\n\t\t\t\t\t\tcomponent.account.id = '1';\r\n\t\t\t\t\t\tcomponent.paymentAmount = '10';\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.dayOfMonth = 1;\r\n\t\t\t\t\t\tcomponent.lastPaymentDate = new Date();\r\n\t\t\t\t\t\tcomponent.lastPaymentPayments = 1;\r\n\t\t\t\t\t\tcomponent.paymentInformation.isCardPayment = true;\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\tvalue: {\r\n\t\t\t\t\t\t\t\tautopayKey: 1\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tcomponent.autopayService.autopay = instance(mockAutoPay);\r\n\t\t\t\t\t\tcomponent.autopayService.autopay.key = apiResponse.value.autopayKey;\r\n\r\n\t\t\t\t\t\twhen(mockAutoPayService.createAutopay(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tcomponent.submit();\r\n\t\t\t\t\t\tverify(mockAutoPayService.createAutopay(anything())).called();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should fail on create an autopay', async () => {\r\n\t\t\t\t\t\tcomponent.account = instance(mockAccount);\r\n\t\t\t\t\t\tcomponent.account.id = '1';\r\n\t\t\t\t\t\tcomponent.paymentAmount = '10';\r\n\t\t\t\t\t\tcomponent.payInFull = true;\r\n\t\t\t\t\t\tcomponent.selectedFrequency = instance(mockAutopayFrequencyOption);\r\n\t\t\t\t\t\tcomponent.dayOfMonth = 1;\r\n\t\t\t\t\t\tcomponent.lastPaymentDate = new Date();\r\n\t\t\t\t\t\tcomponent.lastPaymentPayments = 1;\r\n\t\t\t\t\t\tcomponent.paymentInformation.isCardPayment = true;\r\n\r\n\t\t\t\t\t\tconst apiResponse = new ApiResponse({\r\n\t\t\t\t\t\t\tisSuccessful: false\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockAutoPayService.createAutopay(anything())).thenResolve(apiResponse);\r\n\r\n\t\t\t\t\t\tawait component.submit();\r\n\t\t\t\t\t\tverify(mockAutoPayService.createAutopay(anything())).called();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { DialogService } from 'aurelia-dialog';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { Autopay } from '../../models/autopay/';\r\nimport { Account } from '../../models/customer';\r\nimport { FeeCalculationType } from '../../models/feeCalculationType';\r\nimport { FeeCalculationValue } from '../../models/feeCalculationValue';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { State } from '../../services/global-state';\r\nimport { HPFServiceClient } from '../../services/hpfApi';\r\nimport { AutopayService } from './autopay.service';\r\nimport { CancelAutopayDialog } from './cancel-autopay.dialog';\r\nimport numeral from 'numeral';\r\n\r\n@autoinject\r\nexport class ViewAutopay {\r\n\taccount: Account;\r\n\tportfolio: Portfolio;\r\n\tautopay: Autopay;\r\n\tisLoading = true;\r\n\tisTieredFees: boolean;\r\n\tallowFeesOnAutopays: boolean;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate hpfApi: HPFServiceClient,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate autopayService: AutopayService,\r\n\t\tprivate i18n: I18N\r\n\t) { }\r\n\r\n\tactivate(model) {\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === model.id;\r\n\t\t});\r\n\t\tthis.portfolio = this.globalState.customer.portfolios.find((element, index, array) => {\r\n\t\t\treturn element.portfolioName === this.account.portfolioName;\r\n\t\t});\r\n\t\tthis.allowFeesOnAutopays = this.portfolio.merchantSettings.feeSettings.allowFeesOnAutopays;\r\n\t\tthis.autopayService.getLatestAutopay(this.account.customerAccountKey)\r\n\t\t\t.then((ap) => {\r\n\t\t\t\tthis.autopayService.setFeeSettings(ap, this.allowFeesOnAutopays);\r\n\t\t\t\tthis.autopay = ap;\r\n\t\t\t\tthis.isTieredFees = this.autopayService.getIsTieredFees();\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t\tif (!ap) {\r\n\t\t\t\t\tthis.showError(this.i18n.i18next.t('errorLoadingPageData', 'Error loading page data'));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgoToEdit() {\r\n\t\tthis.router.navigateToRoute('autopay/edit-autopay', { id: this.account.id });\r\n\t}\r\n\r\n\tshowError(error: string) {\r\n\t\talert(error);\r\n\t}\r\n\r\n\tcancelPlan() {\r\n\t\tthis.dialogService.open({ viewModel: CancelAutopayDialog, lock: false })\r\n\t\t\t.whenClosed(response => {\r\n\t\t\t\tif (!response.wasCancelled) {\r\n\t\t\t\t\tthis.hpfApi.deleteAutopay(this.autopay.key.toString())\r\n\t\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\t\tif (result.isSuccessful) {\r\n\t\t\t\t\t\t\t\tthis.router.navigate('');\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.showError(this.i18n.i18next.t('autopayCancellationFailed', 'Failed to cancel autopay'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\t\tthis.showError(this.i18n.i18next.t('autopayCancellationFailed', 'Failed to cancel autopay'));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetFormattedConvenienceFee(feeCalculationValue: FeeCalculationValue): string {\r\n\t\treturn feeCalculationValue.feeCalculationType === FeeCalculationType.Percentage\r\n\t\t\t? `${numeral(feeCalculationValue.feeValue).format('0.[0000]')}%`\r\n\t\t\t: numeral(feeCalculationValue.feeValue).format('($0,0.00)');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { EventAggregator } from \"aurelia-event-aggregator\";\r\nimport { I18N_EA_SIGNAL } from \"./app\";\r\n\r\nexport abstract class BasePage {\r\n\tprivate eventAggregator: EventAggregator;\r\n\tprotected updateTranslationsSubscriber: any;\r\n\tconstructor(eventAggregator: EventAggregator) {\r\n\t\tthis.eventAggregator = eventAggregator;\r\n this.updateTranslationsSubscriber = this.eventAggregator.subscribe(I18N_EA_SIGNAL, () => {\r\n\t\t\tthis.loadTranslations();\r\n\t\t});\r\n\t}\r\n\tpublic loadTranslations() { }\r\n\r\n\tattached() {\r\n\t\tthis.loadTranslations();\r\n\t}\r\n}","import { Router } from 'aurelia-router';\r\nimport { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport * as moment from 'moment';\r\nimport numeral from 'numeral';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { State } from '../../services/global-state';\r\nimport { Offer } from '../../models/offer';\r\nimport { HpfCustomerService, MakeOfferResponse } from '../../services/hpf-customer.service';\r\nimport { Account } from '../../models/customer';\r\nimport { PaymentItemTableConfiguration } from '../../smart/models/payment-item-table-configuration';\r\n\r\n@autoinject\r\nexport class ContactMe {\r\n\tvalidationErrors: string[];\r\n\tisSubitting: boolean = false;\r\n\taccount: Account;\r\n\tbusinessKey;\r\n\tcontact: Contact = new Contact();\r\n\r\n\tconstructor(private router: Router, private globalState: State, private payrazrService: PayrazrService, private hpfCustomerService: HpfCustomerService, private i18n: I18N) {\r\n\t}\r\n\r\n\tactivate(params, routeData) {\r\n\t\tif (routeData.accountId) {\r\n\t\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\t\treturn element.id === routeData.accountId;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.businessKey = this.globalState.business.key;\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.validate();\r\n\t\tif (this.validationErrors.length === 0) {\r\n\t\t\tthis.hpfCustomerService.sendContactMeRequest(this.account.customerAccountKey, this.contact.name, this.contact.email, this.contact.phone, this.contact.tddtty).then(\r\n\t\t\t\t(result) => {\r\n\t\t\t\t\talert(this.i18n.i18next.t('weWillContactYouWithinTwoBusinessDaysAtTheEmailPhoneProvided', 'We will contact you within 2 business days at the email or phone number you provided.'));\r\n\t\t\t\t\tthis.router.navigateToRoute('secure');\r\n\t\t\t\t},\r\n\t\t\t\t(error) => {\r\n\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('anErrorOccuredSubmittingRequest', 'An error occured while submitting your request.'));\r\n\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tif (!this.contact.name) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('nameRequired', 'Name is required'));\r\n\t\t}\r\n\r\n\t\tif (!this.contact.email && !this.contact.phone) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('pleaseEnterEmailOrPhoneNumber', 'Please enter an email address or phone number'));\r\n\t\t}\r\n\r\n\t\t// Verify the format from the phone number component: '(123) 456-7890'\r\n\t\tif (!/.*\\d{3}.*\\d{3}.*\\d{4}/.test(this.contact.phone)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('phoneNumberDigitsVerification', 'Phone number must be 10 digits'));\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nclass Contact {\r\n\tname: string;\r\n\temail: string;\r\n\tphone: string;\r\n\ttddtty: boolean;\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { bindable, bindingMode, computedFrom, autoinject } from 'aurelia-framework';\r\nimport numeral from 'numeral';\r\nimport * as core from 'core-js';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account } from '../../../models/customer';\r\nimport { SelectedAccountsSettings } from './selected-accounts-settings';\r\n\r\nconst INSTALLMENT_STATES = [200, 201, 299];\r\nconst SINGLE_PAYMENT_STATES = [300, 301];\r\nconst RECURRING_STATES = [400, 401, 499];\r\nconst ACTIVE_STATUS = 1;\r\nconst INACTIVE_STATUS = 2;\r\n\r\n@autoinject\r\nexport class AccountPaymentCards {\r\n\t@bindable selectedAccounts: Array;\r\n\tcachedSelectedAccountsSettings: SelectedAccountsSettings;\r\n\tcards: Array = [];\r\n\thasPlan: boolean = undefined;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) hasFocus;\r\n\terror: string;\r\n\r\n\tconstructor(private state: State, private payrazrService: PayrazrService, private i18n: I18N) {\r\n\r\n\t}\r\n\r\n\tattached() {\r\n\t\tif (this.selectedAccounts && this.selectedAccounts.length) {\r\n\t\t\tthis.getAvailableCards();\r\n\t\t}\r\n\t\tthis.hasFocus = true;\r\n\t}\r\n\r\n\tselectedAccountsChanged(newAccounts: Array, oldAccounts: Array) {\r\n\t\t// Reset cached values so it loops through and recalculates\r\n\t\tthis.hasPlan = undefined;\r\n\t\tthis.cachedSelectedAccountsSettings = undefined;\r\n\r\n\t\tthis.getAvailableCards();\r\n\t}\r\n\r\n\tgetAvailableCards() {\r\n\t\tthis.cards = [];\r\n\t\tthis.error = null;\r\n\r\n\t\tlet isMinMaxValid = (this.selectedAccountsSettings.minPayment != null && this.selectedAccountsSettings.maxPayment != null)\r\n\t\t\t? (this.selectedAccountsSettings.maxPayment > this.selectedAccountsSettings.minPayment)\r\n\t\t\t: true;\r\n\r\n\t\tlet isPaymentMethodsValid = (!this.selectedAccountsSettings.allowAch && !this.selectedAccountsSettings.allowCC && !this.selectedAccountsSettings.allowApplePay) ? false : true;\r\n\r\n\t\tif (this.selectedAccounts.length > 0 && (!isMinMaxValid || !isPaymentMethodsValid)) {\r\n\t\t\tthis.error = this.i18n.i18next.t('selectedAccountsIncompatibility', 'Selected accounts have incompatible payment requirements.');\r\n\t\t} else {\r\n\t\t\tif (this.showCardPayInFull()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-pay-in-full',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.showCardSingle()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-single-payment',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.showCardInstallmentSetup()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-installment-setup',\r\n\t\t\t\t});\r\n\t\t\t} else if (this.showCardInstallmentEdit()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-installments-edit',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.showCardNegotiator()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-negotiator',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.showCardRecurringSetup()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-recurring-setup',\r\n\t\t\t\t});\r\n\t\t\t} else if (this.showCardRecurringEdit()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-recurring-edit',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.showCardAutopaySetup()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-autopay-setup',\r\n\t\t\t\t});\r\n\t\t\t} else if (this.showCardAutopayEdit()) {\r\n\t\t\t\tthis.cards.push({\r\n\t\t\t\t\tview: './cards/card-autopay-edit',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshowCardPayInFull(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\tif (!this.hasActiveInstallment()) {\r\n\t\t\t// Show if configured for installments within a range configured for pay in full\r\n this.selectedAccounts.forEach((account) => {\r\n if(account.balance > 0){\r\n const ranges: Array = this.selectedAccountsSettings.installmentBalanceRanges[account.id];\r\n const range = ranges.find(r => account.balance >= r.min && account.balance <= r.max);\r\n if(range && range.payInFull){\r\n show = true;\r\n }\r\n }\r\n });\r\n\t\t}\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardSingle(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\tif (!this.hasActiveInstallment()) {\r\n\t\t\t// Show if configured for installments with a range configured for pay in full\r\n\t\t\tif (this.selectedAccountsSettings.allowSingle || this.selectedAccountsSettings.allowFuture) {\r\n\t\t\t\tshow = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardInstallmentSetup(): boolean {\r\n\t\tlet show = false;\r\n\t\tif (\r\n\t\t\t(this.selectedAccounts.length === 1\r\n\t\t\t\t|| (this.isMappAllowed()\r\n\t\t\t\t\t&& this.selectedAccounts.length > 1))\r\n\t\t\t&& this.hasPositiveBalance()\r\n\t\t\t&& this.selectedAccountsSettings.allowInstallments\r\n\t\t\t&& !this.hasActivePlan()\r\n\t\t) {\r\n\t\t\tif (this.isMappAllowed()\r\n\t\t\t\t&& this.selectedAccounts.length > 1\r\n\t\t\t\t&& !(this.selectedAccounts.filter((item, pos, self) => self.findIndex(v => v.portfolioName === item.portfolioName) === pos).map(x => x.portfolioName).length === 1)) {\r\n\t\t\t\t\treturn show;\r\n\t\t\t}\r\n\r\n\t\t\tlet accountsBalance = this.selectedAccounts\r\n\t\t\t\t.map(x => x.balance)\r\n\t\t\t\t.reduce((sum, currentBalance) => sum + currentBalance, 0);\r\n\r\n\t\t\tfor (let ixAccount = 0; ixAccount < this.selectedAccounts.length; ixAccount++) {\r\n\t\t\t\tconst account = this.selectedAccounts[ixAccount];\r\n\t\t\t\tlet balanceRanges = this.selectedAccountsSettings.installmentBalanceRanges[account.id];\r\n\t\t\t\tif (balanceRanges && balanceRanges.filter(br => br.enableInstallments).length > 0 ) {\r\n\t\t\t\t\tbalanceRanges = balanceRanges.filter(br => br.enableInstallments);\r\n\t\t\t\t\tfor (let ixRange = 0; ixRange < balanceRanges.length; ixRange++) {\r\n\t\t\t\t\t\tconst range = balanceRanges[ixRange];\r\n\t\t\t\t\t\tif (accountsBalance >= range.min\r\n\t\t\t\t\t\t\t&& accountsBalance <= range.max) {\r\n\t\t\t\t\t\t\t\tshow = true;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (show) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardNegotiator(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\tif (\r\n\t\t\tthis.selectedAccounts.length === 1\r\n\t\t\t&& this.selectedAccountsSettings.allowInstallments\r\n\t\t\t&& !this.hasActivePlan()\r\n\t\t) {\r\n\t\t\tlet account = this.selectedAccounts[0];\r\n\t\t\tlet balanceRanges = this.selectedAccountsSettings.installmentBalanceRanges[account.id];\r\n\t\t\tif (balanceRanges) {\r\n\t\t\t\t// Assume only 1 account\r\n\t\t\t\tbalanceRanges.forEach((range) => {\r\n\t\t\t\t\t// Find range within account balance\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\taccount.balance >= range.min\r\n\t\t\t\t\t\t&& account.balance <= range.max\r\n\t\t\t\t\t\t&& range.enableNegotiator\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tshow = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardRecurringSetup(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\t// Show if one selected account and configured for installments with no existing active plans\r\n\t\tif (\r\n\t\t\tthis.selectedAccounts.length === 1\r\n\t\t\t&& this.selectedAccountsSettings.allowRecurring\r\n\t\t\t&& !this.hasActivePlan()\r\n\t\t) {\r\n\t\t\tshow = true;\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardAutopaySetup(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\t// Show if one selected account and configured for installments with no existing active plans\r\n\t\tif (\r\n\t\t\tthis.selectedAccounts.length === 1\r\n\t\t\t&& this.selectedAccountsSettings.enableAutopay\r\n\t\t\t&& !this.hasActivePlan()\r\n\t\t) {\r\n\t\t\tshow = true;\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardAutopayEdit(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\t// Show if one selected account and configured for installments with no existing active plans\r\n\t\tif (\r\n\t\t\tthis.selectedAccounts.length === 1\r\n\t\t\t&& this.selectedAccountsSettings.enableAutopay\r\n\t\t) {\r\n\t\t\tthis.selectedAccounts.forEach(account => {\r\n\t\t\t\tif (account.hasActiveAutopay) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardRecurringEdit(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\t// Show if one account selected and it has an active recurring plan \r\n\t\tif (this.selectedAccounts.length === 1) {\r\n\t\t\tthis.selectedAccounts[0].paymentPlans.forEach((plan) => {\r\n\t\t\t\tif (plan.status === ACTIVE_STATUS && plan.isRecurring) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tshowCardInstallmentEdit(): boolean {\r\n\t\tlet show = false;\r\n\r\n\t\t// Show if one account selected and it has an active installmenst plan \r\n\t\tif (this.selectedAccounts.length === 1) {\r\n\t\t\tthis.selectedAccounts[0].paymentPlans.forEach((plan) => {\r\n\t\t\t\tif (plan.status === ACTIVE_STATUS && !plan.isRecurring && !plan.isSingleFuture) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn show;\r\n\t}\r\n\r\n\tget selectedAccountsSettings(): SelectedAccountsSettings {\r\n\t\tif (this.cachedSelectedAccountsSettings === undefined) {\r\n\t\t\tthis.cachedSelectedAccountsSettings = new SelectedAccountsSettings();\r\n\r\n\t\t\t// Disable settings if any of the selected accounts have them disabled\r\n\t\t\tthis.selectedAccounts.forEach((account) => {\r\n\t\t\t\tlet accountPortfolio = this.state.business.fetchPortfolioSettings(account.portfolioName);\r\n\r\n\t\t\t\tif (!accountPortfolio.autopaySettings.enableAutopay) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.enableAutopay = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!accountPortfolio.settings.paymentTypes.allowInstallments) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowInstallments = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!accountPortfolio.settings.paymentTypes.allowRecurring) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowRecurring = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!accountPortfolio.settings.paymentTypes.allowSingle) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowSingle = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (!accountPortfolio.settings.paymentTypes.allowFuture) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowFuture = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (accountPortfolio.settings.paymentTypes.installments) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.installmentBalanceRanges[account.id] = accountPortfolio.settings.paymentTypes.installments.balanceRanges;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!accountPortfolio.settings.paymentMethods.allowCreditCard) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowCC = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!accountPortfolio.settings.paymentMethods.allowAch) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowAch = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!accountPortfolio.settings.paymentMethods.allowApplePay) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.allowApplePay = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet min = numeral(accountPortfolio.settings.minimumPaymentAmount).value();\r\n\t\t\t\tlet max = numeral(accountPortfolio.settings.maximumPaymentAmount).value();\r\n\r\n\t\t\t\t// If min is defined, and if setting is undefined or if this min value is greater than the previously saved one\r\n\t\t\t\tif (\r\n\t\t\t\t\t(accountPortfolio.settings.minimumPaymentAmount !== undefined && accountPortfolio.settings.minimumPaymentAmount !== null)\r\n\t\t\t\t\t&& (this.cachedSelectedAccountsSettings.minPayment === undefined || this.cachedSelectedAccountsSettings.minPayment < min)\r\n\t\t\t\t){\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.minPayment = min;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If max is defined, and if setting is undefined or if this max value is less than the previously saved one\r\n\t\t\t\tif (\r\n\t\t\t\t\t(accountPortfolio.settings.maximumPaymentAmount !== undefined && accountPortfolio.settings.maximumPaymentAmount !== null)\r\n\t\t\t\t\t&& (this.cachedSelectedAccountsSettings.maxPayment === undefined || this.cachedSelectedAccountsSettings.maxPayment > max)\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.cachedSelectedAccountsSettings.maxPayment = max;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn this.cachedSelectedAccountsSettings;\r\n\t}\r\n\r\n\thasActivePlan(): boolean {\r\n\t\tif (this.hasPlan === undefined) {\r\n\t\t\tthis.hasPlan = false;\r\n\r\n\t\t\tthis.selectedAccounts.forEach((account) => {\r\n\t\t\t\taccount.paymentPlans.forEach((plan) => {\r\n\t\t\t\t\tif (!plan.isSingleFuture && plan.status === ACTIVE_STATUS) {\r\n\t\t\t\t\t\tthis.hasPlan = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (account.hasActiveAutopay) {\r\n\t\t\t\t\tthis.hasPlan = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn this.hasPlan;\r\n\t}\r\n\r\n\thasPositiveBalance(): boolean {\r\n\t\t// Loops through all selected accounts and makes sure they all have positive balances\r\n\t\tlet hasPositive = true;\r\n\t\tthis.selectedAccounts.forEach(selected => {\r\n\t\t\tif (selected.balance <= 0) {\r\n\t\t\t\thasPositive = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn hasPositive;\r\n\t}\r\n\r\n\thasActiveInstallment(): boolean {\r\n\t\t// Returns false if not setup for installments, or if no active installment exists\r\n\t\treturn this.selectedAccountsSettings.allowInstallments\r\n\t\t\t\t? this.showCardInstallmentEdit()\r\n\t\t\t\t: false;\r\n\t}\r\n\r\n\tisMappAllowed(): boolean\r\n\t{\r\n\t\treturn this.state.features.portalMultiAccountPaymentPlan\r\n\t\t\t&& this.state.business.portalSettings.businessSettings.enableMultiAccountPaymentPlans;\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, when, anything } from 'ts-mockito';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { AccountPaymentCards } from './account-payment-cards';\r\nimport { State } from '../../../services/global-state';\r\nimport { Business } from '../../../models/business';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { Account } from '../../../models/customer';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('customer-dashboard', () => {\r\n\t\t\tdescribe('account-payment-cards', () => {\r\n\t\t\t\tlet component: AccountPaymentCards;\r\n\t\t\t\tlet stubState: State;\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n const mockAccountOne: Account = mock(Account);\r\n const mockAccountTwo: Account = mock(Account);\r\n\r\n const minPayment = 1;\r\n const maxPayment = 9999;\r\n\r\n const portfolioName = 'Test Portfolio';\r\n\r\n let portalSettings = {\r\n\t\t\t\t\tportfolioKey: 999999,\r\n\t\t\t\t\tname: portfolioName,\r\n\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\tpaymentTypes: {\r\n allowConsumerToCancelPaymentPlan: true,\r\n allowConsumersToCancelSingleFutureOnPortal: false,\r\n allowConsumersToSkipAPayment: true,\r\n allowFuture: true,\r\n allowInstallments: true,\r\n allowRecurring: false,\r\n allowRehab: false,\r\n allowSingle: true,\r\n enableMinimumPaymentDueOnAccount: false,\r\n\t\t\t\t\t\t\tinstallments: {\r\n numberOfRetriesForCardDeclines: 0,\r\n\t\t\t\t\t\t\t\tmaxFirstInstallmentFutureDays: 10,\r\n balanceRanges: [\r\n {\r\n enableInstallments: true,\r\n enableNegotiator: true,\r\n installments : [\r\n {number: 2, discountPercent: 10},\r\n {number: 7, discountPercent: 2}\r\n ],\r\n max: 100,\r\n min: 1,\r\n payInFull: true,\r\n payInFullDiscountPercent: 5,\r\n },\r\n {\r\n enableInstallments: true,\r\n enableNegotiator: true,\r\n installments : [\r\n {number: 2, discountPercent: 8},\r\n {number: 3, discountPercent: 2}\r\n ],\r\n max: 150,\r\n min: 101,\r\n payInFull: true,\r\n payInFullDiscountPercent: 0,\r\n },\r\n {\r\n enableInstallments: true,\r\n enableNegotiator: true,\r\n installments : [\r\n {number: 5, discountPercent: 3},\r\n {number: 9, discountPercent: 1}\r\n ],\r\n max: 200,\r\n min: 151,\r\n payInFull: true,\r\n payInFullDiscountPercent: 3,\r\n }\r\n ]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n paymentMethods: {\r\n allowCreditCard: true,\r\n allowAch: true\r\n },\r\n minimumPaymentAmount: minPayment,\r\n maximumPaymentAmount: maxPayment\r\n\t\t\t\t\t},\r\n\t\t\t\t\tautopaySettings: {\r\n enableAutopay: false\r\n }\r\n\t\t\t\t};\r\n\r\n const i18next = {\r\n t: (a, b) => a\r\n };\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n stubState.business = instance(mockBusiness);\r\n portalSettings.settings.maximumPaymentAmount = maxPayment;\r\n portalSettings.settings.minimumPaymentAmount = minPayment;\r\n portalSettings.settings.paymentMethods.allowAch = true;\r\n portalSettings.settings.paymentMethods.allowCreditCard = true;\r\n \r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\r\n\t\t\t\t\tcomponent = new AccountPaymentCards(\r\n\t\t\t\t\t\tstubState,\r\n instance(mockPayrazrService),\r\n instance(mockI18N)\r\n\t\t\t\t\t);\r\n\r\n mockAccountOne.portfolioName = portfolioName;\r\n mockAccountOne.balance = 10;\r\n mockAccountTwo.portfolioName = portfolioName;\r\n mockAccountTwo.balance = 10;\r\n\r\n component.selectedAccounts = [];\r\n component.selectedAccounts.push(mockAccountOne);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should initialize AccountPaymentCards component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n describe('attached()', () => {\r\n\r\n it('should set hasFocus as true', () => {\r\n component.selectedAccounts = [];\r\n\r\n component.attached();\r\n\r\n expect(component.hasFocus).toBeTrue();\r\n });\r\n\r\n it('should call getAvailableCards() and set hasFocus as true', () => {\r\n\r\n spyOn(component, 'getAvailableCards').and.stub();\r\n\r\n component.attached();\r\n\r\n expect(component.getAvailableCards).toHaveBeenCalled();\r\n expect(component.hasFocus).toBeTrue();\r\n });\r\n\r\n });\r\n\r\n describe('selectedAccountsChanged()', () => {\r\n\r\n it('should call getAvailableCards(), set hasPlan and cachedSelectedAccountsSettings as undefined', () => {\r\n\r\n spyOn(component, 'getAvailableCards').and.stub();\r\n\r\n component.selectedAccountsChanged(anything(), anything());\r\n\r\n expect(component.hasPlan).toBeUndefined();\r\n expect(component.cachedSelectedAccountsSettings).toBeUndefined();\r\n expect(component.getAvailableCards).toHaveBeenCalled();\r\n });\r\n\r\n });\r\n\r\n describe('getAvailableCards()', () => {\r\n\r\n it('should set error when max payment amount is lower than min payment amount', () => {\r\n\r\n portalSettings.settings.maximumPaymentAmount = 0;\r\n portalSettings.settings.minimumPaymentAmount = 1;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n spyOn(i18next, 't').and.returnValue('Selected accounts have incompatible payment requirements.');\r\n\r\n component.getAvailableCards();\r\n\r\n expect(component.cards.length).toBe(0);\r\n expect(component.error).toBe('Selected accounts have incompatible payment requirements.');\r\n });\r\n\r\n it('should set error when payment method is not valid', () => {\r\n\r\n portalSettings.settings.paymentMethods.allowAch = false;\r\n portalSettings.settings.paymentMethods.allowCreditCard = false;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n spyOn(i18next, 't').and.returnValue('Selected accounts have incompatible payment requirements.');\r\n\r\n component.getAvailableCards();\r\n\r\n expect(component.cards.length).toBe(0);\r\n expect(component.error).toBe('Selected accounts have incompatible payment requirements.');\r\n });\r\n\r\n it('should iterate showCardAutopayEdit all cards options and display available cards', () => {\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n\r\n spyOn(component, 'showCardPayInFull').and.returnValue(true);\r\n spyOn(component, 'showCardSingle').and.returnValue(true);\r\n spyOn(component, 'showCardInstallmentSetup').and.returnValue(false);\r\n spyOn(component, 'showCardInstallmentEdit').and.returnValue(true);\r\n spyOn(component, 'showCardNegotiator').and.returnValue(true);\r\n spyOn(component, 'showCardRecurringSetup').and.returnValue(false);\r\n spyOn(component, 'showCardRecurringEdit').and.returnValue(true);\r\n spyOn(component, 'showCardAutopaySetup').and.returnValue(false);\r\n spyOn(component, 'showCardAutopayEdit').and.returnValue(true);\r\n\r\n component.getAvailableCards();\r\n\r\n expect(component.cards.length).toBe(6);\r\n });\r\n\r\n });\r\n\r\n describe('showCardInstallmentSetup()', () => {\r\n\r\n describe('Single Account Payment Plan (SAPP)', () => {\r\n\r\n it('should hide card installment setup when no positive balance is present', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'hasPositiveBalance').and.returnValue(false);\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should hide card installment setup when selected accounts settings does not allow installments', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = false;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n \r\n var showCard = component.showCardInstallmentSetup();\r\n \r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n\r\n });\r\n\r\n it('should hide card installment setup when an active plan already exists', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(true);\r\n \r\n var showCard = component.showCardInstallmentSetup();\r\n \r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(showCard).toBeFalse(); \r\n });\r\n\r\n it('should hide card installment setup when account balance it is not within balance ranges', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(false);\r\n spyOn(component, 'isMappAllowed').and.returnValue(false);\r\n\r\n component.selectedAccounts[0].balance = Number.MAX_VALUE;\r\n \r\n var showCard = component.showCardInstallmentSetup();\r\n \r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should show card installment setup when account balance it is within balance ranges', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(false);\r\n spyOn(component, 'isMappAllowed').and.returnValue(false);\r\n\r\n component.selectedAccounts[0].balance = 10;\r\n \r\n var showCard = component.showCardInstallmentSetup();\r\n \r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(showCard).toBeTrue();\r\n });\r\n\r\n });\r\n\r\n describe('Multi Account Payment Plan (MAPP)', () => {\r\n\r\n beforeEach(() => {\r\n mockAccountTwo.balance = 1;\r\n component.selectedAccounts.push(mockAccountTwo);\r\n });\r\n\r\n afterEach(() => {\r\n component.selectedAccounts.pop();\r\n });\r\n\r\n it('should hide card installment setup when MAPP is not allowed ', () => {\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(false);\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should hide card installment setup when no positive balance is present', () => {\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(true);\r\n spyOn(component, 'hasPositiveBalance').and.returnValue(false);\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should hide card installment setup when selected account settings does not allow installments', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = false;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(true);\r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should hide card installment setup when an active plan already exists for the selected accounts', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(true);\r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(true);\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should hide card installment setup when portfolio name is not the same on selected accounts', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(true);\r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(false);\r\n\r\n component.selectedAccounts[1].portfolioName = `${portfolioName}_${new Date().getTime()}`;\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should hide card installment setup when the balance of selected accounts does not match balance ranges', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(true);\r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(false);\r\n\r\n component.selectedAccounts[0].balance = Number.MAX_VALUE;\r\n \r\n var showCard = component.showCardInstallmentSetup(); \r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(showCard).toBeFalse();\r\n });\r\n\r\n it('should show card installment setup when the balance of selected accounts it is within balance ranges', () => {\r\n\r\n portalSettings.settings.paymentTypes.allowInstallments = true;\r\n\r\n spyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n \r\n spyOn(component, 'isMappAllowed').and.returnValue(true);\r\n spyOn(component, 'hasPositiveBalance').and.returnValue(true);\r\n spyOn(component, 'hasActivePlan').and.returnValue(false);\r\n \r\n var showCard = component.showCardInstallmentSetup();\r\n \r\n expect(component.isMappAllowed).toHaveBeenCalled();\r\n expect(component.hasPositiveBalance).toHaveBeenCalled();\r\n expect(component.hasActivePlan).toHaveBeenCalled();\r\n expect(showCard).toBeTrue();\r\n });\r\n\r\n });\r\n\r\n });\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Account } from '../../../../models/customer';\r\nimport { Router } from 'aurelia-router';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\n\r\n@autoinject\r\nexport class CardAutopayEdit {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\r\n\tconstructor(private router: Router) {}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t}\r\n\t}\r\n\r\n\tview() {\r\n\t\tthis.router.navigateToRoute(`autopay/view-autopay`, { id: this.selectedAccounts[0].id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Account } from '../../../../models/customer';\r\nimport { Router } from 'aurelia-router';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\n\r\n@autoinject\r\nexport class CardAutopaySetup {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\r\n\tconstructor(private router: Router) {\r\n\r\n\t}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t}\r\n\t}\r\n\r\n\tgoToSetup() {\r\n\t\t// assume only one account can be selected\r\n\t\tthis.router.navigateToRoute(`autopay/setup-autopay`, { id: this.selectedAccounts[0].id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { Account } from '../../../../models/customer';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject()\r\nexport class CardInstallmentSetup {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\tnumberOfOptions: number = 0;\r\n\tmessage: string = '';\r\n\r\n\tconstructor(private i18n: I18N, private router: Router) {}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t\tthis.getRanges();\r\n\t\t}\r\n\t}\r\n\r\n\tgetRanges() {\r\n\t\tthis.numberOfOptions = 0;\r\n\t\tlet account = this.selectedAccounts[0];\r\n\r\n\t\tlet balanceRanges = this.selectedAccountsSettings.installmentBalanceRanges[account.id];\r\n\t\tif (balanceRanges) {\r\n\t\t\t// Assume only 1 account\r\n\t\t\tbalanceRanges.forEach((range) => {\r\n\t\t\t\t// Find range within account balance\r\n\t\t\t\tif (account.balance >= range.min && account.balance <= range.max) {\r\n\t\t\t\t\tthis.numberOfOptions += range.installments.length || 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.setMessageText();\r\n\t\t}\r\n\t}\r\n\r\n\tsetMessageText() {\r\n\t\tthis.message = this.i18n.i18next.t('setupPaymentPlanFromOptions', { defaultValue: `Set-up a payment plan from ${this.numberOfOptions} different options`, number: this.numberOfOptions });\r\n\t}\r\n\r\n\tsetupPlan = () => {\r\n\t\tconst setupPlanRoute = this.router.routes.find(x => x.name === 'installments/select-option');\r\n\t\tsetupPlanRoute.accounts = this.selectedAccounts;\r\n\t\tthis.router.navigateToRoute(setupPlanRoute?.name, { id: this.selectedAccounts[0].id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../../../models/customer';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\n\r\n@autoinject\r\nexport class CardInstallmentEdit {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\r\n\tconstructor(private router: Router) { }\r\n\r\n\tactivate(model) {\r\n\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t}\r\n\r\n\tview() {\r\n\t\tthis.router.navigateToRoute(`installments/view-installments`, { id: this.selectedAccounts[0].id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { Account } from '../../../../models/customer';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject()\r\nexport class CardOffer {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\tmessage: string = '';\r\n\r\n\tconstructor(private i18n: I18N, private router: Router) {}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t\tthis.setMessageText();\r\n\t\t}\r\n\t}\r\n\r\n\tsetMessageText() {\r\n\t\tthis.message = this.i18n.i18next.t('submitOfferCreateCustomPlan', 'Submit an offer and create your own custom plan');\r\n\t}\r\n\r\n\tmakeOffer = () => {\r\n\t\t// assume only one account can be selected\r\n\t\tthis.router.navigateToRoute('negotiator', { id: this.selectedAccounts[0].id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport numeral from 'numeral';\r\nimport { Account } from '../../../../models/customer';\r\nimport { SinglePaymentRouteSettings } from '../../../../models/single-payment/single-payment-route-settings';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\nimport { State } from '../../../../services/global-state';\r\nimport { NumberHelper } from '../../../../smart/helpers/number-helper';\r\n\r\n@autoinject\r\nexport class CardPayInFull {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\tbalance: number = 0;\r\n\tdiscount: number = 0;\r\n\ttotal: number = 0;\r\n\tcustomLabel: string;\r\n\r\n\tconstructor(private state: State, private router: Router) {\r\n\t}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t\tthis.calculateDiscount();\r\n\t\t\tthis.customLabel = this.state.business.portalSettings.fields.payInFull.label;\r\n\t\t}\r\n\t}\r\n\r\n\tcalculateDiscount() {\r\n\t\tthis.discount = 0;\r\n\r\n\t\tthis.selectedAccounts.forEach(account => {\r\n if(account.balance > 0) {\r\n this.balance += account.balance;\r\n let balanceRanges = this.selectedAccountsSettings.installmentBalanceRanges[account.id];\r\n if (balanceRanges && this.selectedAccountsSettings.allowInstallments) {\r\n let accountDiscount = 0;\r\n balanceRanges.forEach((range) => {\r\n if (account.balance >= range.min && account.balance <= range.max) {\r\n let rangeDiscount = parseInt(range.payInFullDiscountPercent || 0, 10);\r\n if (accountDiscount < rangeDiscount) {\r\n accountDiscount = rangeDiscount;\r\n }\r\n }\r\n });\r\n\r\n\t\t\t\t\tlet discountedTotal = NumberHelper.parseCurrency((account.balance * (1 - accountDiscount / 100)).toFixed(2));\r\n this.total += discountedTotal;\r\n } else {\r\n // No discounts for account\r\n this.total += account.balance;\r\n }\r\n }\r\n\t\t});\r\n\r\n\t\tthis.discount = (1 - this.total / this.balance) * 100; // Get total discount percentage\r\n\t\tthis.discount = numeral(this.discount.toFixed(2)).value(); // Fix rounding errors\r\n\t}\r\n\r\n\tgoToMakePayment() {\r\n\t\tlet routeSettings: SinglePaymentRouteSettings = new SinglePaymentRouteSettings();\r\n\t\trouteSettings.payInFull = true;\r\n\t\trouteSettings.selectedCustomerAccountKeys = this.selectedAccounts.map(x => x.customerAccountKey);\r\n\t\tthis.router.routes.find((routeConfig) => routeConfig.name === 'single-payment/single-payment').settings = routeSettings;\r\n\t\tthis.router.navigateToRoute('single-payment/single-payment');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../../../models/customer';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\n\r\n@autoinject\r\nexport class CardRecurringEdit {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\r\n\tconstructor(private router: Router) { }\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t}\r\n\t}\r\n\r\n\tview() {\r\n\t\tthis.router.navigateToRoute(`recurring/view-recurring`, { id: this.selectedAccounts[0].id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { Router } from 'aurelia-router';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Account } from '../../../../models/customer';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\n\r\n@autoinject\r\nexport class CardRecurringSetup {\r\n\taccount: Account;\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t) {\r\n\t}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.account = model.selectedAccounts[0];\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t}\r\n\t}\r\n\tsetupPlan = () => {\r\n\t\tthis.router.navigateToRoute('recurring/setup-payment-plan', { id: this.account.id });\r\n\t}\r\n}\r\n","module.exports = \"\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../../../models/customer';\r\nimport { SinglePaymentRouteSettings } from '../../../../models/single-payment/single-payment-route-settings';\r\nimport { SelectedAccountsSettings } from '../selected-accounts-settings';\r\n\r\n@autoinject\r\nexport class CardSinglePayment {\r\n\tselectedAccounts: Array = [];\r\n\tselectedAccountsSettings: SelectedAccountsSettings;\r\n\r\n\tconstructor(private router: Router) {\r\n\t}\r\n\r\n\tactivate(model) {\r\n\t\tif (!!model) {\r\n\t\t\tthis.selectedAccounts = model.selectedAccounts;\r\n\t\t\tthis.selectedAccountsSettings = model.selectedAccountsSettings;\r\n\t\t}\r\n\t}\r\n\r\n\tgoToMakePayment() {\r\n\t\tlet routeSettings: SinglePaymentRouteSettings = new SinglePaymentRouteSettings();\r\n\t\trouteSettings.payInFull = false;\r\n\t\trouteSettings.selectedCustomerAccountKeys = this.selectedAccounts.map(x => x.customerAccountKey);\r\n\t\tthis.router.routes.find((routeConfig) => routeConfig.name === 'single-payment/single-payment').settings = routeSettings;\r\n\t\tthis.router.navigateToRoute('single-payment/single-payment');\r\n\t}\r\n}\r\n","module.exports = \"\";","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".paymentCardRow {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n}\\r\\n.paymentCard {\\r\\n width: 200px;\\r\\n height: 275px;\\r\\n margin-right: 10px;\\r\\n margin-bottom: 10px;\\r\\n}\\r\\n.paymentCardBody {\\r\\n height: 175px;\\r\\n}\\r\\n.paymentCardButton {\\r\\n position: absolute;\\r\\n bottom: 15px;\\r\\n width: 163px;\\r\\n right: auto;\\r\\n}\\r\\n.paymentCardButton button {\\r\\n width: 100%;\\r\\n}\\r\\n.installmentTable {\\r\\n width: 100%;\\r\\n border-collapse: collapse;\\r\\n}\\r\\n.installmentTable thead {\\r\\n border-bottom: dashed 1px darkgrey;\\r\\n border-top: dashed 1px darkgrey;\\r\\n}\\r\\n.installmentTable th:last-child, .installmentTable td:last-child {\\r\\n border-left: dashed 1px darkgrey;\\r\\n}\\r\\n.installmentTable th:first-child, .installmentTable td:first-child {\\r\\n border-left: none;\\r\\n border-right: none;\\r\\n}\\r\\n.installmentTable tbody tr:last-child {\\r\\n border-bottom: dashed 1px darkgrey;\\r\\n}\\r\\n.installmentTable th {\\r\\n font-size: 10px; \\r\\n width: 50%;\\r\\n}\\r\\n.installmentOptionLabel {\\r\\n width: 20px;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","\r\nexport class SelectedAccountsSettings {\r\n\tallowInstallments: boolean;\r\n\tallowRecurring: boolean;\r\n\tallowSingle: boolean;\r\n\tallowFuture: boolean;\r\n\tenableAutopay: boolean;\r\n\tinstallmentBalanceRanges: any;\r\n\tallowAch: boolean;\r\n\tallowCC: boolean;\r\n\tallowApplePay: boolean;\r\n\tminPayment: number;\r\n\tmaxPayment: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.allowFuture = true;\r\n\t\tthis.allowInstallments = true;\r\n\t\tthis.allowRecurring = true;\r\n\t\tthis.allowSingle = true;\r\n\t\tthis.enableAutopay = true;\r\n\t\tthis.installmentBalanceRanges = {};\r\n\t\tthis.allowAch = true;\r\n\t\tthis.allowCC = true;\r\n\t\tthis.allowApplePay = true;\r\n\t}\r\n}\r\n","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport { Payment } from '../../models/customer';\r\nimport { PaymentHistory } from '../../models/payment-history';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PaymentItemType } from '../../smart/models/enums/payment-item-type';\r\nimport { PaymentItem } from '../../smart/models/payment-item';\r\nimport { PaymentItemTableConfiguration } from '../../smart/models/payment-item-table-configuration';\r\n\r\n@autoinject\r\nexport class CustomerDashboard {\r\n\tglobalState: State;\r\n\tselectedAccounts: any;\r\n\tisLoading: boolean = false;\r\n\tisShoppingCartEnabled: boolean = false;\r\n\r\n\t// payment item selection properties\r\n\t@bindable paymentItemTableConfiguration: PaymentItemTableConfiguration;\r\n\t@bindable businessKey: number;\r\n\t@bindable customerAccountKeys: number[];\r\n\t@bindable forceRefreshOfData: boolean;\r\n\r\n\t// dashboard summary properties\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) summaryTotalBalance: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) summaryLastPaymentDate: Date | null;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) summaryLastPaymentAmount: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) summaryNextPaymentDate: Date | null;\r\n\r\n\tconstructor(\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate eventAggregator: EventAggregator,\r\n\t\tprivate router: Router,\r\n\t\tstate: State\r\n\t) {\r\n\t\tthis.globalState = state;\r\n\t}\r\n\r\n\tactivate(params: any) {\r\n\t\tthis.isLoading = true;\r\n\t\tthis.isShoppingCartEnabled = this.globalState.business.portalSettings.businessSettings.isShoppingCartEnabled;\r\n\r\n\t\t// this default value may change in the future if cases come up where we don't want to reload data on the dashboard\r\n\t\tthis.forceRefreshOfData = true;\r\n\r\n\t\t// Bail out of refreshing customer if we have only just logged in.\r\n\t\tif (this.globalState.isLoggingIn) {\r\n\t\t\tthis.globalState.isLoggingIn = false;\r\n\t\t\tthis.loadPaymentItems();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.globalState = null;\r\n\t\tthis.refresh();\r\n\t\tthis.eventAggregator.subscribe('refresh-global-state', message => {\r\n\t\t\tthis.router.refreshNavigation();\r\n\t\t});\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.isLoading = true;\r\n\t\tthis.payrazrService.refreshGlobalCustomer()\r\n\t\t\t// this call in here in dashboard keeps the globalstate fresh in the Portal from user actions performed on children views by user\r\n\t\t\t// ... references of globalState from children views get the globalState from local storage.\r\n\t\t\t.then((globalState: State) => {\r\n\t\t\t\tthis.globalState = globalState;\r\n\t\t\t\tthis.loadPaymentItems();\r\n\t\t\t});\r\n\t}\r\n\r\n\tloadPaymentItems() {\r\n\t\t// the new payment item selection shared component supports both invoices/accounts, but at this time in the portal refresh\r\n\t\t// we are just attacking accounts, so for now only worry about wiring up the accounts piece. In the future, add a check to\r\n\t\t// see if the business is doing invoice or account level payments.\r\n\t\tthis.paymentItemTableConfiguration = new PaymentItemTableConfiguration();\r\n\t\tthis.paymentItemTableConfiguration.itemType = PaymentItemType.Account;\r\n\t\tthis.paymentItemTableConfiguration.selectFirstItemUponLoad = true;\r\n\t\tthis.paymentItemTableConfiguration.showBucket = true;\r\n\t\tthis.paymentItemTableConfiguration.useMultiselect = true;\r\n\t\tthis.paymentItemTableConfiguration.isGuarantorBillingEnabled = this.globalState.isConsumerPortalGuarantorBillingEnabled;\r\n\r\n\t\tthis.businessKey = this.globalState.business.key;\r\n\r\n\t\tthis.customerAccountKeys = this.globalState.accounts.filter(item => {\r\n\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(item.portfolioName);\r\n\t\t\tif (!portfolio || !portfolio.hasSettings || !portfolio.settings.paymentMethods) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}).map(x => x.customerAccountKey);\r\n\t}\r\n\r\n\tselectedPaymentItemsChanged(selectedPaymentItems: PaymentItem[]) {\r\n\t\t// bind accounts to the payment cards based on selected payment items\r\n\t\tlet selectedPaymentItemCustomerAccountKeys: number[] = selectedPaymentItems\r\n\t\t\t.filter((i: PaymentItem) => i.isSelected)\r\n\t\t\t.map(x => x.itemKey);\r\n\r\n\t\tif (selectedPaymentItemCustomerAccountKeys.length > 0) {\r\n\t\t\tthis.selectedAccounts = this.globalState.accounts.filter(\r\n\t\t\t\tfunction(account: any) {\r\n\t\t\t\t\treturn this.indexOf(account.customerAccountKey) >= 0;\r\n\t\t\t\t},\r\n\t\t\t\tselectedPaymentItemCustomerAccountKeys\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis.selectedAccounts = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpaymentItemsLoaded(paymentItems: PaymentItem[]) {\r\n\t\tthis.loadDashboardSummaryInfo(paymentItems);\r\n\t}\r\n\r\n\tloadDashboardSummaryInfo(paymentItems: PaymentItem[]) {\r\n\t\tthis.summaryTotalBalance = paymentItems\r\n\t\t\t.map(x => x.initialAmount)\r\n\t\t\t.reduce((sum, currentPaymentAmount) => sum + currentPaymentAmount, 0);\r\n\r\n\t\t// old portal code to load recent payment info for dashboard summary. Would like to refactor this to clean it up...\r\n\t\tif (this.globalState && this.globalState.customer && this.globalState.accounts) {\r\n\t\t\tthis.payrazrService.getPaymentHistory()\r\n\t\t\t\t.then((pastPayments: PaymentHistory[]) => {\r\n\t\t\t\t\tthis.globalState.payments = pastPayments.map(payment => new Payment(payment));\r\n\t\t\t\t\tlet recentPayments: any = this.globalState.payments;\r\n\t\t\t\t\tlet recentPaymentsLastPaymentDate: any = null;\r\n\t\t\t\t\tif (recentPayments.length !== 0) {\r\n\t\t\t\t\t\trecentPayments.forEach((item: Payment) => {\r\n\t\t\t\t\t\t\tif (item.result === 'Approved' || item.result === 'Declined' || item.result === 'Error' || item.result === 'Submitted' || item.result === 'Returned') {\r\n\t\t\t\t\t\t\t\tlet m: moment.Moment = moment(item.paymentDate);\r\n\t\t\t\t\t\t\t\tif (!recentPaymentsLastPaymentDate || (recentPaymentsLastPaymentDate && recentPaymentsLastPaymentDate < m)) {\r\n\t\t\t\t\t\t\t\t\tthis.summaryLastPaymentDate = m.toDate();\r\n\t\t\t\t\t\t\t\t\tthis.summaryLastPaymentAmount = item.paymentAmount;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\talert('error loading recent payments');\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.isLoading = false; // Just in case, prevents infinite spinner\r\n\t\t}\r\n\r\n\t\t// old portal code to load next payment info for dashboard summary. Would like to refactor this to clean it up...\r\n\t\tlet scheduledPayments: any = [];\r\n\t\tif (this.globalState.accounts) {\r\n\t\t\tthis.globalState.accounts.forEach(account => {\r\n\t\t\t\tif (account.paymentPlans) {\r\n\t\t\t\t\taccount.paymentPlans.forEach(paymentPlan => {\r\n\t\t\t\t\t\tscheduledPayments = scheduledPayments.concat(paymentPlan.payments.map(payment => {\r\n\t\t\t\t\t\t\treturn new DashboardScheduledPayment(payment, account.displayName, paymentPlan.paymentInstrument);\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tscheduledPayments = scheduledPayments\r\n\t\t\t.sort((a: DashboardScheduledPayment, b: DashboardScheduledPayment) => {\r\n\t\t\t\tconst aDate = moment(a.paymentDate);\r\n\t\t\t\tconst bDate = moment(b.paymentDate);\r\n\r\n\t\t\t\tif (aDate.isBefore(bDate)) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (aDate.isSame(bDate)) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t.slice(0, 6);\r\n\r\n\t\tif (scheduledPayments.length > 0) {\r\n\t\t\tthis.summaryNextPaymentDate = moment(scheduledPayments[0].paymentDate).toDate();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class DashboardScheduledPayment {\r\n\tpaymentDate: moment.Moment;\r\n\taccountName: any;\r\n\tpaymentAmount: any;\r\n\tpaymentMethodType: any;\r\n\tpaymentMethodAccount: any;\r\n\r\n\tconstructor(plannedPayment, account, instrument) {\r\n\t\tthis.paymentDate = moment(plannedPayment.paymentDate);\r\n\t\tthis.accountName = account;\r\n\t\tthis.paymentAmount = plannedPayment.paymentAmount;\r\n\t\tthis.paymentMethodType = instrument.paymentType;\r\n\t\tthis.paymentMethodAccount = instrument.paymentAccount;\r\n\t}\r\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".title {\\r\\n text-transform: none;\\r\\n}\\r\\n\\r\\n.select-message {\\r\\n font-weight: 600;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { bindable, bindingMode } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class DashboardSummary {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) totalBalance: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) lastPaymentDate: Date | null;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) lastPaymentAmount: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) nextPaymentDate: Date | null;\r\n\r\n\tshowLastPayment: boolean;\r\n\tshowNextPayment: boolean;\r\n\r\n\tlastPaymentDateChanged() {\r\n\t\tthis.updateFieldsDisplayed();\r\n\t}\r\n\r\n\tlastPaymentAmountChanged() {\r\n\t\tthis.updateFieldsDisplayed();\r\n\t}\r\n\r\n\tnextPaymentDateChanged() {\r\n\t\tthis.updateFieldsDisplayed();\r\n\t}\r\n\r\n\tupdateFieldsDisplayed() {\r\n\t\tthis.showLastPayment = (this.lastPaymentDate !== undefined && this.lastPaymentDate != null && this.lastPaymentAmount !== undefined);\r\n\t\tthis.showNextPayment = (this.nextPaymentDate !== undefined && this.nextPaymentDate != null);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dashboard-summary-container {\\r\\n padding: 20px;\\r\\n background: #ddd;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\n/* needs a little work -- would like this border to stretch higher and not depend on content-height */\\r\\n.balance-border {\\r\\n border-right: 1px #000 solid;\\r\\n}\\r\\n\\r\\n.total-balance {\\r\\n font-size: 22px;\\r\\n}\\r\\n\\r\\n@media(max-width:767px){\\r\\n.vertical-balance{\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class PublicTerms {\r\n\ttype: string;\r\n\tmessage: string;\r\n\r\n\tconstructor(private i18n: I18N) {\r\n\r\n\t}\r\n\r\n\tactivate(params, routeConfig) {\r\n\t\tthis.type = routeConfig.settings.type || 'SessionStorageError';\r\n\t\tthis.getMessage();\r\n\t}\r\n\r\n\tgetMessage() {\r\n\t\tswitch (this.type) {\r\n\t\t\tcase 'SessionStorageError':\r\n\t\t\tdefault:\r\n\t\t\t\tthis.message = this.i18n.i18next.t('sessionStorageError','A problem occurred when loading this website. Unable to access session storage, please insure your browser is not blocking third party cookies. If the problem persists contact us for assistance.');\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".error {\\r\\n color: red;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { autoinject, computedFrom } from 'aurelia-framework';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport numeral from 'numeral';\r\nimport { FormattingHelper } from '../../helpers/formatting-helper';\r\nimport { PhoneFormat } from '../../helpers/phone-format';\r\nimport { PortalUtility } from '../../helpers/utility';\r\nimport { Customer } from '../../models/customer';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { State } from '../../services/global-state';\r\nimport { ICustomerAccountToPay } from '../../services/hpf-transaction-service';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PortalTemplateTypes, TemplateService } from '../../services/template-service';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { NumberHelper } from '../../smart/helpers/number-helper';\r\nimport { AccountPaymentItem } from '../../smart/models/account-payment-item';\r\nimport { PaymentItemType } from '../../smart/models/enums/payment-item-type';\r\nimport { PaymentItemTableConfiguration } from '../../smart/models/payment-item-table-configuration';\r\nimport { ValidationController, ValidationControllerFactory } from 'aurelia-validation';\r\nimport { PaymentItem } from '../../smart/models/payment-item';\r\nimport { SubmitDigitalWalletPaymentRequest } from '../../models/submit-digital-wallet-payment-request';\r\nimport { ApplePaySettings, ApplePayUtil, DigitalWalletPaymentDetails, DigitalWalletPaymentPlanDetails, DigitalWalletType } from '../../models/digital-wallet';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { LegalTermsDialog } from '../../components/legal-dialog/legal-terms.dialog';\r\nimport { PaymentFeeType } from '../../models/hpfApi';\r\nimport { SelectMerchant } from '../../components/select-merchant/select-merchant';\r\nimport { Merchant } from '../../models/merchant';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../models/merchant-consumer-portal-fee-settings';\r\nimport { MfaTwoFactorMethod } from '../../models/mfa/mfa-two-factor-method';\r\n\r\n@autoinject\r\nexport class EZPay {\r\n\trequireAccountLookup: any = false;\r\n\taskForAccountNumber: any = false;\r\n\r\n\tenforceMinPayment: any = false;\r\n\tpageState: any = 'start';\r\n\tvalidationErrors: any = [];\r\n\tdisplayAccountBalanceOnPaymentForm: boolean = true;\r\n\tminimumPaymentAmountMesssage: string = '';\r\n\tcustomMessage: string = '';\r\n\r\n\tenableEditTransaction: boolean = false;\r\n\tpaymentMethodViewModel: any;\r\n\r\n\tpayrazrService: PayrazrService;\r\n\ttemplateService: TemplateService;\r\n\tglobalState: State;\r\n\trouter: Router;\r\n\tutility: PortalUtility;\r\n\tshowReferenceId: any;\r\n\taccountNumberSettings: any;\r\n\tmodel: any;\r\n\tpageStates: any;\r\n\tmovingToConfirmationPage: any;\r\n\thasLocatedAccount: any;\r\n\tcustomer: any;\r\n\taccount: any;\r\n\tbannerAlignment: any;\r\n\tpaymentDateSettings: any;\r\n\tpaymentInformation: any;\r\n\tcustomerAccountNumberComponent: any;\r\n\tamount: any;\r\n\tminFuture: any;\r\n\tmaxFuture: any;\r\n\terrorMessage: string;\r\n\tallowFuturePayment: any = false;\r\n\tallowPayToday: any = false;\r\n\ttitle: any;\r\n\tconfirmationId: any;\r\n\tdate: any;\r\n\ttime: any;\r\n\ttype: any;\r\n\tsubtotal: any;\r\n\tserviceFee: any;\r\n\ttotal: any;\r\n\tinfo: any;\r\n\tname: string;\r\n\tresult: any;\r\n\tpnref: any;\r\n\ttransactionError: any;\r\n\ti18n: any;\r\n\tpaymentLabel: string;\r\n\tplanId: any;\r\n\tportalTemplateType: any;\r\n\tmerchantKey: number;\r\n\tsavedPaymentMethodToWallet: any;\r\n\tresultCode: any;\r\n\tresultMessage: any;\r\n\tcardNumber: any;\r\n\tlinkText: string;\r\n\ttermsLink: string;\r\n\tconfirmationTemplateData: TemplateData;\r\n\tisSubmitting = false;\r\n\tisTodayPayment: boolean;\r\n\tdisablePaymentAmountField: boolean;\r\n\tpaymentAmountSettings: any;\r\n\tpaymentItemTableConfiguration: PaymentItemTableConfiguration;\r\n\tcalculatedFeeAmount: number;\r\n\tpaymentItemTableAccounts: Array = [];\r\n\tpaymentItemTableBusinessKey: number;\r\n\tcalculatedTotalAmount: number;\r\n\tpaymentItemTableViewModel: any;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n\tselectedCustomerAccountKeys: number[];\r\n\tvalidationController: ValidationController;\r\n\tcanShowBanner: boolean = true;\r\n\tdisplayEzpayAgreeTermsError: boolean = false;\r\n\tselectedPaymentItemsChanged(selectedPaymentItems: PaymentItem[]) { }\r\n\tpaymentFeeType: PaymentFeeType = PaymentFeeType.SingleOrSingleFuturePayment;\r\n\tisDigitalWalletPayment: boolean = false;\r\n\tshowSelectMerchant: boolean = false;\r\n\tmerchantList:Array = [];\r\n\tselectMerchantComponent: SelectMerchant;\r\n\tselectedMerchant: Merchant;\r\n\tmerchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings = new MerchantConsumerPortalFeeSettings();\r\n\tisEzpay: boolean;\r\n\trecpatchaV2Token: string;\r\n\tverificationCode: string;\r\n\tmfaEmail: string = null;\r\n\tmfaPhoneNumber: string = null;\r\n\r\n\tpaymentItemsLoaded(paymentItems: PaymentItem[]) {\r\n\t\t// apply passthrough params for registered ezpay, if specified in url\r\n\t\ttry {\r\n\t\t\tif (this.payrazrService.getParameterValue('locked') === '1') {\r\n\t\t\t\tthis.paymentItemTableConfiguration.isPaymentAmountEditable = false;\r\n\t\t\t}\r\n\r\n\t\t\tlet amountString: string = '';\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('paymentAmount')) {\r\n\t\t\t\tamountString = this.payrazrService.getParameterValue('paymentAmount').substr(0, 12);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.payrazrService.getParameterValue('UMtransAmt')) {\r\n\t\t\t\tamountString = this.payrazrService.getParameterValue('UMtransAmt').substr(0, 12);\r\n\t\t\t}\r\n\r\n\t\t\tlet parsedAmount = parseFloat(amountString);\r\n\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t// for ezpay there should only be one account, but still loop just in case\r\n\t\t\t\tpaymentItems.forEach(p => { p.enteredAmount = numeral(parsedAmount).format('0.00'); });\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encountered in querystring params.');\r\n\t\t}\r\n\r\n\t\tthis.updateAccountTableSubtotal();\r\n\t}\r\n\tenteredAmountChanged(changedItem: PaymentItem) {\r\n\t\tthis.updateAccountTableSubtotal();\r\n\t}\r\n\r\n\tconstructor(payrazrService: PayrazrService,\r\n\t\t\t templateService: TemplateService,\r\n\t\t\t state: State, \r\n\t\t\t router: Router, \r\n utility: PortalUtility, \r\n i18n: I18N, \r\n\t\t\tprivate phoneFormat: PhoneFormat,\r\n\t\t\tvalidationControllerFactory: ValidationControllerFactory,\r\n\t\t\tprivate dialogService: DialogService,\r\n\t\tprivate eventAggregator: EventAggregator\r\n\t\t) {\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope();\r\n\t\tthis.payrazrService = payrazrService;\r\n\t\tthis.templateService = templateService;\r\n\t\tthis.globalState = state;\r\n\t\tthis.router = router;\r\n\t\tthis.utility = utility;\r\n\t\tthis.showReferenceId = false;\r\n\t\tthis.accountNumberSettings = {};\r\n\t\tthis.i18n = i18n.i18next;\r\n\t\tthis.merchantConsumerPortalFeeSettings.feesEnabled = false;\r\n\t\tthis.model = new Model();\r\n\t\tthis.pageStates = {\r\n\t\t\tstart: {},\r\n\t\t\tterms: {},\r\n\t\t\tdisclosures: {},\r\n\t\t\tpayment: {},\r\n\t\t\tconfirmation: {},\r\n\t\t\treceipt: {},\r\n\t\t\tmfa: {}\r\n\t\t};\r\n\r\n\t\tthis.movingToConfirmationPage = false;\r\n\t\tthis.hasLocatedAccount = false;\r\n\t\tthis.customer = null;\r\n\t\tthis.account = null;\r\n\t\tthis.paymentLabel = this.i18n.t('paymentDate', 'Payment Date');\r\n\t\tthis.linkText = `${this.i18n.t('termsAndConditions', 'terms and conditions')}`;\r\n\t\tthis.termsLink = this.i18n.t('portalLoginAgreeToTermsAndConditions', {\r\n\t\t\tdefaultValue: `I agree to the ${this.linkText}.`, link: this.linkText\r\n\t\t});\r\n\t\tthis.isEzpay = true;\r\n\t}\r\n\r\n\tdefaultEzPayFields() {// set defaults for existing merchants that haven't resaved portal settings in VT portal settings since this enhancement\r\n\t\tif (this.globalState.business.portalSettings.ezpay.registrationIdSettings === undefined) {\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.registrationIdSettings = { required: false };\r\n\t\t}\r\n\r\n\t\tif (this.globalState.business.portalSettings.ezpay.registrationId2Settings === undefined) {\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.registrationId2Settings = { required: false };\r\n\t\t}\r\n\r\n\t\tif (this.globalState.business.portalSettings.ezpay.registrationId3Settings === undefined) {\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.registrationId3Settings = { required: false };\r\n\t\t}\r\n\r\n\t\tif (this.globalState.business.portalSettings.ezpay.zipcodeSettings === undefined) {\r\n\t\t\tthis.globalState.business.portalSettings.ezpay.zipcodeSettings = { required: true };\r\n\t\t}\r\n\t}\r\n\r\n\tstart() {\r\n\t\tlet hideEzpayTerms = document.getElementById('ezpay-t-c-agreed') as HTMLInputElement;\r\n\t\tthis.globalState.hideEzpayTerms = hideEzpayTerms.checked ? true : false;\r\n\r\n\t\tif (!this.globalState.hideEzpayTerms) {\r\n\t\t\tthis.displayEzpayAgreeTermsError = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet hideTerms = this.globalState.business.portalSettings.businessSettings.hideTerms\r\n\t\t\t|| this.globalState.hideEzpayTerms\r\n\t\t\t|| this.globalState.business.portalSettings.businessSettings.hideTermsAck;\r\n\t\tlet hideDisclosures = this.globalState.business.portalSettings.businessSettings.hideDisclosures;\r\n\r\n\t\tif (hideTerms === false) {\r\n\t\t\tthis.pageState = this.pageStates.terms;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (hideDisclosures === false) {\r\n\t\t\tthis.pageState = this.pageStates.disclosures;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.pageState = this.pageStates.payment;\r\n\t\tthis.doContinue();\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.defaultEzPayFields();\r\n\r\n\t\tthis.showReferenceId = true;\r\n\t\tthis.accountNumberSettings = this.globalState.business.portalSettings.ezpay.accountNumberSettings;\r\n\r\n\t\tlet displayAccountBalance = this.globalState.business.portalSettings.ezpay.displayAccountBalanceOnPaymentForm;\r\n\t\tthis.displayAccountBalanceOnPaymentForm = displayAccountBalance !== undefined ? displayAccountBalance : true;\r\n\r\n\t\tthis.requireAccountLookup = this.globalState.business.portalSettings.ezpay.accountNumberHandling.toLowerCase() === 'lookup';\r\n\t\tthis.askForAccountNumber = this.globalState.business.portalSettings.ezpay.accountNumberHandling.toLowerCase() !== 'hide';\r\n\r\n\t\tthis.enforceMinPayment = this.globalState.business.portalSettings.requireMinPayment;\r\n\r\n\t\tthis.pageState = this.getPageStartState();\r\n\r\n\t\tlet bannerAlign = this.globalState.business.portalSettings.bannerAlignment;\r\n\t\tthis.bannerAlignment = bannerAlign ? bannerAlign : 'left';\r\n\r\n\t\tthis.paymentDateSettings = this.globalState.business.portalSettings.fields.paymentDate;\r\n\t\tif (!!this.paymentDateSettings && !this.paymentDateSettings.label) { this.paymentDateSettings.label = this.paymentLabel; }\r\n\r\n\t\t// payment item table initialization\r\n\t\tthis.paymentItemTableConfiguration = new PaymentItemTableConfiguration();\r\n\t\tthis.paymentItemTableConfiguration.itemType = PaymentItemType.Account;\r\n\t\tthis.paymentItemTableConfiguration.selectFirstItemUponLoad = true;\r\n\t\tthis.paymentItemTableConfiguration.enableItemSelection = false;\r\n\t\tthis.paymentItemTableConfiguration.onlyShowSelected = true;\r\n\t\tthis.paymentItemTableConfiguration.showPaymentAmount = true;\r\n\t\tthis.paymentItemTableConfiguration.isPaymentAmountEditable = true;\r\n\t\tthis.paymentItemTableConfiguration.isPayInFull = false;\r\n\t\tthis.paymentItemTableConfiguration.showStatementLink = false;\r\n\t\tthis.paymentItemTableConfiguration.showInitialAmount = this.displayAccountBalanceOnPaymentForm;\r\n\t\tthis.paymentItemTableConfiguration.paymentAmountLabel = this.globalState.business.portalSettings.fields.paymentAmount.label || null;\r\n\r\n\t\tthis.paymentItemTableBusinessKey = this.globalState.business.key;\r\n\r\n\t\tthis.paymentAmountSettings = this.globalState.business.portalSettings.fields.paymentAmount;\r\n\t\tif (!!this.paymentAmountSettings && !this.paymentAmountSettings.label) { this.paymentAmountSettings.label = this.i18n.t('paymentAmount', 'Payment Amount'); }\r\n\r\n\t\tthis.model.paymentDate = moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY');\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.utility.scrollToTop();\r\n\t\tif (!this.showStartButton)\r\n\t\t\tthis.showBannerImage(!this.showTerms);\r\n\t\t// if (this.selectMerchantComponent)\r\n\t\t// \tthis.selectMerchantComponent.validate(errors);\r\n\t}\r\n\r\n\tgetPageStartState() {\r\n\t\tlet needStartButton = this.globalState.business.portalSettings.ezpay.ezpayOnly && this.globalState.business.portalSettings.ezpay.ezpayOnlyStartButton;\r\n\r\n\t\tif (needStartButton) {\r\n\t\t\treturn this.pageStates.start;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet hideDisclosures = this.globalState.business.portalSettings.businessSettings.hideDisclosures;\r\n\t\t\tlet hideTerms = this.globalState.business.portalSettings.businessSettings.hideTerms\r\n\t\t\t\t|| this.globalState.hideEzpayTerms\r\n\t\t\t\t|| this.globalState.business.portalSettings.businessSettings.hideTermsAck;\r\n\r\n\t\t\tif (hideTerms === false) {\r\n\t\t\t\treturn this.pageStates.terms;\r\n\t\t\t}\r\n\r\n\t\t\tif (hideDisclosures === false) {\r\n\t\t\t\treturn this.pageStates.disclosures;\r\n\t\t\t}\r\n\r\n\t\t\tthis.doContinue();\r\n\t\t\treturn this.pageStates.payment;\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tshowBannerImage(show: boolean = true){\r\n\t\tthis.canShowBanner = show;\r\n\t\tvar footerLogo = document.getElementById('footer-logo');\r\n\t\tif (footerLogo) {\r\n\t\t\tif (show) {\r\n\t\t\t\tfooterLogo.removeAttribute(\"hidden\")\r\n\t\t\t} else {\r\n\t\t\t\tfooterLogo.setAttribute(\"hidden\", \"true\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttermsAgreed() {\r\n\t\tthis.showBannerImage();\r\n\t\tif (this.globalState.business.portalSettings.businessSettings.hideDisclosures !== undefined && this.globalState.business.portalSettings.businessSettings.hideDisclosures === true) {\r\n\t\t\tthis.pageState = this.pageStates.payment;\r\n\t\t\tthis.doContinue();\r\n\t\t} else {\r\n\t\t\tthis.pageState = this.pageStates.disclosures;\r\n\t\t}\r\n\t}\r\n\r\n\tdisclosuresAgreed() {\r\n\t\tthis.pageState = this.pageStates.payment;\r\n\t\tthis.doContinue();\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.validationErrors = new Array();\r\n\t}\r\n\r\n\treturnToEzpayForm() {\r\n\t\tthis.movingToConfirmationPage = false;\r\n\t\tthis.pageState = this.pageStates.payment;\r\n\t}\r\n\r\n\tget paymentMethodDescription() {\r\n\t\treturn this.paymentInformation.card\r\n\t\t\t? this.paymentInformation.card.description\r\n\t\t\t: this.paymentInformation.check.description;\r\n\t}\r\n\r\n\tget isCardPayment(): boolean {\r\n\t\treturn !!this.paymentInformation.card || this.paymentInformation.digitalWalletSettings?.isCard();\r\n\t}\r\n\r\n\tget isCheckPayment(): boolean {\r\n\t\treturn !this.isCardPayment;\r\n\t}\r\n\r\n\tget isApplePayPayment(): boolean {\r\n\t\treturn this.isDigitalWalletPayment && this.paymentInformation.digitalWalletSettings?.isApplePay();\r\n\t}\r\n\r\n\tisNullOrWhitespace(input) {\r\n\r\n\t\tif (typeof input === 'undefined' || input == null ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\treturn input.replace(/\\s/g, '').length < 1;\r\n\t}\r\n\r\n\treturnToLogin() {\r\n\t\tif (this.globalState.business.portalSettings.ezpay.ezpayUseExitUrl &&\r\n\t\t\t!this.isNullOrWhitespace(this.globalState.business.portalSettings.ezpay.ezpayExitUrl)) {\r\n\t\t\tthis.router.navigate(this.globalState.business.portalSettings.ezpay.ezpayExitUrl);\r\n\t\t}\r\n\t\telse if (this.globalState.business.portalSettings.ezpay.ezpayOnly) {\r\n\t\t\tthis.router.navigateToRoute('logout');\r\n\t\t} else {\r\n\t\t\tthis.router.navigateToRoute('login');\r\n\t\t}\r\n\t}\r\n\r\n\teditTransaction() {\r\n\t\tthis.pageState = this.pageStates.payment;\r\n\t\tthis.paymentMethodViewModel.clearPciData();\r\n\t}\r\n\r\n\tdoContinue() {\r\n\t\tthis.utility.scrollToTop();\r\n\r\n\t\tlet customer = Customer.anonymous(\r\n\t\t\tthis.globalState.business,\r\n\t\t\tthis.model.accountReferenceId,\r\n\t\t\tthis.globalState.business.portalSettings.systemId || null,\r\n\t\t\tnull,\r\n\t\t\tthis.model.bucket ? this.model.bucket.bucketKey : null\r\n\t\t);\r\n\r\n\t\tthis.customer = null;\r\n\t\tthis.account = customer.accounts[0];\r\n\t\tthis.amount = 0;\r\n\t\tthis.applyUnvalidatedMultiMerchantPortfolio(this.account.portfolioName);\r\n\t\tthis.globalState.business.applyPortfolioSettingsToPortal(this.account.portfolioName, true, 0);\r\n\t\tthis.applyPortfolioSettingsToPage();\r\n\r\n\t\tif (!this.requireAccountLookup) {\r\n\t\t\tthis.applyMerchantSettingsToPage(this.account.portfolioName);\r\n\t\t\tthis.applyQueryStringParams(this.payrazrService);\r\n\t\t\tthis.hasLocatedAccount = !this.showSelectMerchant;\r\n\t\t}\r\n\t}\r\n\r\n\tapplyQueryStringParams(params) {\r\n\t\tif (!params) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (params.getParameterValue('locked') === '1') {\r\n\t\t\t\tthis.disablePaymentAmountField = true;\r\n\t\t\t}\r\n\r\n\t\t\tlet amountString: string = '';\r\n\r\n\t\t\tif (params.getParameterValue('paymentAmount')) {\r\n\t\t\t\tamountString = params.getParameterValue('paymentAmount').substr(0, 12);\r\n\t\t\t}\r\n\r\n\t\t\tif (params.getParameterValue('UMtransAmt')) {\r\n\t\t\t\tamountString = params.getParameterValue('UMtransAmt').substr(0, 12);\r\n\t\t\t}\r\n\r\n\t\t\tlet parsedAmount = parseFloat(amountString);\r\n\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\tthis.amount = numeral(parsedAmount).format('0.00');\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encountered in querystring params.');\r\n\t\t}\r\n\t}\r\n\r\n\tsearch() {\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.isSubmitting = true;\r\n\t\tlet validator = new CustomerLookupValidator(this.i18n);\r\n\t\tif (validator.hasErrors(this.model, this.customerAccountNumberComponent, this.globalState.business.portalSettings)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t\tthis.isSubmitting = false;\r\n\t\t} else {\r\n\t\t\tthis.payrazrService.lookupCustomerByFilters(\r\n\t\t\t\tthis.model.accountReferenceId,\r\n\t\t\t\tthis.model.registrationId,\r\n\t\t\t\tthis.model.registrationId2,\r\n\t\t\t\tthis.model.registrationId3,\r\n\t\t\t\tthis.model.zipCode,\r\n\t\t\t\tthis.model.bucket ? this.model.bucket.bucketKey : null\r\n\t\t\t)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\tlet result = response.entity;\r\n\r\n\t\t\t\t\tif (result == null) {\r\n\t\t\t\t\t\tif (response.message === 'customerAccountNotEligibleForPayments') {\r\n\t\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\t\tthis.errorMessage = this.i18n.t('customerAccountNotEligibleForPayments', { defaultValue: 'This account is not eligible for online payments.' });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tthis.errorMessage = this.i18n.t('customerAccountNotEligibleForPaymentsWithPhoneNumber', { defaultValue: `This account is not eligible for online payments, please contact us at ${this.globalState.business.portalSettings.csPhone}.`, phoneNumber: this.globalState.business.portalSettings.csPhone });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\tthis.errorMessage = this.i18n.t('customerAccountNotFoundError', { defaultValue: 'Account cannot be located. Please contact customer service.' });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.errorMessage = this.i18n.t('customerAccountNotFoundErrorWithPhoneNumber', { defaultValue: `Account cannot be located. Please contact customer service at ${this.globalState.business.portalSettings.csPhone}`, phoneNumber: this.globalState.business.portalSettings.csPhone });\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.customer = null;\r\n\t\t\t\t\t\tthis.hasLocatedAccount = false;\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.errorMessage = '';\r\n\t\t\t\t\tthis.customer = new Customer(this.globalState.business, result);\r\n\t\t\t\t\tthis.model.zipCode = this.model.zipCode ? this.model.zipCode : this.customer.primaryAddress.zip;\r\n\t\t\t\t\tthis.customer.setZipCode(this.model.zipCode);\r\n\t\t\t\t\tthis.customer.paymentMethods = null;\r\n\t\t\t\t\tthis.account = this.customer.accounts.find(item => item.displayName.toUpperCase() === this.model.accountReferenceId.toUpperCase());\r\n\t\t\t\t\tif (!this.account) { this.account = this.customer.accounts[0]; }\r\n\r\n\t\t\t\t\tif (this.globalState.business.portalSettings.displayMinimumPaymentAmountOnPortal && this.account.minPayment && this.account.minPayment > 0) {\r\n\t\t\t\t\t\tthis.minimumPaymentAmountMesssage = this.i18n.t('minimumPaymentOfXDueOnAccount', {\r\n\t\t\t\t\t\t\tdefaultValue: `A minimum payment of ${FormattingHelper.formatCurrency(this.account.minPayment)} is due on this account.`,\r\n\t\t\t\t\t\t\tpaymentAmount: FormattingHelper.formatCurrency(this.account.minPayment)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if we use RegistrationId, we cannot locate account according to it.\r\n\t\t\t\t\t// RegistrationId is for customer not for customer account\r\n\t\t\t\t\tthis.amount = this.account.balance;\r\n\t\t\t\t\tthis.hasLocatedAccount = true;\r\n\t\t\t\t\tlet portfolioName = this.account.portfolioName;\r\n\t\t\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(portfolioName);\r\n\t\t\t\t\tif (portfolio && portfolio.hasSettings) {\r\n\t\t\t\t\t\tthis.globalState.business.applyPortfolioSettingsToPortal(this.account.portfolioName, true);\r\n\t\t\t\t\t\tthis.applyPortfolioSettingsToPage();\r\n\t\t\t\t\t\tthis.applyMerchantSettingsToPage(this.account.portfolioName);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.customer = null;\r\n\t\t\t\t\t\tthis.hasLocatedAccount = false;\r\n\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\tthis.errorMessage = this.i18n.t('portalConfigurationErrorContactCustomerService', 'Portal Configuration Error: The portfolio for this account has not been setup. Please contact customer service.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.errorMessage = this.i18n.t('portalConfigurationErrorContactCustomerServiceWithNumber', 'Portal Configuration Error: The portfolio for this account has not been setup. Please contact customer service at') + ' ' + this.globalState.business.portalSettings.csPhone + '.';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.paymentItemTableAccounts.push(this.account.customerAccountKey);\r\n\t\t\t\t})\r\n\t\t\t\t.catch(response => {\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\tif (response.status === 404) {\r\n\t\t\t\t\t\tthis.errorMessage = this.i18n.t('yourAccountNoLongerActive', 'Your account is no longer active. If you feel you have received this message in error, please contact customer service.');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.customer = null;\r\n\t\t\t\t\t\tthis.hasLocatedAccount = false;\r\n\t\t\t\t\t\tlet baseMessage = this.i18n.t('unableToRetrieveAccountInformation', 'We are unable to retrieve your account information, please try again shortly.');\r\n\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\tthis.errorMessage = baseMessage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.errorMessage = baseMessage + ' ' + this.i18n.t('ifIssuePersistsPleaseContact', 'If the issue persists please contact us at') + ' ' + this.globalState.business.portalSettings.csPhone + '.';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tapplyMerchantSettingsToPage(portfolioName: string) {\r\n\t\t// the merchant settings come from the portfolio settings in this case, hence passing in portfolio name\r\n\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(portfolioName);\r\n\t\tif (this.showSelectMerchant) {\r\n\t\t\tthis.merchantKey = this.selectedMerchant?.merchantKey ?? 0;\r\n\t\t\tthis.merchantConsumerPortalFeeSettings.feesEnabled = portfolio.merchantSettings.feeSettings.serviceFeeEnabled;\r\n\t\t}\r\n\t\telse if (portfolio && portfolio.hasSettings && portfolio.merchantSettings && portfolio.merchantSettings.feeSettings) {\r\n\t\t\tthis.merchantKey = portfolio.merchantSettings.merchantKey;\r\n\t\t\tthis.merchantConsumerPortalFeeSettings.feesEnabled = portfolio.merchantSettings.feeSettings.serviceFeeEnabled;\r\n\t\t} else {\r\n\t\t\t// theoretically shouldn't get here, but show an alert just in case\r\n\t\t\talert('Could not retrieve merchant settings.');\r\n\t\t}\r\n\t}\r\n\r\n\tapplyUnvalidatedMultiMerchantPortfolio(portfolioName: string) {\r\n\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(portfolioName);\r\n\t\tthis.showSelectMerchant = !this.requireAccountLookup && this.globalState.features.consumerPortalMultiZidEzPay && portfolio && portfolio.hasSettings && portfolio.portfolioName === '___ezpay' && !!portfolio.ezPayMerchants;\r\n\t\tif (this.showSelectMerchant) {\r\n\t\t\tthis.merchantList = [...portfolio.ezPayMerchants];\r\n\t\t\tthis.selectedMerchant = null;\r\n\t\t\tthis.merchantKey = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tapplyPortfolioSettingsToPage() {\r\n\t\tthis.minFuture = 0;\r\n\t\tlet portalSettings = this.globalState.business.portalSettings;\r\n\r\n\t\t// this code is impacted by function \"setMaxFuturePaymentDays\" in portal.js model\r\n\t\t// this value could be the max of either the merchant or portfolio or ezpay depending on validation on/off\r\n\t\tif (portalSettings.paymentTypes && portalSettings.paymentTypes.maxFutureDays) {\r\n\t\t\tthis.maxFuture = portalSettings.paymentTypes.maxFutureDays;\r\n\t\t}\r\n\t\telse { this.maxFuture = 1; }\r\n\r\n\t\tthis.allowFuturePayment = false;\r\n\t\tthis.allowPayToday = false;\r\n\r\n\t\tif (portalSettings.ezpay.paymentTypes && portalSettings.ezpay.accountNumberHandling !== 'lookup') {\r\n\t\t\tthis.allowFuturePayment = portalSettings.ezpay.paymentTypes.allowFuture;\r\n\t\t\tthis.allowPayToday = portalSettings.ezpay.paymentTypes.allowSingle;\r\n\t\t} else {\r\n\t\t\tif (portalSettings.paymentTypes) {\r\n\t\t\t\tthis.allowFuturePayment = portalSettings.paymentTypes.allowFuture;\r\n\t\t\t\tthis.allowPayToday = portalSettings.paymentTypes.allowSingle;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.allowPayToday) {\r\n\t\t\tthis.minFuture = 0;\r\n\t\t\tthis.model.paymentDate = moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY');\r\n\t\t\tif (!this.allowFuturePayment) {\r\n\t\t\t\tthis.maxFuture = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.minFuture = 1;\r\n\t\t\tthis.model.paymentDate = moment(this.model.paymentDate, 'MM/DD/YYYY').add(1, 'day').format('MM/DD/YYYY');\r\n\t\t}\r\n\r\n\t\tthis.title = this.allowFuturePayment ? 'makeAPayment' : 'makeAPaymentToday';\r\n\t}\r\n\r\n\tmfaClear(event: any) {\r\n\t\tthis.pageState = this.pageStates.confirmation;\r\n\t\tthis.verificationCode = event.detail.verificationCode;\r\n\t\tif (event.detail.mfaType === MfaTwoFactorMethod.SMS) {\r\n\t\t\tthis.mfaEmail = null;\r\n\t\t\tthis.mfaPhoneNumber = event.detail.mfaValue;\r\n\t\t} else {\r\n\t\t\tthis.mfaPhoneNumber = null;\r\n\t\t\tthis.mfaEmail = event.detail.mfaValue;\r\n\t\t}\r\n\t}\r\n\r\n\tshowConfirmation(event) {\r\n\t\t// payment form errors\r\n\t\tthis.validationErrors = event.detail.errors;\r\n\r\n\t\t// if no internal payment form errors, validate other parts of the payment form. Currently the payment form returns a list of errors OR payment info.\r\n\t\t// Now that payment info is needed for external validation, it would be ideal if it were refactored to return both errors AND payment info.\r\n\t\tif (event.detail.errors.length === 0) {\r\n\t\t\tthis.validatePaymentDate(event.detail.date);\r\n\t\t}\r\n\r\n\t\t// page errors\r\n\t\tthis.validatePaymentAmount();\r\n\r\n\t\tif (this.askForAccountNumber) {\r\n\t\t\tthis.validateAccountNumber();\r\n\t\t}\r\n\r\n\t\tif (this.validationErrors.length > 0) {\r\n\t\t\tthis.utility.scrollToTop();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet enteredPaymentDate = moment(event.detail.date, 'MM/DD/YYYY').format('MM/DD/YYYY');\r\n\t\t\tlet today = moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY');\r\n\t\t\tthis.isTodayPayment = (enteredPaymentDate === today);\r\n\r\n\t\t\t// trim cardholder name\r\n\t\t\tevent.detail.name = event.detail.name.trim();\r\n\r\n\t\t\t// Need to rebuild the anonymous customer now that they've had time to enter the acct. number.\r\n\t\t\tif (this.askForAccountNumber && !this.requireAccountLookup) {\r\n\t\t\t\tlet customer = Customer.anonymous(\r\n\t\t\t\t\tthis.globalState.business,\r\n\t\t\t\t\tthis.model.accountReferenceId,\r\n\t\t\t\t\tthis.globalState.business.portalSettings.systemId || null,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.model.bucket ? this.model.bucket.bucketKey : null\r\n\t\t\t\t);\r\n\t\t\t\tthis.account = customer.accounts[0];\r\n\t\t\t}\r\n\r\n\t\t\tthis.movingToConfirmationPage = true;\r\n\t\t\tthis.account.merchantZid = this.globalState.business.getMerchantZidAssociatedToPortfolioByPortfolioName(this.account.portfolioName);\r\n\t\t\tthis.account.bucketKey = this.model.bucket ? this.model.bucket.bucketKey : null;\r\n\t\t\tthis.paymentInformation = event.detail;\r\n\t\t\tthis.amount = this.paymentInformation.amount;\r\n\t\t\tthis.cardNumber = this.paymentInformation.card ? this.paymentInformation.card.cardNumber : null;\r\n\r\n\t\t\tthis.getConfirmationTemplateData();\r\n\r\n\t\t\t// digital wallet fee calculation happens after instrument is selected\r\n\t\t\tif (this.isDigitalWalletPayment) {\r\n\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\tthis.setApplePaySettingsFields();\r\n\t\t\t\t}\r\n\t\t\t\tthis.movingToConfirmationPage = false;\r\n\t\t\t\tthis.pageState = this.pageStates.confirmation;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.payrazrService.calculateFee(event.detail.card ? true : false, this.account.portfolioName, event.detail.zipCode, event.detail.amount, this.cardNumber, null, this.account.customerAccountKey ? [this.account.customerAccountKey] : null, PaymentPlanType.NotSet , this.merchantKey)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.paymentInformation.fee = result.entity.fee;\r\n\t\t\t\t\t\tthis.movingToConfirmationPage = false;\r\n\r\n\t\t\t\t\t\tif (this.isMfaEnabled && this.isCardPayment) {\r\n\t\t\t\t\t\t\tthis.pageState = this.pageStates.mfa;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.pageState = this.pageStates.confirmation;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\tthis.movingToConfirmationPage = false;\r\n\t\t\t\t\t\talert(this.i18n.t('unableToCommunicateWithServer', 'Unable to communicate with the server. Please try again.'));\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetConfirmationTemplateData() {\r\n\t\tconst customObject: any = {};\r\n\t\tcustomObject.date = moment(this.paymentInformation.date).format('M/D/YYYY');\r\n\t\tcustomObject.amount = numeral(this.paymentInformation.amount).format('($0,0.00)');\r\n\t\tcustomObject.customerAccountNumber = this.account.referenceId || this.account.displayName;\r\n\t\tcustomObject.accountNumber = this.account.referenceId || this.account.displayName; // backward compatibility\r\n\t\tcustomObject.customerAccountName = this.account.name;\r\n\t\tcustomObject.accountName = this.account.displayName; // backward compatibility\r\n\t\tcustomObject.name = this.paymentInformation.name;\r\n\t\tcustomObject.address1 = this.paymentInformation.addressLine1;\r\n\t\tcustomObject.phone = this.phoneFormat.apply(this.paymentInformation.billingPhone); // todo: is this used?\r\n\t\tcustomObject.email = this.paymentInformation.billingEmail; // todo: is this used?\r\n\t\tcustomObject.zip = this.paymentInformation.zipCode;\r\n\t\tcustomObject.merchantZid = this.account.merchantZid;\r\n\t\tcustomObject.customerAccountLocationReferenceId = this.model.bucket ? this.model.bucket.referenceId : null;\r\n\t\tcustomObject.customerAccountLocationName = this.model.bucket ? this.model.bucket.displayName : null;\r\n\t\tcustomObject.billingPhone = this.phoneFormat.apply(this.paymentInformation.billingPhone);\r\n\t\tcustomObject.billingEmail = this.paymentInformation.billingEmail;\r\n\r\n\t\tif (this.isDigitalWalletPayment) {\r\n\t\t\tcustomObject.total = numeral(this.amount).format('($0,0.00)');\r\n\t\t\tcustomObject.description = this.paymentInformation.digitalWalletName;\r\n\t\t\tcustomObject.digitalWalletName = this.paymentInformation.digitalWalletName;\r\n\t\t\tcustomObject.totalLabel = this.merchantConsumerPortalFeeSettings.feesEnabled ? this.i18n.t('subTotal', 'Subtotal') + '*' : this.i18n.t('total', 'Total'),\r\n\t\t\t\tcustomObject.showDigitalWalletFeeDisclosure = this.merchantConsumerPortalFeeSettings.feesEnabled;\r\n\t\t}\r\n\t\telse if (this.isCardPayment) {\r\n\t\t\tcustomObject.fee = numeral(this.calculatedFeeAmount).format('($0,0.00)');\r\n\t\t\tcustomObject.total = numeral(this.calculatedTotalAmount).format('($0,0.00)');\r\n\t\t\tcustomObject.description = this.paymentInformation.transactionDescription;\r\n\t\t\tcustomObject.expData = this.paymentInformation.card.expirationDate;\r\n\t\t\tcustomObject.cardNumber = typeof this.paymentInformation.card.cardNumber !== 'undefined' ? '***' + FormattingHelper.mask(this.paymentInformation.card.cardNumber) : '';\r\n\t\t}\r\n\t\telse if (this.isCheckPayment) {\r\n\t\t\tcustomObject.fee = numeral(this.calculatedFeeAmount).format('($0,0.00)');\r\n\t\t\tcustomObject.total = numeral(this.calculatedTotalAmount).format('($0,0.00)');\r\n\t\t\tcustomObject.description = this.paymentInformation.transactionDescription;\r\n\t\t\tcustomObject.bankAccount = typeof this.paymentInformation.check.accountNumber !== 'undefined' ? '***' + FormattingHelper.mask(this.paymentInformation.check.accountNumber) : '';\r\n\t\t\tcustomObject.transitNumber = this.paymentInformation.check.transitNumber;\r\n\t\t\tcustomObject.checkNumber = this.paymentInformation.check.checkNumber;\r\n\t\t}\r\n\r\n\t\tthis.accountPayments = this.getAccountsToPayForSubmission();\r\n\t\tthis.selectedCustomerAccountKeys = this.accountPayments.reduce((customerAccountKeys: number[], accountPayment: ICustomerAccountToPay) =>\r\n\t\t{\r\n\t\t\tif (accountPayment.customerAccountKey) {\r\n\t\t\t\tcustomerAccountKeys.push(accountPayment.customerAccountKey);\r\n\t\t\t}\r\n\t\t\treturn customerAccountKeys;\r\n\t\t}, []);\r\n\r\n\t\tconst merchantKey = this.globalState.business.getMerchantKeyAssociatedToPortfolioByPortfolioName(this.account.portfolioName);\r\n\t\tthis.confirmationTemplateData = new TemplateData(customObject, merchantKey, this.accountPayments, null, this.isEzpay);\r\n\t}\r\n\r\n\tsetApplePaySettingsFields(): void {\r\n\t\tif (!this.paymentInformation.digitalWalletSettings?.isApplePay()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst applePaySettings: ApplePaySettings = this.paymentInformation.digitalWalletSettings as ApplePaySettings;\r\n\t\tapplePaySettings.totalAmount = this.amount;\r\n\r\n\t\tif (!this.isTodayPayment) {\r\n\t\t\tapplePaySettings.totalType = 'pending';\r\n\t\t\tapplePaySettings.paymentTiming = 'deferred';\r\n\t\t\tapplePaySettings.deferredPaymentDate = this.paymentInformation.date;\r\n\t\t}\r\n\r\n\t\tthis.paymentInformation.digitalWalletSettings = applePaySettings;\r\n\t}\r\n\r\n\tsubmit(event: CustomEvent) {\r\n\t\tlet submission;\r\n\r\n\t\tif (this.isTodayPayment) {\r\n\t\t\tsubmission = this.submitTodayPayment(event);\r\n\t\t} else {\r\n\t\t\tsubmission = this.submitFuturePayment(event);\r\n\t\t}\r\n\r\n\t\treturn submission;\r\n\t}\r\n\r\n\tget confirmationTitle() {\r\n\t\tlet makePaymentText: string = this.i18n.t('makePayment', 'Make Payment');\r\n\t\treturn (!this.isTodayPayment) ?\r\n\t\t\tthis.i18n.t('reviewInfoPressSchedulePayment', 'Please review the following information and press the Schedule Payment button') :\r\n\t\t\tthis.i18n.t('reviewInfoPressMakePayment', {\r\n\t\t\t\tdefaultValue: 'Please review the following information and press the Make Payment button.',\r\n\t\t\t\tpayment: makePaymentText\r\n\t\t\t});\r\n\t}\r\n\r\n\tget confirmationSubmitButtonText() {\r\n\t\treturn (!this.isTodayPayment) ?\r\n\t\t\tthis.i18n.t('schedulePayment', 'Schedule Payment') :\r\n\t\t\tthis.i18n.t('makePayment', 'Make Payment');\r\n\t}\r\n\r\n\tvalidatePaymentAmount() {\r\n\t\tif (this.requireAccountLookup) {\r\n\t\t\tlet accountComponentValidaton = this.paymentItemTableViewModel.validate();\r\n\r\n\t\t\tif (accountComponentValidaton.confirm && accountComponentValidaton.errorMessages) {\r\n\t\t\t\tlet confirmErrorMessage = accountComponentValidaton\r\n\t\t\t\t\t.errorMessages.splice(\r\n\t\t\t\t\t\taccountComponentValidaton.confirmErrorMessageIndex, 1);\r\n\r\n\t\t\t\tif (!confirm(...confirmErrorMessage)) {\r\n\t\t\t\t\taccountComponentValidaton.errorMessages.push(\r\n\t\t\t\t\t\tthis.i18n.t('overPaymentsValidationNotice','Account is being overpaid.'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.validationErrors = [...this.validationErrors, ...accountComponentValidaton.errorMessages];\r\n\t\t}\r\n\t}\r\n\r\n\tvalidatePaymentDate(enteredPaymentDate: string) {\r\n\t\tlet paymentDate = moment(enteredPaymentDate, 'MM/DD/YYYY');\r\n\t\tlet maxFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.maxFuture, 'd').endOf('day');\r\n\r\n\t\tif (!paymentDate.isValid() || !paymentDate) {\r\n\t\t\tthis.validationErrors.push(this.i18n.t('invalidPaymentDate', 'Invalid payment date'));\r\n\t\t}\r\n\r\n\t\tif (paymentDate < moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).startOf('day')) {\r\n\t\t\tthis.validationErrors.push(this.i18n.t('paymentDateCannotBeInPast', 'Payment date cannot be in the past'));\r\n\t\t}\r\n\t\tif (paymentDate > maxFuture) {\r\n\t\t\tthis.validationErrors.push(`Payment date cannot be more than ${this.maxFuture} day${this.maxFuture > 1 ? 's' : ''} from now`);\r\n\t\t}\r\n\t}\r\n\r\n\tvalidateAccountNumber() {\r\n\t\tlet validator = new NoLookupValidator();\r\n\r\n\t\tlet accountReferenceId = this.model.accountReferenceId;\r\n\r\n\t\taccountReferenceId = (typeof (accountReferenceId) === 'undefined') ? '' : accountReferenceId;\r\n\t\tif (accountReferenceId.lastIndexOf('-') === accountReferenceId.length - 1) {\r\n\t\t\taccountReferenceId = accountReferenceId.substring(0, accountReferenceId.lastIndexOf('-'));\r\n\t\t}\r\n\r\n\t\tthis.model.accountReferenceId = accountReferenceId;\r\n\r\n\t\tif (validator.hasErrors(this.model, this.customerAccountNumberComponent, this.globalState.business.portalSettings)) {\r\n\t\t\tthis.validationErrors = this.validationErrors.concat(validator.errors);\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tsubmitTodayPayment(event: CustomEvent): Promise {\r\n\t\tlet submission;\r\n\r\n\t\tlet isEmailOptedIn: boolean | null;\r\n\t\tif (this.globalState.business.portalSettings.fields.billingEmail.visible) {\r\n\t\t\tisEmailOptedIn = this.paymentInformation.isEmailOptedIn;\r\n\t\t\tthis.globalState.customer.email = this.paymentInformation.billingEmail; // Set email for receipt page\r\n\t\t}\r\n\r\n\t\tif (this.paymentInformation.card) {\r\n\t\t\tsubmission = this.payrazrService.submitCardPaymentV2(\r\n\t\t\t\tthis.customer,\r\n\t\t\t\tthis.account,\r\n\t\t\t\tthis.paymentInformation.name,\r\n\t\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\t\tthis.paymentInformation.billingState,\r\n\t\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\t\tisEmailOptedIn,\r\n\t\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\t\tthis.paymentInformation.amount,\r\n\t\t\t\tthis.paymentInformation.fee,\r\n\t\t\t\tthis.paymentInformation.card,\r\n\t\t\t\tnull,\r\n\t\t\t\tfalse,\r\n\t\t\t\t0,\r\n\t\t\t\tthis.account.bucketKey,\r\n\t\t\t\tthis.merchantKey,\r\n\t\t\t\tthis.recpatchaV2Token,\r\n\t\t\t\t!this.requireAccountLookup,\r\n\t\t\t\tthis.verificationCode,\r\n\t\t\t\tthis.mfaEmail,\r\n\t\t\t\tthis.mfaPhoneNumber\r\n\t\t\t);\r\n\t\t} else if (this.paymentInformation.digitalWalletSettings) {\r\n\t\t\tlet request = new SubmitDigitalWalletPaymentRequest();\r\n\t\t\trequest.customerAccountId = this.account.id;\r\n\t\t\trequest.portalId = this.globalState.business.portalId;\r\n\t\t\trequest.bucketKey = this.account.bucketKey;\r\n\t\t\trequest.merchantKey = this.merchantKey;\r\n\t\t\trequest.digitalWalletPaymentDetails = this.getDigitalWalletPaymentDetails(event.detail);\r\n\t\t\t// submit digital wallet payment\r\n\t\t\tsubmission = this.payrazrService.submitCardDigitalWalletPayment(request);\r\n\t\t} else {\r\n\t\t\tsubmission = this.payrazrService.submitCheckPaymentV2(\r\n\t\t\t\tthis.customer,\r\n\t\t\t\tthis.account,\r\n\t\t\t\tthis.paymentInformation.name,\r\n\t\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\t\tthis.paymentInformation.billingState,\r\n\t\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\t\tisEmailOptedIn,\r\n\t\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\t\tthis.paymentInformation.amount,\r\n\t\t\t\tthis.paymentInformation.fee,\r\n\t\t\t\tthis.paymentInformation.check,\r\n\t\t\t\tnull,\r\n\t\t\t\tfalse,\r\n\t\t\t\t0,\r\n\t\t\t\tthis.account.bucketKey,\r\n\t\t\t\tthis.merchantKey,\r\n\t\t\t\tthis.recpatchaV2Token,\r\n\t\t\t\t!this.requireAccountLookup\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn submission\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.response.isSuccessful) {\r\n\t\t\t\t\tthis.pageState = this.pageStates.receipt;\r\n\t\t\t\t\tthis.confirmationId = result.confirmationNumber;\r\n\t\t\t\t\tthis.date = result.date;\r\n\t\t\t\t\tthis.time = result.time;\r\n\t\t\t\t\tthis.type = result.type;\r\n\t\t\t\t\tthis.subtotal = result.subtotal;\r\n\t\t\t\t\tthis.serviceFee = result.serviceFee;\r\n\t\t\t\t\tthis.total = result.total;\r\n\t\t\t\t\tthis.info = result.info;\r\n\t\t\t\t\tthis.name = result.name;\r\n\t\t\t\t\tthis.result = result.result;\r\n\t\t\t\t\tthis.pnref = result.response.pnref;\r\n\t\t\t\t\tthis.portalTemplateType = this.templateService.getPortalTemplateType(this.paymentInformation, false);\r\n\t\t\t\t\tthis.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t\tthis.enableEditTransaction = false;\r\n\r\n\t\t\t\t\tif (result.response.hasException) {\r\n\t\t\t\t\t\tthis.customMessage = result.response.message;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.pageState = this.pageStates.receipt;\r\n\t\t\t\t\tthis.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\tthis.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t\tthis.resultCode = result.response.resultCode;\r\n\t\t\t\t\tthis.resultMessage = result.response.message;\r\n\t\t\t\t\tthis.enableEditTransaction = this.globalState.business.portalSettings.businessSettings.enablePortalEditTransaction;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// complete digital wallet session\r\n\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\tconst isSuccessful: boolean = result.response.isSuccessful && !result.response.hasException;\r\n\t\t\t\t\tApplePayUtil.completeSession(event, isSuccessful);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.transactionError = error;\r\n\r\n\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\tconst isSuccessful: boolean = false;\r\n\t\t\t\t\tApplePayUtil.completeSession(event, isSuccessful);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetDigitalWalletPaymentDetails(digitalWalletEventData: any): DigitalWalletPaymentDetails {\r\n\t\tif (digitalWalletEventData === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet digitalWalletPaymentDetails: DigitalWalletPaymentDetails = new DigitalWalletPaymentDetails();\r\n\r\n\t\t// digital wallet specific\r\n\t\tif (digitalWalletEventData.digitalWalletType === DigitalWalletType.ApplePay) {\r\n\t\t\tdigitalWalletPaymentDetails.calculatedServiceFee = digitalWalletEventData.calculatedServiceFee; // informational only\r\n\r\n\t\t\tconst applePayPayment: ApplePayJS.ApplePayPayment = digitalWalletEventData.payment;\r\n\t\t\tdigitalWalletPaymentDetails.digitalWalletType = DigitalWalletType.ApplePay;\r\n\r\n\t\t\tconst applePayPaymentToken = JSON.stringify(applePayPayment.token);\r\n\t\t\tdigitalWalletPaymentDetails.authenticationPaymentToken = btoa(applePayPaymentToken);\r\n\r\n\t\t\tdigitalWalletPaymentDetails.accountName = applePayPayment.billingContact?.givenName + ' ' + applePayPayment.billingContact?.familyName;\r\n\t\t\tdigitalWalletPaymentDetails.address = applePayPayment.billingContact?.addressLines ? applePayPayment.billingContact?.addressLines[0] : '';\r\n\t\t\tdigitalWalletPaymentDetails.zipCode = applePayPayment.billingContact?.postalCode ?? '';\r\n\t\t\tdigitalWalletPaymentDetails.isDebitCard = applePayPayment.token.paymentMethod.type === 'debit';\r\n\t\t\tdigitalWalletPaymentDetails.isCreditCard = applePayPayment.token.paymentMethod.type === 'credit';\r\n\r\n\t\t\tconsole.log('EZPAY stringified token:', applePayPaymentToken);\r\n\t\t\tconsole.log('EZPAY dw payment method: ', digitalWalletPaymentDetails);\r\n\t\t}\r\n\r\n\t\treturn digitalWalletPaymentDetails;\r\n\t}\r\n\r\n\tsubmitFuturePayment(submitEvent: CustomEvent): Promise {\r\n\t\tlet paymentDate = moment(this.paymentInformation.date);\r\n\t\tlet submission;\r\n\r\n\t\tlet isEmailOptedIn: boolean | null;\r\n\t\tif (this.globalState.business.portalSettings.fields.billingEmail.visible) {\r\n\t\t\tisEmailOptedIn = this.paymentInformation.isEmailOptedIn;\r\n\t\t}\r\n\r\n\t\tif (this.isDigitalWalletPayment) {\r\n\t\t\tlet digitalWalletPaymentPlanDetails = this.getDigitalWalletPaymentPlanDetailsFromSubmitEvent(submitEvent);\r\n\t\t\tsubmission = this.payrazrService.submitDigitalWalletPaymentPlan(\r\n\t\t\t\tthis.account,\r\n\t\t\t\tdigitalWalletPaymentPlanDetails,\r\n\t\t\t\tthis.merchantKey);\r\n\t\t} else if (this.isCardPayment) {\r\n\t\t\tsubmission = this.payrazrService.submitCardPaymentPlan(\r\n\t\t\t\tthis.account,\r\n\t\t\t\t0,\r\n\t\t\t\tthis.paymentInformation.amount,\r\n\t\t\t\t1,\r\n\t\t\t\tpaymentDate,\r\n\t\t\t\tthis.paymentInformation.name,\r\n\t\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\t\tthis.paymentInformation.billingState,\r\n\t\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\t\tisEmailOptedIn,\r\n\t\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\t\tthis.paymentInformation.fee,\r\n\t\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\t\tthis.paymentInformation.card,\r\n\t\t\t\t0,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\t0,\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.merchantKey\r\n\t\t\t);\r\n\t\t} else if (this.paymentInformation.check) {\r\n\t\t\tsubmission = this.payrazrService.submitCheckPaymentPlan(\r\n\t\t\t\tthis.account,\r\n\t\t\t\t0,\r\n\t\t\t\tthis.paymentInformation.amount,\r\n\t\t\t\t1,\r\n\t\t\t\tpaymentDate,\r\n\t\t\t\tthis.paymentInformation.name,\r\n\t\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\t\tthis.paymentInformation.billingState,\r\n\t\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\t\tisEmailOptedIn,\r\n\t\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\t\tthis.paymentInformation.fee,\r\n\t\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\t\tthis.paymentInformation.check,\r\n\t\t\t\t0,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\t0,\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.merchantKey\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn submission\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.response.isSuccessful) {\r\n\t\t\t\t\tthis.pageState = this.pageStates.receipt;\r\n\t\t\t\t\tthis.confirmationId = result.confirmationNumber;\r\n\t\t\t\t\tthis.date = result.date;\r\n\t\t\t\t\tthis.time = result.time;\r\n\t\t\t\t\tthis.type = result.type;\r\n\t\t\t\t\tthis.subtotal = result.subtotal;\r\n\t\t\t\t\tthis.serviceFee = result.serviceFee;\r\n\t\t\t\t\tthis.total = result.total;\r\n\t\t\t\t\tthis.info = result.info;\r\n\t\t\t\t\tthis.name = result.name;\r\n\t\t\t\t\tthis.result = result.result;\r\n\t\t\t\t\tthis.planId = result.response.planId;\r\n\t\t\t\t\tthis.portalTemplateType = this.isCardPayment\r\n\t\t\t\t\t\t? PortalTemplateTypes.CreditCardInstallmentPlanReceipt\r\n\t\t\t\t\t\t: PortalTemplateTypes.CheckInstallmentPlanReceipt;\r\n\t\t\t\t\tthis.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t\tthis.enableEditTransaction = false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.pageState = this.pageStates.receipt;\r\n\t\t\t\t\tthis.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\tthis.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t\tthis.resultCode = result.response.resultCode;\r\n\t\t\t\t\tthis.resultMessage = result.response.message;\r\n\t\t\t\t\tthis.enableEditTransaction = this.globalState.business.portalSettings.businessSettings.enablePortalEditTransaction;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// complete digital wallet session\r\n\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\tconst isSuccessful: boolean = result.response.isSuccessful;\r\n\t\t\t\t\tApplePayUtil.completeSession(submitEvent, isSuccessful);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\t// complete digital wallet session\r\n\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\tconst isSuccessful: boolean = false;\r\n\t\t\t\t\tApplePayUtil.completeSession(submitEvent, isSuccessful);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.transactionError = error;\r\n\t\t\t});\r\n\t}\r\n\r\n\tverifyCaptcha(verifyCaptchaEvent: CustomEvent) {\r\n\t\tthis.recpatchaV2Token = verifyCaptchaEvent.detail;\r\n\t}\r\n\r\n\tcaptchaExpired() {\r\n\t\tthis.recpatchaV2Token = '';\r\n\t}\r\n\r\n\tgetDigitalWalletPaymentPlanDetailsFromSubmitEvent(submitEvent: CustomEvent): DigitalWalletPaymentPlanDetails {\r\n\t\tif (submitEvent === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet digitalWalletPaymentPlanDetails: DigitalWalletPaymentPlanDetails = new DigitalWalletPaymentPlanDetails();\r\n\r\n\t\t// digital wallet specific\r\n\t\tif (submitEvent.detail.digitalWalletType === DigitalWalletType.ApplePay) {\r\n\t\t\tconst applePayPayment: ApplePayJS.ApplePayPayment = submitEvent.detail.payment;\r\n\t\t\tconst applePayPaymentToken = JSON.stringify(applePayPayment.token);\r\n\r\n\t\t\tdigitalWalletPaymentPlanDetails.authenticationPaymentToken = btoa(applePayPaymentToken);\r\n\t\t\tdigitalWalletPaymentPlanDetails.digitalWalletType = DigitalWalletType.ApplePay;\r\n\t\t\tdigitalWalletPaymentPlanDetails.isDebitCard = applePayPayment.token.paymentMethod.type === 'debit';\r\n\t\t\tdigitalWalletPaymentPlanDetails.isCreditCard = applePayPayment.token.paymentMethod.type === 'credit';\r\n\t\t\tdigitalWalletPaymentPlanDetails.accountName = applePayPayment.billingContact?.givenName + ' ' + applePayPayment.billingContact?.familyName;\r\n\t\t\tdigitalWalletPaymentPlanDetails.calculatedServiceFee = submitEvent.detail.calculatedServiceFee; // informational only\r\n\t\t\tdigitalWalletPaymentPlanDetails.addressLine1 = applePayPayment.billingContact?.addressLines ? applePayPayment.billingContact?.addressLines[0] : '';\r\n\t\t\tdigitalWalletPaymentPlanDetails.zipCode = applePayPayment.billingContact?.postalCode ?? '';\r\n\t\t\tdigitalWalletPaymentPlanDetails.saveToWallet = false;\r\n\t\t\tdigitalWalletPaymentPlanDetails.numberOfPayments = 1;\r\n\t\t\tdigitalWalletPaymentPlanDetails.firstPaymentDate = moment(this.paymentInformation.date);\r\n\t\t\tdigitalWalletPaymentPlanDetails.paymentAmount = Number(this.amount);\r\n\t\t\tdigitalWalletPaymentPlanDetails.maxRetries = 0;\r\n\t\t\tdigitalWalletPaymentPlanDetails.isRehab = false;\r\n\t\t\tdigitalWalletPaymentPlanDetails.description = DigitalWalletType.ApplePay.toString();\r\n\t\t\tdigitalWalletPaymentPlanDetails.isThirdParty = false;\r\n\t\t\tdigitalWalletPaymentPlanDetails.discountAmount = 0;\r\n\t\t}\r\n\r\n\t\treturn digitalWalletPaymentPlanDetails;\r\n\t}\r\n\r\n\tprivate getAccountsToPayForSubmission(): ICustomerAccountToPay[] {\r\n\t\tlet accountsToPay: ICustomerAccountToPay[] = [];\r\n\r\n\t\tif (!this.requireAccountLookup) {\r\n\t\t\t// assemble info for unvalidated ezpay\r\n\t\t\taccountsToPay.push({\r\n\t\t\t\treferenceId: this.model.accountReferenceId,\r\n\t\t\t\tpaymentAmount: this.amount,\r\n\t\t\t\tmerchantKey: this.merchantKey\r\n\t\t\t} as ICustomerAccountToPay);\r\n\t\t} else {\r\n\t\t\t// assemble info for validated ezpay\r\n\t\t\tlet selectedPaymentItems: AccountPaymentItem[] = this.paymentItemTableViewModel.getSelectedItems();\r\n\t\t\tselectedPaymentItems.forEach((i: AccountPaymentItem) => {\r\n\t\t\t\taccountsToPay.push({\r\n\t\t\t\t\tcustomerAccountKey: i.itemKey,\r\n\t\t\t\t\tpaymentAmount: NumberHelper.parseCurrency(i.enteredAmount),\r\n\t\t\t\t\tmerchantKey: i.merchantKey,\r\n\t\t\t\t\tpaymentBalanceType: i.paymentBalanceType,\r\n\t\t\t\t\tpaymentLimitSettings: i.paymentLimitSettings,\r\n\t\t\t\t\tminPaymentDue: i.minPaymentDue\r\n\t\t\t\t} as ICustomerAccountToPay);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn accountsToPay;\r\n\t}\r\n\r\n\tupdateAccountTableSubtotal(): void {\r\n\t\tthis.amount = this.paymentItemTableViewModel.getTotalEnteredAmountForSelectedItems();\r\n\t}\r\n\r\n\tpaymentAmountChanged() {\r\n\t\tthis.amount = numeral(this.amount).format('0.00');\r\n\t}\r\n\r\n\tshowLegalModal(content:string) {\r\n\t\tif (content === 'terms') {\r\n\t\t\tthis.dialogService.open({ viewModel: LegalTermsDialog, lock: false });\r\n\t\t}\r\n\t}\r\n\r\n\thandleSelectMerchantChanged(event, merchant: Merchant) {\r\n\t\tthis.hasLocatedAccount = this.selectedMerchant?.merchantKey > 0;\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.globalState.business.applyPortfolioSettingsToPortal(this.account.portfolioName, true, this.selectedMerchant.merchantKey);\r\n\t\tthis.applyPortfolioSettingsToPage();\r\n\t\tthis.applyMerchantSettingsToPage(this.account.portfolioName);\r\n\t\tthis.publishEventsAfterMerchantSelected();\r\n\t}\r\n\r\n\tpublishEventsAfterMerchantSelected() {\r\n\t\tthis.eventAggregator.publish('portalSettingsCardsAcceptedChanged', this.globalState.business.portalSettings.cardsAccepted);\r\n\t\tthis.eventAggregator.publish('ezPayMerchantSelectedChangedEvent', this.selectedMerchant?.merchantKey ?? 0);\r\n\t}\r\n\r\n\t@computedFrom('pageState')\r\n\tget showStartButton() {\r\n\t\treturn this.pageState === this.pageStates.start;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget showTerms() {\r\n\t\treturn this.pageState === this.pageStates.terms;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget showDisclosures() {\r\n\t\treturn this.pageState === this.pageStates.disclosures;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget showPaymentForm() {\r\n\t\treturn this.pageState === this.pageStates.payment;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget showConfirmationPage() {\r\n\t\treturn this.pageState === this.pageStates.confirmation;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget showReceiptPage() {\r\n\t\treturn this.pageState === this.pageStates.receipt;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget showMfaPage() {\r\n\t\treturn this.pageState === this.pageStates.mfa\r\n\t\t\t&& (this.globalState.business?.portalSettings?.businessSettings?.useMFAForUnvalidatedEzPay ?? false)\r\n\t\t\t// and is unvalidated\r\n\t\t\t&& !this.requireAccountLookup\r\n\t\t\t&& this.globalState.features.unvalidatedEzPayMFA;\r\n\t}\r\n\t@computedFrom('pageState')\r\n\tget isMfaEnabled() {\r\n\t\treturn !this.requireAccountLookup\r\n\t\t\t&& (this.globalState.business?.portalSettings?.businessSettings?.useMFAForUnvalidatedEzPay ?? false)\r\n\t\t\t&& this.globalState.features.unvalidatedEzPayMFA;\r\n\t}\r\n\r\n\tget requireCaptchaV2() {\r\n\t\treturn this.globalState.business?.portalSettings?.businessSettings?.useRecaptchaV2 ?? false;\r\n\t}\r\n}\r\n\r\nexport class Model {\r\n\taccountReferenceId: any;\r\n\tpaymentDate: any;\r\n\tregistrationId: any;\r\n\tregistrationId2: any;\r\n\tregistrationId3: any;\r\n\tzipCode: any;\r\n\tbucketKey: number | null;\r\n\r\n\tconstructor() {\r\n\t\tthis.accountReferenceId = ''; // \"C12345\";\r\n\t\tthis.paymentDate = moment().format('MM/DD/YYYY');\r\n\r\n\t\tthis.registrationId = '';\r\n\t\tthis.registrationId2 = '';\r\n\t\tthis.registrationId3 = '';\r\n\t\tthis.zipCode = '';\r\n\t\tthis.bucketKey = null;\r\n\t}\r\n}\r\n\r\nexport class NoLookupValidator {\r\n\terrors: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.errors = [];\r\n\t}\r\n\r\n\thasErrors(model, customerAccountNumberComponent, portalSettings) {\r\n\r\n\t\tcustomerAccountNumberComponent.validate(this.errors);\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n}\r\nexport class CustomerLookupValidator {\r\n\terrors: any;\r\n\ti18n: any;\r\n\tconstructor(i18next: any) {\r\n\t\tthis.errors = [];\r\n\t\tthis.i18n = i18next;\r\n\t}\r\n\r\n\thasErrors(model, customerAccountNumberComponent, portalSettings) {\r\n\t\tif (portalSettings.ezpay.accountNumberSettings[0].required) {\r\n\t\t\tcustomerAccountNumberComponent.validate(this.errors);\r\n\t\t}\r\n\r\n\t\tif (portalSettings.ezpay.registrationIdSettings.required) {\r\n\t\t\tif (model.registrationId.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.ezpay.registrationIdSettings.label) { label = portalSettings.ezpay.registrationIdSettings.label; }\r\n\t\t\t\telse { label = this.i18n.t('registrationId', 'Registration Id'); }\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.ezpay.registrationId2Settings.required) {\r\n\t\t\tif (model.registrationId2.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.ezpay.registrationId2Settings.label) { label = portalSettings.ezpay.registrationId2Settings.label; }\r\n\t\t\t\telse { label = this.i18n.t('registrationIdTwo', 'Registration Id 2'); }\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.ezpay.registrationId3Settings.required) {\r\n\t\t\tif (model.registrationId3.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.ezpay.registrationId3Settings.label) { label = portalSettings.ezpay.registrationId3Settings.label; }\r\n\t\t\t\telse { label = this.i18n.t('registrationIdThree', 'Registration Id 3'); }\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.ezpay.zipcodeSettings.required) {\r\n\t\t\tif (model.zipCode.length === 0) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterZipBeforeContinuing', 'Please enter your zip code before continuing'));\r\n\t\t\t} else if (!ValidationHelpers.isZipCode(model.zipCode)) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterValidFiveOrNineDigitZipCode', 'Please enter a valid 5 or 9 digit zip code'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".feeBlock {\\r\\n display: flex;\\r\\n}\\r\\n.feeBlock div {\\r\\n margin: auto 10px;\\r\\n}\\r\\n.feeBlock div label {\\r\\n padding-top: 5px;\\r\\n}\\r\\n\\r\\n.row.wrap {\\r\\n flex-wrap: wrap;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { Router } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PortalUtility } from '../../helpers/utility';\r\nimport { Business } from '../../models/business';\r\nimport { PhoneFormat } from '../../helpers/phone-format';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { mock, instance, verify, when, anything, spy } from 'ts-mockito';\r\nimport { EZPay } from './ezpay';\r\nimport { ValidationControllerFactory } from 'aurelia-validation';\r\nimport { TemplateService } from '../../services/template-service';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { ApplePaySettings, ApplePayUtil } from '../../models/digital-wallet';\r\nimport { Merchant } from '../../models/merchant';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('ezpay', () => {\r\n\t\t\tlet component: EZPay;\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockPortalUtility: PortalUtility = mock(PortalUtility);\r\n\t\t\tlet stubState: State;\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockTemplateService: TemplateService = mock(TemplateService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockPhoneFormatter: PhoneFormat = mock(PhoneFormat);\r\n\t\t\tconst mockValidationControllerFactory: ValidationControllerFactory = mock(ValidationControllerFactory);\r\n\t\t\tconst mockDialogService: DialogService = mock(DialogService);\r\n\t\t\tconst mockMerchant: Merchant = mock(Merchant);\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tstubState = new State(\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\r\n\t\t\t\tcomponent = new EZPay(\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockTemplateService),\r\n\t\t\t\t\tstubState,\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockPortalUtility),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockPhoneFormatter),\r\n\t\t\t\t\tinstance(mockValidationControllerFactory),\r\n\t\t\t\t\tinstance(mockDialogService),\r\n\t\t\t\t\tinstance(mockEventAggregator),\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize EZPay component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('defaultEzPayFields', () => {\r\n\t\t\t\tit('should set global state ezpay registrationId, registrationId2, registrationId3 required to false if value is undefined and zipcode required to true if it is undefined', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tregistrationIdSettings: undefined,\r\n\t\t\t\t\t\t\t\tregistrationId2Settings: undefined,\r\n\t\t\t\t\t\t\t\tregistrationId3Settings: undefined,\r\n\t\t\t\t\t\t\t\tzipcodeSettings: undefined\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.defaultEzPayFields();\r\n\r\n\t\t\t\t\texpect(stubState.business.portalSettings.ezpay.registrationIdSettings).toEqual({ required: false });\r\n\t\t\t\t\texpect(stubState.business.portalSettings.ezpay.registrationId2Settings).toEqual({ required: false });\r\n\t\t\t\t\texpect(stubState.business.portalSettings.ezpay.registrationId3Settings).toEqual({ required: false });\r\n\t\t\t\t\texpect(stubState.business.portalSettings.ezpay.zipcodeSettings).toEqual({ required: true });\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('start', () => {\r\n\t\t\t\tit('should set hideEzpayTerms of state to false and page state to empty object', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: undefined,\r\n\t\t\t\t\t\t\t\thideDisclosures: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.displayEzpayAgreeTermsError = false;\r\n\t\t\t\t\tlet element = document.createElement('input') as HTMLInputElement;\r\n\t\t\t\t\telement.setAttribute('id', 'ezpay-t-c-agreed');\r\n\t\t\t\t\telement.checked = false;\r\n\t\t\t\t\tspyOn(document, 'getElementById').and.returnValue(element);\r\n\t\t\t\t\tcomponent.start();\r\n\t\t\t\t\texpect(stubState.hideEzpayTerms).toEqual(false);\r\n\t\t\t\t\texpect(component.displayEzpayAgreeTermsError).toEqual(true);\r\n\t\t\t\t});\r\n\t\t\t\tit('should set hideEzpayTerms of state to true when checked \"ezpay-t-c-agreed\" checkbox', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\thideDisclosures: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet element = document.createElement('input') as HTMLInputElement;\r\n\t\t\t\t\telement.setAttribute('id', 'ezpay-t-c-agreed');\r\n\t\t\t\t\telement.checked = true;\r\n\t\t\t\t\tspyOn(document, 'getElementById').and.returnValue(element);\r\n\t\t\t\t\tcomponent.start();\r\n\t\t\t\t\texpect(stubState.hideEzpayTerms).toEqual(true);\r\n\t\t\t\t\texpect(component.pageState).toEqual({});\r\n\t\t\t\t});\r\n\t\t\t\tit('should set hideEzpayTerms of state to true and component doContinue func called', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tconst spy = spyOn(component, 'doContinue').and.stub();\r\n\t\t\t\t\tlet element = document.createElement('input') as HTMLInputElement;\r\n\t\t\t\t\telement.setAttribute('id', 'ezpay-t-c-agreed');\r\n\t\t\t\t\telement.checked = true;\r\n\t\t\t\t\tspyOn(document, 'getElementById').and.returnValue(element);\r\n\t\t\t\t\tcomponent.start();\r\n\t\t\t\t\texpect(stubState.hideEzpayTerms).toEqual(true);\r\n\t\t\t\t\texpect(spy).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('activate()', () => {\r\n\t\t\t\tit('should call component defaultEzPayFields, getPageStartState and requireAccountLookup must be true ', () => {\r\n\t\t\t\t\tspyOn(component, 'defaultEzPayFields');\r\n\t\t\t\t\tspyOn(component, 'getPageStartState');\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: undefined,\r\n\t\t\t\t\t\t\t\tdisplayAccountBalanceOnPaymentForm: undefined,\r\n\t\t\t\t\t\t\t\taccountNumberHandling: 'Lookup'\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\t\tpaymentDate: '',\r\n\t\t\t\t\t\t\t\tpaymentAmount: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbannerAlignment: ''\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.activate();\r\n\t\t\t\t\texpect(component.defaultEzPayFields).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.getPageStartState).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.requireAccountLookup).toBeTrue();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('attatched()', () => {\r\n\t\t\t\tit('should call utility scrollToTop', () => {\r\n\t\t\t\t\tcomponent.pageState = component.pageStates.start;\r\n\t\t\t\t\tspyOn(component, 'showBannerImage');\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\tverify(mockPortalUtility.scrollToTop()).called();\r\n\t\t\t\t\texpect(component.showBannerImage).toHaveBeenCalledTimes(0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should call utility scrollToTop and call showBannerImage when pageState is not start', () => {\r\n\t\t\t\t\tcomponent.pageState = component.pageStates.disclosures;\r\n\t\t\t\t\tspyOn(component, 'showBannerImage');\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\tverify(mockPortalUtility.scrollToTop()).called();\r\n\t\t\t\t\texpect(component.showBannerImage).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('showBannerImage', () => {\r\n\t\t\t\tit('should set canShowBanner as true and hidden attribute should not be present on img html element with footer-logo as id ', () => {\r\n\t\t\t\t\tcomponent.canShowBanner = false;\r\n\t\t\t\t\tlet element = document.createElement('img') as HTMLImageElement;\r\n\t\t\t\t\telement.setAttribute('id', 'footer-logo');\r\n\t\t\t\t\tspyOn(document, 'getElementById').and.returnValue(element);\r\n\t\t\t\t\tcomponent.showBannerImage();\r\n\t\t\t\t\texpect(component.canShowBanner).toBeTrue();\r\n\t\t\t\t\texpect(element.hasAttribute(\"hidden\")).toBeFalse();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set canShowBanner as false and hidden attribute should be present on img html element with footer-logo as id ', () => {\r\n\t\t\t\t\tcomponent.canShowBanner = false;\r\n\t\t\t\t\tlet element = document.createElement('img') as HTMLImageElement;\r\n\t\t\t\t\telement.setAttribute('id', 'footer-logo');\r\n\t\t\t\t\tspyOn(document, 'getElementById').and.returnValue(element);\r\n\t\t\t\t\tcomponent.showBannerImage(false);\r\n\t\t\t\t\texpect(component.canShowBanner).toBeFalse();\r\n\t\t\t\t\texpect(element.hasAttribute(\"hidden\")).toBeTrue();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('getPageStartState', () => {\r\n\t\t\t\tit('should return pageState.start value when portalsettings ezpayOnly and ezpayOnlyStartButton selected', () => {\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tstart: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: true,\r\n\t\t\t\t\t\t\t\tezpayOnlyStartButton: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet returnValue = component.getPageStartState();\r\n\t\t\t\t\texpect(returnValue).toBe(true);\r\n\t\t\t\t});\r\n\t\t\t\tit('should return pageStates.terms when portalsettings ezpayOnly and ezpayOnlyStartButton not selected but hideTerms selected', () => {\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tterms: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: false,\r\n\t\t\t\t\t\t\t\tezpayOnlyStartButton: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\thideTermsAck: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet returnValue = component.getPageStartState();\r\n\t\t\t\t\texpect(returnValue).toBe(true);\r\n\t\t\t\t});\r\n\t\t\t\tit('should return pageStates.disclosures when portalsettings ezpayOnly and ezpayOnlyStartButton not selected, hideTerms selected but hideDisclosures selected', () => {\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tdisclosures: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: false,\r\n\t\t\t\t\t\t\t\tezpayOnlyStartButton: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: false,\r\n\t\t\t\t\t\t\t\thideTermsAck: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet returnValue = component.getPageStartState();\r\n\t\t\t\t\texpect(returnValue).toBe(true);\r\n\t\t\t\t});\r\n\t\t\t\tit('should return pageStates.payments and call component docontinue when portalsettings ezpayOnly and ezpayOnlyStartButton, terms, hideDisclosures not selected ', () => {\r\n\t\t\t\t\tconst spy = spyOn(component, 'doContinue').and.stub();\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tpayment: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: false,\r\n\t\t\t\t\t\t\t\tezpayOnlyStartButton: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: true,\r\n\t\t\t\t\t\t\t\thideTermsAck:false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet returnValue = component.getPageStartState();\r\n\t\t\t\t\texpect(spy).toHaveBeenCalled();\r\n\t\t\t\t\texpect(returnValue).toBe(true);\r\n\t\t\t\t});\r\n\t\t\t\tit('should return pageStates.disclosures when portalsettings ezpayOnly and ezpayOnlyStartButton not selected, hideTermsAck selected but hideDisclosures not selected', () => {\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tdisclosures: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: false,\r\n\t\t\t\t\t\t\t\tezpayOnlyStartButton: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\thideDisclosures: false,\r\n\t\t\t\t\t\t\t\thideTermsAck: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet returnValue = component.getPageStartState();\r\n\t\t\t\t\texpect(returnValue).toBe(true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should return pageStates.payments and call component docontinue when portalsettings ezpayOnly and ezpayOnlyStartButton, terms, hideDisclosures not selected but terms ack is selected', () => {\r\n\t\t\t\t\tconst spy = spyOn(component, 'doContinue').and.stub();\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tpayment: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: false,\r\n\t\t\t\t\t\t\t\tezpayOnlyStartButton: false\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\thideDisclosures: true,\r\n\t\t\t\t\t\t\t\thideTermsAck: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlet returnValue = component.getPageStartState();\r\n\t\t\t\t\texpect(spy).toHaveBeenCalled();\r\n\t\t\t\t\texpect(returnValue).toBe(true);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('termsAgreed', () => {\r\n\t\t\t\tit('should set pageState to payment and call component doContinue, after terms agreed if portal business settings hideDisclosure is true', () => {\r\n\t\t\t\t\tconst spy = spyOn(component, 'doContinue').and.stub();\r\n\t\t\t\t\tspyOn(component, 'showBannerImage').and.stub();\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tpayment: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideDisclosures: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.termsAgreed();\r\n\t\t\t\t\texpect(component.pageState).toEqual(true);\r\n\t\t\t\t\texpect(spy).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.showBannerImage).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set pageState to disclosure, after terms agreed if portal business settings hideDisclosure is false', () => {\r\n\t\t\t\t\tspyOn(component, 'showBannerImage').and.stub();\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tdisclosures: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideDisclosures: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.termsAgreed();\r\n\t\t\t\t\texpect(component.pageState).toEqual(true);\r\n\t\t\t\t\texpect(component.showBannerImage).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('disclosuresAgreed', () => {\r\n\t\t\t\tit('should set pageState to payment and call component doContinue, after disclosures agreed', () => {\r\n\t\t\t\t\tconst spy = spyOn(component, 'doContinue').and.stub();\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tpayment: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.disclosuresAgreed();\r\n\t\t\t\t\texpect(component.pageState).toEqual(true);\r\n\t\t\t\t\texpect(spy).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('reset', () => {\r\n\t\t\t\tit('should clear validation errors and set it to new array', () => {\r\n\t\t\t\t\tcomponent.validationErrors = ['test error'];\r\n\t\t\t\t\tcomponent.reset();\r\n\t\t\t\t\texpect(component.validationErrors).toEqual([]);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('returnToEzpayForm', () => {\r\n\t\t\t\tit('should set movingToConfirmationPage to flase and pageState to payment', () => {\r\n\t\t\t\t\tcomponent.pageStates = {\r\n\t\t\t\t\t\tpayment: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.returnToEzpayForm();\r\n\t\t\t\t\texpect(component.movingToConfirmationPage).toEqual(false);\r\n\t\t\t\t\texpect(component.pageState).toEqual(true);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('returnToLogin', () => {\r\n\t\t\t\tit('should navigate router to logout if portalSettings ezpayOnly is true', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.returnToLogin();\r\n\t\t\t\t\tverify(mockRouter.navigateToRoute('logout')).called();\r\n\t\t\t\t});\r\n\t\t\t\tit('should navigate router to login if portalSettings ezpayOnly is not true', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tezpayOnly: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.returnToLogin();\r\n\t\t\t\t\tverify(mockRouter.navigateToRoute('login')).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('applyPortfolioSettingsToPage', () => {\r\n\t\t\t\tit('component maxFuture should set to 15 when portal settings paymentTypes maxFuture is set', () => {\r\n\t\t\t\t\tcomponent.model.paymentDate = '';\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\tmaxFutureDays: 15\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\t\tallowFuture: true,\r\n\t\t\t\t\t\t\t\t\tallowSingle: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\taccountNumberHandling: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.applyPortfolioSettingsToPage();\r\n\t\t\t\t\texpect(component.maxFuture).toEqual(15);\r\n\t\t\t\t});\r\n\t\t\t\tit('component maxFuture should set to 1 when portal settings paymentTypes maxFuture is not set', () => {\r\n\t\t\t\t\tcomponent.model.paymentDate = '';\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\tmaxFutureDays: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\t\tallowFuture: true,\r\n\t\t\t\t\t\t\t\t\tallowSingle: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\taccountNumberHandling: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.applyPortfolioSettingsToPage();\r\n\t\t\t\t\texpect(component.maxFuture).toEqual(1);\r\n\t\t\t\t});\r\n\t\t\t\tit('component allowFuturePayment and allowPayToday should set to portalSettings ezpay paymentTypes values when ezpay paymentTypes set and accountHandling is not lookup', () => {\r\n\t\t\t\t\tcomponent.model.paymentDate = '';\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\tmaxFutureDays: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\t\tallowFuture: true,\r\n\t\t\t\t\t\t\t\t\tallowSingle: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\taccountNumberHandling: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.applyPortfolioSettingsToPage();\r\n\t\t\t\t\texpect(component.allowFuturePayment).toEqual(true);\r\n\t\t\t\t\texpect(component.allowPayToday).toEqual(true);\r\n\t\t\t\t});\r\n\t\t\t\tit('component paymentDate should set to current Date when portalSettings paymentTypes allowSingle is true', () => {\r\n\t\t\t\t\tconst businessTimezone = 'US/Pacific';\r\n\t\t\t\t\tconst businessPaymentDate = moment.tz(businessTimezone).format('MM/DD/YYYY');\r\n\r\n\t\t\t\t\tcomponent.model.paymentDate = '';\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\tmaxFutureDays: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\t\tallowFuture: true,\r\n\t\t\t\t\t\t\t\t\tallowSingle: true\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\taccountNumberHandling: ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\thideTerms: true,\r\n\t\t\t\t\t\t\t\thideDisclosures: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\tstubState.business.businessTimezone = businessTimezone;\r\n\t\t\t\t\tcomponent.applyPortfolioSettingsToPage();\r\n\t\t\t\t\texpect(component.model.paymentDate).toEqual(businessPaymentDate);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('submitTodayPayment success case', () => {\r\n\t\t\t\tit('should call payrazrService submitCardPaymentV2 when component paymentInformation card has a value', async () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\t\tbillingEmail: {\r\n\t\t\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockPayrazrService.submitCardPaymentV2(\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything()))\r\n\t\t\t\t\t\t.thenResolve({\r\n\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\tisSuccessful: true,\r\n\r\n\t\t\t\t\t\t\t}\r\n });\r\n component.account = {\r\n bucketKey: null\r\n }\r\n\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\tcard: '4444333322221111',\r\n\t\t\t\t\t\tisEmailOptedIn: true,\r\n\t\t\t\t\t\tname: 'Tom Smith',\r\n\t\t\t\t\t\taddressLine1: '123 address 1',\r\n\t\t\t\t\t\tbillingCity: 'Phoenix',\r\n\t\t\t\t\t\tbillingState: 'AZ',\r\n\t\t\t\t\t\tzipCode: '12345',\r\n\t\t\t\t\t\tbillingEmail: 'test@unitTest.com',\r\n\t\t\t\t\t\ttransactionDescription: '',\r\n\t\t\t\t\t\tisThirdPartyPayment: false,\r\n\t\t\t\t\t\tfee: '',\r\n\t\t\t\t\t\tamount: 100\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.submitTodayPayment(anything());\r\n\t\t\t\t\tverify(mockPayrazrService.submitCardPaymentV2(\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n anything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything()\r\n\t\t\t\t\t)).called();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should call payrazrService submitDigitalWalletPayment when component paymentInformation digitalWallet has a value', async () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\t\tbillingEmail: {\r\n\t\t\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockPayrazrService.submitCardDigitalWalletPayment(anything())).thenResolve({\r\n\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tspyOn(component, 'getDigitalWalletPaymentDetails').and.returnValue(anything());\r\n\t\t\t\t\tcomponent.account = {\r\n\t\t\t\t\t\tbucketKey: null\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\tcard: '',\r\n\t\t\t\t\t\tdigitalWalletSettings: anything(),\r\n\t\t\t\t\t\tisEmailOptedIn: true,\r\n\t\t\t\t\t\tname: 'Tom Smith',\r\n\t\t\t\t\t\taddressLine1: '123 address 1',\r\n\t\t\t\t\t\tbillingCity: 'Phoenix',\r\n\t\t\t\t\t\tbillingState: 'AZ',\r\n\t\t\t\t\t\tzipCode: '12345',\r\n\t\t\t\t\t\tbillingEmail: 'test@unitTest.com',\r\n\t\t\t\t\t\ttransactionDescription: '',\r\n\t\t\t\t\t\tisThirdPartyPayment: false,\r\n\t\t\t\t\t\tfee: '',\r\n\t\t\t\t\t\tamount: 100\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.submitTodayPayment(anything());\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\tverify(mockPayrazrService.submitCardDigitalWalletPayment(anything()))\r\n\t\t\t\t\t\t.called();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should complete Apple Pay session when submitTodayPayment fails', async () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst mockError = new Error();\r\n\t\t\t\t\tconst mockApplePaySettings = mock(ApplePaySettings);\r\n\t\t\t\t\tmockApplePaySettings.isCard = () => true;\r\n\t\t\t\t\tmockApplePaySettings.isApplePay = () => true;\r\n\r\n\t\t\t\t\tcomponent.isDigitalWalletPayment = true;\r\n\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\t\tbillingEmail: {\r\n\t\t\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\twhen(mockPayrazrService.submitCardDigitalWalletPayment(anything()))\r\n\t\t\t\t\t\t.thenReject(mockError);\r\n\r\n\t\t\t\t\tspyOn(component, 'getDigitalWalletPaymentDetails')\r\n\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t.returnValue(anything());\r\n\r\n\t\t\t\t\tspyOn(ApplePayUtil, 'completeSession');\r\n\r\n\t\t\t\t\tcomponent.account = {\r\n\t\t\t\t\t\tbucketKey: null\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\tcard: '',\r\n\t\t\t\t\t\tdigitalWalletSettings: mockApplePaySettings,\r\n\t\t\t\t\t\tisEmailOptedIn: true,\r\n\t\t\t\t\t\tname: 'Tom Smith',\r\n\t\t\t\t\t\taddressLine1: '123 address 1',\r\n\t\t\t\t\t\tbillingCity: 'Phoenix',\r\n\t\t\t\t\t\tbillingState: 'AZ',\r\n\t\t\t\t\t\tzipCode: '12345',\r\n\t\t\t\t\t\tbillingEmail: 'test@unitTest.com',\r\n\t\t\t\t\t\ttransactionDescription: '',\r\n\t\t\t\t\t\tisThirdPartyPayment: false,\r\n\t\t\t\t\t\tfee: '',\r\n\t\t\t\t\t\tamount: 100\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tawait component.submitTodayPayment(anything());\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\tverify(mockPayrazrService.submitCardDigitalWalletPayment(anything()))\r\n\t\t\t\t\t\t.called();\r\n\t\t\t\t\texpect(ApplePayUtil.completeSession)\r\n\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.isSubmitting)\r\n\t\t\t\t\t\t.toBeFalse();\r\n\t\t\t\t\texpect(component.transactionError)\r\n\t\t\t\t\t\t.toEqual(mockError);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should call payrazrService submitCheckPaymentV2 when component paymentInformation card has no value', async () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\t\tbillingEmail: {\r\n\t\t\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockPayrazrService.submitCheckPaymentV2(\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything()))\r\n\t\t\t\t\t\t.thenResolve({\r\n\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\tisSuccessful: true,\r\n\r\n\t\t\t\t\t\t\t}\r\n });\r\n component.account = {\r\n bucketKey: null\r\n }\r\n\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\tcard: '',\r\n\t\t\t\t\t\tisEmailOptedIn: true,\r\n\t\t\t\t\t\tname: 'Tom Smith',\r\n\t\t\t\t\t\taddressLine1: '123 address 1',\r\n\t\t\t\t\t\tbillingCity: 'Phoenix',\r\n\t\t\t\t\t\tbillingState: 'AZ',\r\n\t\t\t\t\t\tzipCode: '12345',\r\n\t\t\t\t\t\tbillingEmail: 'test@unitTest.com',\r\n\t\t\t\t\t\ttransactionDescription: '',\r\n\t\t\t\t\t\tisThirdPartyPayment: false,\r\n\t\t\t\t\t\tfee: '',\r\n\t\t\t\t\t\tamount: 100\r\n\t\t\t\t\t};\r\n\t\t\t\t\tcomponent.submitTodayPayment(anything());\r\n\t\t\t\t\tverify(mockPayrazrService.submitCheckPaymentV2(\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n anything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything(),\r\n\t\t\t\t\t\tanything()\r\n\t\t\t\t\t)).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('submitFuturePayment success case', () => {\r\n\t\t\t\tit('should call payrazrService submitDigitalWalletPaymentPlan when component paymentInformation digital wallet has a value', async () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tfields: {\r\n\t\t\t\t\t\t\t\tbillingEmail: {\r\n\t\t\t\t\t\t\t\t\tvisible: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tcomponent.isDigitalWalletPayment = true;\r\n\r\n\t\t\t\t\tcomponent.account = {\r\n\t\t\t\t\t\tbucketKey: null\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tconst mockApplePaySettings = mock(ApplePaySettings);\r\n\t\t\t\t\tmockApplePaySettings.isCard = () => true;\r\n\t\t\t\t\tmockApplePaySettings.isApplePay = () => true;\r\n\r\n\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\tcard: '',\r\n\t\t\t\t\t\tdigitalWalletSettings: mockApplePaySettings,\r\n\t\t\t\t\t\tisEmailOptedIn: true,\r\n\t\t\t\t\t\tname: 'Tom Smith',\r\n\t\t\t\t\t\taddressLine1: '123 address 1',\r\n\t\t\t\t\t\tbillingCity: 'Phoenix',\r\n\t\t\t\t\t\tbillingState: 'AZ',\r\n\t\t\t\t\t\tzipCode: '12345',\r\n\t\t\t\t\t\tbillingEmail: 'test@unitTest.com',\r\n\t\t\t\t\t\ttransactionDescription: '',\r\n\t\t\t\t\t\tisThirdPartyPayment: false,\r\n\t\t\t\t\t\tfee: '',\r\n\t\t\t\t\t\tamount: 100\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tspyOn(component.payrazrService, 'submitDigitalWalletPaymentPlan')\r\n\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t.resolveTo({response: { isSuccessful: true }});\r\n\r\n\t\t\t\t\tspyOn(component, 'getDigitalWalletPaymentPlanDetailsFromSubmitEvent')\r\n\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t.returnValue(anything());\r\n\t\t\t\t\tspyOn(ApplePayUtil, 'completeSession');\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tawait component.submitFuturePayment(anything());\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(component.payrazrService.submitDigitalWalletPaymentPlan)\r\n\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('look me up', () => {\r\n\t\t\t\tit('should call lookupCustomerByFilters with success response', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tregistrationIdSettings: false,\r\n\t\t\t\t\t\t\t\tregistrationId2Settings: false,\r\n\t\t\t\t\t\t\t\tregistrationId3Settings: false,\r\n\t\t\t\t\t\t\t\tzipcodeSettings: false,\r\n\t\t\t\t\t\t\t\taccountNumberSettings : [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\trequired: false\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\twhen(mockPayrazrService.lookupCustomerByFilters(anything(), anything(), anything(), anything(), anything(), anything())).thenResolve({\r\n\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t}\r\n });\r\n\t\t\t\t\tcomponent.search();\r\n\t\t\t\t\tverify(mockPayrazrService.lookupCustomerByFilters(anything(), anything(), anything(), anything(), anything(), anything())).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('handleSelectMerchantChanged', () => {\r\n\t\t\t\tit('should apply portfolio based on merchant selected', () => {\r\n\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\tezpay: {\r\n\t\t\t\t\t\t\t\tregistrationIdSettings: false,\r\n\t\t\t\t\t\t\t\tregistrationId2Settings: false,\r\n\t\t\t\t\t\t\t\tregistrationId3Settings: false,\r\n\t\t\t\t\t\t\t\tzipcodeSettings: false,\r\n\t\t\t\t\t\t\t\taccountNumberSettings : [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\trequired: false\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tapplyPortfolioSettingsToPortal: () => {}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tcomponent.account = {\r\n portfolioName: 'ezPay'\r\n }\r\n\r\n\t\t\t\t\tcomponent.selectedMerchant = instance(mockMerchant);\r\n\t\t\t\t\tcomponent.selectedMerchant.merchantKey = 1;\r\n\r\n\t\t\t\t\tspyOn(stubState.business, 'applyPortfolioSettingsToPortal').and.stub();\r\n\t\t\t\t\tspyOn(component, 'applyPortfolioSettingsToPage').and.stub();\r\n\t\t\t\t\tspyOn(component, 'applyMerchantSettingsToPage').withArgs(component.account.portfolioName).and.stub();\r\n\t\t\t\t\tspyOn(component, 'publishEventsAfterMerchantSelected').and.stub();\r\n\r\n\t\t\t\t\tcomponent.handleSelectMerchantChanged(anything(), anything());\r\n\r\n\t\t\t\t\texpect(component.applyPortfolioSettingsToPage).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.applyMerchantSettingsToPage).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.publishEventsAfterMerchantSelected).toHaveBeenCalled();\r\n\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t});\r\n});\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport { SessionManager } from '../../services/session-manager';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class My401Page {\r\n\tportalUrl: string;\r\n\tlinkText: string;\r\n\tportalLink: string;\r\n\r\n\tconstructor(state: State, private i18n:I18N, sessionManager: SessionManager) {\r\n\t\tconsole.log(state.business.portalSettings);\r\n\t\tthis.portalUrl = state.business.portalSettings.url;\r\n\t\tsessionManager.endSession();\r\n\t\tthis.linkText = `${this.i18n.i18next.t('returnToPortal', 'Return to the portal')}`;\r\n\t\tthis.portalLink = this.i18n.i18next.t('youCanLogInAgainHere', {\r\n\t\t\tdefaultValue: `You can log in again and continue using the portal here: ${this.linkText}`, link: this.linkText\r\n\t\t});\r\n\t}\r\n\r\n\tattached() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tlet announcement = document.querySelector('#announcementContainer') as HTMLElement;\r\n\t\t\tannouncement.focus();\r\n\t\t}, 200);\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import config from '../../config/config';\r\n\r\nexport class My404Page {\r\n\timageUrl: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.imageUrl = `${config.portalUrl}/images/404.jpg`;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tconsole.log('attached 404');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Router } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class CancelInstallments {\r\n\tisSubmitting = false;\r\n\tplanId: string;\r\n\r\n\tconstructor(\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate router: Router\r\n\t) { }\r\n\r\n\tactivate(params) {\r\n\t\tthis.payrazrService.getPaymentPlanByCustomerAccountId(params.id)\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.planId = response.id;\r\n\t\t\t})\r\n\t\t\t.catch(reason => {\r\n\t\t\t\talert('An error occurred.');\r\n\t\t\t\tthis.back();\r\n\t\t\t});\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.isSubmitting = true;\r\n\t\tthis.payrazrService.cancelPaymentPlan(this.planId).then(\r\n\t\t\t(result) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.router.navigateToRoute('secure');\r\n\t\t\t},\r\n\t\t\t(error) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}","module.exports = \"\\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { Account } from '../../models/customer';\r\n\r\n@autoinject\r\nexport class PayInInstallmentReceipt {\r\n\trouter: any;\r\n\teventAggregator: any;\r\n\tpaymentInformation: any;\r\n\taccount: Account;\r\n\tbucketKey: number | null;\r\n\r\n\tconstructor(private globalState: State, router: Router, eventAggregator: EventAggregator) {\r\n\t\tthis.router = router;\r\n\t\tthis.eventAggregator = eventAggregator;\r\n\t}\r\n\tactivate(model, routeData) {\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === model.id;\r\n\t\t});\r\n\t\tthis.bucketKey = this.account.bucket\r\n\t\t\t? this.account.bucket.bucketKey\r\n\t\t\t: this.account.bucketKey || null;\r\n\t\tthis.paymentInformation = routeData.paymentInformation;\r\n\t}\r\n\treturnToDashboard() {\r\n\t\tthis.router.navigateToRoute('dashboard');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { DOM } from 'aurelia-pal';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../../services/global-state';\r\nimport { Account } from '../../../models/customer';\r\n\r\n@autoinject()\r\nexport class InstallmentsSelectOption {\r\n\tinstallments: any;\r\n\tmaxDiscount: any;\r\n\taccounts: Array;\r\n\tamount: number;\r\n\tportfolioSettings: any;\r\n\r\n\tconstructor(private router: Router, private state: State, private eventAggregator: EventAggregator) {\r\n\t\tthis.maxDiscount = 0;\r\n\t}\r\n\r\n\tactivate(params, routeData) {\r\n\t\tthis.accounts = routeData.accounts;\r\n\t\tif (params.id && this.getAccountAndPortfolio(params.id)) {\r\n\t\t\tthis.getInstallmentOptions();\r\n\t\t\tthis.findMaxDiscount();\r\n\t\t\tthis.sortInstallments();\r\n\t\t} else {\r\n\t\t\tthis.goBack();\r\n\t\t}\r\n\t}\r\n\r\n\tgetAccountAndPortfolio(accountId: string): boolean {\r\n\t\tlet success = true;\r\n\r\n\t\tif (!this.state.accounts.find(acct => acct.id === accountId)) {\r\n\t\t\tsuccess = false;\r\n\t\t} else {\r\n\t\t\tthis.amount = this.accounts.reduce((sum, account) => {\r\n\t\t\t\treturn sum + account.balance\r\n\t\t\t}, 0);\r\n\t\t\tthis.portfolioSettings = this.state.business.fetchPortfolioSettings(this.accounts[0].portfolioName);\r\n\t\t\tif (!this.portfolioSettings) {\r\n\t\t\t\tsuccess = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn success;\r\n\t}\r\n\r\n\tgetInstallmentOptions() {\r\n\t\tthis.installments = [];\r\n\t\tthis.portfolioSettings.settings.paymentTypes.installments.balanceRanges.forEach((range, index, list) => {\r\n\t\t\t// Find range within account balance then get installments from range\r\n\t\t\tif (this.amount >= range.min && this.amount <= range.max) {\r\n\t\t\t\tthis.installments = range.installments;\r\n\t\t\t\tthis.computePlanGrid();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsortInstallments() {\r\n\t\tthis.installments = this.installments.sort((a, b) => a.number - b.number);\r\n\t}\r\n\r\n\tisEvenPayments(installment) {\r\n\t\tif (parseFloat(installment.firstPayment) - parseFloat(installment.paymentAfterFirst) === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfindMaxDiscount() {\r\n\t\tlet referenceDiscount: any = 0;\r\n\t\tthis.installments.forEach((installment) => {\r\n\t\t\tlet discount = installment.discountPercent;\r\n\t\t\tif (parseFloat(discount) > parseFloat(referenceDiscount)) {\r\n\t\t\t\treferenceDiscount = discount;\r\n\t\t\t\tthis.maxDiscount = discount;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcomputePlanGrid() {\r\n\t\tthis.installments.forEach(installment => {\r\n\r\n\t\t\tvar discount = this.amount * (installment.discountPercent / 100);\r\n\r\n\t\t\tinstallment.accountBalance = this.amount;\r\n\t\t\tinstallment.totalAmount = (this.amount - discount).toFixed(2);\r\n\r\n\t\t\tvar integerTotal = Math.round(installment.totalAmount * 100);\r\n\t\t\tvar integerReminder = integerTotal % installment.number;\r\n\t\t\tvar integerAverage = Math.floor(integerTotal / installment.number);\r\n\t\t\tvar integerFirst = integerAverage + integerReminder;\r\n\r\n\t\t\tinstallment.firstPayment = integerFirst / 100;\r\n\t\t\tinstallment.paymentAfterFirst = integerAverage / 100;\r\n\t\t});\r\n\t}\r\n\t@computedFrom('maxDiscount')\r\n\tget areDiscountsAvailable() {\r\n\t\treturn (parseFloat(this.maxDiscount) > 0 ? true : false);\r\n\t}\r\n\r\n\tinstallmentOptionSelected(selectedOption) {\r\n\t\tselectedOption.discountPercent = selectedOption.discountPercent === '' ? 0 : selectedOption.discountPercent;\r\n\t\tconst setupPlanRoute = this.router.routes.find(x => x.name === 'installments/setup-payment-plan');\r\n\t\tsetupPlanRoute.installment = selectedOption;\r\n\t\tsetupPlanRoute.overrides = null;\r\n\t\tsetupPlanRoute.negotiatorActivitySessionId = null;\r\n\t\tsetupPlanRoute.accounts = this.accounts;\r\n\t\tthis.router.navigateToRoute(setupPlanRoute.name, { id: this.accounts[0].id });\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n}\r\n","module.exports = \"\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport numeral from 'numeral';\r\nimport { CardToken } from '../../models/card-token';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { Installment } from '../../models/installment';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PortalTemplateTypes } from '../../services/template-service';\r\nimport { AchToken } from '../../models/ach-token';\r\nimport { computedFrom } from 'aurelia-binding';\r\nimport { CombinedInstallmentAccountItem } from '../../models/combined-installment-account-item';\r\nimport { PaymentFeeType } from '../../models/hpfApi';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../models/merchant-consumer-portal-fee-settings';\r\nimport { ApplePaySettings, ApplePayUtil, DigitalWalletPaymentDetails, DigitalWalletPaymentPlanDetails, DigitalWalletType } from '../../models/digital-wallet';\r\nimport { PaymentPlanSettings } from '../../models/payment-plan-settings';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\n\r\n@autoinject\r\nexport class SetupInstallments {\r\n\t@bindable installment: Installment;\r\n\tdiscount: any;\r\n\tvalidationErrors: any;\r\n\taccount: any;\r\n\tcustomer: Customer;\r\n\tstate: string;\r\n\tportfolioSettings: any;\r\n\tinstallmentSetting: any;\r\n\tnumberOfRetries: any;\r\n\tbalanceRange: any;\r\n\tminFuture: any;\r\n\tmaxFuture: any;\r\n\tcalendarDisplayMode: any;\r\n\tselectedFrequency: any;\r\n\tpayToday: any;\r\n\tallowServiceFeesOnEveryTransaction: boolean;\r\n\tpaymentInformation: any;\r\n\tcalculatedFeeAmount: number = 0;\r\n\tcalculatedTotalAmount: number = 0;\r\n\tcardNumber: any;\r\n\tcardInfoKey: any;\r\n\tpaymentSchedules: any;\r\n\tsingleServiceFee: any;\r\n\ttotalServiceFee: any;\r\n\tpaymentDateSettings: any;\r\n\tpaymentDate: any;\r\n\ttransactionError: any;\r\n\tfirstName: any;\r\n\tlastName: any;\r\n\ttoday: any;\r\n\tsignedDate: any;\r\n\tconfirmationTemplateData: TemplateData;\r\n\tisSubmitting: boolean = false;\r\n\tlockedFields: LockedFields;\r\n\tnegotiatorActivitySessionId: string;\r\n\tdateIsValid: boolean;\r\n\t@bindable nextPaymentDate: string;\r\n\ttotalBalanceAmount: number;\r\n\taccounts: Array;\r\n\tisDigitalWallet: boolean;\r\n\tmerchantKey: number;\r\n\tmerchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings = new MerchantConsumerPortalFeeSettings();\r\n\tpaymentPlanSettings: PaymentPlanSettings = new PaymentPlanSettings();\r\n\r\n\tget isApplePay(): boolean {\r\n\t\treturn this.isDigitalWallet && this.paymentInformation.digitalWalletSettings?.isApplePay();\r\n\t}\r\n\r\n\tconstructor(private router: Router, private globalState: State, private payrazrService: PayrazrService, private i18n: I18N) {\r\n\t\tthis.discount = 0;\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.state = 'setup';\r\n\t\tthis.minFuture = 1;\r\n\t\tthis.maxFuture = 60;\r\n\t\tthis.calendarDisplayMode = 0;\r\n\t\tthis.today = moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY');\r\n\t}\r\n\r\n\tactivate(params, routeData) {\r\n\t\tthis.accounts = routeData.accounts;\r\n\t\tif (!this.accounts || this.accounts.length < 1) {\r\n\t\t\tthis.goBack();\r\n\t\t}\r\n\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === params.id;\r\n\t\t});\r\n\r\n\t\tthis.customer = this.globalState.customer;\r\n\r\n\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\tcustomer.accounts.forEach(account => {\r\n\t\t\t\t\tif (this.account.customerAccountKey === account.customerAccountKey) {\r\n\t\t\t\t\t\tthis.customer = customer;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.installment = routeData.installment;\r\n\t\tthis.totalBalanceAmount = this.accounts.reduce((sum, currentAccount) => { return sum + currentAccount.balance } , 0);\r\n\t\tlet discount = this.totalBalanceAmount * (this.installment.discountPercent / 100);\r\n\r\n\t\tthis.installment.totalAmount = (this.totalBalanceAmount - discount).toFixed(2);\r\n\r\n\t\tlet integerTotal = Math.round(parseInt(this.installment.totalAmount, 10) * 100);\r\n\t\tlet integerReminder = integerTotal % this.installment.number;\r\n\t\tlet integerAverage = Math.floor(integerTotal / this.installment.number);\r\n\t\tlet integerFirst = integerAverage + integerReminder;\r\n\r\n\t\tthis.installment.firstPayment = integerFirst / 100;\r\n\t\tthis.installment.paymentAfterFirst = integerAverage / 100;\r\n\r\n\t\tthis.portfolioSettings = this.globalState.business.fetchPortfolioSettings(this.account.portfolioName).settings;\r\n\t\tthis.installmentSetting = this.portfolioSettings.paymentTypes.installments;\r\n\t\tthis.numberOfRetries = parseInt(this.installmentSetting.numberOfRetriesForCardDeclines, 10);\r\n\r\n\t\tthis.paymentPlanSettings.accountId = this.account.id;\r\n\t\tthis.paymentPlanSettings.paymentPlanType = PaymentPlanType.Installment;\r\n\t\tthis.paymentPlanSettings.paymentFeeType = PaymentFeeType.PaymentPlan;\r\n\r\n\t\tconst currentPortfolio = this.globalState.business.fetchPortfolioSettings(this.account.portfolioName);\r\n\t\t// map key and fee settings from merchant settings\r\n\t\tthis.merchantKey = currentPortfolio.merchantSettings.merchantKey;\r\n\t\tthis.merchantConsumerPortalFeeSettings.feesEnabled = currentPortfolio.merchantSettings.feeSettings.serviceFeeEnabled;\r\n\t\tthis.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans = currentPortfolio.merchantSettings.feeSettings.allowFeesOnPaymentPlans;\r\n\t\tthis.merchantConsumerPortalFeeSettings.allowServiceFeesOnEveryTransaction = currentPortfolio.merchantSettings.feeSettings.allowServiceFeesOnEveryTransaction;\r\n\r\n\t\t// tslint:disable-next-line: forin\r\n\t\tfor (let index in this.installmentSetting.balanceRanges) {\r\n\t\tlet balanceRange = this.installmentSetting.balanceRanges[index];\r\n\t\t\tif (this.totalBalanceAmount >= balanceRange.min && this.totalBalanceAmount <= balanceRange.max) {\r\n\t\t\t\tthis.balanceRange = balanceRange;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (routeData.overrides && routeData.overrides.selectedFrequency) {\r\n\t\t\tthis.selectedFrequency = routeData.overrides.selectedFrequency;\r\n\t\t\tthis.frequencyToDisplayMode();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.maxFuture = this.installmentSetting.maxFirstInstallmentFutureDays; // set maxFuture regardless of override frequency\r\n\t\t}\r\n\r\n\t\tthis.lockedFields = routeData.overrides ? routeData.overrides.lockedFields : null;\r\n\t\tthis.negotiatorActivitySessionId = routeData.negotiatorActivitySessionId;\r\n\t\trouteData.negotiatorActivitySessionId = null;\r\n\t}\r\n\r\n\tselectedFrequencyChanged() {\r\n\t\tthis.frequencyToDisplayMode();\r\n\t}\r\n\r\n\tpayTodayChanged() {\r\n\t\tthis.frequencyToDisplayMode();\r\n\t}\r\n\r\n\tfrequencyToDisplayMode() {\r\n\t\tthis.calendarDisplayMode = 0;\r\n\t\tthis.maxFuture = this.installmentSetting.maxFirstInstallmentFutureDays;\r\n\r\n\t\tlet indexofSelectedFrequency = parseInt(this.selectedFrequency, 10);\r\n\t\tif (indexofSelectedFrequency === 5) { this.midofEachMonthHandler(); }\r\n\t\tif (indexofSelectedFrequency === 6) { this.endOfMonthHandler(); }\r\n\t}\r\n\r\n\tmidofEachMonthHandler() {\r\n\t\tthis.calendarDisplayMode = 1;\r\n\t\tlet newDate = new Date(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\t\tlet theNumOfDate = newDate.getDate();\r\n\t\tlet currentMidOfMonth = new Date(newDate.getFullYear(), newDate.getMonth(), 15);\r\n\t\tlet nextMidOfMonth = new Date(newDate.getFullYear(), newDate.getMonth() + 1, 15);\r\n\r\n\t\tlet midOfMonth = theNumOfDate < 15 ? currentMidOfMonth : nextMidOfMonth;\r\n\t\tthis.nextPaymentDate = moment(midOfMonth).format('MM/DD/YYYY');\r\n\t}\r\n\r\n\tendOfMonthHandler() {\r\n\t\tthis.calendarDisplayMode = 2;\r\n\t\tlet newDate = new Date(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\t\tlet nextEndOfMonth = new Date(newDate.getFullYear(), newDate.getMonth() + 1, 0);\r\n\r\n\t\tthis.nextPaymentDate = moment(nextEndOfMonth).format('MM/DD/YYYY');\r\n\t}\r\n\r\n\tisEvenPayments(installment) {\r\n\t\tif (parseFloat(installment.firstPayment) - parseFloat(installment.paymentAfterFirst) === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\ttranslateFrequency(frequencyId: number) {\r\n\t\tswitch (frequencyId) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn this.i18n.i18next.t('selectAValue', 'Please select a value');\r\n\t\t\tcase 1:\r\n\t\t\t\treturn this.i18n.i18next.t('weekly', 'Weekly');\r\n\t\t\tcase 2:\r\n\t\t\t\treturn this.i18n.i18next.t('every2Weeks', 'Every 2 weeks');\r\n\t\t\tcase 3:\r\n\t\t\t\treturn this.i18n.i18next.t('every28Days', 'Every 28 Days');\r\n\t\t\tcase 4:\r\n\t\t\t\treturn this.i18n.i18next.t('monthly', 'Monthly');\r\n\t\t\tcase 5:\r\n\t\t\t\treturn this.i18n.i18next.t('eachMonth15', '15th of each month');\r\n\t\t\tcase 6:\r\n\t\t\t\treturn this.i18n.i18next.t('endOfMonth', 'End of month');\r\n\t\t\tcase 7:\r\n\t\t\t\treturn this.i18n.i18next.t('every2Months', 'Every 2 months');\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('balanceRange')\r\n\tget availableFrequencyIds(): number[] {\r\n\t\tlet opts: number[] = this.balanceRange.recurringPaymentsFrequencies.map(freq => freq.id);\r\n\t\treturn [0, ...opts]; // prepend 'Please select a value' option\r\n\t}\r\n\r\n\t@computedFrom('availableFrequencyIds')\r\n\tget availableFrequencyDescriptions(): string[] {\r\n\t\treturn this.availableFrequencyIds.map(id => this.translateFrequency(id));\r\n\t}\r\n\r\n\tnext(event) {\r\n\t\tthis.validationErrors = event.detail.errors;\r\n\t\tthis.validate();\r\n\r\n\t\tif (this.validationErrors.length === 0) {\r\n\r\n\t\t\tthis.installment.payToday = this.payToday;\r\n\t\t\tthis.installment.nextPaymentDate = this.nextPaymentDate;\r\n\t\t\tthis.installment.selectedFrequency = this.selectedFrequency;\r\n\t\t\tthis.paymentPlanSettings.installment = this.installment;\r\n\r\n\t\t\tthis.paymentInformation = event.detail;\r\n\t\t\tthis.cardNumber = this.paymentInformation.card ? this.paymentInformation.card.cardNumber : null;\r\n\t\t\tthis.cardInfoKey = this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod ? this.paymentInformation.card.selectedPaymentMethod.cardInfoKey : null;\r\n\r\n\t\t\tlet paymentMethodType = 'card';\r\n\t\t\tif (this.paymentInformation.check) {\r\n\t\t\t\tpaymentMethodType = 'ach';\r\n\t\t\t}\r\n\r\n\t\t\tthis.paymentInformationFromForm();\r\n\r\n\t\t\tthis.computePlannedPayments(paymentMethodType)\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tthis.paymentInformation.installment.plannedPayments = result.plannedPayments;\r\n\t\t\t\t\tthis.getConfirmationTemplateData();\r\n\t\t\t\t\tif (this.isDigitalWallet && (this.paymentInformation.digitalWalletSettings?.isApplePay() ?? false)) {\r\n\t\t\t\t\t\tthis.setApplePaySettingsRecurringFields(result.plannedPayments);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.showConfirmation();\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tconsole.error(`Unable to communicate with the server. Please try again. ${JSON.stringify(error)}`);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcomputePlannedPayments(paymentMethodType: string): Promise {\r\n\t\treturn this.payrazrService.computePlannedPayments(\r\n\t\t\tthis.account.id,\r\n\t\t\tthis.installment.totalAmount,\r\n\t\t\tthis.installment.number,\r\n\t\t\tthis.installment.nextPaymentDate,\r\n\t\t\tthis.installment.payToday,\r\n\t\t\tthis.installment.selectedFrequency,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tpaymentMethodType,\r\n\t\t\tthis.cardNumber,\r\n\t\t\tthis.cardInfoKey,\r\n\t\t\tthis.isDigitalWallet);\r\n\t}\r\n\r\n\tgetPlanEndDate(plannedPayments: any): Date {\r\n\t\tif (!this.globalState.features.enableApplePay\r\n\t\t\t|| !plannedPayments\r\n\t\t\t|| plannedPayments.length < 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst billDates: number[] = plannedPayments.map((pp) => new Date(pp.billDate).getTime());\r\n\t\treturn new Date(Math.max(...billDates));\r\n\t}\r\n\r\n\tgeneratePaymentScheduleByPlannedPayments(plannedPayments) {\r\n\t\tlet paymentSchedules = [];\r\n\t\tthis.singleServiceFee = plannedPayments[0].plannedServiceFee;\r\n\t\tthis.totalServiceFee = 0;\r\n\t\tplannedPayments.forEach((plannedPayment, index, list) => {\r\n\t\t\tpaymentSchedules.push({\r\n\t\t\t\tpaymentDate: moment(plannedPayment.billDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n\t\t\t\tamount: plannedPayment.billAmount,\r\n\t\t\t\tserviceFee: plannedPayment.planedServiceFee\r\n\t\t\t});\r\n\t\t\tthis.totalServiceFee += plannedPayment.planedServiceFee; // TODO: Fix this misspelling in the backend first\r\n\t\t});\r\n\r\n\t\treturn paymentSchedules;\r\n\t}\r\n\r\n\tgetConfirmationTemplateData() {\r\n\t\tthis.paymentSchedules = this.generatePaymentScheduleByPlannedPayments(this.paymentInformation.installment.plannedPayments);\r\n\t\tlet total = parseFloat(this.totalServiceFee) + parseFloat(this.paymentInformation.amount);\r\n\t\tlet accountsIds = this.getAccountsIds();\r\n\t\tlet uniqueOriginalLenderNames = Array.from(new Set(this.accounts.map(account => account.originalLenderName)));\r\n\t\tlet uniqueRepaymentTypes = Array.from(new Set(this.accounts.map(account => account.repaymentType)));\r\n\t\tconst merchantKey = this.globalState.business.getMerchantKeyAssociatedToPortfolioByPortfolioName(this.accounts[0].portfolioName);\r\n\r\n\t\tconst installmentDetails = {\r\n\t\t\tnumberOfPayments: this.installment.number,\r\n\t\t\ttotalPaymentAmount: this.installment.totalAmount,\r\n\t\t\tSelectedPaymentDate: this.installment.nextPaymentDate,\r\n\t\t\tpayToday: this.installment.payToday,\r\n\t\t\tfrequency: this.installment.selectedFrequency,\r\n\t\t\tzipCode: this.paymentInformation.zipCode,\r\n\t\t\tpaymentMethodType: this.paymentInformation.check ? 'ach' : 'card',\r\n\t\t\tcardNumber: this.cardNumber,\r\n\t\t\tcardInfoKey: this.cardInfoKey,\r\n\t\t\tcomputePlanWithoutFees: this.isDigitalWallet\r\n\t\t};\r\n\r\n\t\tlet customObject: any = {\r\n\t\t\tsumOfInstallment: this.isDigitalWallet && this.allowFeesOnPaymentPlans ? 'Will Display in Apple Pay' : numeral(this.paymentInformation.amount).format('($0,0.00)'),\r\n\t\t\taccountNumberLabel : this.globalState.business.portalSettings.accountNumberLabel,\r\n\t\t\tcustomerAccountNumber: accountsIds,\r\n\t\t\taccountNumber: accountsIds, // backward compatibility\r\n\t\t\tcustomerAccountName: this.getCustomerAccountsNames(),\r\n\t\t\tbalance : numeral(this.totalBalanceAmount).format('($0,0.00)'),\r\n\t\t\tdiscount: this.paymentInformation.discount,\r\n\t\t\tfee: this.isDigitalWallet && this.allowFeesOnPaymentPlans ? 'Will Display in Apple Pay' : numeral(this.totalServiceFee).format('($0,0.00)'),\r\n\t\t\ttotal : numeral(total).format('($0,0.00)'),\r\n\t\t\tmerchantName : this.globalState.business.name,\r\n\t\t\tnumberOfRetries: this.paymentInformation.installment.numberOfRetriesForCardDeclines,\r\n\t\t\taccountName: this.customer.name,\r\n\t\t\tzipCode: this.isDigitalWallet ? 'Will Display in Apple Pay' : this.paymentInformation.zipCode,\r\n\t\t\tpaymentMethod: this.paymentMethod,\r\n\t\t\tcustomerAccountLocationName: this.getCustomerAccountsLocationsName(),\r\n\t\t\tcustomerAccountLocationReferenceId: this.getCustomerAccountsLocationsReferencesIds(),\r\n\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\tbillingEmail: this.globalState.customer.email,\r\n\t\t\toriginalLenderName: uniqueOriginalLenderNames.join(', '),\r\n\t\t\trepaymentType: uniqueRepaymentTypes.join(', '),\r\n\t\t\tinstallmentDetails: JSON.stringify(installmentDetails)\r\n\t\t};\r\n\r\n\t\tthis.confirmationTemplateData = new TemplateData(customObject, merchantKey);\r\n\t}\r\n\r\n\tgetAccountsIds() {\r\n\t\treturn this.accounts.map(account => account.referenceId).join(', ');\r\n\t}\r\n\r\n\tgetCustomerAccountsNames() {\r\n\t\treturn this.accounts.map(account => account.name).join(', ');\r\n\t}\r\n\r\n\tgetCustomerAccountsLocationsName() {\r\n\t\treturn this.accounts.filter(x => x.bucket).map(account => account.bucket?.displayName).join(', ');\r\n\t}\r\n\r\n\tgetCustomerAccountsLocationsReferencesIds() {\r\n\t\treturn this.accounts.filter(x => x.bucket).map(account => account.bucket?.referenceId).join(', ');\r\n\t}\r\n\r\n\tget paymentMethod() {\r\n\t\tif (this.paymentInformation.isWallet) {\r\n\t\t\tif (this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.card.selectedPaymentMethod.cardType} ending ${this.paymentInformation.card.selectedPaymentMethod.last4ofCard}`, paymentMethodTypes: this.paymentInformation.card.selectedPaymentMethod.cardType, accountNumber: this.paymentInformation.card.selectedPaymentMethod.last4ofCard });\r\n\t\t\t}\r\n\t\t\telse if (this.paymentInformation.check && this.paymentInformation.check.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.check.selectedPaymentMethod.achAccountType} ending ${this.paymentInformation.check.selectedPaymentMethod.last4ofAccount}`, paymentMethodTypes: this.paymentInformation.check.selectedPaymentMethod.achAccountType, accountNumber: this.paymentInformation.check.selectedPaymentMethod.last4ofAccount });\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.paymentInformation.isCardPayment) {\r\n\t\t\t\treturn this.paymentInformation.card.description;\r\n\t\t\t}\r\n\t\t\telse if (this.paymentInformation.isCheckPayment) {\r\n\t\t\t\treturn this.paymentInformation.check.description;\r\n\t\t\t}\r\n\t\t\telse if (this.paymentInformation.isDigitalWallet) {\r\n\t\t\t\treturn this.paymentInformation.digitalWalletSettings.getDigitalWalletName();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget allowFeesOnPaymentPlans(): boolean {\r\n\t\treturn this.merchantConsumerPortalFeeSettings.feesEnabled && this.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans;\r\n\t}\r\n\r\n\tget customerAccountKeys(): number[] {\r\n\t\treturn this.accounts.map((account) => account.customerAccountKey);\r\n\t}\r\n\r\n\tsetApplePaySettingsRecurringFields(plannedPayments: any[]): void {\r\n\t\tif (!plannedPayments\r\n\t\t\t|| plannedPayments.length === 0\r\n\t\t\t|| !this.paymentInformation.digitalWalletSettings?.isApplePay()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst applePaySettings: ApplePaySettings = this.paymentInformation.digitalWalletSettings as ApplePaySettings;\r\n\r\n\t\tconst firstPlannedPayment: any = plannedPayments[0];\r\n\t\t// recurring requests are set to pending to display 'amount pending' text in modal\r\n\t\tapplePaySettings.totalType = 'pending';\r\n\t\tapplePaySettings.recurringAmount = firstPlannedPayment.billAmount?.toString() ?? '0';\r\n\t\tapplePaySettings.recurringLabel = '';\r\n\t\tapplePaySettings.paymentDescription = this.i18n.i18next.t('setUpInstallmentPlan', 'Set Up An Installment Plan');\r\n\t\tapplePaySettings.paymentTiming = 'recurring';\r\n\t\tapplePaySettings.recurringPaymentStartDate = new Date(firstPlannedPayment.billDate);\r\n\t\tapplePaySettings.recurringPaymentEndDate = this.getPlanEndDate(plannedPayments);\r\n\t\tapplePaySettings.recurringPaymentIntervalUnit = ApplePayUtil.getRecurringPaymentDateUnit(this.installment.selectedFrequency);\r\n\t\tapplePaySettings.recurringPaymentIntervalCount = ApplePayUtil.getRecurringPaymentIntervalCount(this.installment.selectedFrequency);\r\n\t\tapplePaySettings.billingAgreement = ApplePayUtil.getBillingAgreement(this.merchantConsumerPortalFeeSettings, this.i18n);\r\n\t\tapplePaySettings.mangementURL = this.getViewInstallmentUrl();\r\n\r\n\t\tthis.paymentInformation.digitalWalletSettings = applePaySettings;\r\n\t}\r\n\r\n\tgetViewInstallmentUrl(): string {\r\n\t\tlet urlSplit: string[] = window.location.href.split('/');\r\n\t\turlSplit.pop();\r\n\t\treturn urlSplit.join('/') + '/view';\r\n\t}\r\n\r\n\tpaymentInformationFromForm() {\r\n\t\t/*collect installment details to paymentinformation*/\r\n\t\tthis.paymentInformation.installment = {\r\n\t\t\tpayToday: JSON.parse(this.installment.payToday),\r\n\t\t\tnumberOfInstallment: this.installment.number,\r\n\t\t\tfrequency: this.installment.selectedFrequency,\r\n\t\t\tnextPaymentDate: this.installment.nextPaymentDate,\r\n\t\t\tnumberOfRetriesForCardDeclines: this.installmentSetting.numberOfRetriesForCardDeclines\r\n\t\t};\r\n\t\tthis.paymentInformation.amount = this.installment.totalAmount;\r\n\t\tthis.paymentInformation.discount = this.installment.discountPercent;\r\n\t\tthis.paymentInformation.isInstallment = true;\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tif (this.selectedFrequency === 0) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectFrequencyOfRecurringPayments', 'Please select the frequency of recurring payments'));\r\n\t\t}\r\n\t\tif (this.payToday === null || this.payToday === undefined) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('scheduleFirstPaymentTodayOrNot', 'Please select whether to schedule your first payment today or not'));\r\n\t\t}\r\n\t\tthis.validateNextPaymentDate();\r\n\r\n\t\t// WCAG compliance\r\n\t\tif (this.validationErrors) {\r\n\t\t\tconst validationSummary = document.getElementsByTagName('validation-summary')[0] as HTMLElement;\r\n\r\n\t\t\t// wait for section to load before focusing\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tvalidationSummary?.focus();\r\n\t\t\t}, 200);\r\n\t\t}\r\n\t}\r\n\r\n\tvalidateNextPaymentDate() {\r\n\t\tthis.dateIsValid = true;\r\n\t\tlet nextPaymentDate = moment(this.nextPaymentDate, 'MM/DD/YYYY');\r\n\t\tlet maxFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.maxFuture, 'd').endOf('day');\r\n\t\tlet minFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.minFuture, 'd').startOf('day');\r\n\t\tif (!nextPaymentDate.isValid()) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidPaymentDate', 'Invalid payment date') + ':' + this.nextPaymentDate);\r\n\t\t\tthis.dateIsValid = false;\r\n\t\t}\r\n\t\tif (nextPaymentDate < moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).startOf('day')) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateCannotBeInPast', 'Payment date cannot be in the past'));\r\n\t\t\tthis.dateIsValid = false;\r\n\t\t}\r\n\t\tif (nextPaymentDate < minFuture) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateCannotBeLessThan', { defaultValue: `Payment date cannot be less than ${this.minFuture} day${this.minFuture > 1 ? 's' : ''} from now`, future: this.minFuture, sAddition: this.minFuture > 1 ? 's' : '' }));\r\n\t\t\tthis.dateIsValid = false;\r\n\t\t}\r\n\t\tif (nextPaymentDate > maxFuture) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateCannotBeMoreThan', { defaultValue: `Payment date cannot be more than ${this.maxFuture} day${this.maxFuture > 1 ? 's' : ''} from now`, future: this.maxFuture, sAddition: this.maxFuture > 1 ? 's' : '' }));\r\n\t\t\tthis.dateIsValid = false;\r\n\t\t}\r\n\t\tif (this.calendarDisplayMode === 1 && nextPaymentDate.toDate().getDate() !== 15) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateShouldBeFifteenthOfMonth', 'Payment date should be 15th of the month'));\r\n\t\t\tthis.dateIsValid = false;\r\n\t\t}\r\n\t\tif (this.calendarDisplayMode === 2 && !this.isLastDayOfMonth(nextPaymentDate.toDate())) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateShouldBeLastDayOfMonth', 'Payment date should be last day of the month'));\r\n\t\t\tthis.dateIsValid = false;\r\n\t\t}\r\n\t}\r\n\r\n\tisLastDayOfMonth(date) {\r\n\t\tlet month = date.getMonth();\r\n\t\tlet newDate = date;\r\n\t\tnewDate.setDate(date.getDate() + 1);\r\n\t\tif (newDate.getMonth() !== month) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tsubmit($event: CustomEvent) {\r\n\t\tthis.paymentDate = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\r\n\t\tlet saveToWallet = this.paymentInformation.addPaymentMethodToWalletIsSelected;\r\n\r\n\t\tif (saveToWallet\r\n\t\t\t&& this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\t// Call save to wallet for a specific account after transaction success.\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected = false;\r\n\t\t}\r\n\r\n\t\treturn this.callApiBasedOnPaymentMechanism($event)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.response.isSuccessful) {\r\n\t\t\t\t\tthis.paymentInformation.planId = result.response.planId;\r\n\t\t\t\t\tthis.paymentInformation.merchantKey = result.response.merchantKey;\r\n\t\t\t\t\tthis.paymentInformation.portalTemplateType = this.getPortalTemplateTypeFromPaymentInformation();\r\n\t\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.paymentInformation.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t\tthis.paymentInformation.resultCode = result.response.resultCode;\r\n\t\t\t\t\tthis.paymentInformation.resultMessage = result.response.message;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tif (!saveToWallet\r\n\t\t\t\t\t|| !this.globalState.isConsumerPortalGuarantorBillingEnabled\r\n\t\t\t\t\t|| this.isDigitalWallet) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet customerId: string = this.globalState.customer.id;\r\n\r\n\t\t\t\t// Use the customer.id of the customer in context.\r\n\t\t\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\t\t\tcustomer.accounts.forEach(account => {\r\n\t\t\t\t\t\t\tif (this.account.customerAccountKey === account.customerAccountKey) {\r\n\t\t\t\t\t\t\t\tcustomerId = customer.id;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!!this.paymentInformation.card) {\r\n\t\t\t\t\tlet cardToken = new CardToken();\r\n\t\t\t\t\tcardToken.cardholderName = this.paymentInformation.name;\r\n\t\t\t\t\tcardToken.cardNumber = this.paymentInformation.card.cardNumber;\r\n\t\t\t\t\tcardToken.expirationDate = this.paymentInformation.card.expirationDate;\r\n\t\t\t\t\tcardToken.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\t\t\t\treturn this.payrazrService.addCardPaymentMethod(cardToken, false, customerId);\r\n\t\t\t\t} else if (!!this.paymentInformation.check) {\r\n\t\t\t\t\tlet achToken = new AchToken();\r\n\t\t\t\t\tachToken.accountName = this.paymentInformation.name;\r\n\t\t\t\t\tachToken.accountNumber = this.paymentInformation.check.accountNumber;\r\n\t\t\t\t\tachToken.aba = this.paymentInformation.check.transitNumber;\r\n\t\t\t\t\tachToken.accountType = this.paymentInformation.check.accountType;\r\n\t\t\t\t\tachToken.addressLine1 = this.paymentInformation.check.addressLine1;\r\n\t\t\t\t\tachToken.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\t\t\t\treturn this.payrazrService.addAchPaymentMethod(achToken, false, customerId);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = response && response.isSuccessful;\r\n\r\n\t\t\t\tconst receiptRoute = this.router.routes.find(x => x.name === 'installments/installment-receipt');\r\n\t\t\t\treceiptRoute.paymentInformation = this.paymentInformation;\r\n\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.router.navigateToRoute(receiptRoute.name, { id: this.account.id });\r\n\r\n\t\t\t\tif (this.isApplePay) {\r\n\t\t\t\t\tconst isSuccessful: boolean = true;\r\n\t\t\t\t\tApplePayUtil.completeSession($event, isSuccessful);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (this.isDigitalWallet) {\r\n\t\t\t\t\tconst isSuccessful: boolean = false;\r\n\t\t\t\t\tApplePayUtil.completeSession($event, isSuccessful);\r\n\t\t\t\t}\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.transactionError = error;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetPortalTemplateTypeFromPaymentInformation(): PortalTemplateTypes {\r\n\t\treturn this.isCardPaymentMethod()\r\n\t\t\t? PortalTemplateTypes.CreditCardInstallmentPlanReceipt\r\n\t\t\t: PortalTemplateTypes.CheckInstallmentPlanReceipt;\r\n\t}\r\n\r\n\tcallApiBasedOnPaymentMechanism(submitEvent: CustomEvent) {\r\n\t\tif (this.isCardPaymentMethod()) {\r\n\t\t\tlet digitalWalletPaymentDetails: DigitalWalletPaymentDetails;\r\n\t\t\tif (this.isDigitalWallet) {\r\n\t\t\t\tthis.singleServiceFee = submitEvent.detail.calculatedServiceFee;\r\n\t\t\t\tdigitalWalletPaymentDetails = this.getDigitalWalletPaymentDetailsFromSubmitEvent(submitEvent);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.payrazrService.createCardInstallmentPaymentPlan(\r\n\t\t\t\tthis.account,\r\n\t\t\t\tthis.paymentInformation.amount,\r\n\t\t\t\tthis.paymentInformation.installment.numberOfInstallment,\r\n\t\t\t\tthis.paymentInformation.installment.nextPaymentDate,\r\n\t\t\t\tthis.paymentInformation.name,\r\n\t\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\t\tthis.paymentInformation.billingState,\r\n\t\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\t\tthis.totalServiceFee,\r\n\t\t\t\tthis.singleServiceFee,\r\n\t\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\t\tthis.paymentInformation.card,\r\n\t\t\t\tthis.paymentInformation.installment.numberOfRetriesForCardDeclines,\r\n\t\t\t\tthis.paymentInformation.installment.payToday,\r\n\t\t\t\tthis.paymentInformation.installment.frequency,\r\n\t\t\t\tthis.firstName,\r\n\t\t\t\tthis.lastName,\r\n\t\t\t\tthis.today,\r\n\t\t\t\tthis.paymentInformation.discount,\r\n\t\t\t\tsubmitEvent.detail.content,\r\n\t\t\t\tsubmitEvent.detail.hashedContent,\r\n\t\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\t\tthis.negotiatorActivitySessionId,\r\n\t\t\t\tthis.getCombinedInstallmentAccounts(),\r\n\t\t\t\tthis.isDigitalWallet,\r\n\t\t\t\tdigitalWalletPaymentDetails\r\n\t\t\t);\r\n\t\t} else if (this.paymentInformation.check) {\r\n\t\t\treturn this.payrazrService.createCheckInstallmentPaymentPlan(\r\n\t\t\t\tthis.account,\r\n\t\t\t\tthis.paymentInformation.amount,\r\n\t\t\t\tthis.paymentInformation.installment.numberOfInstallment,\r\n\t\t\t\tthis.paymentInformation.installment.nextPaymentDate,\r\n\t\t\t\tthis.paymentInformation.name,\r\n\t\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\t\tthis.paymentInformation.billingState,\r\n\t\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\t\tthis.totalServiceFee,\r\n\t\t\t\tthis.singleServiceFee,\r\n\t\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\t\tthis.paymentInformation.check,\r\n\t\t\t\t0,\r\n\t\t\t\tthis.paymentInformation.installment.payToday,\r\n\t\t\t\tthis.paymentInformation.installment.frequency,\r\n\t\t\t\tthis.firstName,\r\n\t\t\t\tthis.lastName,\r\n\t\t\t\tthis.signedDate,\r\n\t\t\t\tthis.paymentInformation.discount,\r\n\t\t\t\tsubmitEvent.detail.content,\r\n\t\t\t\tsubmitEvent.detail.hashedContent,\r\n\t\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.negotiatorActivitySessionId,\r\n\t\t\t\tthis.getCombinedInstallmentAccounts()\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tisCardPaymentMethod(): boolean {\r\n\t\treturn !!this.paymentInformation.card\r\n\t\t\t|| (this.globalState.features.enableApplePay && this.paymentInformation.digitalWalletSettings?.isCard());\r\n\t}\r\n\r\n\tprivate getDigitalWalletPaymentDetailsFromSubmitEvent(submitEvent: CustomEvent): DigitalWalletPaymentDetails {\r\n\t\tif (submitEvent === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet digitalWalletPaymentDetails: DigitalWalletPaymentDetails;\r\n\t\tif (submitEvent.detail.digitalWalletType === DigitalWalletType.ApplePay) {\r\n\t\t\tconst applePayPayment: ApplePayJS.ApplePayPayment = submitEvent.detail.payment;\r\n\t\t\tconst applePayPaymentToken = JSON.stringify(applePayPayment.token);\r\n\t\t\tdigitalWalletPaymentDetails = {\r\n\t\t\t\tauthenticationPaymentToken: btoa(applePayPaymentToken),\r\n\t\t\t\tdigitalWalletType: DigitalWalletType.ApplePay,\r\n\t\t\t\tisDebitCard: applePayPayment.token.paymentMethod.type === 'debit',\r\n\t\t\t\tisCreditCard: applePayPayment.token.paymentMethod.type === 'credit',\r\n\t\t\t\taccountName: applePayPayment.billingContact?.givenName + ' ' + applePayPayment.billingContact?.familyName,\r\n\t\t\t\tzipCode: applePayPayment.billingContact?.postalCode ?? '',\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn digitalWalletPaymentDetails;\r\n\t}\r\n\r\n\tgetCombinedInstallmentAccounts(): Array {\r\n\t\tif (!this.globalState.features.portalMultiAccountPaymentPlan\r\n\t\t\t|| this.accounts.length === 1) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet combinedAccounts = Array();\r\n\r\n\t\tthis.accounts.forEach(account => {\r\n\t\t\tlet discount = account.balance * (this.installment.discountPercent / 100);\r\n\t\t\tlet totalAmountPerAccount = Number((account.balance - discount).toFixed(2)) / this.installment.number;\r\n\t\t\tlet combinedInstallmentAccountItem = new CombinedInstallmentAccountItem();\r\n\t\t\tcombinedInstallmentAccountItem.customerAccountId = account.id;\r\n\t\t\tcombinedInstallmentAccountItem.amount = totalAmountPerAccount;\r\n\t\t\tcombinedAccounts.push(combinedInstallmentAccountItem);\r\n\t\t});\r\n\r\n\t\treturn combinedAccounts;\r\n\t}\r\n\r\n\tshowConfirmation() {\r\n\t\tthis.state = 'confirmation'; // due to how navigation is handled, title must be dynamically set to reflect what view is active (WCAG compliance)\r\n\t\tdocument.title = 'Installment Payment Confirmation | Dashboard | myPayrazr portal';\r\n\t}\r\n\r\n\thideConfirmation() {\r\n\t\tthis.state = 'setup';\r\n\t\tdocument.title = 'Setup Installment Payment Plan | Dashboard | myPayrazr portal';\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t\tthis.validationErrors = [];\r\n\t\treturn;\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.validationErrors = new Array();\r\n\t}\r\n}\r\n\r\nexport class LockedFields {\r\n\tamount: boolean;\r\n\tfrequency: boolean;\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"div.installment-confirmation {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n}\\r\\n\\r\\n.installment-confirmation > label {\\r\\n font-size: 1.15em;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { Business } from '../../models/business';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { mock, instance, when, verify, resetCalls } from 'ts-mockito';\r\nimport { SetupInstallments } from './setup-installment';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Installment } from '../../models/installment';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('installments', () => {\r\n\t\t\tdescribe('setup-installments', () => {\r\n\t\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockAccount: Account = mock(Account);\r\n\t\t\t\tconst mockInstallment: Installment = mock(Installment);\r\n\t\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\r\n\t\t\t\tlet component: SetupInstallments;\r\n\t\t\t\tlet stubState: State;\r\n\r\n\t\t\t\tlet mockRouteData = {\r\n\t\t\t\t\tinstallment: mockInstallment,\r\n\t\t\t\t\toverrides: null,\r\n\t\t\t\t\tnegotiatorActivitySessionId: null,\r\n\t\t\t\t\taccounts: []\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet portalSettings = {\r\n\t\t\t\t\tportfolioKey: 999999,\r\n\t\t\t\t\tname: 'Test Portfolio',\r\n\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\tinstallments: {\r\n\t\t\t\t\t\t\t\tmaxFirstInstallmentFutureDays: 10\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmerchantSettings: {\r\n\t\t\t\t\t\tmerchantKey: 999999,\r\n\t\t\t\t\t\tzid: 'Z999999',\r\n\t\t\t\t\t\tfeeSettings: {\r\n\t\t\t\t\t\t\tallowServiceFeesOnEveryTransaction: false,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\t\tspyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n\r\n\t\t\t\t\tcomponent = new SetupInstallments(\r\n\t\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\t\tstubState,\r\n\t\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tresetCalls(mockRouter);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tafterEach(() => {\r\n\t\t\t\t\tcomponent.account = null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('activate()', () => {\r\n\t\t\t\t\tlet account = instance(mockAccount);\r\n\t\t\t\t\tconst model = { id: '123' };\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\t// create accounts and add single account\r\n\t\t\t\t\t\tstubState.customer.accounts = Array();\r\n\t\t\t\t\t\taccount.id = '123';\r\n\t\t\t\t\t\taccount.portfolioName = 'portfolioName';\r\n\t\t\t\t\t\tstubState.accounts.push(account);\r\n\t\t\t\t\t\tstubState.customer.portfolios = { portfolioName: 'portfolioName' };\r\n\r\n\t\t\t\t\t\tmockRouteData.accounts.push(account);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tafterEach(() => {\r\n\t\t\t\t\t\t// reset mockRouteData\r\n\t\t\t\t\t\tmockRouteData = {\r\n\t\t\t\t\t\t\tinstallment: mockInstallment,\r\n\t\t\t\t\t\t\toverrides: null,\r\n\t\t\t\t\t\t\tnegotiatorActivitySessionId: null,\r\n\t\t\t\t\t\t\taccounts: []\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set max future to installment setting value without overrides', () => {\r\n\t\t\t\t\t\texpect(component.maxFuture).toBe(60); // value set in ctor\r\n\t\t\t\t\t\tcomponent.activate(model, mockRouteData);\r\n\t\t\t\t\t\texpect(component.maxFuture).toBe(portalSettings.settings.paymentTypes.installments.maxFirstInstallmentFutureDays);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should set max future to installment setting value with overrides', () => {\r\n\t\t\t\t\t\tmockRouteData.overrides = { selectedFrequency: 'Daily' };\r\n\t\t\t\t\t\texpect(component.maxFuture).toBe(60); // value set in ctor\r\n\t\t\t\t\t\tcomponent.activate(model, mockRouteData);\r\n\t\t\t\t\t\texpect(component.maxFuture).toBe(portalSettings.settings.paymentTypes.installments.maxFirstInstallmentFutureDays);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { SinglePaymentRouteSettings } from '../../models/single-payment/single-payment-route-settings';\r\n\r\n@autoinject\r\nexport class ViewInstallments {\r\n\taccount: Account;\r\n\tallowConsumerToCancelPaymentPlan: boolean;\r\n\tallowSkippingOfPayments: boolean;\r\n\tshowActionsButton: boolean;\r\n\tisCombinedAccountPaymentPlan: boolean;\r\n\tplan:any;\r\n\r\n\tconstructor(private state: State, private router: Router) {\r\n\t}\r\n\r\n\tactivate(params) {\r\n\t\tthis.account = this.state.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === params.id;\r\n\t\t});\r\n\t\tthis.state.business.applyPortfolioSettingsToPortal(this.account.portfolioName, false);\r\n\r\n\t\tlet portfolioPortalSettings = this.state.business.fetchPortfolioSettings(this.account.portfolioName).settings;\r\n\r\n\t\tthis.allowConsumerToCancelPaymentPlan = portfolioPortalSettings.paymentTypes.allowConsumerToCancelPaymentPlan;\r\n\t\tthis.allowSkippingOfPayments = portfolioPortalSettings.paymentTypes.allowConsumersToSkipAPayment;\r\n\r\n\t\tthis.showActionsButton = this.allowSkippingOfPayments || this.allowConsumerToCancelPaymentPlan;\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n\tpayOffEarly() {\r\n\t\tif (this.plan.isCombinedCustomerAccount) return;\r\n\t\tlet routeSettings: SinglePaymentRouteSettings = new SinglePaymentRouteSettings();\r\n\t\trouteSettings.payInFull = false;\r\n\t\trouteSettings.isPayOffEarly = true;\r\n\t\trouteSettings.selectedCustomerAccountKeys = [ this.account.customerAccountKey ];\r\n\t\tthis.router.routes.find((routeConfig) => routeConfig.name === 'single-payment/single-payment').settings = routeSettings;\r\n\r\n\t\t// assume only one account can be selected\r\n\t\tthis.router.navigateToRoute(`single-payment/single-payment`, { id: this.account.id });\r\n\t}\r\n\r\n\tcancelPlan() {\r\n\t\tlet route = this.router.routes.find(\r\n\t\t\tx => x.name === 'installments/cancel-installments'\r\n\t\t);\r\n\r\n\t\tthis.router.navigateToRoute(route.name, {\r\n\t\t\tid: this.account.id\r\n\t\t});\r\n\t}\r\n\r\n\tskipPayments() {\r\n\t\tif (this.plan.isCombinedCustomerAccount) return;\r\n\t\tlet route = this.router.routes.find(\r\n\t\t\tx => x.name === 'skipPlanPayments'\r\n\t\t);\r\n\r\n\t\troute.accountId = this.account.id;\r\n\r\n\t\tthis.router.navigateToRoute(route.name);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { Router } from 'aurelia-router';\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject()\r\nexport class PublicDisclosures {\r\n\r\n\tconstructor(private router: Router) {\r\n\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n}\r\n","module.exports = \"\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class PrivacyPolicy {\r\n\tconstructor(private router: Router) {\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class PublicTerms {\r\n\tconstructor(private router: Router) {\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n}\r\n","module.exports = \"\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class ChangePassword {\r\n\tmodel: any;\r\n\tvalidationErrors: any;\r\n\r\n\tconstructor(\r\n\t\tprivate payrazr: PayrazrService, \r\n\t\tprivate globalState: State, \r\n\t\tprivate router: Router, \r\n\t\tprivate i18n:I18N\r\n\t\t) {\r\n\t\tthis.model = new Model();\r\n\t\tthis.validationErrors = [];\r\n\t}\r\n\r\n\tactivate() {\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.validationErrors = [];\r\n\t\tvar validator = new Validator(this.i18n);\r\n\r\n\t\tif (validator.modelHasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t} else {\r\n\t\t\tthis.doUpdate();\r\n\t\t}\r\n\t}\r\n\r\n\tdoUpdate() {\r\n\t\tthis.payrazr.updatePassword(this.model.oldPassword, this.model.newPassword)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.errors) {\r\n\t\t\t\t\tthrow result.errors;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this.payrazr.login(this.globalState.customer.securitySettings.username, this.model.newPassword);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.globalState.customer = new Customer(this.globalState.business, response.entity.customer);\r\n\t\t\t\tthis.redirectAfterChangePassword();\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.constructor === Array) {\r\n\t\t\t\t\tthis.validationErrors.push(error);\r\n\t\t\t\t} else if (error.constructor === Response) {\r\n\t\t\t\t\treturn error.json()\r\n\t\t\t\t\t\t.then(r => {\r\n\t\t\t\t\t\t\tthis.validationErrors = this.filterErrorResponse(r.Message);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.validationErrors.push(error);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tfilterErrorResponse(messageFromResponseBody) {\r\n\t\tif (messageFromResponseBody.indexOf('User not found') !== -1) {\r\n\t\t\treturn ['Change password failed: Incorrect current password'];\r\n\t\t}\r\n\t\treturn [messageFromResponseBody];\r\n\t}\r\n\r\n\tredirectAfterChangePassword() : void {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t}\r\n}\r\n\r\nclass Model {\r\n\toldPassword: any = \"\";\r\n\tnewPassword: any = \"\";\r\n\tconfirmPassword: any = \"\";\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n\r\nclass Validator {\r\n\terrors: any;\r\n\ti18n: any;\r\n\tconstructor(i18next:any) {\r\n\t\tthis.errors = [];\r\n\t\tthis.i18n = i18next;\r\n\t}\r\n\r\n\tmodelHasErrors(model) {\r\n\t\tif (model.oldPassword.length === 0) {\r\n\t\t\tthis.addError(this.i18n.t('pleaseEnterOldPassword', 'Please enter your old password'));\r\n\t\t}\r\n\t\tif (model.newPassword.length === 0) {\r\n\t\t\tthis.addError(this.i18n.t('pleaseEnterNewPassword', 'Please enter a new password'));\r\n\t\t}\r\n\t\tif (model.confirmPassword.length === 0) {\r\n\t\t\tthis.addError(this.i18n.t('reEnterNewPassword', 'Please re-enter your new password'));\r\n\t\t} else if (model.confirmPassword !== model.newPassword) {\r\n\t\t\tthis.addError(this.i18n.t('passwordsDoNotMatch', 'Passwords do not match'));\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { Router } from 'aurelia-router';\r\nimport { Account, Address, Customer } from '../../models/customer';\r\nimport { Business } from '../../models/business';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when, anything } from 'ts-mockito';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { ChangePassword } from './change-password';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('login-register', () => {\r\n\t\t\tdescribe('change-password', () => {\r\n\t\t\t\tlet component: ChangePassword;\r\n\t\t\t\tlet stubState: State;\r\n\t\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\t\tconst mockAccount: Account = mock(Account);\r\n\t\t\t\tconst mockAddress: Address = mock(Address);\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a) => a\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\r\n\t\t\t\t\tcomponent = new ChangePassword(\r\n\t\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\t\tstubState,\r\n\t\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should initialize Change Password component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('doUpdate()', () => {\r\n\r\n\t\t\t\t\tit('should update password and redirect to secure route', async () => {\r\n\r\n\t\t\t\t\t\tlet customer = instance(mockCustomer);\r\n\t\t\t\t\t\tlet account = instance(mockAccount);\r\n\r\n\t\t\t\t\t\tcustomer.messages = [];\r\n\t\t\t\t\t\tcustomer.paymentMethods = [];\r\n\t\t\t\t\t\taccount.paymentPlans = [];\r\n\t\t\t\t\t\tcustomer.accounts = Array();\r\n\t\t\t\t\t\tcustomer.accounts.push(account);\r\n\t\t\t\t\t\tcustomer.primaryAddress = instance(mockAddress);\r\n\t\t\t\t\t\tcustomer.portfolios = null;\r\n\r\n\t\t\t\t\t\tcomponent.model = {\r\n\t\t\t\t\t\t\toldPassword: 'abc',\r\n\t\t\t\t\t\t\tnewPassword: 'def'\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tstubState.customer.securitySettings = {\r\n\t\t\t\t\t\t\tusername: 'xyz'\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tstubState.business.addCustomerPortfolios = () => { };\r\n\r\n\t\t\t\t\t\tspyOn(stubState.business, 'addCustomerPortfolios').and.callFake(() => {\r\n\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockPayrazrService.updatePassword(anything(), anything())).thenResolve({\r\n\t\t\t\t\t\t\terrors: null\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\twhen(mockPayrazrService.login(anything(), anything())).thenResolve({\r\n\t\t\t\t\t\t\tentity: {\r\n\t\t\t\t\t\t\t\tcustomer\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tawait component.doUpdate();\r\n\r\n\t\t\t\t\t\tverify(mockPayrazrService.updatePassword(anything(), anything())).called();\r\n\t\t\t\t\t\tverify(mockPayrazrService.login(anything(), anything())).called();\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { BasePage } from '../base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Bucket } from '../../models/bucket';\r\nimport { ValidationController, ValidationControllerFactory } from 'aurelia-validation';\r\n\r\n@autoinject\r\nexport class ForgotPassword extends BasePage {\r\n\tmodel: any;\r\n\tbuttonLabel: any;\r\n\tvalidationErrors: any;\r\n\tcallingApi: any;\r\n\tisAccountLocked: any;\r\n\tcustomerServicePhone: any;\r\n\tcustomerAccountNumberComponent: any;\r\n\tzipCode: string;\r\n\tregistrationId: string;\r\n\tregistrationIdTwo: string;\r\n\tregistrationIdThree: string;\r\n\ti18n: any;\r\n\tvalidationController: ValidationController;\r\n\r\n\tconstructor(private router: Router, private payrazr: PayrazrService, private globalState: State, i18n: I18N, eventAggregator: EventAggregator,\r\n\t\tvalidationControllerFactory: ValidationControllerFactory) {\r\n\t\tsuper(eventAggregator);\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope();\r\n\t\tthis.i18n = i18n.i18next;\r\n\t\tthis.model = new Model();\r\n\t\tthis.buttonLabel = this.i18n.t('lookMeUp','Look me up');\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.callingApi = false;\r\n\t\tthis.isAccountLocked = false;\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.customerServicePhone = this.globalState.business.portalSettings.csPhone;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tsuper.attached();\r\n\t}\r\n\tpublic loadTranslations() {\r\n\t\tthis.zipCode = this.i18n.t('zipCode', 'Zip Code');\r\n\t\tthis.registrationId = this.i18n.t('registrationId', 'Registration ID');\r\n\t\tthis.registrationIdTwo = this.i18n.t('registrationIdTwo', 'Registration ID 2');\r\n\t\tthis.registrationIdThree = this.i18n.t('registrationIdThree', 'Registration ID 3');\r\n\t}\r\n\tsubmit() {\r\n\t\tthis.callingApi = true;\r\n\t\tthis.validationErrors = [];\r\n\t\tlet validator = new Validator(this.i18n);\r\n\r\n\t\tif (validator.hasErrors(this.model, this.customerAccountNumberComponent, this.globalState.business.portalSettings)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t\tthis.callingApi = false;\r\n\t\t} else {\r\n\t\t\tif (!this.model.username) {\r\n\t\t\t\tvar fields = {\r\n\t\t\t\t\tcustomerAccountReferenceId: this.model.accountNumber,\r\n\t\t\t\t\tregistrationId: this.model.registrationId,\r\n\t\t\t\t\tregistrationId2: this.model.registrationId2,\r\n\t\t\t\t\tregistrationId3: this.model.registrationId3,\r\n\t\t\t\t\tzipCode: this.model.zipCode,\r\n\t\t\t\t\tbucketKey: this.model.bucket.bucketKey\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.payrazr.getCustomerSecurityQuestion(fields)\r\n\t\t\t\t\t.then((response: any) => {\r\n\t\t\t\t\t\tthis.model.customerId = response.customerId;\r\n\t\t\t\t\t\tthis.model.username = response.username;\r\n\t\t\t\t\t\tthis.model.securityQuestion = response.securityQuestion;\r\n\r\n\t\t\t\t\t\tthis.buttonLabel = this.i18n.t('submitAnswer','Submit answer');\r\n\t\t\t\t\t\tthis.callingApi = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\tthis.validationErrors.push(error);\r\n\t\t\t\t\t\tthis.callingApi = false;\r\n\t\t\t\t\t});\r\n\t\t\t} else if (!this.model.allowNewPassword) {\r\n\t\t\t\tthis.payrazr.checkAnswerToSecurityQuestion(this.model.customerId, this.model.securityQuestion, this.model.securityAnswer)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\t\tthis.model.allowNewPassword = true;\r\n\t\t\t\t\t\t\tthis.buttonLabel = this.i18n.t('requestPasswordReset','Request password reset');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (response.message === 'AccountLocked') {\r\n\t\t\t\t\t\t\t\tthis.isAccountLocked = true;\r\n\t\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('userAccountLockedContactToUnlock', { defaultValue: `This user account has been locked. Please contact us at ${this.customerServicePhone} to unlock this account or try again later.`, phoneNumber: this.customerServicePhone }))\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('notCorrectAnswer','That is not the correct answer.'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.callingApi = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(() => {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('notCorrectAnswer','That is not the correct answer'));\r\n\t\t\t\t\t\tthis.callingApi = false;\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.payrazr.resetForgottenPassword(this.model.customerId, this.model.username, this.model.securityQuestion, this.model.securityAnswer, this.model.newPassword)\r\n\t\t\t\t\t.then((response: any) => {\r\n\t\t\t\t\t\tthis.router.navigateToRoute('login');\r\n\t\t\t\t\t\tthis.callingApi = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\tthis.model.newPassword = '';\r\n\t\t\t\t\t\tthis.model.confirmPassword = '';\r\n\t\t\t\t\t\tthis.validationErrors.push(error);\r\n\t\t\t\t\t\tthis.callingApi = false;\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.router.navigateToRoute('login');\r\n\t}\r\n}\r\n\r\nclass Model {\r\n\taccountNumber: any = '';\r\n\tregistrationId: any = '';\r\n\tregistrationId2: any = '';\r\n\tregistrationId3: any = '';\r\n\tzipCode: any = '';\r\n\r\n\tusername: any = '';\r\n\tsecurityQuestion: any = '';\r\n\tsecurityAnswer: any = '';\r\n\r\n\tallowNewPassword: any = '';\r\n\tnewPassword: any = '';\r\n\tconfirmPassword: any = '';\r\n\r\n\tcustomerId: any = '';\r\n\r\n\tbucket: Bucket = null;\r\n\r\n\tconstructor() {\r\n\t}\r\n}\r\n\r\nclass Validator {\r\n\terrors: any;\r\n\ti18n: any;\r\n\tconstructor(i18next:any) {\r\n\t\tthis.errors = [];\r\n\t\tthis.i18n = i18next;\r\n\t}\r\n\r\n\thasErrors(model, customerAccountNumberComponent, portalSettings) {\r\n\r\n\t\tif (portalSettings.accountNumberSettings[0].required) {\r\n\t\t\tcustomerAccountNumberComponent.validate(this.errors);\r\n\t\t}\r\n\r\n\t\tif (portalSettings.registrationIdSettings.required) {\r\n\t\t\tif (model.registrationId.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.registrationIdSettings.label) label = portalSettings.registrationIdSettings.label;\r\n\t\t\t\telse label = this.i18n.t('registrationId', 'Registration Id');\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.registrationId2Settings.required) {\r\n\t\t\tif (model.registrationId2.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.registrationId2Settings.label) label = portalSettings.registrationId2Settings.label;\r\n\t\t\t\telse label = this.i18n.t('registrationIdTwo', 'Registration Id 2');\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.registrationId3Settings.required) {\r\n\t\t\tif (model.registrationId3.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.registrationId3Settings.label) label = portalSettings.registrationId3Settings.label;\r\n\t\t\t\telse label = this.i18n.t('registrationIdThree', 'Registration Id 3');\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.zipcodeSettings.required) {\r\n\t\t\tif (model.zipCode.length === 0) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterZipCode', 'Please enter your zip code'));\r\n\t\t\t} else if (!ValidationHelpers.isZipCode(model.zipCode)) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterValidFiveOrNineDigitZipCode', 'Please enter a valid 5 or 9 digit zip code'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.username) {\r\n\t\t\tif (model.securityAnswer.length === 0) {\r\n\t\t\t\tthis.addError(this.i18n.t('answerSecurityQuestion','Please answer the security question'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.allowNewPassword) {\r\n\t\t\t\tif (model.newPassword.length < 8 || model.newPassword.length > 50) {\r\n\t\t\t\t\tthis.errors.push(this.i18n.t('passwordsMustBeBetweenEightAndFiftyCharacters', 'Passwords must be between 8 and 50 characters.'));\r\n\t\t\t\t} else if (!ValidationHelpers.isStrongPassword(model.newPassword)) {\r\n\t\t\t\t\tthis.errors.push(this.i18n.t('passwordDoesNotMeetRequirements','Password does not meet requirements'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (model.newPassword !== model.confirmPassword) {\r\n\t\t\t\t\tthis.errors.push(this.i18n.t('passwordsDoNotMatch', 'The passwords do not match.'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","export class InactivePage {\r\n\tconstructor() {\r\n\t}\r\n}","module.exports = \"\";","import { computedFrom, autoinject } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\nimport { Router } from 'aurelia-router';\r\nimport Cookies from 'js-cookie';\r\nimport { Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { BasePage } from '../base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { HpfCarouselService } from '../../services/hpf-carousel.service';\r\nimport { CarouselItem } from '../../models/carousel-item';\r\nimport { RestServiceClient } from '../../smart/services/rest-service-client';\r\nimport { PostLoginRouteManager } from '../../helpers/post-login-route-manager';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { LegalTermsDialog } from '../../components/legal-dialog/legal-terms.dialog';\r\n\r\n@autoinject\r\nexport class Login extends BasePage {\r\n\tvalidationErrors: any = [];\r\n\tmodel: any;\r\n\trememberMe: any;\r\n\tloggingIn: any;\r\n\tallowEzpay: any;\r\n\tlinkText: string;\r\n\ttermsLink: string;\r\n\tcarouselItems: Array = [];\r\n\tezpayTermsAgreed: boolean;\r\n\tregisterTermsAgreed: boolean;\r\n\tdisplayEzpayAgreeTermsError: boolean;\r\n\tdisplayRegisterAgreeTermsError: boolean;\r\n\tspinnerId: string = 'loading-spinner-login';\r\n\tshowLoginPasswordKey = false;\r\n\tshowMfa: boolean = false;\r\n\tshowRememberMeMfa: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate payrazr: PayrazrService,\r\n\t\tprivate hpfCarouselApi: HpfCarouselService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate postLoginRouteManager: PostLoginRouteManager,\r\n\t\teventAggregator: EventAggregator,\r\n\t\tprivate dialogService: DialogService\r\n\t) {\r\n\t\tsuper(eventAggregator);\r\n\r\n\t\tthis.model = new Model();\r\n\t\tthis.rememberMe = false;\r\n\t\tthis.fetchRememberMe();\r\n\r\n\t\tthis.loggingIn = false;\r\n\t\tthis.allowEzpay = false;\r\n\t}\r\n\r\n\tloadTranslations() {\r\n\t\tthis.linkText = `${this.i18n.i18next.t('termsAndConditions', 'terms and conditions')}`;\r\n\t\tthis.termsLink = this.i18n.i18next.t('portalLoginAgreeToTermsAndConditions', {\r\n\t\t\tdefaultValue: `I agree to the ${this.linkText}.`, link: this.linkText\r\n\t\t});\r\n\t}\r\n\r\n\t@computedFrom('globalState')\r\n\tget PayByTextEnabled() {\r\n\t\treturn this.globalState.hasPayByTextEnabledPortfolio;\r\n\t}\r\n\r\n\ttogglePassword() {\r\n\t\tthis.showLoginPasswordKey = !this.showLoginPasswordKey;\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.validationErrors = [];\r\n\t\tlet validator = new Validator(this.i18n);\r\n\t\tthis.globalState.token = ''; // Reset Token on login to avoid old expired tokens causing issues\r\n\r\n\t\tif (validator.hasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\r\n\t\t\t// WCAG compliance - set focus to announce errors\r\n\t\t\tlet validationSummary = document.getElementsByTagName('validation-summary')[0] as HTMLElement;\r\n\t\t\tif (validationSummary) {\r\n\t\t\t\tvalidationSummary.focus();\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthis.loggingIn = true;\r\n\r\n\t\t\tthis.payrazr.queryParameters = {};\r\n\r\n\t\t\tconst mfaCookie = this.postLoginRouteManager.getMfaCookie(this.model.username);\r\n\r\n\t\t\tthis.payrazr.login(this.model.username, this.model.password, mfaCookie)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tthis.loggingIn = false;\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tthis.handleRemember();\r\n\t\t\t\t\t\tthis.mapCustomer(response.entity.customer);\r\n\r\n\t\t\t\t\t\tif (response.entity.sessionId) {\r\n\t\t\t\t\t\t\tthis.globalState.business.sessionId = response.entity.sessionId;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (response.entity.token) {\r\n\t\t\t\t\t\t\tthis.setTokenAfterLogin(response.entity.token);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.showMfa = response.entity.isMfaRequired;\r\n\t\t\t\t\t\tthis.showRememberMeMfa = response.entity.showRememberMeMfa;\r\n\t\t\t\t\t\tthis.redirectAfterLogin();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (response.message) {\r\n\t\t\t\t\t\t\tif (response.message.indexOf('{customerservicephonenumber}') > 0) {\r\n\t\t\t\t\t\t\t\tresponse.message = response.message.replace('{customerservicephonenumber}', this.globalState.business.portalSettings.csPhone);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (response.message === 'invalidUsernameOrPassword') {\r\n\t\t\t\t\t\t\t\tresponse.message = this.i18n.i18next.t('invalidUsernameOrPassword', 'Invalid username/password');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.validationErrors.push(response.message);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidUsernameOrPassword', 'Invalid username/password'));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tthis.loggingIn = false;\r\n\t\t\t\t\tif (error.status === 401) {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidUsernameOrPassword', 'Invalid username/password'));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (error.status === 404) {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('yourAccountNoLongerActive', 'Your account is no longer active. If you feel you have received this message in error, please contact customer service.'));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\telse if (error.status === 500) {\r\n\t\t\t\t\t\tlet baseMessage = this.i18n.i18next.t('unableToRetrieveAccountInformation', 'We are unable to retrieve your account information, please try again shortly.');\r\n\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(baseMessage);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(baseMessage + ' ' + this.i18n.i18next.t('ifIssuePersistsPleaseContact', 'If the issue persists please contact us at') + ' ' + this.globalState.business.portalSettings.csPhone);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('errorConnectingToServer', 'Error connecting to the server.'));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mapCustomer(customer: any): void {\r\n\t\tthis.globalState.customer = new Customer(this.globalState.business, customer);\r\n\r\n\t\tthis.globalState.associatedCustomers = [];\r\n\t\tfor (let i of customer.associatedCustomers || []) {\r\n\t\t\tthis.globalState.associatedCustomers.push(new Customer(this.globalState.business, i));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setTokenAfterLogin(token: string): void {\r\n\t\tthis.globalState.isLoggingIn = true;\r\n\t\tthis.globalState.token = token;\r\n\t}\r\n\r\n\tmfaClear(event: any): void {\r\n\t\tthis.setTokenAfterLogin(event.detail.token);\r\n\t\tthis.mapCustomer(event.detail.customer);\r\n\t\tthis.redirectAfterLogin(event.detail);\r\n\t}\r\n\r\n\tprivate redirectAfterLogin(event: any = {}): void {\r\n\t\tif (this.globalState.isLoggingIn\r\n\t\t\t&& this.globalState.token) {\r\n\t\t\tconst { mustChangePassword } = event;\r\n\t\t\tlet routeResponse = this.postLoginRouteManager.calculateRoute({ changePassword: mustChangePassword });\r\n\t\t\tif (routeResponse.routeSettings) {\r\n\t\t\t\tthis.router.currentInstruction.config.settings = routeResponse.routeSettings;\r\n\t\t\t}\r\n\t\t\tthis.router.navigateToRoute(routeResponse.route);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate shouldRedirectToPreferredLanguagePage(): boolean {\r\n\t\tif (this.globalState.business?.portalSettings?.businessSettings == null ||\r\n\t\t\tthis.globalState.customer == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.globalState.business.portalSettings.businessSettings.enablePreferredLanguageAcknowledgement &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.preferredLanguageCode == null &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.declinedToStatePreferredLanguage == null &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.otherPreferredLanguage == null;\r\n\t}\r\n\r\n\tstartRegister = () => {\r\n\t\tthis.hideTermsErrors();\r\n\t\tif (!this.globalState.business.portalSettings.businessSettings.hideTerms && !this.registerTermsAgreed) {\r\n\t\t\tthis.displayRegisterAgreeTermsError = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet hideSignupTerms = document.getElementById('signUp-t-c-agreed') as HTMLInputElement;\r\n\t\tthis.globalState.hideSignupTerms = hideSignupTerms.checked ? true : false;\r\n\t\tthis.router.navigateToRoute('register');\r\n\t}\r\n\r\n\tstartEzpay() {\r\n\t\tthis.hideTermsErrors();\r\n\t\tif (!this.globalState.business.portalSettings.businessSettings.hideTerms && !this.ezpayTermsAgreed) {\r\n\t\t\tthis.displayEzpayAgreeTermsError = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet hideEzpayTerms = document.getElementById('ezpay-t-c-agreed') as HTMLInputElement;\r\n\t\tthis.globalState.hideEzpayTerms = hideEzpayTerms.checked ? true : false;\r\n\r\n\t\tthis.payrazr.startEzpay().then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.globalState.business.sessionId = response.entity;\r\n\t\t\t\tthis.router.navigateToRoute('ezpay');\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\talert(this.i18n.i18next.t('errorEncountered', 'Error encountered.'));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\thideTermsErrors() {\r\n\t\tthis.displayEzpayAgreeTermsError = false;\r\n\t\tthis.displayRegisterAgreeTermsError = false;\r\n\t}\r\n\r\n\thandleRemember() {\r\n\t\tif (this.rememberMe) {\r\n\t\t\tCookies.set('RememberMe', this.model.username, { expires: 60, path: '' });\r\n\t\t} else {\r\n\t\t\tCookies.remove('RememberMe', { path: '' });\r\n\t\t}\r\n\t}\r\n\r\n\tfetchRememberMe() {\r\n\t\tlet value = Cookies.get('RememberMe');\r\n\t\tif (value) {\r\n\t\t\tthis.model.username = value;\r\n\t\t\tthis.rememberMe = true;\r\n\t\t}\r\n\t}\r\n\r\n\tgetCarousel() {\r\n\t\tif (this.globalState.business) {\r\n\t\t\tthis.hpfCarouselApi.getCarousel(this.globalState.business.portalId).then(\r\n\t\t\t\t(result) => {\r\n\t\t\t\t\tlet interval = (result.interval || 6) * 1000;\r\n\t\t\t\t\tresult.items.forEach(item => {\r\n\t\t\t\t\t\tthis.carouselItems.push(new CarouselItem(item));\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$('#carousel').carousel({ interval });\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tattached() {\r\n\t\tsuper.attached();\r\n\t\tif (this.globalState.business.portalSettings) {\r\n\t\t\tthis.allowEzpay = this.globalState.business.portalSettings.ezpay.enabled;\r\n\t\t}\r\n\r\n\t\tthis.getCarousel();\r\n\t\tthis.updateSession();\r\n\t}\r\n\r\n\tupdateSession() {\r\n\t\tthis.payrazr.resetSession().then(response => {\r\n\t\t\tif (response.isSuccessful && !!response.entity) {\r\n\t\t\t\tthis.globalState.business.sessionId = response.entity;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget isSubmitting() {\r\n\r\n\t\t// WCAG compliance - announcing loading\r\n\t\tif (this.loggingIn) {\r\n\t\t\tlet loadingIcon = document.getElementById(this.spinnerId);\r\n\t\t\tif (loadingIcon) {\r\n\t\t\t\tloadingIcon.focus();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.loggingIn;\r\n\t}\r\n\r\n\tget showCarousel() {\r\n\t\treturn this.carouselItems && this.carouselItems.length;\r\n\t}\r\n\r\n\tshowLegalModal(content:string) {\r\n\t\tif (content === 'terms') {\r\n\t\t\tthis.dialogService.open({ viewModel: LegalTermsDialog, lock: false });\r\n\t\t}\r\n\t}\r\n}\r\n\r\nclass Model {\r\n\tusername = '';\r\n\tpassword = '';\r\n}\r\n\r\nclass Validator {\r\n\terrors: any = [];\r\n\r\n\tconstructor(private i18n: I18N) {\r\n\t}\r\n\r\n\thasErrors(model) {\r\n\t\tif (model.username.length === 0) {\r\n\t\t\tthis.errors.push(this.i18n.i18next.t('pleaseEnterUsername', 'Please enter your username'));\r\n\t\t}\r\n\r\n\t\tif (model.password.length === 0) {\r\n\t\t\tthis.errors.push(this.i18n.i18next.t('pleaseEnterPassword', 'Please enter your password'));\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"img.banner {\\r\\n margin-bottom: 20px;\\r\\n width: 270px;\\r\\n}\\r\\n\\r\\n/* As only mobile and desktop view are available until future enhancement for medium size for tablet view,\\r\\n    breakpoint is considered at max-width 768px for mobile view */\\r\\n@media (max-width: 767.98px) {\\r\\n img.banner {\\r\\n margin-left: auto;\\r\\n margin-right: auto;\\r\\n display: block;\\r\\n }\\r\\n}\\r\\n\\r\\n.login-card {\\r\\n border-right: none;\\r\\n}\\r\\n.login-card-body {\\r\\n border-right: 1px solid rgba(0, 0, 0, 0.125);\\r\\n margin: 20px 0;\\r\\n}\\r\\n.w-33 {\\r\\n width: 33%;\\r\\n}\\r\\n\\r\\n.error {\\r\\n color: red;\\r\\n}\\r\\n\\r\\n.flex-initial {\\r\\n flex: initial;\\r\\n}\\r\\n\\r\\n.btn-remember-me {\\r\\n color: #5F6571;\\r\\n}\\r\\n\\r\\n.input-group-text-end {\\r\\n border-radius: 0 0.25rem 0.25rem 0!important;\\r\\n}\\r\\n\\r\\n.one-card-center {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n@media (min-width: 992px) {\\r\\n .cardPadding {\\r\\n padding: 50px;\\r\\n }\\r\\n}\\r\\n\\r\\n@media (min-width: 1400px) {\\r\\n #login.container.wide {\\r\\n max-width: 1400px\\r\\n }\\r\\n}\\r\\n\\r\\n@media (max-width: 991px) {\\r\\n .carousel-col {\\r\\n display: none;\\r\\n }\\r\\n}\\r\\n\\r\\n#carousel {\\r\\n width: 400px;\\r\\n height: 300px;\\r\\n margin: auto;\\r\\n overflow: hidden; \\r\\n position: relative;\\r\\n top: 50%;\\r\\n transform: translateY(-50%);\\r\\n}\\r\\n#carousel img {\\r\\n width: 100%;\\r\\n}\\r\\n#carousel a.carousel-control-prev:hover,\\r\\n#carousel a.carousel-control-next:hover {\\r\\n background: black;\\r\\n}\\r\\n#carousel a.carousel-control-prev,\\r\\n#carousel a.carousel-control-next {\\r\\n opacity: 0.05;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { Router } from 'aurelia-router';\r\nimport Cookies from 'js-cookie';\r\nimport { Customer } from '../../models/customer';\r\nimport { Business } from '../../models/business';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when } from 'ts-mockito';\r\nimport { Login } from './login';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { HpfCarouselService } from '../../services/hpf-carousel.service';\r\nimport { PostLoginRouteManager } from '../../helpers/post-login-route-manager';\r\nimport { DialogService } from 'aurelia-dialog';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('login-register', () => {\r\n\t\t\tdescribe('login', () => {\r\n\t\t\t\tlet component: Login;\r\n\t\t\t\tlet stubState: State;\r\n\t\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\t\tconst mockState: State = mock(State);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockHpfCarouselService: HpfCarouselService = mock(HpfCarouselService);\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockPostLoginRouteManager = mock(PostLoginRouteManager);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\t\tconst mockDialogService: DialogService = mock(DialogService);\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tconst i18next = {\r\n\t\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\r\n\t\t\t\t\tcomponent = new Login(\r\n\t\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\t\tinstance(mockHpfCarouselService),\r\n\t\t\t\t\t\tstubState,\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockPostLoginRouteManager),\r\n\t\t\t\t\t\tinstance(mockEventAggregator),\r\n\t\t\t\t\t\tinstance(mockDialogService)\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t\tit('should initialize Login component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('startRegister', () => {\r\n\t\t\t\t\tit('should navigate route to register', () => {\r\n\t\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\t\tenablePreferredLanguageAcknowledgement: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.registerTermsAgreed = true;\r\n\r\n\t\t\t\t\t\tlet tcElement = document.createElement('input') as HTMLInputElement;\r\n\t\t\t\t\t\ttcElement.setAttribute('id', 'signUp-t-c-agreed');\r\n\t\t\t\t\t\ttcElement.setAttribute('type', 'checkbox');\r\n\t\t\t\t\t\ttcElement.setAttribute('checked', 'true');\r\n\r\n\t\t\t\t\t\tspyOn(document, 'getElementById').and.returnValues(tcElement);\r\n\r\n\t\t\t\t\t\tcomponent.startRegister();\r\n\t\t\t\t\t\tverify(mockRouter.navigateToRoute('register')).called();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('startEzpay', () => {\r\n\t\t\t\t\tit('should navigate route to ezpay on success', async () => {\r\n\t\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\t\tenablePreferredLanguageAcknowledgement: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.ezpayTermsAgreed = true;\r\n\t\t\t\t\t\twhen(mockState.business).thenReturn({\r\n\t\t\t\t\t\t\tsessionId: ''\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tlet tcElement = document.createElement('input') as HTMLInputElement;\r\n\t\t\t\t\t\ttcElement.setAttribute('id', 'ezpay-t-c-agreed');\r\n\t\t\t\t\t\ttcElement.setAttribute('type', 'checkbox');\r\n\t\t\t\t\t\ttcElement.setAttribute('checked', 'true');\r\n\r\n\t\t\t\t\t\tspyOn(document, 'getElementById').and.returnValues(tcElement);\r\n\r\n\t\t\t\t\t\tlet response = {\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\tentity: '12345'\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\twhen(mockPayrazrService.startEzpay()).thenReturn(Promise.resolve(response));\r\n\t\t\t\t\t\tawait component.startEzpay();\r\n\t\t\t\t\t\tverify(mockRouter.navigateToRoute('ezpay')).called();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tit('should alert error on failure', async () => {\r\n\t\t\t\t\t\tstubState.business = {\r\n\t\t\t\t\t\t\tportalSettings: {\r\n\t\t\t\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\t\t\t\thideTerms: false,\r\n\t\t\t\t\t\t\t\t\tenablePreferredLanguageAcknowledgement: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.ezpayTermsAgreed = true;\r\n\r\n\t\t\t\t\t\tlet tcElement = document.createElement('input') as HTMLInputElement;\r\n\t\t\t\t\t\ttcElement.setAttribute('id', 'ezpay-t-c-agreed');\r\n\t\t\t\t\t\ttcElement.setAttribute('type', 'checkbox');\r\n\t\t\t\t\t\ttcElement.setAttribute('checked', 'true');\r\n\r\n\t\t\t\t\t\tspyOn(document, 'getElementById').and.returnValues(tcElement);\r\n\r\n\t\t\t\t\t\tspyOn(window, 'alert');\r\n\t\t\t\t\t\tlet response = {\r\n\t\t\t\t\t\t\tisSuccessful: false\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\twhen(mockPayrazrService.startEzpay()).thenReturn(Promise.resolve(response));\r\n\t\t\t\t\t\tawait component.startEzpay();\r\n\t\t\t\t\t\texpect(window.alert).toHaveBeenCalledWith('localized');\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('handleRemember', () => {\r\n\t\t\t\t\tit('should set cookie value when rememeber me is checked', () => {\r\n\t\t\t\t\t\tspyOn(Cookies, 'set');\r\n\t\t\t\t\t\tcomponent.rememberMe = true;\r\n\t\t\t\t\t\tcomponent.model.username = 'JaneDoe';\r\n\t\t\t\t\t\tcomponent.handleRemember();\r\n\t\t\t\t\t\texpect(Cookies.set).toHaveBeenCalledWith('RememberMe', 'JaneDoe', { expires: 60, path: '' });\r\n\t\t\t\t\t});\r\n\t\t\t\t\tit('should remove when rememeber me is unchecked', () => {\r\n\t\t\t\t\t\tspyOn(Cookies, 'remove');\r\n\t\t\t\t\t\tcomponent.rememberMe = null;\r\n\t\t\t\t\t\tcomponent.handleRemember();\r\n\t\t\t\t\t\texpect(Cookies.remove).toHaveBeenCalledWith('RememberMe', { path: '' });\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tdescribe('fetchRememberMe', () => {\r\n\t\t\t\t\tit('should get username value from cookie', () => {\r\n\t\t\t\t\t\tspyOn(Cookies, 'get').and.returnValue('JaneDoe');\r\n\t\t\t\t\t\tcomponent.fetchRememberMe();\r\n\t\t\t\t\t\texpect(Cookies.get).toHaveBeenCalledWith('RememberMe');\r\n\t\t\t\t\t\texpect(component.model.username).toEqual('JaneDoe');\r\n\t\t\t\t\t\texpect(component.rememberMe).toEqual(true);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tdescribe('attached', () => {\r\n\t\t\t\t\tit('must call update session', () => {\r\n\t\t\t\t\t\tspyOn(component, 'getCarousel').and.stub();\r\n\t\t\t\t\t\tspyOn(component, 'updateSession').and.stub();\r\n\t\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\t\texpect(component.getCarousel).toHaveBeenCalled();\r\n\t\t\t\t\t\texpect(component.updateSession).toHaveBeenCalled();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tdescribe('updateSession', () => {\r\n\t\t\t\t\tit('should call resetSession from payrazr service', async () => {\r\n\t\t\t\t\t\twhen(mockPayrazrService.resetSession()).thenResolve({\r\n\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tcomponent.updateSession();\r\n\t\t\t\t\t\tverify(mockPayrazrService.resetSession()).called();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\n\r\n@inject(Router, State)\r\nexport class Logout {\r\n\trouter: Router;\r\n\tglobalState: State;\r\n\r\n\tconstructor(router: Router, state: State) {\r\n\t\tthis.router = router;\r\n\t\tthis.globalState = state;\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.globalState.logout();\r\n\t\tif (this.globalState.business.portalSettings.ezpay.ezpayOnly) {\r\n\t\t\tthis.router.navigateToRoute('ezpay');\r\n\t\t} else {\r\n\t\t\tthis.router.navigateToRoute('login');\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","import { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\n\r\n@inject(State, Router)\r\nexport class PortalWaiting {\r\n\tglobalState: State;\r\n\trouter: Router;\r\n\r\n\tconstructor(state: State, router: Router) {\r\n\t\tthis.globalState = state;\r\n\t\tthis.router = router;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tif (!this.router.currentInstruction.fragment && this.globalState.business) {\r\n\t\t\tif (this.globalState.business.portalSettings.businessSettings.allowEzpay) {\r\n\t\t\t\tif (this.globalState.business.portalSettings.ezpay.ezpayOnly) {\r\n\t\t\t\t\tlet _this = this;\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t_this.router.navigateToRoute('ezpay');\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet _this = this;\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t_this.router.navigateToRoute('login');\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tlet _this = this;\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t_this.router.navigateToRoute('login');\r\n\t\t\t\t}, 0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","import { computedFrom, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer } from '../../models/customer';\r\nimport { Portfolio } from '../../models/portfolio';\r\nimport { PortalUtility } from '../../helpers/utility';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { BasePage } from '../base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { ValidationController, ValidationControllerFactory } from 'aurelia-validation';\r\nimport { PostLoginRouteManager } from '../../helpers/post-login-route-manager';\r\nimport { VerticalMarket } from '../../models/vertical-market';\r\n\r\n@autoinject\r\nexport class Register extends BasePage {\r\n\tvalidationErrors: any = [];\r\n\ti18n: any;\r\n\tisSMSEnabled: any;\r\n\tmodel: any;\r\n\tshowTerms: any;\r\n\tshowDisclosures: any;\r\n\tshowPage1: any;\r\n\tshowPage2: boolean;\r\n\tshowReferenceId: any;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tregisterError: any;\r\n\tcustomerAccountNumberComponent: any;\r\n\tusername: string;\r\n\taccountNumber: any;\r\n\tzipCode: string;\r\n\tregistrationId: string;\r\n\tregistrationIdTwo: string;\r\n\tregistrationIdThree: string;\r\n\tcardContainerCssClasses: string;\r\n\tisInvoiceEnabled: boolean;\r\n\tvalidationController: ValidationController;\r\n\tstatementNotificationsPreferences: any;\r\n\tisPaperNotificationHidden: boolean;\r\n\tallowedVerticalsForStatementNotificationsSettings: Array = [VerticalMarket.Pharmacy, VerticalMarket.HealthCare];\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate utility: PortalUtility,\r\n\t\tprivate postLoginRouteManager: PostLoginRouteManager,\r\n\t\ti18n: I18N,\r\n\t\teventAggregator: EventAggregator,\r\n\t\tvalidationControllerFactory: ValidationControllerFactory) {\r\n\t\tsuper(eventAggregator);\r\n\t\tthis.isSMSEnabled = false;\r\n\t\tthis.i18n = i18n.i18next;\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope();\r\n\r\n\t\tthis.model = new Model();\r\n\r\n\t\tthis.showTerms = false;\r\n\t\tthis.showDisclosures = false;\r\n\t\tthis.showPage1 = false;\r\n\t\tthis.showPage2 = false;\r\n\t\tthis.showReferenceId = false;\r\n\t\t\r\n\t\tthis.cardContainerCssClasses = 'card w-33';\r\n\r\n\t\tthis.isPaperNotificationHidden = false;\r\n\t\tthis.isInvoiceEnabled = globalState.business.portalSettings.businessSettings.isInvoiceEnabled;\r\n\t\tthis.statementNotificationsPreferences = globalState.business.portalSettings.statementNotificationsPreferences || {\r\n\t\t\tisEmailDefaultNotificationMethod: false,\r\n\t\t\tisPaperNotificationHidden: false,\r\n\t\t\tisStatementNotificationPanelHidden : false\r\n\t\t};\r\n\t\tthis.handleStatementNotificationsSettings();\r\n\t}\r\n\r\n\tattached() {\r\n\t\tsuper.attached();\r\n\t\tthis.setStartPageState();\r\n\t}\r\n\r\n\tpublic loadTranslations() {\r\n\t\tthis.zipCode = this.i18n.t('zipCode', 'Zip Code');\r\n\t\tthis.registrationId = this.i18n.t('registrationId', 'Registration ID');\r\n\t\tthis.registrationIdTwo = this.i18n.t('registrationIdTwo', 'Registration ID 2');\r\n\t\tthis.registrationIdThree = this.i18n.t('registrationIdThree', 'Registration ID 3');\r\n\t}\r\n\tsetStartPageState() {\r\n var hideTerms = this.globalState.business.portalSettings.businessSettings.hideTerms\r\n\t\t\t|| this.globalState.hideSignupTerms\r\n\t\t\t|| this.globalState.business.portalSettings.businessSettings.hideTermsAck;\r\n\t\tvar hideDisclosures = this.globalState.business.portalSettings.businessSettings.hideDisclosures;\r\n\r\n\t\tif (hideTerms === false) {\r\n\t\t\tthis.showTerms = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (hideDisclosures === false) {\r\n\t\t\tthis.showDisclosures = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.showPage1 = true;\r\n\t}\r\n\r\n\tdefaultRegistrationFields() {\r\n\t\tvar portalSettings = this.globalState.business.portalSettings;\r\n\r\n\t\tif (portalSettings.accountNumberSettings[0].required) {\r\n\t\t\tthis.showReferenceId = true;\r\n\t\t}\r\n\r\n\t\tif (!this.globalState.business.portalSettings.registrationIdSettings) {\r\n\t\t\tthis.globalState.business.portalSettings.registrationIdSettings = { required: false };\r\n\t\t}\r\n\r\n\t\tif (!this.globalState.business.portalSettings.registrationId2Settings) {\r\n\t\t\tthis.globalState.business.portalSettings.registrationId2Settings = { required: false };\r\n\t\t}\r\n\r\n\t\tif (!this.globalState.business.portalSettings.registrationId3Settings) {\r\n\t\t\tthis.globalState.business.portalSettings.registrationId3Settings = { required: false };\r\n\t\t}\r\n\r\n\t\tif (!this.globalState.business.portalSettings.zipcodeSettings) {\r\n\t\t\tthis.globalState.business.portalSettings.zipcodeSettings = { required: !this.globalState.business.allowsPortalRegistrationWithoutZipCode() };\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('firstName', 'lastName')\r\n\tget customerName() {\r\n\t\treturn `${this.firstName} ${this.lastName}`;\r\n\t}\r\n\r\n\ttermsAgreed() {\r\n\t\tthis.showTerms = false;\r\n\r\n\t\tif (this.globalState.business.portalSettings.businessSettings.hideDisclosures != undefined && this.globalState.business.portalSettings.businessSettings.hideDisclosures === true) {\r\n\t\t\tthis.showDisclosures = false;\r\n\t\t\tthis.showPage1 = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.showDisclosures = true;\r\n\t\t}\r\n\t}\r\n\r\n\tdisclosuresAgreed() {\r\n\t\tthis.showDisclosures = false;\r\n\t\tthis.showPage1 = true;\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.registerError = \"\";\r\n\t\tthis.validationErrors = [];\r\n\t\tif (this.showPage1) {\r\n\t\t\tthis.submitPage1();\r\n\t\t} else {\r\n\t\t\tthis.submitPage2(this.isSMSEnabled);\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.router.navigateToRoute('login');\r\n\t}\r\n\r\n\tsubmitPage1() {\r\n\t\tlet validator = new Page1Validator(this.i18n);\r\n\r\n\t\tif (validator.hasErrors(this.model, this.customerAccountNumberComponent, this.globalState.business.portalSettings)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t\tthis.utility.scrollToTop();\r\n\t\t} else {\r\n\t\t\tthis.payrazrService.lookupCustomerByFilters(\r\n\t\t\t\tthis.model.accountNumber,\r\n\t\t\t\tthis.model.registrationId,\r\n\t\t\t\tthis.model.registrationId2,\r\n\t\t\t\tthis.model.registrationId3,\r\n\t\t\t\tthis.model.zipCode,\r\n\t\t\t\t(this.model.bucket) ? this.model.bucket.bucketKey : null\r\n\t\t\t)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tlet customer = response.entity;\r\n\t\t\t\t\tif (customer == null) {\r\n\t\t\t\t\t\tif (response.message == 'customerAccountNotEligibleForPayments') {\r\n\t\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('customerAccountNotEligibleForPayments', { defaultValue: 'This account is not eligible for online payments.' }));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('customerAccountNotEligibleForPaymentsWithPhoneNumber', { defaultValue: `This account is not eligible for online payments, please contact us at ${this.globalState.business.portalSettings.csPhone}.`, phoneNumber: this.globalState.business.portalSettings.csPhone }));\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} \r\n\r\n\t\t\t\t\t\tif (response.message == 'accountIsNoLongerActive') {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('accountIsNoLongerActive', { defaultValue: 'Your account is no longer active. If you feel you have received this message in error, please contact customer service.' }));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('customerAccountNotFoundError', { defaultValue: 'Account cannot be located. Please contact customer service.' }));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('customerAccountNotFoundErrorWithPhoneNumber', { defaultValue: `Account cannot be located. Please contact customer service at ${this.globalState.business.portalSettings.csPhone}`, phoneNumber: this.globalState.business.portalSettings.csPhone }));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (customer.isRegistered) {\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('accountAlreadyRegistered', 'This account is already registered'));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.model.customerId = customer.id;\r\n\t\t\t\t\t\tthis.model.emailAddress = customer.email;\r\n\t\t\t\t\t\tthis.model.confirmEmailAddress = customer.email;\r\n\t\t\t\t\t\tthis.model.mobilePhone = ValidationHelpers.sanitizePhoneNumber(customer.mobilePhone);\r\n\t\t\t\t\t\tif ('documentSettings' in customer) {\r\n\t\t\t\t\t\t\tif ('isPaperOptedIn' in customer.documentSettings) {\r\n\t\t\t\t\t\t\t\tthis.model.isPaperStatementsOptedIn = customer.documentSettings.isPaperOptedIn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif ('isEmailOptedIn' in customer.documentSettings) {\r\n\t\t\t\t\t\t\t\tthis.model.isEmailStatementsOptedIn = customer.documentSettings.isEmailOptedIn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ('notificationSettings' in customer) {\r\n\t\t\t\t\t\t\tif ('smsIsOptedIn' in customer.notificationSettings) {\r\n\t\t\t\t\t\t\t\tthis.model.enabledSMSNotifications = customer.notificationSettings.smsIsOptedIn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif ('isEmailOptedIn' in customer.notificationSettings) {\r\n\t\t\t\t\t\t\t\tthis.model.wantsEmailNotifications = customer.notificationSettings.isEmailOptedIn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet hasPortfolio = false;\r\n\t\t\t\t\t\tlet portfolioIsConfigured = false;\r\n\t\t\t\t\t\tif (this.globalState.business.portalSettings.accountNumberSettings[0].required) {\r\n\t\t\t\t\t\t\tlet account = customer.customerAccounts.find((element, index, array) => {\r\n\t\t\t\t\t\t\t\t//Property managment ONLY. They can only have 1 merchant.\r\n\t\t\t\t\t\t\t\t//Validate the account number part of the referenceId against user entered value. ReferenceId = [accountNumber-ownerKey]\r\n\t\t\t\t\t\t\t\tvar index = element.referenceId.indexOf('-');\r\n\t\t\t\t\t\t\t\tif (index > 0 && this.globalState.business.verticalMarket == 2) {\r\n\t\t\t\t\t\t\t\t\treturn element.referenceId.substring(0, index) === this.model.accountNumber;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\treturn element.referenceId.toUpperCase() === this.model.accountNumber.toUpperCase();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tlet portfolioName = account ? account.portfolioName : '';\r\n\t\t\t\t\t\t\tlet portfolio = customer.portfolios.find(portfolio => {\r\n\t\t\t\t\t\t\t\treturn portfolio.portfolioName == portfolioName;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\thasPortfolio = !!portfolio;\r\n\t\t\t\t\t\t\tif (hasPortfolio) {\r\n\t\t\t\t\t\t\t\tvar p = new Portfolio(portfolio);\r\n\t\t\t\t\t\t\t\tportfolioIsConfigured = p.hasSettings;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcustomer.portfolios.forEach(portfolio => {\r\n\t\t\t\t\t\t\t\tvar p = new Portfolio(portfolio);\r\n\t\t\t\t\t\t\t\thasPortfolio = hasPortfolio || p.hasSettings;\r\n\t\t\t\t\t\t\t\tportfolioIsConfigured = p.hasSettings;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (hasPortfolio) {\r\n\t\t\t\t\t\t\tif (!portfolioIsConfigured) {\r\n\t\t\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone) {\r\n\t\t\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('portalConfigurationErrorContactCustomerService', 'Portal Configuration Error: The portfolio for this account has not been setup. Please contact customer service.'));\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('portalConfigurationErrorContactCustomerServiceWithNumber', 'Portal Configuration Error: The portfolio for this account has not been setup. Please contact customer service at') + ' ' + this.globalState.business.portalSettings.csPhone + '.');\r\n\t\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.firstName = customer.firstName ? customer.firstName : \"\";\r\n\t\t\t\t\t\t\tthis.lastName = customer.lastName ? customer.lastName : \"\";\r\n\t\t\t\t\t\t\tthis.username = customer.email ? customer.email : \"\";\r\n\t\t\t\t\t\t\tthis.showPage1 = false;\r\n\t\t\t\t\t\t\tthis.showPage2 = true;\r\n\t\t\t\t\t\t\tthis.cardContainerCssClasses = 'card card-container wide';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('customerAccountNotFoundError', { defaultValue: 'Account cannot be located. Please contact customer service.' }));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch(response => {\r\n\t\t\t\t\tif (response.status == 404)\r\n\t\t\t\t\t\tthis.validationErrors.push(this.i18n.t('yourAccountNoLongerActive', \"Your account is no longer active. If you feel you have received this message in error, please contact customer service.\"));\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvar baseMessage = this.i18n.t('unableToRetrieveAccountInformation',\"We are unable to retrieve your account information, please try again shortly.\");\r\n\t\t\t\t\t\tif (!this.globalState.business.portalSettings.csPhone)\r\n\t\t\t\t\t\t\tthis.validationErrors.push(baseMessage);\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tthis.validationErrors.push(baseMessage + ' ' + this.i18n.t('ifIssuePersistsPleaseContact', 'If the issue persists please contact us at') + ' ' + this.globalState.business.portalSettings.csPhone + \".\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsubmitPage2(isSmsEnabled) {\r\n\t\tlet validator = new Page2Validator(isSmsEnabled, this.i18n, this.isInvoiceEnabled);\r\n\t\tif (validator.hasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t\tthis.utility.scrollToTop();\r\n\t\t} else {\r\n\t\t\tthis.payrazrService.registerConsumerUser(this.model)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tlet customer = response.entity.customer;\r\n\t\t\t\t\t\tthis.globalState.customer = new Customer(this.globalState.business, customer);\r\n\t\t\t\t\t\tthis.globalState.token = response.entity.token;\r\n\t\t\t\t\t\tlet routeResponse = this.postLoginRouteManager.calculateRoute();\r\n\t\t\t\t\t\tif (routeResponse.routeSettings) {\r\n\t\t\t\t\t\t\tthis.router.currentInstruction.config.settings = routeResponse.routeSettings;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.router.navigateToRoute(routeResponse.route);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (response.message === 'accountAlreadyRegisteredWithThatUsername') {\r\n\t\t\t\t\t\t\tresponse.message = this.i18n.t('accountAlreadyRegisteredWithThatUsername', 'An account is already registered with that username');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.registerError = response.message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\t//TODO: handle UI http requests errors\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate shouldRedirectToPreferredLanguagePage(): boolean {\r\n\t\tif (this.globalState.business?.portalSettings?.businessSettings == null ||\r\n\t\t\tthis.globalState.customer == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.globalState.business.portalSettings.businessSettings.enablePreferredLanguageAcknowledgement &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.preferredLanguageCode == null &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.declinedToStatePreferredLanguage == null &&\r\n\t\t\tthis.globalState.customer.preferredLanguageSettings.otherPreferredLanguage == null;\r\n\t}\r\n\r\n\t//TODO: Chris add computedFrom\r\n\tget isSubmitting() {\r\n\t\treturn this.payrazrService.awaitingResponse;\r\n\t}\r\n\r\n\tget showPage1Or2() {\r\n\t\treturn this.showPage1 || this.showPage2;\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.isSMSEnabled = this.globalState.business.portalSettings.businessSettings.enableSMS;\r\n\t\tthis.defaultRegistrationFields();\r\n\t}\r\n\r\n\thandleStatementNotificationsSettings() {\r\n\t\tconst isBusinessVerticalAllowed = this.allowedVerticalsForStatementNotificationsSettings.some(x => x == this.globalState.business.verticalMarket);\r\n\t\tif (this.isInvoiceEnabled && isBusinessVerticalAllowed) {\r\n\t\t\tif (this.statementNotificationsPreferences.isStatementNotificationPanelHidden) {\r\n\t\t\t\tthis.isInvoiceEnabled = false; // threat view as this settings it's not enabled\r\n\t\t\t} else if (this.statementNotificationsPreferences.isPaperNotificationHidden) {\r\n\t\t\t\tthis.model.isPaperStatementsOptedIn = false;\r\n\t\t\t\tthis.model.isEmailStatementsOptedIn = true;\r\n\t\t\t\tthis.isPaperNotificationHidden = true;\r\n\t\t\t} else if (this.statementNotificationsPreferences.isEmailDefaultNotificationMethod) {\r\n\t\t\t\tthis.model.isPaperStatementsOptedIn = false;\r\n\t\t\t\tthis.model.isEmailStatementsOptedIn = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nclass Model {\r\n\tcustomerId = '';\r\n\taccountNumber = '';\r\n\tregistrationId = '';\r\n\tregistrationId2 = '';\r\n\tregistrationId3 = '';\r\n\tzipCode = '';\r\n\tbucketKey = null;\r\n\r\n\tusername = '';\r\n\tpassword = '';\r\n\tconfirmPassword = '';\r\n\r\n\tquestion1: any;\r\n\tquestion2: any;\r\n\tquestion1Answer = '';\r\n\tquestion2Answer = '';\r\n\r\n\temailAddress = '';\r\n\tconfirmEmailAddress = '';\r\n\twantsEmailNotifications = true;\r\n\r\n\tmobilePhone = '';\r\n\tenabledSMSNotifications = true;\r\n\r\n\tisPaperStatementsOptedIn = true;\r\n\tisEmailStatementsOptedIn = false;\r\n}\r\n\r\nclass Page1Validator {\r\n\terrors: any;\r\n\ti18n: any;\r\n\tconstructor(i18next:any) {\r\n\t\tthis.errors = [];\r\n\t\tthis.i18n = i18next;\r\n\t}\r\n\r\n\thasErrors(model, customerAccountNumberComponent, portalSettings) {\r\n\r\n\t\tif (portalSettings.accountNumberSettings[0].required) {\r\n\t\t\tcustomerAccountNumberComponent.validate(this.errors);\r\n\t\t}\r\n\r\n\t\tif (portalSettings.registrationIdSettings.required) {\r\n\t\t\tif (model.registrationId.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.registrationIdSettings.label) label = portalSettings.registrationIdSettings.label;\r\n\t\t\t\telse label = this.i18n.t('registrationId', 'Registration Id');\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.registrationId2Settings.required) {\r\n\t\t\tif (model.registrationId2.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.registrationId2Settings.label) label = portalSettings.registrationId2Settings.label;\r\n\t\t\t\telse label = this.i18n.t('registrationIdTwo', 'Registration Id 2');\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.registrationId3Settings.required) {\r\n\t\t\tif (model.registrationId3.length === 0) {\r\n\t\t\t\tlet label = '';\r\n\t\t\t\tif (portalSettings.registrationId3Settings.label) label = portalSettings.registrationId3Settings.label;\r\n\t\t\t\telse label = this.i18n.t('registrationIdThree', 'Registration Id 3');\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterYour', { defaultValue: 'Please enter your ' + label, label: label }));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (portalSettings.zipcodeSettings.required) {\r\n\t\t\tif (model.zipCode.length === 0) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterZipCode','Please enter your zip code'));\r\n\t\t\t} else if (!ValidationHelpers.isZipCode(model.zipCode)) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterValidFiveOrNineDigitZipCode', 'Please enter a valid 5 or 9 digit zip code'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n}\r\n\r\nclass Page2Validator {\r\n\terrors: any;\r\n\tisSmsEnabled: any;\r\n\ti18n: any;\r\n\r\n\tconstructor(isSmsEnabled, i18next: any, private isInvoiceEnabled: boolean) {\r\n\t\tthis.errors = [];\r\n\t\tthis.isSmsEnabled = isSmsEnabled;\r\n\t\tthis.i18n = i18next;\r\n\t}\r\n\r\n\thasErrors(model: Model) {\r\n\t\tif (model.username === '') {\r\n\t\t\tthis.errors.push(this.i18n.t('pleaseEnterAUsername','Please enter a username.'));\r\n\t\t} else if (model.username.length < 6 || model.username.length > 50) {\r\n\t\t\tthis.errors.push(this.i18n.t('usernameMustBeBetweenSixAndFiftyCharacters','The username must be between 6 and 50 characters.'));\r\n\t\t} else if (!ValidationHelpers.isValidUsername(model.username)) {\r\n\t\t\tthis.errors.push(this.i18n.t('usernameCanOnlyContainCertainCharacters',\"Username can only contain letters, numbers and the following special characters: _ . @\"));\r\n\t\t}\r\n\r\n\t\tif (model.password === '') {\r\n\t\t\tthis.errors.push(this.i18n.t('pleaseEnterAPassword','Please enter a password.'));\r\n\t\t} else if (model.password.length < 8 || model.password.length > 50) {\r\n\t\t\tthis.errors.push(this.i18n.t('passwordsMustBeBetweenEightAndFiftyCharacters','Passwords must be between 8 and 50 characters.'));\r\n\t\t} else if (!ValidationHelpers.isStrongPassword(model.password)) {\r\n\t\t\tthis.errors.push(this.i18n.t('passwordDoesNotMeetStrengthRequirements','Password does not meet the minimum strength requirements.'));\r\n\t\t} else if (model.password !== model.confirmPassword) {\r\n\t\t\tthis.errors.push(this.i18n.t('passwordsDoNotMatch','The passwords do not match.'));\r\n\t\t}\r\n\r\n\t\tif (model.question1 === model.question2) {\r\n\t\t\tthis.errors.push(this.i18n.t('selectTwoDifferentSecurityQuestions','Please select 2 different security questions.'));\r\n\t\t} else {\r\n\t\t\tif (model.question1Answer === '') {\r\n\t\t\t\tthis.errors.push(this.i18n.t('mustProvideAnswerToFirstSecurityQuestion','You must provide an answer to the first security question.'))\r\n\t\t\t} else if (model.question1Answer.length < 3 || model.question1Answer.length > 50) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('answerToFirstSecurityQuestionMustBeBetweenThreeAndFiftyCharacters','The answer to the first security question must be between 3 and 50 characters.'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.question2Answer === '') {\r\n\t\t\t\tthis.errors.push(this.i18n.t('mustProvideAnswerToSecondSecurityQuestion','You must provide an answer to the second security question.'));\r\n\t\t\t} else if (model.question2Answer.length < 3 || model.question2Answer.length > 50) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('answerToSecondSecurityQuestionMustBeBetweenThreeAndFiftyCharacters','The answer to the second security question must be between 3 and 50 characters.'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.question1Answer === model.question2Answer) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('answersToSecurityQuestionsMustBeDifferent','The answers to the 2 security questions must be different.'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isSmsEnabled && model.enabledSMSNotifications) {\r\n\t\t\tif (model.mobilePhone === '') {\r\n\t\t\t\tthis.errors.push(this.i18n.t('pleaseEnterAMobileNumber','Please enter a mobile number'));\r\n\t\t\t}\r\n\t\t\telse if (!ValidationHelpers.isPhoneNumber(model.mobilePhone)) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('enterTenDigitPhoneNumber','Please enter a 10 digit mobile phone number.'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.wantsEmailNotifications) {\r\n\t\t\tif (!ValidationHelpers.isEmailAddress(model.emailAddress)) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('provideValidEmail','Please provide a valid email address'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.emailAddress !== model.confirmEmailAddress) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('emailAddressesDoNotMatch','The email addresses do not match'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.wantsEmailNotifications) {\r\n\t\t\tif (!ValidationHelpers.isEmailAddress(model.emailAddress)) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('provideValidEmail', 'Please provide a valid email address'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.emailAddress !== model.confirmEmailAddress) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('emailAddressesDoNotMatch', 'The email addresses do not match'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isInvoiceEnabled) {\r\n\t\t\tif (!model.isPaperStatementsOptedIn && !model.isEmailStatementsOptedIn) {\r\n\t\t\t\tthis.errors.push(this.i18n.t('selectStatementNotificationMethod', 'Please select at least one statement notification method.'));\r\n\t\t\t}\r\n\r\n\t\t\tif (model.isEmailStatementsOptedIn) {\r\n\t\t\t\tif (!ValidationHelpers.isEmailAddress(model.emailAddress)) {\r\n\t\t\t\t\tthis.errors.push(this.i18n.t('provideValidEmail', 'Please provide a valid email address'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (model.emailAddress !== model.confirmEmailAddress) {\r\n\t\t\t\t\tthis.errors.push(this.i18n.t('emailAddressesDoNotMatch', 'The email addresses do not match'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".marginLeft-inherit {\\r\\n margin-left: inherit;\\r\\n}\\r\\n\\r\\nfieldset.alignLeft label {\\r\\n color: #333;\\r\\n font-weight: 400;\\r\\n}\\r\\n\\r\\n fieldset.alignLeft label.subLabel {\\r\\n font-style: italic;\\r\\n }\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n .row.vdivide [class*='column']:not(:last-child):after {\\r\\n background: #ddd;\\r\\n width: 1px;\\r\\n content: \\\"\\\";\\r\\n display: block;\\r\\n position: absolute;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n right: 0;\\r\\n height: auto;\\r\\n margin-top: 0;\\r\\n }\\r\\n}\\r\\n\\r\\nlabel.required::after {\\r\\n content: '*';\\r\\n color: red;\\r\\n margin: 0 0 0 2px;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject, computedFrom } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { AchToken } from '../../../models/ach-token';\r\nimport { BankAccount } from '../../../models/bank-account';\r\nimport { CardToken } from '../../../models/card-token';\r\nimport { CreditCard } from '../../../models/credit-card';\r\nimport { PaymentMethodTypeOptions } from '../../../models/payment-method-type-options';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\n\r\n@autoinject\r\nexport class SetupPrimaryPaymentMethod {\r\n\tcreditCard: any;\r\n\tbankAccount: any;\r\n\twalletItems: any;\r\n\tselectedPaymentMethodType: any;\r\n\tselectedPaymentMethod: any;\r\n\tvalidationErrors: any;\r\n\tsetPrimaryPaymentMethodExceptionMessage: any;\r\n\tredirectTo: any;\r\n\r\n\tconstructor(private payrazr: PayrazrService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate i18n: I18N) {\r\n\t\tthis.creditCard = new CreditCard();\r\n\t\tthis.bankAccount = new BankAccount();\r\n\t\tthis.walletItems = [];\r\n\t\tthis.selectedPaymentMethodType = -1;\r\n\t\tthis.selectedPaymentMethod = -1;\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tthis.setPrimaryPaymentMethodExceptionMessage = 'Error encountered while setting primary payment method. Please try again later. \\n\\nYou can set up your primary payment method by acccessing the \\'My Profile\\' menu.';\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.getCustomerPaymentMethods(this.globalState.customer.id);\r\n\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\tthis.getCustomerPaymentMethods(customer.id);\r\n\t\t});\r\n\t}\r\n\r\n\tgetCustomerPaymentMethods(customerId: string) {\r\n\t\tthis.payrazr.getCustomerPaymentMethodsByCustomerId(customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tlet bankAccounts = [];\r\n\t\t\t\tlet creditCards = [];\r\n\r\n\t\t\t\tbankAccounts = response.entity.achPaymentMethods;\r\n\t\t\t\tcreditCards = response.entity.creditCardPaymentMethods;\r\n\r\n\t\t\t\tlet savedPaymentMethods = [...bankAccounts, ...creditCards];\r\n\r\n\t\t\t\tthis.walletItems = this.walletItems.concat(savedPaymentMethods);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(response.message);\r\n\t\t\t}\r\n\t\t}).catch(err => {\r\n\t\t\tconsole.log('Failed to retrieve customer payment methods');\r\n\t\t});\r\n\t}\r\n\r\n\t@computedFrom('walletItems')\r\n\tget paymentMethodTypeOptions() {\r\n\t\tlet options = new PaymentMethodTypeOptions();\r\n\r\n\t\tif (this.walletItems.length < 1) {\r\n\t\t\toptions.showWallet = false;\r\n\t\t}\r\n\r\n\t\toptions.walletLabel = this.i18n.i18next.t('selectFromWallet', 'Select From Wallet');\r\n\t\toptions.cardLabel = this.i18n.i18next.t('addNewCreditCard', 'Add New Credit Card');\r\n\t\toptions.achLabel = this.i18n.i18next.t('addNewECheck', 'Add New E-Check');\r\n\r\n\t\treturn options;\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tlet path = 'notificationPreferences';\r\n\t\tif (!this.redirectTo || this.redirectTo === 'dashboard') {\r\n\t\t\tpath = 'secure';\r\n\t\t}\r\n\t\tthis.router.navigateToRoute(path);\r\n\t}\r\n\r\n\tsave() {\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tswitch (this.selectedPaymentMethodType.name) {\r\n\t\t\tcase 'wallet':\r\n\t\t\t\tthis.setPrimaryPaymentMethod();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'card':\r\n\t\t\t\tthis.saveCard();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'ach':\r\n\t\t\t\tthis.saveCheck();\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('mustAddOrSelectPrimaryPaymentMethod', 'You must add or select a primary payment method.'));\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tsetPrimaryPaymentMethod() {\r\n\t\tif (this.selectedPaymentMethod === '-1') {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('mustAddOrSelectPrimaryPaymentMethod', 'You must add or select a primary payment method.'));\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet paymentInfoKey = -1;\r\n\t\tlet paymentType = '';\r\n\r\n\t\tif ('cardInfoKey' in this.selectedPaymentMethod && !!this.selectedPaymentMethod.cardInfoKey) {\r\n\t\t\tpaymentInfoKey = this.selectedPaymentMethod.cardInfoKey;\r\n\t\t\tpaymentType = 'credit';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tpaymentInfoKey = this.selectedPaymentMethod.checkInfoKey;\r\n\t\t\tpaymentType = 'check';\r\n\t\t}\r\n\r\n\t\tlet _this = this;\r\n\r\n\t\tlet customerId = this.getCustomerId();\r\n\r\n\t\tthis.payrazr.setCustomerPrimaryPaymentMethod(paymentInfoKey, paymentType, customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.globalState.customer.hasPrimaryPaymentMethod = true;\r\n\t\t\t\t// TODO: When feature toggle PayableSchedule get's removed just implement ELSE statement\r\n\t\t\t\tif (!this.globalState.features.payableSchedule) {\r\n\t\t\t\t\tthis.sendCustomerInvoice(_this);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconsole.log(response.message);\r\n\t\t\t\talert(this.setPrimaryPaymentMethodExceptionMessage);\r\n\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t}\r\n\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tconsole.log('Error occurred while setting primary payment method.');\r\n\t\t\t\talert(this.setPrimaryPaymentMethodExceptionMessage);\r\n\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t});\r\n\t}\r\n\r\n\tsaveCheck() {\r\n\t\tif (!this.isValidCheckForm()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet achToken = new AchToken();\r\n\t\tachToken.accountName = this.bankAccount.billingName;\r\n\t\tachToken.aba = this.bankAccount.bankRoutingNumber;\r\n\t\tachToken.accountNumber = this.bankAccount.bankAccountNumber;\r\n\t\tachToken.accountType = this.bankAccount.bankAccountType;\r\n\t\tachToken.zipCode = this.bankAccount.billingZipcode;\r\n\t\tlet _this = this;\r\n\r\n\t\tlet customerId = this.getCustomerId();\r\n\r\n\t\tthis.payrazr.addAchPaymentMethod(achToken, true, customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t// TODO: When feature toggle PayableSchedule get's removed just implement ELSE statement\r\n\t\t\t\tif (!this.globalState.features.payableSchedule) {\r\n\t\t\t\t\tthis.sendCustomerInvoice(_this);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\talert(response.message);\r\n\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\tconsole.log('error encountered while saving payment method.');\r\n\t\t\talert(this.setPrimaryPaymentMethodExceptionMessage);\r\n\t\t\tthis.redirectToDashboard();\r\n\t\t});\r\n\t}\r\n\r\n\tsaveCard() {\r\n\t\tif (!this.isValidCreditCardForm()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet cardToken = new CardToken();\r\n\t\tcardToken.cardholderName = this.creditCard.billingName;\r\n\t\tcardToken.cardNumber = this.creditCard.creditCardNumber;\r\n\t\tcardToken.expirationDate = this.creditCard.expirationDate;\r\n\t\tcardToken.zipCode = this.creditCard.billingZipcode;\r\n\t\tlet _this = this;\r\n\r\n\t\tlet customerId = this.getCustomerId();\r\n\r\n\t\tthis.payrazr.addCardPaymentMethod(cardToken, true, customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t// TODO: When feature toggle PayableSchedule get's removed just implement ELSE statement\r\n\t\t\t\tif (!this.globalState.features.payableSchedule) {\r\n\t\t\t\t\tthis.sendCustomerInvoice(_this);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\talert(response.message);\r\n\t\t\t\tthis.redirectToDashboard();\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\tconsole.log('error encountered while saving payment method.');\r\n\t\t\talert(this.setPrimaryPaymentMethodExceptionMessage);\r\n\t\t\tthis.redirectToDashboard();\r\n\t\t});\r\n\t}\r\n\r\n\tisValidCreditCardForm() {\r\n\t\tif (!ValidationHelpers.isValidCreditCardNumber(this.creditCard.creditCardNumber)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidCreditCardNumber','Invalid credit card number.'));\r\n\t\t}\r\n\r\n\t\tif (!ValidationHelpers.isValidExpirationDate(this.creditCard.expirationDate)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidExpirationDate','Invalid expiration date.'));\r\n\t\t}\r\n\r\n\t\tif (!ValidationHelpers.isValidBillingName(this.creditCard.billingName)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidCardholderName','Invalid cardholder name.'));\r\n\t\t}\r\n\r\n\t\tif (!ValidationHelpers.isZipCode(this.creditCard.billingZipcode)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidZipCode','Invalid zipcode.'));\r\n\t\t}\r\n\r\n\t\treturn this.validationErrors.length < 1;\r\n\t}\r\n\r\n\tisValidCheckForm() {\r\n\t\tif (!ValidationHelpers.isTransitNumber(this.bankAccount.bankRoutingNumber)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidBankRoutingNumber','Invalid bank routing number.'));\r\n\t\t}\r\n\r\n\t\tif (!this.bankAccount.bankAccountNumber || this.bankAccount.bankAccountNumber.length < 0) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidBankAccountNumber','Invalid bank account number.'));\r\n\t\t}\r\n\r\n\t\tif (!ValidationHelpers.isValidBillingName(this.bankAccount.billingName)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidAccountHolderName','Invalid account holder name.'));\r\n\t\t}\r\n\r\n\t\tif (!ValidationHelpers.isZipCode(this.bankAccount.billingZipcode)) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('invalidZipCode','Invalid zipcode.'));\r\n\t\t}\r\n\r\n\t\treturn this.validationErrors.length < 1;\r\n\t}\r\n\r\n\tsendCustomerInvoice(context) {\r\n\t\tlet customerId = this.getCustomerId();\r\n\r\n\t\tthis.payrazr.sendCustomerInvoice(customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\talert(this.i18n.i18next.t('nowEnrolledToMakePaymentsViaText', 'You are now enrolled to make payments via text'));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\talert(response.message);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\tconsole.log('error encountered while sending customer invoice.');\r\n\t\t}).then(() => {\r\n\t\t\tcontext.redirectToDashboard();\r\n\t\t});\r\n\t}\r\n\r\n\tredirectToDashboard() {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t}\r\n\r\n\tgetCustomerId(): string {\r\n\t\treturn this.globalState.associatedCustomers.length ?\r\n\t\t\tthis.globalState.associatedCustomers[this.globalState.associatedCustomers.length - 1].id :\r\n\t\t\tthis.globalState.customer.id;\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { PostLoginRouteManager } from '../../../helpers/post-login-route-manager';\r\n@autoinject\r\n\r\nexport class SmsVerification {\r\n\tverificationCode: any;\r\n\tphoneNumber: any;\r\n\tredirectTo: any;\r\n\tcustomerId: string;\r\n\r\n\tconstructor(private payrazrService: PayrazrService, private globalState: State, private router: Router, private i18n: I18N, private postLoginRouteManager: PostLoginRouteManager) {\r\n\t\tthis.verificationCode = '';\r\n\t}\r\n\r\n\t@computedFrom('globalState.hasPayByTextEnabledPortfolio')\r\n\tget isPayByTextEnabled() {\r\n\t\treturn this.globalState.hasPayByTextEnabledPortfolio;\r\n\t}\r\n\r\n\t@computedFrom('phoneNumber')\r\n\tget isCompletePhoneNumber() {\r\n\t\tif (!this.phoneNumber || this.phoneNumber.length < 10) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tverify() {\r\n\t\tif (this.verificationCode) {\r\n\t\t\tlet customerId = this.customerId;\r\n\t\t\tthis.payrazrService.smsPhoneNumberVerification(this.verificationCode, customerId)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\talert(this.i18n.i18next.t('registrationForTextNotificationsSuccessful', 'You are now registered to receive text notifications.'));\r\n\r\n\t\t\t\t\t\tthis.globalState.customer.notificationSettings.smsIsValidated = true;\r\n\r\n\t\t\t\t\t\tthis.redirect();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (response.message === 'errorEncounteredWhileValidatingVerificationCode') {\r\n\t\t\t\t\t\t\tresponse.message = this.i18n.i18next.t('errorEncounteredWhileValidatingVerificationCode', 'Error encountered while validating verification code.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (response.message === 'invalidVerificationCode') {\r\n\t\t\t\t\t\t\tresponse.message = this.i18n.i18next.t('invalidVerificationCode', 'Invalid verification code.');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\talert(response.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch(error => {\r\n\t\t\t\t\talert(this.i18n.i18next.t('errorWhileVerifyingCode', 'Error encountered while attempting to verify the code you entered.'));\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\talert(this.i18n.i18next.t('enterVerificationCode', 'Please enter verification code.'));\r\n\t\t}\r\n\t}\r\n\r\n\tresendVerificationCode() {\r\n\t\tthis.payrazrService.resendSmsVerificationCode(this.phoneNumber, this.customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\talert(this.i18n.i18next.t('verificationCodeResent', 'Verification code resent.'));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\talert(this.i18n.i18next.t('failedToResendVerificationCode', 'Failed to resend verification code.'));\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\talert(this.i18n.i18next.t('errorWhileResendingVerificationCode', 'Error encountered when attempting to re-send verification code.'));\r\n\t\t});\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.redirect();\r\n\t}\r\n\r\n\tprivate redirect() {\r\n\t\tlet route = this.redirectTo || 'secure';\r\n\r\n\t\tif (route === 'dashboard'\r\n\t\t\t&& !this.router.hasRoute('dashboard')) {\r\n\t\t\troute = 'secure';\r\n\t\t}\r\n\r\n\t\tif (!this.redirectTo) {\r\n\t\t\tlet routeResponse = this.postLoginRouteManager.calculateRoute();\r\n\t\t\tif (routeResponse.routeSettings) {\r\n\t\t\t\tthis.router.currentInstruction.config.settings = routeResponse.routeSettings;\r\n\t\t\t}\r\n\t\t\tthis.router.navigateToRoute(routeResponse.route);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.router.navigateToRoute(route);\r\n\t\t}\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tlet routeSettings = this.router.currentInstruction.config.settings;\r\n\t\tthis.redirectTo = routeSettings.redirectTo;\r\n\t\tthis.phoneNumber = ValidationHelpers.sanitizePhoneNumber(routeSettings.phoneNumber);\r\n\t\tthis.customerId = routeSettings.customerId || null;\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"fieldset.alignLeft label {\\r\\n justify-content: initial;\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n .row.vdivide [class*='column']:not(:last-child):after {\\r\\n background: #ddd;\\r\\n width: 1px;\\r\\n content: \\\"\\\";\\r\\n display: block;\\r\\n position: absolute;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n right: 0;\\r\\n height: auto;\\r\\n margin-top: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n.btn-block{\\r\\n width: auto;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { MessagesService } from '../../services/messages.service';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class Messages {\r\n\tisLoading = true;\r\n\tmessages = [];\r\n\r\n\tconstructor(private messagesServices: MessagesService, private router: Router, private i18n: I18N) {\r\n\t}\r\n\r\n\tmarkAsRead(message) {\r\n\t\tthis.messagesServices.markAsRead(message);\r\n\t}\r\n\r\n\tonMessageClicked(message) {\r\n\t\tif (message.linkText === 'See Documents') {\r\n\t\t\tthis.router.navigate('docs');\r\n\t\t}\r\n\t}\r\n\r\n\tget notification() {\r\n\t\tlet msgCount = this.messagesServices.newMessages ? this.messagesServices.newMessages : 0;\r\n\t\treturn this.i18n.i18next.t('youHaveXNewMessage', {defaultValue: `You have ${msgCount} new message`, count: msgCount}) + (msgCount === 1 ? '' : 's');\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.messagesServices.getMessages()\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t\tthis.messages = this.messagesServices.messages;\r\n\t\t\t});\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mobile-grid-header {\\r\\n display: inline-block;\\r\\n font-weight: bold;\\r\\n}\\r\\n\\r\\n.mobile-grid-data {\\r\\n display: inline-block;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { Router, NavModel, RouteConfig } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when, anyNumber, anything, resetCalls } from 'ts-mockito';\r\nimport { Messages } from './messages';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { MessagesService } from '../../services/messages.service';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('messages', () => {\r\n\t\t\tlet component: Messages;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockMessagesService: MessagesService = mock(MessagesService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tcomponent = new Messages(\r\n\t\t\t\t\tinstance(mockMessagesService),\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('attatched()', () => {\r\n\t\t\t\tlet messages = [\r\n\t\t\t\t\t{ title: 'test' }\r\n\t\t\t\t];\r\n\t\t\t\twhen(mockMessagesService.messages).thenReturn(messages);\r\n\t\t\t\twhen(mockMessagesService.getMessages()).thenResolve();\r\n\t\t\t\tit('should call getMessages', () => {\r\n\t\t\t\t\tcomponent.attached();\r\n\t\t\t\t\tverify(mockMessagesService.getMessages()).called();\r\n\t\t\t\t});\r\n\t\t\t\tit('should set loading and messages', async () => {\r\n\t\t\t\t\tawait component.attached();\r\n\t\t\t\t\texpect(component.messages).toEqual(messages);\r\n\t\t\t\t\texpect(component.isLoading).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('markAsRead()', () => {\r\n\t\t\t\twhen(mockMessagesService.markAsRead(anything())).thenResolve();\r\n\t\t\t\twhen(mockPayrazrService.markMessageAsRead(anything())).thenResolve();\r\n\t\t\t\tit('should call mark as read services', () => {\r\n\t\t\t\t\tcomponent.markAsRead({ test: 'test' });\r\n\t\t\t\t\tverify(mockMessagesService.markAsRead(anything())).called();\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t\tdescribe('onMessageClicked()', () => {\r\n\t\t\t\tlet message = { linkText: 'See Documents' };\r\n\t\t\t\tit('should not navigate when other is clicked', () => {\r\n\t\t\t\t\tresetCalls(mockRouter);\r\n\t\t\t\t\tcomponent.onMessageClicked({});\r\n\t\t\t\t\tverify(mockRouter.navigate(anything())).never();\r\n\t\t\t\t});\r\n\t\t\t\tit('should navigate to docs when doc link clicked', () => {\r\n\t\t\t\t\tcomponent.onMessageClicked(message);\r\n\t\t\t\t\tverify(mockRouter.navigate('docs')).called();\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { computedFrom, inject, autoinject } from 'aurelia-framework';\r\nimport config from '../../config/config';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { ViewPdfDialog } from './view-pdf.dialog';\r\n\r\n@autoinject\r\nexport class MyDocuments {\r\n\tdownloadLink: any;\r\n\tdocumentLists: any;\r\n\tshowUploadBtn: any;\r\n\tshowSpinner: any;\r\n\tshowFilePreview: boolean;\r\n\terror: any;\r\n\r\n\tconstructor(private payrazr: PayrazrService, private globalState: State, private i18n: I18N,\r\n\t\tprivate dialogService: DialogService) {\r\n\t\t// check for null when docs page is navigated to without a session\r\n\t\tlet portalId = this.globalState?.business?.portalId ?? '';\r\n\t\tthis.downloadLink = `${config.serviceUrl}/portal/${portalId}`;\r\n\t\t// IE does have a PDF viewer embedded; do not show preview for IE users\r\n\t\tthis.showFilePreview = !this.isUsingIE();\r\n\r\n\t\tthis.showUploadBtn = true;\r\n\t\tthis.showSpinner = false;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.documentLists = [];\r\n\t\tthis.getDocumentsList(this.globalState.customer.id);\r\n\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\tthis.getDocumentsList(customer.id);\r\n\t\t});\r\n\t}\r\n\r\n\tgetDocumentsList(customerId: string) {\r\n\t\treturn this.payrazr.getRehabDocumentsList(customerId)\r\n\t\t\t.then(documents => {\r\n\t\t\t\tthis.documentLists = this.documentLists.concat(documents);\r\n\t\t\t\tthis.globalState.documentLists = this.documentLists;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tthis.documentLists = [];\r\n\t\t\t\tthis.error = 'Unable to retrieve documents. Please refresh the page to retry.';\r\n\t\t\t});\r\n\t}\r\n\r\n\tget documents() {\r\n\t\tlet returnList = [];\r\n\t\tif (this.documentLists) {\r\n\t\t\tthis.documentLists.forEach((documentList) => {\r\n\t\t\t\tdocumentList.documents = documentList.documents || [];\r\n\t\t\t\tdocumentList.documents.forEach((document) => {\r\n\t\t\t\t\tdocument.customerAccountReferenceId = documentList.customerAccountReferenceId;\r\n\t\t\t\t\tdocument.contactName = documentList.contactName;\r\n\r\n\t\t\t\t\t// internally statement pdfs are called 'Invoice Document' but for display purposes we want to say 'Statement PDF'\r\n\t\t\t\t\tif (document.documentType && document.documentType === 'Invoice Document') {\r\n\t\t\t\t\t\tdocument.documentType = this.i18n.i18next.t('statementPdf', 'Statement PDF');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturnList.push(document);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn returnList;\r\n\t}\r\n\r\n\tdownloadFile(fileUrl, saveAsFilename) {\r\n\t\tthis.payrazr.downloadFile(fileUrl, saveAsFilename);\r\n\t}\r\n\r\n\tgetDownloadTooltipText(documentName: string): string {\r\n\t\treturn this.i18n.i18next.t('downloadFile', 'Download File') + ': ' + documentName;\r\n\t}\r\n\r\n\tgetPreviewTooltipText(documentName: string): string {\r\n\t\treturn this.i18n.i18next.t('previewFile', 'Preview File') + ': ' + documentName;\r\n\t}\r\n\r\n\tisUsingIE(): boolean {\r\n\t\tlet ua: string = window.navigator.userAgent;\r\n\t\t// IE versions < 11\r\n\t\tlet msIE: number = ua.indexOf('MSIE ');\r\n\t\t// IE version 11\r\n\t\tlet trident: number = ua.indexOf('Trident/');\r\n\r\n\t\treturn msIE > 0 || trident > 0;\r\n\t}\r\n\r\n\tgetAndViewPdf(fileUrl: string, fileName: string): void {\r\n\t\tthis.showSpinner = true;\r\n\t\tthis.payrazr.getFile(fileUrl)\r\n\t\t\t.then((xhttpResponse: any) => {\r\n\t\t\t\tlet pdfData = { fileName, blobUrl: URL.createObjectURL(xhttpResponse) };\r\n\t\t\t\tthis.dialogService.open({ viewModel: ViewPdfDialog, model: pdfData, lock: false });\r\n\t\t\t\tthis.showSpinner = false;\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\tthis.showSpinner = false;\r\n\t\t\t\talert('An error occured when attempting to preview file.');\r\n\t\t\t});\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { Router, NavModel, RouteConfig } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when, anyNumber, anything, resetCalls } from 'ts-mockito';\r\nimport { MyDocuments } from './my-documents';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { MessagesService } from '../../services/messages.service';\r\nimport { State } from '../../services/global-state';\r\nimport config from '../../config/config';\r\nimport { Customer, Account } from '../../models/customer';\r\nimport { DialogService } from 'aurelia-dialog';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('my-documents', () => {\r\n\t\t\tlet component: MyDocuments;\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockDialogService = mock(DialogService);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst business = {\r\n\t\t\t\t\tportalId: 'ABCDEFG123456'\r\n\t\t\t\t};\r\n\t\t\t\tconst accounts = [];\r\n\t\t\t\twhen(mockState.business).thenReturn(business);\r\n\t\t\t\twhen(mockState.accounts).thenReturn(accounts);\r\n\t\t\t\twhen(mockCustomer.accounts).thenReturn(accounts);\r\n\t\t\t\tcomponent = new MyDocuments(\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockDialogService)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\texpect(component.downloadLink).toEqual(`${config.serviceUrl}/portal/ABCDEFG123456`);\r\n\t\t\t\texpect(component.showUploadBtn).toBeTruthy();\r\n\t\t\t\texpect(component.showSpinner).toBeFalsy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getDocumentsList()', () => {\r\n\t\t\t\tit('should set documents on success', async () => {\r\n\t\t\t\t\tconst list = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttest: 'test'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t\tcomponent.documentLists = [];\r\n\t\t\t\t\twhen(mockPayrazrService.getRehabDocumentsList(anything()))\r\n\t\t\t\t\t\t.thenResolve(list);\r\n\t\t\t\t\tawait component.getDocumentsList(anything());\r\n\t\t\t\t\texpect(component.documentLists).toEqual(list);\r\n\r\n\t\t\t\t\t// expect(mockState.documentLists).toEqual(list); // TODO: figure out how to verify this with ts-mockito\r\n\t\t\t\t});\r\n\t\t\t\tit('should handle errors', async () => {\r\n\t\t\t\t\tconst error = new Error('TESTERROR');\r\n\t\t\t\t\twhen(mockPayrazrService.getRehabDocumentsList(anything()))\r\n\t\t\t\t\t\t.thenReject(error);\r\n\t\t\t\t\tawait component.getDocumentsList(anything());\r\n\t\t\t\t\texpect(component.documentLists.length).toEqual(0);\r\n\t\t\t\t\texpect(component.error).toEqual('Unable to retrieve documents. Please refresh the page to retry.');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('downloadFile()', () => {\r\n\t\t\t\tit('should call to payrazr.downloadFile', () => {\r\n\t\t\t\t\twhen(mockPayrazrService.downloadFile(anything(), anything())).thenReturn();\r\n\t\t\t\t\tcomponent.downloadFile('', '');\r\n\t\t\t\t\tverify(mockPayrazrService.downloadFile(anything(), anything())).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('get documents()', () => {\r\n\t\t\t\tit('should build a list of documents', () => {\r\n\t\t\t\t\tcomponent.documentLists = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tcustomerAccountReferenceId: 'test',\r\n\t\t\t\t\t\t\tdocuments: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tcustomerAccountReferenceId: 'test',\r\n\t\t\t\t\t\t\t\t\tdocumentType: 'Invoice Document',\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tcustomerAccountReferenceId: 'test',\r\n\t\t\t\t\t\t\t\t\tdocumentType: 'test2',\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\tconst list = component.documents;\r\n\t\t\t\t\texpect(list.length).toEqual(2);\r\n\t\t\t\t\texpect(list[0].documentType).toEqual('localized');\r\n\t\t\t\t\texpect(list[1].documentType).toEqual('test2');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { DialogController } from 'aurelia-dialog';\r\n\r\nexport class ViewPdfDialog {\r\n\tstatic inject = [DialogController];\r\n\tfileName: string;\r\n\tblobUrl: string;\r\n\r\n\tconstructor(public controller, private i18n) { }\r\n\r\n\tactivate(pdfData: any) {\r\n\t\tthis.fileName = pdfData.fileName;\r\n\t\tthis.blobUrl = pdfData.blobUrl;\r\n\t}\r\n}","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport { AchToken } from '../../../models/ach-token';\r\nimport { CardToken } from '../../../models/card-token';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Customer } from '../../../models/customer';\r\nimport { HpfPaymentMethodService } from '../../../services/hpf-payment-method.service';\r\nimport { CheckPaymentMethod } from '../../../services/hpf-transaction-service';\r\nimport { UpdateCardPaymentModel } from '../../../models/update-card-payment-model';\r\nimport { UpdateAchPaymentModel } from '../../../models/update-ach-payment-model';\r\n\r\n@autoinject\r\nexport class AddPaymentMethod {\r\n\tcustomer: Customer;\r\n\tisCreateMethod: any;\r\n\tpaymentMethodType: any;\r\n\ttoday: Date;\r\n\tcardNumber: any;\r\n\texpMonth: any;\r\n\texpYear: any;\r\n\taccountTypes: any[];\r\n\taccountType: any;\r\n\taccountNumber: any;\r\n\taba: any;\r\n\taccountHolderName: any;\r\n\tzipCode: any;\r\n\tformErrors: any;\r\n\tcardInfoKey: any;\r\n\tcheckInfoKey: any;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate globalState: State,\r\n\t\tprivate payrazr: PayrazrService,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate hpfPaymentMethodService: HpfPaymentMethodService\r\n\t) {\r\n\t\tthis.isCreateMethod = false;\r\n\t\tthis.paymentMethodType = '';\r\n\r\n\t\tthis.today = new Date();\r\n\r\n\t\tthis.cardNumber = '';\r\n\t\tlet currentMonth = (this.today.getMonth() + 1).toString().length < 2\r\n\t\t\t? ('0' + (this.today.getMonth() + 1).toString())\r\n\t\t\t: (this.today.getMonth() + 1).toString();\r\n\r\n\t\tthis.expMonth = currentMonth;\r\n\t\tthis.expYear = (this.today.getFullYear()).toString();\r\n\r\n\t\tthis.accountTypes = [\r\n\t\t\t{\r\n\t\t\t\tvalue: 'PersonalChecking',\r\n\t\t\t\tdescription: this.i18n.i18next.t('personalCheckingAccount', 'Personal Checking Account')\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'PersonalSavings',\r\n\t\t\t\tdescription: this.i18n.i18next.t('personalSavingsAccount', 'Personal Savings Account')\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvalue: 'BusinessChecking',\r\n\t\t\t\tdescription: this.i18n.i18next.t('businessCheckingAccount', 'Business Checking Account')\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tthis.accountType = '';\r\n\t\tthis.accountNumber = '';\r\n\t\tthis.aba = '';\r\n\r\n\t\tthis.accountHolderName = '';\r\n\t\tthis.zipCode = '';\r\n\t}\r\n\r\n\tpad(num, size) {\r\n\t\tlet s = '000000000' + num;\r\n\t\treturn s.substr(s.length - size);\r\n\t}\r\n\r\n\tget accountTypeValues(): string[] {\r\n\t\tlet list = [];\r\n\t\tthis.accountTypes.forEach(acct => list.push(acct.value));\r\n\t\treturn list;\r\n\t}\r\n\r\n\tget accountTypeDescriptions(): string[] {\r\n\t\tlet list = [];\r\n\t\tthis.accountTypes.forEach(acct => list.push(acct.description));\r\n\t\treturn list;\r\n\t}\r\n\r\n\tget years(): number[] {\r\n\t\tlet list = [];\r\n\t\tlet thisYear = this.today.getFullYear();\r\n\t\tfor (let i = 0; i < 20; ++i) {\r\n\t\t\tlist.push((thisYear + i).toString());\r\n\t\t}\r\n\t\treturn list;\r\n\t}\r\n\r\n\tget months() {\r\n\t\treturn ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\r\n\t}\r\n\r\n\tget expirationDate() {\r\n\t\treturn this.pad(this.expMonth, 2) + this.pad(this.expYear % 100, 2);\r\n\t}\r\n\r\n\tget showCardForm() {\r\n\t\treturn this.paymentMethodType === 'Card';\r\n\t}\r\n\r\n\tget showCheckForm() {\r\n\t\treturn !this.showCardForm;\r\n\t}\r\n\r\n\tget isControlDisabled() {\r\n\t\treturn !this.isCreateMethod;\r\n\t}\r\n\r\n\tget isCreateMode() {\r\n\t\treturn this.isCreateMethod;\r\n\t}\r\n\r\n\tget isCard() {\r\n\t\treturn this.paymentMethodType === 'Card';\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateToRoute('myWallet');\r\n\t}\r\n\r\n\tasync validate() {\r\n\t\tthis.formErrors = [];\r\n\r\n\t\tif (this.isCard && this.isCreateMethod) {\r\n\t\t\tif (!this.cardNumber) {\r\n\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('cardNumberNotSet', 'Card Number is not set'));\r\n\t\t\t} else if (this.cardNumber.length < 13) {\r\n\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('cardNumberLengthInvalid', 'Card Number length is invalid'));\r\n\t\t\t} else if (!ValidationHelpers.isValidCreditCardNumber(this.cardNumber)) {\r\n\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('cardNumberNotValid', 'Card Number is not valid'));\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.checkExpirationDate()) {\r\n\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('cardExpirationDateNotValid', 'Card Expiration date is not valid'));\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tif (this.isCreateMethod) {\r\n\t\t\t\tif (!this.aba) {\r\n\t\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('bankTransitNumberNotSet', 'Bank Transit Number is not set'));\r\n\t\t\t\t} else if (this.aba.length < 9) {\r\n\t\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('bankTransitNumberLengthInvalid', 'Bank Transit Number length is invalid'));\r\n\t\t\t\t} else if (!ValidationHelpers.isTransitNumber(this.aba)) {\r\n\t\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('bankTransitNumberInvalid', 'Bank Transit Number is invalid'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.accountNumber) {\r\n\t\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('bankAccountNumberNotSet', 'Bank Account Number is not set'));\r\n\t\t\t\t} else if (this.accountNumber.length < 5 || this.accountNumber.length > 17) {\r\n\t\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('bankAccountNumberMustBe5To17Digits', 'Bank account number must be 5-17 digits'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Verify ACH account only if both aba and accountNumber are valid.\r\n\t\t\t\tif (this.formErrors.length === 0) {\r\n\t\t\t\t\tlet checkPaymentMethod = new CheckPaymentMethod();\r\n\t\t\t\t\tcheckPaymentMethod.aba = this.aba;\r\n\t\t\t\t\tcheckPaymentMethod.accountNumber = this.accountNumber;\r\n\r\n\t\t\t\t\tlet customerKey = !this.customer ? 0 : this.customer.customerKey;\r\n\r\n\t\t\t\t\tlet isCheckAccepted = await this.hpfPaymentMethodService.verifyCheckAccepted(\r\n\t\t\t\t\t\tcustomerKey,\r\n\t\t\t\t\t\tcheckPaymentMethod,\r\n\t\t\t\t\t\t'C')\r\n\t\t\t\t\t\t.then(response => response.isSuccessful);\r\n\r\n\t\t\t\t\tif (!isCheckAccepted) {\r\n\t\t\t\t\t\tthis.formErrors.push(\r\n\t\t\t\t\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t\t\t\t\t'verifyCheckAcceptedConsumerError',\r\n\t\t\t\t\t\t\t\t'Our payment processor, REPAY, cannot validate your bank account information. Please use a different form of payment to complete your transaction.'));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.accountHolderName) {\r\n\t\t\tthis.formErrors.push(this.i18n.i18next.t('nameOnAccountNotSet', 'Name on account is not set.'));\r\n\t\t} else {\r\n\t\t\tconst AccountNameHasAtLeastTwoNamesRegex = /[A-Za-z] +[A-Za-z]/;\r\n\t\t\tif (!AccountNameHasAtLeastTwoNamesRegex.test(this.accountHolderName)) {\r\n\t\t\t\tthis.formErrors.push(this.i18n.i18next.t('enterBothFirstAndLastName', 'Please enter both a first and last name'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.zipCode) {\r\n\t\t\tthis.formErrors.push(this.i18n.i18next.t('zipCodeNotSet', 'Zipcode is not set'));\r\n\t\t} else if (this.zipCode.length < 5 || (this.zipCode.length > 5 && this.zipCode.length < 9)) {\r\n\t\t\tthis.formErrors.push(this.i18n.i18next.t('zipCodeIsInvalid', 'Zip Code is Invalid.'));\r\n\t\t}\r\n\r\n\t\tlet isValid = this.formErrors.length === 0;\r\n\r\n\t\tif (!isValid) {\r\n\t\t\tconst validationSummary = document.getElementsByTagName('validation-summary')[0] as HTMLElement;\r\n\t\t\tsetTimeout(() => { // wait until it loads to focus\r\n\t\t\t\tvalidationSummary?.focus();\r\n\t\t\t}, 300);\r\n\t\t}\r\n\r\n\t\treturn isValid;\r\n\t}\r\n\r\n\tcheckExpirationDate() {\r\n\t\tlet now = moment();\r\n\t\tlet expMonth = this.expMonth - 1;\r\n\t\tlet exp = moment({ y: this.expYear, M: expMonth, d: 1 }).add(1, 'months').subtract(1, 'days');\r\n\t\treturn exp >= now;\r\n\t}\r\n\r\n\tasync save() {\r\n\t\tif (await this.validate()) {\r\n\t\t\tif (this.isCreateMode) {\r\n\t\t\t\tif (this.isCard) {\r\n\t\t\t\t\tthis.addNewCard();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.addNewCheck();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this.isCard) {\r\n\t\t\t\t\tthis.updateCard();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.updateCheck();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// TODO: test add and update fns\r\n\taddNewCard() {\r\n\t\tlet cardToken = new CardToken();\r\n\t\tcardToken.cardholderName = this.accountHolderName;\r\n\t\tcardToken.cardNumber = this.cardNumber;\r\n\t\tcardToken.expirationDate = this.expirationDate;\r\n\t\tcardToken.zipCode = this.zipCode;\r\n\r\n\t\tthis.payrazr.addCardPaymentMethod(cardToken, null, this.customer.id || null).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.router.navigateToRoute('myWallet');\r\n\t\t\t} else {\r\n\t\t\t\talert(response.message);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\talert(this.i18n.i18next.t('errorSavingPaymentMethod', 'Error encountered while saving payment method.'));\r\n\t\t});\r\n\t}\r\n\r\n\tupdateCard() {\r\n\t\tlet cardToken = new CardToken();\r\n\t\tcardToken.cardInfoKey = this.cardInfoKey;\r\n\t\tcardToken.cardholderName = this.accountHolderName;\r\n\t\tcardToken.expirationDate = this.expirationDate;\r\n\t\tcardToken.zipCode = this.zipCode;\r\n\r\n\t\tlet updateCardPaymentModel = new UpdateCardPaymentModel();\r\n\t\tupdateCardPaymentModel.cardToken = cardToken;\r\n\t\tupdateCardPaymentModel.customerId = this.globalState.customer.id;\r\n\r\n\t\tthis.payrazr.updateCardPaymentMethod(updateCardPaymentModel).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.router.navigateToRoute('myWallet');\r\n\t\t\t} else {\r\n\t\t\t\talert(response.message);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\talert(this.i18n.i18next.t('errorSavingPaymentMethod', 'Error encountered while saving payment method.'));\r\n\t\t});\r\n\t}\r\n\r\n\taddNewCheck() {\r\n\t\tlet achToken = new AchToken();\r\n\t\tachToken.accountName = this.accountHolderName;\r\n\t\tachToken.aba = this.aba;\r\n\t\tachToken.accountNumber = this.accountNumber;\r\n\t\tachToken.accountType = this.accountType;\r\n\t\tachToken.zipCode = this.zipCode;\r\n\r\n\t\tthis.payrazr.addAchPaymentMethod(achToken, null, this.customer.id || null).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.router.navigateToRoute('myWallet');\r\n\t\t\t} else {\r\n\t\t\t\talert(response.message);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\talert(this.i18n.i18next.t('errorSavingPaymentMethod', 'Error encountered while saving payment method.'));\r\n\t\t});\r\n\t}\r\n\r\n\tupdateCheck() {\r\n\t\tlet achToken = new AchToken();\r\n\t\tachToken.checkInfoKey = this.checkInfoKey;\r\n\t\tachToken.accountName = this.accountHolderName;\r\n\t\tachToken.zipCode = this.zipCode;\r\n\r\n\t\tlet updateAchPaymentModel = new UpdateAchPaymentModel();\r\n\t\tupdateAchPaymentModel.achToken = achToken;\r\n\t\tupdateAchPaymentModel.customerId = this.globalState.customer.id;\r\n\r\n\t\tthis.payrazr.updateAchPaymentMethod(updateAchPaymentModel).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.router.navigateToRoute('myWallet');\r\n\t\t\t} else {\r\n\t\t\t\talert(response.message);\r\n\t\t\t}\r\n\t\t}).catch(error => {\r\n\t\t\talert(this.i18n.i18next.t('errorSavingPaymentMethod', 'Error encountered while saving payment method.'));\r\n\t\t});\r\n\t}\r\n\r\n\tpopulateNameAndZipCode(params) {\r\n\t\tthis.accountHolderName = params.name;\r\n\t\tthis.zipCode = params.zipCode;\r\n\t}\r\n\r\n\tpopulateCard(params) {\r\n\t\ttry {\r\n\t\t\tthis.cardInfoKey = params.cardInfoKey;\r\n\t\t\tthis.cardNumber = params.last4ofCard;\r\n\t\t\tthis.expMonth = params.expirationDate.substr(0, 2);\r\n\t\t\tthis.expYear = '20' + params.expirationDate.substr(3, 2);\r\n\r\n\t\t\tthis.populateNameAndZipCode(params);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error populating card.');\r\n\t\t}\r\n\t}\r\n\r\n\tpopulateAch(params) {\r\n\t\ttry {\r\n\t\t\tthis.checkInfoKey = params.checkInfoKey;\r\n\t\t\tthis.accountType = params.achAccountType;\r\n\t\t\tthis.accountNumber = params.last4ofAccount;\r\n\t\t\tthis.aba = params.aba;\r\n\r\n\t\t\tthis.populateNameAndZipCode(params);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error populating ach.');\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(params, routeData) {\r\n\t\tthis.paymentMethodType = routeData.paymentMethodType;\r\n\t\tthis.isCreateMethod = routeData.isCreateMethod;\r\n\r\n\t\tif (routeData.account) {\r\n\t\t\tif (this.isCard) {\r\n\t\t\t\tthis.populateCard(routeData.account);\r\n\t\t\t} else {\r\n\t\t\t\tthis.populateAch(routeData.account);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\ttry {\r\n\t\t\t\tif (routeData.customer) {\r\n\t\t\t\t\tthis.customer = routeData.customer;\r\n\t\t\t\t\tthis.accountHolderName = (this.customer.firstName + ' ' + this.customer.lastName).trim();\r\n\t\t\t\t\tthis.zipCode = this.customer.primaryAddress.zip;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.accountHolderName = this.globalState.customer.firstName + ' ' + this.globalState.customer.lastName;\r\n\t\t\t\t\tthis.zipCode = this.globalState.customer.primaryAddress.zip;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch (err) {\r\n\t\t\t\tconsole.error('Customer information not found.');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"body {\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { mock, instance, verify, when, anyNumber, anything, resetCalls, anyOfClass } from 'ts-mockito';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer } from '../../../models/customer';\r\nimport { State } from '../../../services/global-state';\r\nimport { PayrazrService } from '../../../services/payrazr';\r\nimport { ValidationHelpers } from '../../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { AddPaymentMethod } from './add-payment-method';\r\nimport { HpfPaymentMethodService } from '../../../services/hpf-payment-method.service';\r\nimport { Features } from '../../../models/features';\r\nimport { ServiceResponse } from '../../../models/service-response';\r\nimport { CheckPaymentMethod } from '../../../services/hpf-transaction-service';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('add-payment-method', () => {\r\n\t\t\tlet component: AddPaymentMethod;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockHpfPaymentMethodService: HpfPaymentMethodService = mock(HpfPaymentMethodService);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tcomponent = new AddPaymentMethod(\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockHpfPaymentMethodService)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('activate()', () => {\r\n\t\t\t\tconst cust = new Customer({});\r\n\t\t\t\tcust.firstName = 'Jon';\r\n\t\t\t\tcust.lastName = 'Doe';\r\n\t\t\t\tcust.primaryAddress = {\r\n\t\t\t\t\tzip: '12345'\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockState.customer).thenReturn(cust);\r\n\r\n\t\t\t\tconst routeData = {\r\n\t\t\t\t\tpaymentMethodType: 'Card',\r\n\t\t\t\t\tisCreateMethod: false,\r\n\t\t\t\t\taccount: {}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tit('should get card information from routeData', () => {\r\n\t\t\t\t\tconst spyPopulateCard = spyOn(component, 'populateCard').and.stub();\r\n\t\t\t\t\trouteData.paymentMethodType = 'Card';\r\n\t\t\t\t\trouteData.account = {};\r\n\t\t\t\t\tcomponent.activate(null, routeData);\r\n\t\t\t\t\texpect(component.paymentMethodType).toEqual(routeData.paymentMethodType);\r\n\t\t\t\t\texpect(component.isCreateMethod).toEqual(routeData.isCreateMethod);\r\n\t\t\t\t\texpect(spyPopulateCard).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should get Ach information from routeData', () => {\r\n\t\t\t\t\tconst spyPopulateAch = spyOn(component, 'populateAch').and.stub();\r\n\t\t\t\t\trouteData.paymentMethodType = 'Ach';\r\n\t\t\t\t\trouteData.account = {};\r\n\t\t\t\t\tcomponent.activate(null, routeData);\r\n\t\t\t\t\texpect(component.paymentMethodType).toEqual(routeData.paymentMethodType);\r\n\t\t\t\t\texpect(component.isCreateMethod).toEqual(routeData.isCreateMethod);\r\n\t\t\t\t\texpect(spyPopulateAch).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should get account holder info when no account is found', () => {\r\n\t\t\t\t\trouteData.account = null;\r\n\t\t\t\t\tcomponent.activate(null, routeData);\r\n\t\t\t\t\texpect(component.accountHolderName).toEqual(cust.firstName + ' ' + cust.lastName);\r\n\t\t\t\t\texpect(component.zipCode).toEqual('12345');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('populateCard()', () => {\r\n\t\t\t\tconst cardAccount = {\r\n\t\t\t\t\tcardInfoKey: 'testCard',\r\n\t\t\t\t\tlast4ofCard: 'testNumber',\r\n\t\t\t\t\texpirationDate: '01/20',\r\n\t\t\t\t\tname: '',\r\n\t\t\t\t\tzipCode: ''\r\n\t\t\t\t};\r\n\r\n\t\t\t\tit('should set card information', () => {\r\n\t\t\t\t\tconst spyPopulateNameAndZipCode = spyOn(component, 'populateNameAndZipCode').and.stub();\r\n\t\t\t\t\tcomponent.populateCard(cardAccount);\r\n\t\t\t\t\texpect(component.cardInfoKey).toEqual(cardAccount.cardInfoKey);\r\n\t\t\t\t\texpect(component.cardNumber).toEqual(cardAccount.last4ofCard);\r\n\t\t\t\t\texpect(component.expMonth).toEqual(cardAccount.expirationDate.substr(0, 2));\r\n\t\t\t\t\texpect(component.expYear).toEqual( '20' + cardAccount.expirationDate.substr(3, 2));\r\n\t\t\t\t\texpect(spyPopulateNameAndZipCode).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set default expiration date as of today on card information', () => {\r\n\t\t\t\t\tconst spyPopulateNameAndZipCode = spyOn(component, 'populateNameAndZipCode').and.stub();\r\n\r\n\t\t\t\t\tvar today = new Date();\r\n\t\t\t\t\tvar currentMonth = (today.getMonth() + 1).toString().padStart(2, \"0\");\r\n\t\t\t\t\tvar currentYear = today.getFullYear().toString().substr(2,2);\r\n\t\t\t\t\tcardAccount.expirationDate = `${currentMonth}/${currentYear}`;\r\n\r\n\t\t\t\t\tcomponent.populateCard(cardAccount);\r\n\t\t\t\t\texpect(component.cardInfoKey).toEqual(cardAccount.cardInfoKey);\r\n\t\t\t\t\texpect(component.cardNumber).toEqual(cardAccount.last4ofCard);\r\n\t\t\t\t\texpect(component.expMonth).toEqual(cardAccount.expirationDate.substr(0, 2));\r\n\t\t\t\t\texpect(component.expYear).toEqual( '20' + cardAccount.expirationDate.substr(3, 2));\r\n\t\t\t\t\texpect(spyPopulateNameAndZipCode).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t\tdescribe('populateAch()', () => {\r\n\t\t\t\tconst checkAccount = {\r\n\t\t\t\t\tcheckInfoKey: 'testCard',\r\n\t\t\t\t\tachAccountType: 'checking',\r\n\t\t\t\t\taba: '123456789',\r\n\t\t\t\t\tlast4ofAccount: 'testNumber',\r\n\t\t\t\t};\r\n\r\n\t\t\t\tit('should set Ach information', () => {\r\n\t\t\t\t\tconst spyPopulateNameAndZipCode = spyOn(component, 'populateNameAndZipCode').and.stub();\r\n\t\t\t\t\tcomponent.populateAch(checkAccount);\r\n\t\t\t\t\texpect(component.checkInfoKey).toEqual(checkAccount.checkInfoKey);\r\n\t\t\t\t\texpect(component.accountNumber).toEqual(checkAccount.last4ofAccount);\r\n\t\t\t\t\texpect(component.accountType).toEqual(checkAccount.achAccountType);\r\n\t\t\t\t\texpect(component.aba).toEqual(checkAccount.aba);\r\n\t\t\t\t\texpect(spyPopulateNameAndZipCode).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('populateNameAndZipCode()', () => {\r\n\t\t\t\tconst params = {\r\n\t\t\t\t\tname: 'testName',\r\n\t\t\t\t\tzipCode: '12345'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tit('should set name and zip', () => {\r\n\t\t\t\t\tcomponent.populateNameAndZipCode(params);\r\n\t\t\t\t\texpect(component.accountHolderName).toEqual('testName');\r\n\t\t\t\t\texpect(component.zipCode).toEqual('12345');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('validate()', () => {\r\n\t\t\t\twhen(mockHpfPaymentMethodService.verifyCheckAccepted(anyNumber(), anyOfClass(CheckPaymentMethod), 'C'))\r\n\t\t\t\t\t.thenResolve(new ServiceResponse(\r\n\t\t\t\t\t\t{ isSuccessful: true, resultMessage: 'resolved', value: {} }));\r\n\r\n\t\t\t\tit('should succeed with valid Card', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isValidCreditCardNumber').and.returnValue(true);\r\n\t\t\t\t\tspyOn(component, 'checkExpirationDate').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Card';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.cardNumber = '1234567890123';\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tconst isValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(0);\r\n\t\t\t\t\texpect(isValid).toBeTruthy();\r\n\t\t\t\t\texpect(component.checkExpirationDate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t\tit('should succeed with valid Ach', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isTransitNumber').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Ach';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.aba = '123456789';\r\n\t\t\t\t\tcomponent.accountNumber = '123456789';\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tconst isValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(0);\r\n\t\t\t\t\texpect(isValid).toBeTruthy();\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail without card number', async () => {\r\n\t\t\t\t\tspyOn(component, 'checkExpirationDate').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Card';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.cardNumber = null;\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tconst isValid = await component.validate();\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(1);\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail with invalid card', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isValidCreditCardNumber').and.returnValue(false);\r\n\t\t\t\t\tspyOn(component, 'checkExpirationDate').and.returnValue(false);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Card';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.cardNumber = '123';\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tlet isValid = await component.validate();\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(2);\r\n\r\n\t\t\t\t\tcomponent.cardNumber = '1234567890123';\r\n\t\t\t\t\tisValid = await component.validate();\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(2);\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail without card number', async () => {\r\n\t\t\t\t\tspyOn(component, 'checkExpirationDate').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Card';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.cardNumber = null;\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tconst isValid = await component.validate();\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(1);\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail without Ach aba', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isTransitNumber').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Ach';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.aba = null;\r\n\t\t\t\t\tcomponent.accountNumber = '123456789';\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tconst isValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(1);\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail with invalid Ach aba', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isTransitNumber').and.returnValue(false);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Ach';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.aba = '123';\r\n\t\t\t\t\tcomponent.accountNumber = '123456789';\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tlet isValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(1);\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\r\n\t\t\t\t\tcomponent.aba = '123456789';\r\n\t\t\t\t\tisValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(1);\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail with invalid Ach account', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isTransitNumber').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Ach';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.aba = '123456789';\r\n\t\t\t\t\tcomponent.accountNumber = null;\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon Doe';\r\n\t\t\t\t\tcomponent.zipCode = '12345';\r\n\t\t\t\t\tlet isValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(1);\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t\tit('should fail for missing name ar zip', async () => {\r\n\t\t\t\t\tspyOn(ValidationHelpers, 'isValidCreditCardNumber').and.returnValue(true);\r\n\t\t\t\t\tspyOn(component, 'checkExpirationDate').and.returnValue(true);\r\n\t\t\t\t\tcomponent.paymentMethodType = 'Card';\r\n\t\t\t\t\tcomponent.isCreateMethod = true;\r\n\t\t\t\t\tcomponent.cardNumber = '1234567890123';\r\n\t\t\t\t\tcomponent.accountHolderName = null;\r\n\t\t\t\t\tcomponent.zipCode = null;\r\n\t\t\t\t\tlet isValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(2);\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\r\n\t\t\t\t\tcomponent.accountHolderName = 'Jon';\r\n\t\t\t\t\tcomponent.zipCode = '123';\r\n\t\t\t\t\tisValid = await component.validate();\r\n\t\t\t\t\texpect(component.formErrors.length).toEqual(2);\r\n\t\t\t\t\texpect(isValid).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { computedFrom, autoinject, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Customer } from '../../models/customer';\r\n\r\n@autoinject\r\n\r\nexport class MyWallet{\r\n\terrorMessage: any;\r\n\tvalidationErrors: any;\r\n\tcustomer: any;\r\n\tdonotshow: any;\r\n\tsuccessItem: any;\r\n\tcontactInfo: any;\r\n\tisInvoiceEnabled: boolean;\r\n\t@bindable selectedCustomer: Customer;\r\n\r\n\tconstructor(private router: Router, private payrazrService: PayrazrService, private globalState: State, private i18n: I18N) {\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.customer = {};\r\n\t\tthis.customer.paymentMethods = {};\r\n\t\tthis.donotshow = false;\r\n\t\tthis.isInvoiceEnabled = globalState.business.portalSettings.businessSettings.isInvoiceEnabled;\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.getCustomerPaymentMethods();\r\n\t}\r\n\r\n\tselectedCustomerChanged() {\r\n\t\tthis.getCustomerPaymentMethods(this.selectedCustomer.id);\r\n\t}\r\n\r\n\t@computedFrom('customer.paymentMethods')\r\n\tget showEmptyCardGridMessage() {\r\n\t\ttry {\r\n\t\t\treturn this.customer.paymentMethods.creditCardPaymentMethods === undefined || this.customer.paymentMethods.creditCardPaymentMethods.length < 1;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('customer.paymentMethods')\r\n\tget showEmptyAchAccountsGridMessage() {\r\n\t\ttry {\r\n\t\t\treturn this.customer.paymentMethods.achPaymentMethods === undefined || this.customer.paymentMethods.achPaymentMethods.length < 1;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('globalState.business.portalSettings')\r\n\tget isWalletEnabled() {\r\n\t\ttry {\r\n\t\t\treturn 'consumerWalletEnabled' in this.globalState.business.portalSettings ? this.globalState.business.portalSettings.consumerWalletEnabled : true;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Failed to enable wallet.');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('globalState.hasCreditCardEnabledPortfolio')\r\n\tget showCardAccounts() {\r\n\t\ttry {\r\n\t\t\treturn this.globalState.hasCreditCardEnabledPortfolio;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error identifying allowed payment methods.');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('globalState.hasECheckEnabledPortfolio')\r\n\tget showBankAccounts() {\r\n\t\ttry {\r\n\t\t\treturn this.globalState.hasECheckEnabledPortfolio;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error identifying allowed payment methods.');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tgetRouteSettings() {\r\n\t\treturn {\r\n\t\t\tredirectTo: 'myWallet'\r\n\t\t};\r\n\t}\r\n\r\n\tconfirmPaymentDelete() {\r\n\t\treturn confirm(this.i18n.i18next.t('deletePaymentMethodConfirmation', 'Are you sure you want to delete this payment method?'));\r\n\t}\r\n\r\n\taddNewPaymentMethod(paymentMethodType) {\r\n\t\tconst addPaymentMethodRoute = this.router.routes.find(x => x.name === 'addPaymentMethod');\r\n\t\taddPaymentMethodRoute.paymentMethodType = paymentMethodType;\r\n\t\taddPaymentMethodRoute.isCreateMethod = true;\r\n\t\taddPaymentMethodRoute.customer = this.selectedCustomer || this.globalState.customer;\r\n\r\n\t\tthis.router.navigateToRoute(addPaymentMethodRoute.name);\r\n\t}\r\n\r\n\tsetCustomerPrimaryPaymentMethod(paymentMethodInfoKey, paymentMethodType) {\r\n\t\tlet customerId = this.selectedCustomer ? this.selectedCustomer.id : null;\r\n\t\treturn this.payrazrService.setCustomerPrimaryPaymentMethod(paymentMethodInfoKey, paymentMethodType, customerId).then(response => {\r\n\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\tconsole.error(response.message);\r\n\t\t\t}\r\n\r\n\t\t\tthis.getCustomerPaymentMethods(customerId);\r\n\t\t}).catch(err => {\r\n\t\t\tconsole.error('Error occurred while setting primary payment method.');\r\n\t\t});\r\n\t}\r\n\r\n\teditAccount(paymentMethodType, account) {\r\n\t\tconst editPaymentMethodRoute = this.router.routes.find(x => x.name === 'editPaymentMethod');\r\n\t\teditPaymentMethodRoute.paymentMethodType = paymentMethodType;\r\n\t\teditPaymentMethodRoute.isCreateMethod = false;\r\n\t\teditPaymentMethodRoute.account = account;\r\n\t\tthis.router.navigateToRoute(editPaymentMethodRoute.name);\r\n\t}\r\n\r\n\tremoveAccount(paymentMethodType, paymentMethodInfoKey) {\r\n\t\ttry {\r\n\t\t\tlet customerId = this.globalState.customer.id;\r\n\r\n\t\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\t\tcustomerId = this.selectedCustomer.id;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.confirmPaymentDelete()) {\r\n\t\t\t\tthis.payrazrService.removePaymentMethod(paymentMethodType, paymentMethodInfoKey, customerId).then(response => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tthis.getCustomerPaymentMethods(customerId);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\talert(response.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t}\r\n\t}\r\n\r\n\tgetCustomerPaymentMethods(customerId: string = null) {\r\n\t\tthis.payrazrService.getCustomerPaymentMethodsByCustomerId(customerId).then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.customer.paymentMethods = response.entity;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(response.message);\r\n\t\t\t}\r\n\t\t}\r\n\t\t).catch(err => {\r\n\t\t\tconsole.error('Failed to retrieve customer payment methods');\r\n\t\t});\r\n\t}\r\n\r\n\t// Both this and avalableCustomerDescs are called multiple times by\r\n\t// the view for unsure reasons; if there's a notable performance lag\r\n\t// in the future when switching customers/patients, try debugging here.\r\n\t@computedFrom('globalState')\r\n\tget availableCustomers(): Customer[] {\r\n\t\treturn [this.globalState.customer].concat(this.globalState.associatedCustomers);\r\n\t}\r\n\r\n\t@computedFrom('globalState')\r\n\tget availableCustomerDescs(): string[] {\r\n\t\treturn [this.globalState.customer].concat(this.globalState.associatedCustomers).map(c => c.name);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".table-striped tbody tr:nth-of-type(odd) {\\r\\n background-color: rgba(0,0,0,.05);\\r\\n}\\r\\n\\r\\n.inline-block {\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\n.row-style {\\r\\n border-top: 1px solid #ddd;\\r\\n border-bottom: 1px solid #ddd;\\r\\n}\\r\\n\\r\\n.row-style td {\\r\\n border-top: none;\\r\\n}\\r\\n\\r\\n.wallet-checkbox-div {\\r\\n margin: .4em;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\ninput[type=\\\"checkbox\\\"] {\\r\\n width: 1.25em;\\r\\n height: 1.25em;\\r\\n margin: .5em;\\r\\n}\\r\\n\\r\\ntd.wallet-rightmost {\\r\\n display: flex;\\r\\n flex-direction: row-reverse;\\r\\n}\\r\\n\\r\\nlabel {\\r\\n margin: 0.25em;\\r\\n}\\r\\n\\r\\ninput[type=\\\"checkbox\\\"]:checked, input[type=\\\"checkbox\\\"] + label {\\r\\n cursor: default;\\r\\n}\\r\\n\\r\\ninput[type=\\\"checkbox\\\"], input[type=\\\"checkbox\\\"] + label {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.mobile-grid-data-no-header.text-capitalize {\\r\\n display:flex;\\r\\n align-items:center;\\r\\n flex-direction:row-reverse;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { anything, instance, mock, verify, when } from 'ts-mockito';\r\nimport { Business } from '../../models/business';\r\nimport { Customer } from '../../models/customer';\r\nimport { Features } from '../../models/features';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { MyWallet } from './my-wallet';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('my-wallet', () => {\r\n\t\t\tlet component: MyWallet;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockValidationHelpers: ValidationHelpers = mock(ValidationHelpers);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst features = new Features({});\r\n\t\t\t\twhen(mockState.features).thenReturn(features);\r\n\t\t\t\twhen(mockState.business).thenReturn(instance(mockBusiness));\r\n\t\t\t\twhen(mockBusiness.portalSettings).thenReturn({\r\n\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\tisInvoiceEnabled: true\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\twhen(mockState.customer).thenReturn(instance(mockCustomer));\r\n\t\t\t\tcomponent = new MyWallet(\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('addNewPaymentMethod()', () => {\r\n\t\t\t\tconst routes: any[] = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'addPaymentMethod',\r\n\t\t\t\t\t\troute: 'test1'\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\tit('should navigate to add page with info', () => {\r\n\t\t\t\t\twhen(mockRouter.routes).thenReturn(routes);\r\n\t\t\t\t\twhen(mockRouter.navigateToRoute(anything())).thenReturn();\r\n\t\t\t\t\tcomponent.addNewPaymentMethod('testMethod');\r\n\t\t\t\t\tverify(mockRouter.navigateToRoute(anything())).called();\r\n\t\t\t\t\texpect(routes[0].paymentMethodType).toEqual('testMethod');\r\n\t\t\t\t\texpect(routes[0].isCreateMethod).toEqual(true);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('setCustomerPrimaryPaymentMethod()', () => {\r\n\t\t\t\tit('should handle success', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.setCustomerPrimaryPaymentMethod(anything(), anything(), anything())).thenResolve({\r\n\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t});\r\n\t\t\t\t\tconst spyGetCustomerPaymentMethods = spyOn(component, 'getCustomerPaymentMethods').and.stub();\r\n\r\n\t\t\t\t\tawait component.setCustomerPrimaryPaymentMethod('12', 'Card');\r\n\t\t\t\t\texpect(spyGetCustomerPaymentMethods).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('editAccount()', () => {\r\n\t\t\t\tconst routes: any[] = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'editPaymentMethod',\r\n\t\t\t\t\t\troute: 'test1'\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\tit('should navigate with data', () => {\r\n\t\t\t\t\twhen(mockRouter.routes).thenReturn(routes);\r\n\t\t\t\t\twhen(mockRouter.navigateToRoute(anything())).thenReturn();\r\n\t\t\t\t\tcomponent.editAccount('Card', '12345');\r\n\t\t\t\t\texpect(routes[0].paymentMethodType).toEqual('Card');\r\n\t\t\t\t\texpect(routes[0].isCreateMethod).toBeFalsy();\r\n\t\t\t\t\texpect(routes[0].account).toEqual('12345');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('removeAccount()', () => {\r\n\t\t\t\tit('should call remove service', async () => {\r\n\t\t\t\t\tconst spyConfirmPaymentDelete = spyOn(component, 'confirmPaymentDelete').and.returnValue(true);\r\n\t\t\t\t\tconst spyGetCustomerPaymentMethods = spyOn(component, 'getCustomerPaymentMethods').and.stub();\r\n\t\t\t\t\twhen(mockPayrazrService.removePaymentMethod(anything(), anything(), anything())).thenResolve({\r\n\t\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t\t});\r\n\t\t\t\t\tawait component.removeAccount('Card', '123');\r\n\t\t\t\t\tverify(mockPayrazrService.removePaymentMethod(anything(), anything(), anything())).called();\r\n\t\t\t\t\texpect(spyGetCustomerPaymentMethods).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getCustomerPaymentMethods()', () => {\r\n\t\t\t\tconst methods = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttest: 'test'\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\twhen(mockPayrazrService.getCustomerPaymentMethodsByCustomerId(anything())).thenResolve({\r\n\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\tentity: methods\r\n\t\t\t\t});\r\n\t\t\t\tit('should call the get service', async () => {\r\n\t\t\t\t\tawait component.getCustomerPaymentMethods();\r\n\t\t\t\t\texpect(component.customer.paymentMethods).toEqual(methods);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { Router } from 'aurelia-router';\r\nimport { bindable, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport * as moment from 'moment';\r\nimport numeral from 'numeral';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { State } from '../../services/global-state';\r\nimport { Offer } from '../../models/offer';\r\nimport { HpfCustomerService, MakeOfferResponse } from '../../services/hpf-customer.service';\r\nimport { Account } from '../../models/customer';\r\nimport { Installment } from '../../models/installment';\r\nimport { LockedFields } from '../installments/setup-installment';\r\nimport { PaymentItemType } from '../../smart/models/enums/payment-item-type';\r\nimport { PaymentItemTableConfiguration } from '../../smart/models/payment-item-table-configuration';\r\n\r\n@autoinject\r\nexport class Negotiator {\r\n\tisSubmitting: boolean = false;\r\n\tvalidationErrors: string[];\r\n\tofferSubmitted: boolean = false;\r\n\tofferAccepted: boolean = false;\r\n\tselectedFrequency: number;\r\n\tofferAmount: string;\r\n\tacceptedOffer: Offer;\r\n\tcounterOffer: Offer;\r\n\tnegotiatorActivitySessionId: string;\r\n\tinstallmentSettings;\r\n\tportfolioSettings;\r\n\taccount: Account;\r\n\tpaymentItemTableConfiguration: PaymentItemTableConfiguration;\r\n\tcustomerAccountKeys: number[];\r\n\tbusinessKey;\r\n\tbalanceRange;\r\n\r\n\tconstructor(private router: Router, private globalState: State, private payrazrService: PayrazrService, private hpfCustomerService: HpfCustomerService, private i18n: I18N) {\r\n\t}\r\n\r\n\tactivate(params, routeData) {\r\n\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === params.id;\r\n\t\t});\r\n\r\n\t\tthis.businessKey = this.globalState.business.key;\r\n\t\tthis.portfolioSettings = this.globalState.business.fetchPortfolioSettings(this.account.portfolioName).settings;\r\n\t\tthis.installmentSettings = this.portfolioSettings.paymentTypes.installments;\r\n\r\n\t\tthis.paymentItemTableConfiguration = new PaymentItemTableConfiguration();\r\n\t\tthis.paymentItemTableConfiguration.itemType = PaymentItemType.Account;\r\n\t\tthis.paymentItemTableConfiguration.selectFirstItemUponLoad = false;\r\n\t\tthis.paymentItemTableConfiguration.showBucket = true;\r\n\t\tthis.paymentItemTableConfiguration.onlyShowSelected = true;\r\n\t\tthis.paymentItemTableConfiguration.enableItemSelection = false;\r\n\t\tthis.paymentItemTableConfiguration.useMultiselect = false;\r\n\r\n\t\tthis.customerAccountKeys = (this.globalState.accounts || []).filter(item => {\r\n\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(item.portfolioName);\r\n\t\t\tif (!portfolio || !portfolio.hasSettings || !portfolio.settings.paymentMethods) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}).map(x => x.customerAccountKey);\r\n\r\n\t\tthis.installmentSettings.balanceRanges.some((range) => {\r\n\t\t\tif (this.account.balance >= range.min && this.account.balance <= range.max) {\r\n\t\t\t\tthis.balanceRange = range;\r\n\t\t\t\treturn true; // This breaks out of the loop taking the first range in the list \r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\ttranslateFrequency(frequencyId: number) {\r\n\t\tswitch (frequencyId) {\r\n\t\t\tcase 0: // should be caught in validation, may need testing\r\n\t\t\t\treturn this.i18n.i18next.t('selectAValue', 'Please select a value');\r\n\t\t\tcase 1:\r\n\t\t\t\treturn this.i18n.i18next.t('weekly', 'Weekly');\r\n\t\t\tcase 2:\r\n\t\t\t\treturn this.i18n.i18next.t('every2Weeks', 'Every 2 weeks');\r\n\t\t\tcase 3:\r\n\t\t\t\treturn this.i18n.i18next.t('every28Days', 'Every 28 Days');\r\n\t\t\tcase 4:\r\n\t\t\t\treturn this.i18n.i18next.t('monthly', 'Monthly');\r\n\t\t\tcase 5:\r\n\t\t\t\treturn this.i18n.i18next.t('eachMonth15', '15th of each month');\r\n\t\t\tcase 6:\r\n\t\t\t\treturn this.i18n.i18next.t('endOfMonth', 'End of month');\r\n\t\t\tcase 7:\r\n\t\t\t\treturn this.i18n.i18next.t('every2Months', 'Every 2 months');\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('balanceRange')\r\n\tget availableFrequencyIds(): number[] {\r\n\t\tlet opts: number[] = this.balanceRange.recurringPaymentsFrequencies.map(freq => freq.id);\r\n\t\treturn [0, ...opts]; // prepend 'Please select a value' option\r\n\t}\r\n\r\n\tget availableFrequencyDescriptions(): string[] {\r\n\t\treturn this.availableFrequencyIds.map(id => this.translateFrequency(id));\r\n\t}\r\n\r\n\tformatEnteredAmount() {\r\n\t\tthis.offerAmount = numeral(this.offerAmount).format('(0.00)');\r\n\t}\r\n\r\n\tsubmitOffer() {\r\n\t\tthis.isSubmitting = true;\r\n\t\tthis.validate();\r\n\t\tif (this.validationErrors.length === 0) {\r\n\r\n\t\t\tthis.hpfCustomerService.makeOffer(this.account.customerAccountKey, this.selectedFrequency, this.offerAmount).then(\r\n\t\t\t\t(result: MakeOfferResponse) => {\r\n\t\t\t\t\tif (!result) {\r\n\t\t\t\t\t\tthis.validationErrors = [this.i18n.i18next.t('anErrorOccurredProcessingOffer', 'An error occured while processing your offer')];\r\n\t\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.offerSubmitted = true;\r\n\t\t\t\t\tthis.offerAccepted = result.accepted;\r\n\t\t\t\t\tthis.counterOffer = result.counterOffer;\r\n\t\t\t\t\tthis.acceptedOffer = result.acceptedOffer;\r\n\t\t\t\t\tthis.negotiatorActivitySessionId = result.negotiatorActivitySessionId;\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t},\r\n\t\t\t\t(error) => {\r\n\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\tthis.validationErrors = [this.i18n.i18next.t('anErrorOccurredProcessingOffer', 'An error occured while processing your offer')];\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis.isSubmitting = false;\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tif (!this.offerAmount || parseInt(this.offerAmount, 10) <= 0) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectPaymentAmount', 'Please select a payment amount'));\r\n\t\t}\r\n\r\n\t\tif (!this.selectedFrequency) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectFrequencyOfRecurringPayments', 'Please select the frequency of recurring payments'));\r\n\t\t}\r\n\r\n\t\tif (this.validationErrors) {\r\n\t\t\tsetTimeout(() => { // wait until it loads to focus\r\n\t\t\t\tconst validationSummary = document.getElementsByTagName('validation-summary')[0] as HTMLElement;\r\n\t\t\t\tvalidationSummary?.focus();\r\n\t\t\t}, 300);\r\n\t\t}\r\n\t}\r\n\r\n\tselectOffer(offer: Offer, offerType: number) {\r\n\t\tlet selectedFrequency = offer.frequency;\r\n\r\n\t\tlet lockedFields: LockedFields = new LockedFields();\r\n\t\tlockedFields.amount = true;\r\n\t\tlockedFields.frequency = true;\r\n\r\n\t\tlet plan: Installment = new Installment();\r\n\t\tplan.discountPercent = offer.discount ? 0 : offer.discount;\r\n\t\tplan.totalAmount = offer.totalPaid.toFixed(2);\r\n\t\tplan.paymentAfterFirst = offer.amount;\r\n\t\tplan.number = offer.numberOfPayments;\r\n\r\n\t\tthis.logSelectOffer(offerType);\r\n\r\n\t\tconst setupPlanRoute = this.router.routes.find(x => x.name === 'installments/setup-payment-plan');\r\n\t\tsetupPlanRoute.installment = plan;\r\n\t\tsetupPlanRoute.negotiatorActivitySessionId = this.negotiatorActivitySessionId;\r\n\t\tsetupPlanRoute.overrides = {\r\n\t\t\tselectedFrequency,\r\n\t\t\tlockedFields,\r\n\t\t};\r\n\t\tsetupPlanRoute.accounts = [this.account];\r\n\t\tthis.router.navigateToRoute(setupPlanRoute.name, { id: this.account.id });\r\n\t}\r\n\r\n\tlogSelectOffer(offerType: number) {\r\n\t\tthis.hpfCustomerService.logOfferSelected(this.negotiatorActivitySessionId, offerType).catch(\r\n\t\t\t(error) => {\r\n\t\t\t\tconsole.error('Error logging offer selected');\r\n\t\t\t});\r\n\t}\r\n\r\n\trequestContact() {\r\n\t\tlet route = this.router.routes.find(r => r.name === 'contactMe');\r\n\t\troute.accountId = this.account.id;\r\n\t\tthis.router.navigateToRoute('contactMe');\r\n\t}\r\n\r\n\t// This is an account summary event. It's needed to prevent console errors\r\n\tpaymentItemsLoaded() {\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"td.td-right { \\r\\n text-align: right; \\r\\n}\\r\\n\\r\\np.bold {\\r\\n font-weight: 700;\\r\\n}\\r\\n\\r\\n.negotiator-btn {\\r\\n width: 100%;\\r\\n white-space: nowrap;\\r\\n padding: .5em;\\r\\n margin-top: .5em;\\r\\n}\\r\\n\\r\\n/* Chrome, Safari, Edge, Opera */\\r\\ninput::-webkit-outer-spin-button,\\r\\ninput::-webkit-inner-spin-button {\\r\\n -webkit-appearance: none;\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n/* Firefox */\\r\\ninput[type=number] {\\r\\n -moz-appearance: textfield;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { bindable, autoinject } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Payment } from '../../models/customer';\r\nimport { PaymentHistory } from '../../models/payment-history';\r\nimport { PaymentAccountDisplayName } from '../../models/payment-account-display-name';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class PaymentHistoryPage {\r\n\tpayments: Payment[] = null;\r\n\tpaymentAccountDisplayNames: PaymentAccountDisplayName[];\r\n\tlastPaymentDate: moment.Moment = null;\r\n\terror: string;\r\n\tisLoading: boolean;\r\n\tsortBy: string = 'paymentDate';\r\n\tsortDirection: string = 'descending';\r\n\r\n\tcurrentPage: number = 1;\r\n\ttotalItems: number = 0;\r\n\r\n\treadonly pageSizeNumbers: number[] = [5, 10, 25, 50];\r\n\r\n\tconstructor(private payrazrService: PayrazrService, private globalState: State, private i18n: I18N, private router: Router) {\r\n\t\tthis.error = null;\r\n\t\tthis.isLoading = true;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.isLoading = true;\r\n\t\tthis.payrazrService.refreshGlobalCustomer()\r\n\t\t\t// this call in here in dashboard keeps the globalstate fresh in the Portal from user actions performed on children views by user\r\n\t\t\t// ... references of globalState from children views get the globalState from local storage.\r\n\t\t\t.then((state: State) => {\r\n\t\t\t\tthis.globalState = state;\r\n\t\t\t\tthis.loadRecentPayments();\r\n\t\t\t});\r\n\t}\r\n\r\n\tloadRecentPayments() {\r\n\t\tif (this.globalState && this.globalState.customer && this.globalState.accounts) {\r\n\t\t\tthis.payments = [];\r\n\t\t\tthis.getPaymentHistory(this.globalState.customer.id);\r\n\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\tthis.getPaymentHistory(customer.id);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tgetPaymentHistory(customerId: string) {\r\n\t\treturn this.payrazrService.getPaymentHistory(customerId)\r\n\t\t\t.then((pastPayments: PaymentHistory[]) => {\r\n\t\t\t\tlet payments = pastPayments.map(payment => new Payment(payment));\r\n\r\n\t\t\t\t// set bucket key for each payment. The query for payments doesn't include bucket key,\r\n\t\t\t\t// but it should be safe to just map it based on current customer's customer\r\n\t\t\t\t// accounts (i.e., they won't have dupe account numbers)\r\n\t\t\t\tpayments.forEach((p: Payment) => {\r\n\t\t\t\t\tlet accountName = p.accountName;\r\n\t\t\t\t\tif (accountName.includes(\",\")) {\r\n\t\t\t\t\t\taccountName = (accountName.split(\",\")[0]).trim();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet customerAccountForPayment = this.globalState.accounts.find(x => x.displayName === accountName);\r\n\t\t\t\t\tp.bucketKey = customerAccountForPayment.bucket ? customerAccountForPayment.bucket.bucketKey : customerAccountForPayment.bucketKey || null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.globalState.payments = payments;\r\n\t\t\t\tthis.payments = this.payments.concat(payments.sort((a: Payment, b: Payment) => {\r\n\t\t\t\t\tconst aDate = moment(a.paymentDate);\r\n\t\t\t\t\tconst bDate = moment(b.paymentDate);\r\n\r\n\t\t\t\t\tif (aDate.isBefore(bDate)) {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t} else if (aDate.isSame(bDate)) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn -1;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}));\r\n\t\t\t\tthis.totalItems = this.payments.length;\r\n\t\t\t\tthis.lastPaymentDate = null;\r\n\t\t\t\tthis.getDisplayNames();\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tthis.error = this.i18n.i18next.t('unableToRetrievePaymentHistory', 'Unable to retrieve payment history. Please refresh the page to retry.');\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetDisplayNames() {\r\n\t\tif (this.payments && this.payments.length !== 0) {\r\n\t\t\tthis.paymentAccountDisplayNames = [];\r\n\t\t\tthis.getLastPaymentDate();\r\n\r\n\t\t\tthis.payments.forEach((item: Payment) => {\r\n\t\t\t\tlet accountName = item.accountName;\r\n\t\t\t\tif (accountName.includes(\",\")) {\r\n\t\t\t\t\taccountName = (accountName.split(\",\")[0]).trim();\r\n\t\t\t\t}\r\n\t\t\t\tlet account = this.globalState.accounts.find(f => f.displayName === accountName);\r\n\t\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(account.portfolioName);\r\n\t\t\t\tthis.paymentAccountDisplayNames.push(\r\n\t\t\t\t\tnew PaymentAccountDisplayName(\r\n\t\t\t\t\t\titem.accountName,\r\n\t\t\t\t\t\tthis.payrazrService.referenceIdWrapper(item.accountName, '-', portfolio.merchantSettings.thirdPartyIntegrationSettings.platform)\r\n\t\t\t\t\t));\r\n\t\t\t}, this);\r\n\t\t}\r\n\t}\r\n\r\n\tgetLastPaymentDate() {\r\n\t\tif (this.payments.length !== 0) {\r\n\t\t\tthis.payments.forEach((item: Payment) => {\r\n\t\t\t\tif (item.result === 'Approved' || item.result === 'Declined' || item.result === 'Error' || item.result === 'Submitted' || item.result === 'Returned') {\r\n\t\t\t\t\tlet m: moment.Moment = moment(item.paymentDate);\r\n\t\t\t\t\tif (!this.lastPaymentDate) {\r\n\t\t\t\t\t\tthis.lastPaymentDate = m;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.lastPaymentDate && this.lastPaymentDate < m) {\r\n\t\t\t\t\t\tthis.lastPaymentDate = m;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsort() {\r\n\t\tthis.sortDirection = (this.sortDirection === 'ascending') ? 'descending' : 'ascending';\r\n\t}\r\n\r\n\tgetAccountDisplayName(referenceId: string): string {\r\n\t\tif (!this.paymentAccountDisplayNames) {\r\n\t\t\treturn this.i18n.i18next.t('unavailable', 'Unavailable');\r\n\t\t}\r\n\t\tlet foundAccountDisplayName: PaymentAccountDisplayName = this.paymentAccountDisplayNames\r\n\t\t\t.find((item: PaymentAccountDisplayName) => item.referenceId === referenceId);\r\n\t\treturn (foundAccountDisplayName) ? foundAccountDisplayName.displayName : this.i18n.i18next.t('unavailable', 'Unavailable');\r\n\t}\r\n\r\n\tgoToReceipt(payment: Payment) {\r\n\t\tlet receiptRoute = this.router.routes.find(r => r.name === 'paymentHistoryReceipt');\r\n\t\treceiptRoute.payment = payment;\r\n\t\tthis.router.navigate('payment-history/receipt');\r\n\t}\r\n}\r\n","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { PortalTemplateTypes } from '../../services/template-service';\r\n\r\n@autoinject\r\nexport class PaymentHistoryReceiptPage {\r\n\tPNRef: number;\r\n\treceiptType: PortalTemplateTypes;\r\n\tcustomerAccountNumber: string;\r\n\tbucketKey: number;\r\n\r\n\tconstructor(private router: Router) {\r\n\r\n\t}\r\n\r\n\tactivate(params, routeData) {\r\n\t\tif (!routeData.payment) {\r\n\t\t\tthis.back();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.PNRef = routeData.payment.PNRef;\r\n\t\tthis.receiptType = this.getReceiptType(routeData.payment.transactionType);\r\n\t\tthis.customerAccountNumber = routeData.payment.accountName;\r\n\t\tthis.bucketKey = routeData.payment.bucketKey;\r\n\t}\r\n\r\n\t// TODO: make this use something other than a string compare\r\n\tgetReceiptType(type: string): PortalTemplateTypes {\r\n\t\tlet template = PortalTemplateTypes.CreditCardSinglePaymentReceipt;\r\n\t\tif (type.toUpperCase().includes('CARD')) {\r\n\t\t\ttemplate = PortalTemplateTypes.CreditCardSinglePaymentReceipt;\r\n\t\t} else if (type.toUpperCase().includes('ACH')) {\r\n\t\t\ttemplate = PortalTemplateTypes.CheckSinglePaymentReceipt;\r\n\t\t}\r\n\t\treturn template;\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n}\r\n","module.exports = \"\\r\\n\";","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".page-selection-div {\\r\\n display: flex;\\r\\n flex-grow: 1;\\r\\n align-items: center;\\r\\n justify-content: space-evenly;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { Router, NavModel, RouteConfig } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when, anyNumber, anything, resetCalls } from 'ts-mockito';\r\nimport { PaymentHistoryPage } from './payment-history';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { State } from '../../services/global-state';\r\nimport { Business } from '../../models/business';\r\nimport { Customer,Account } from '../../models/customer';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { PaymentAccountDisplayName } from '../../models/payment-account-display-name';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('payment-history', () => {\r\n\t\t\tlet component: PaymentHistoryPage;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tlet stubState: State;\r\n\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.callFake((key, defaultText) => {\r\n\t\t\t\t\tif (key === 'unavailable') {\r\n\t\t\t\t\t\treturn 'unavailable-localized';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 'localized';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tstubState = new State(\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\t\t\t\tstubState.business = instance(mockBusiness);\r\n\r\n\t\t\t\tcomponent = new PaymentHistoryPage(\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tstubState,\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockRouter)\r\n\t\t\t\t);\r\n\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\texpect(component.isLoading).toBeTruthy();\r\n\t\t\t\texpect(component.sortBy).toEqual('paymentDate');\r\n\t\t\t\texpect(component.sortDirection).toEqual('descending');\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('sort()', () => {\r\n\t\t\t\tit('should change sort direction', () => {\r\n\t\t\t\t\tcomponent.sortDirection = 'ascending';\r\n\t\t\t\t\tcomponent.sort();\r\n\t\t\t\t\texpect(component.sortDirection).toEqual('descending');\r\n\t\t\t\t\tcomponent.sort();\r\n\t\t\t\t\texpect(component.sortDirection).toEqual('ascending');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getAccountDisplayName()', () => {\r\n\t\t\t\tit('should return unavailable localized with no display names', () => {\r\n\t\t\t\t\tcomponent.paymentAccountDisplayNames = null;\r\n\t\t\t\t\tconst name = component.getAccountDisplayName('');\r\n\t\t\t\t\texpect(name).toEqual('unavailable-localized');\r\n\t\t\t\t});\r\n\t\t\t\tit('should return unavailable localized, when name not found', () => {\r\n\t\t\t\t\tcomponent.paymentAccountDisplayNames = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treferenceId: 'testId',\r\n\t\t\t\t\t\t\tdisplayName: 'testName'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t\tconst name = component.getAccountDisplayName('missing');\r\n\t\t\t\t\texpect(name).toEqual('unavailable-localized');\r\n\t\t\t\t});\r\n\t\t\t\tit('should return displayName when found', () => {\r\n\t\t\t\t\tcomponent.paymentAccountDisplayNames = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treferenceId: 'testId',\r\n\t\t\t\t\t\t\tdisplayName: 'testName'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t\tconst name = component.getAccountDisplayName('testId');\r\n\t\t\t\t\texpect(name).toEqual('testName');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('goToReceipt()', () => {\r\n\t\t\t\tit('should set payments and navigate to receipt', () => {\r\n\t\t\t\t\tconst routes = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: 'paymentHistoryReceipt',\r\n\t\t\t\t\t\t\thref: 'testHref',\r\n\t\t\t\t\t\t\troute: 'testRoute',\r\n\t\t\t\t\t\t\tpayment: undefined\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tname: 'test2',\r\n\t\t\t\t\t\t\thref: 'testHref',\r\n\t\t\t\t\t\t\troute: 'testRoute'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t\tconst payment = {\r\n\t\t\t\t\t\tpaymentDate: 'test',\r\n\t\t\t\t\t\taccountName: 'test',\r\n\t\t\t\t\t\tcontactName: 'test',\r\n\t\t\t\t\t\tpaymentAmount: 1000,\r\n\t\t\t\t\t\tresult: 'test',\r\n\t\t\t\t\t\tPNRef: 'test',\r\n\t\t\t\t\t\ttransactionType: 'test',\r\n\t\t\t\t\t\tmessage: 'test',\r\n\t\t\t\t\t\tstartDate: 'test',\r\n\t\t\t\t\t\tbucketKey: 1\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockRouter.routes).thenReturn(routes);\r\n\t\t\t\t\tcomponent.goToReceipt(payment);\r\n\t\t\t\t\texpect(routes[0].payment).toEqual(payment);\r\n\t\t\t\t\tverify(mockRouter.navigate(anything())).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getPaymentHistory()', async () => {\r\n\t\t\t\tconst history = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taccountNumber: '1',\r\n\t\t\t\t\t\tcontactName: 'test',\r\n\t\t\t\t\t\tpaymentAmount: 1000,\r\n\t\t\t\t\t\tpaymentDate: '01/01/2020',\r\n\t\t\t\t\t\tpaymentResult: 'Approved',\r\n\t\t\t\t\t\tpnRef: 'test',\r\n\t\t\t\t\t\ttransactionType: 'test',\r\n\t\t\t\t\t\tmessage: 'test',\r\n\t\t\t\t\t\tstartDate: ''\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\taccountNumber: '2',\r\n\t\t\t\t\t\tcontactName: 'test',\r\n\t\t\t\t\t\tpaymentAmount: 2000,\r\n\t\t\t\t\t\tpaymentDate: '01/02/2020',\r\n\t\t\t\t\t\tpaymentResult: 'Approved',\r\n\t\t\t\t\t\tpnRef: 'test',\r\n\t\t\t\t\t\ttransactionType: 'test',\r\n\t\t\t\t\t\tmessage: 'test',\r\n\t\t\t\t\t\tstartDate: ''\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\tconst displayNames: PaymentAccountDisplayName[] = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treferenceId: '1',\r\n\t\t\t\t\t\tdisplayName: 'test'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treferenceId: '2',\r\n\t\t\t\t\t\tdisplayName: 'test'\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\tit('should set payments, last payment date, and display names', async () => {\r\n\t\t\t\t\tcomponent.payments = [];\r\n\t\t\t\t\twhen(mockPayrazrService.getPaymentHistory(anything())).thenResolve(history);\r\n\t\t\t\t\twhen(mockCustomer.accounts).thenReturn([\r\n\t\t\t\t\t\tnew Account({ name: '1' }),\r\n\t\t\t\t\t\tnew Account({ name: '2' })\r\n\t\t\t\t\t]);\r\n\t\t\t\t\twhen(mockBusiness.fetchPortfolioSettings(anything())).thenReturn({\r\n\t\t\t\t\t\tmerchantSettings: {\r\n\t\t\t\t\t\t\tthirdPartyIntegrationSettings: {\r\n\t\t\t\t\t\t\t\tplatform: 'testName'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\twhen(mockPayrazrService.referenceIdWrapper(anything(), anything(), anything())).thenReturn('test');\r\n\r\n\t\t\t\t\tawait component.getPaymentHistory(anything());\r\n\t\t\t\t\texpect(component.payments.length).toEqual(2);\r\n\t\t\t\t\texpect(component.paymentAccountDisplayNames.length).toEqual(2);\r\n\t\t\t\t\texpect(component.isLoading).toBeFalsy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should handle errors', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.getPaymentHistory(anything()))\r\n\t\t\t\t\t\t.thenReject();\r\n\t\t\t\t\twhen(mockCustomer.accounts).thenReturn([\r\n\t\t\t\t\t\tnew Account({ name: '1' }),\r\n\t\t\t\t\t\tnew Account({ name: '2' })\r\n\t\t\t\t\t]);\r\n\t\t\t\t\tawait component.getPaymentHistory(anything());\r\n\t\t\t\t\texpect(component.error).toEqual('localized');\r\n\t\t\t\t\texpect(component.isLoading).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport $ from \"jquery\";\r\nimport { State } from '../services/global-state';\r\nimport { PayrazrService } from '../services/payrazr';\r\nimport { I18N_EA_SIGNAL } from './app';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { LegalTermsDialog } from '../components/legal-dialog/legal-terms.dialog';\r\nimport { LegalPrivacyPolicyDialog } from '../components/legal-dialog/legal-privacypolicy.dialog';\r\nimport { LegalDisclosuresDialog } from '../components/legal-dialog/legal-disclosures.dialog';\r\n\r\ndeclare var recaptchaToken: any; // this is set in index.cshtml, before aurelia loads\r\n\r\n@autoinject\r\nexport class Portal {\r\n\trouter: Router;\r\n\r\n\tlogoText: string;\r\n\tuseLogo: boolean; \r\n\tlogoUrl: string;\r\n\tyear: number;\r\n\r\n\tconstructor(\r\n\t\tprivate payrazr: PayrazrService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate eventAggregator: EventAggregator,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate dialogService: DialogService\r\n\t\t) {\r\n\t\tthis.year = new Date().getFullYear();\r\n\t}\r\n\r\n\tconfigureRouter(config: any, router: Router) {\r\n\t\tconfig.map([\r\n\t\t\t{ route: 'login', name: 'login', moduleId: './login-register/login', title: 'Login' },\r\n\t\t\t{ route: 'forgotPassword', name: 'forgotPassword', moduleId: './login-register/forgot-password', title: 'Forgot Password' },\r\n\t\t\t{ route: 'change-password', name: 'changePassword', moduleId: './login-register/change-password', title: 'Change Password' },\r\n\t\t\t{ route: 'register', name: 'register', moduleId: './login-register/register', title: 'Register' },\r\n\t\t\t{ route: 'verification', name: 'verification', moduleId: './login-register/sms-verification/sms-verification', title: 'verification', nav: true },\r\n\t\t\t{ route: 'preferredLanguage', name: 'preferredLanguage', moduleId: './preferred-language/preferred-language', title: 'Preferred Language', nav: true },\r\n\t\t\t{ route: 'setupPrimaryPaymentMethod', name: 'setupPrimaryPaymentMethod', moduleId: './login-register/setup-primary-payment-method/setup-primary-payment-method', title: 'Setup Primary Payment Method', nav: false },\r\n\t\t\t{ route: 'ezpay', name: 'ezpay', moduleId: './ezpay/ezpay', title: 'EZ Pay' },\r\n\t\t\t{ route: 'secure', name: 'secure', moduleId: './secure-index', title: 'Dashboard', nav: true, settings: { auth: true } },\r\n\t\t\t{ route: '401', name: '401', moduleId: './http-status/401', title: '401' },\r\n\t\t\t{ route: 'inactive', name: 'inactive', moduleId: './login-register/inactive', title: 'Inactive Portal' },\r\n\t\t\t{ route: 'error', name: 'error', moduleId: './error/error', title: 'An Error Occurred' },\r\n\t\t\t{ route: 'logout', name: 'logout', moduleId: './login-register/logout' },\r\n\t\t\t{ route: '', moduleId: './login-register/portal-waiting' }\r\n\t\t]);\r\n\t\tconfig.mapUnknownRoutes('./http-status/404');\r\n\r\n\t\tthis.router = router;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tif (this.globalState && this.globalState.business) {\r\n\t\t\t// When the page is manually refreshed then these style overrides disappear. \r\n\t\t\t// This puts them back - if the portal has been loaded. \r\n\t\t\tif (this.globalState.business.portalSettings.styles) {\r\n\t\t\t\tvar portalStyles = $('#portalStyles');\r\n\t\t\t\tportalStyles.remove();\r\n\r\n\t\t\t\t$(\"body\").append(this.globalState.business.portalSettings.styles);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.globalState.business.portalSettings) {\r\n\t\t\t\tthis.logoText = this.globalState.business.portalSettings.footerText;\r\n\t\t\t\tthis.useLogo = this.globalState.business.portalSettings.hasLogo;\r\n\t\t\t\tthis.logoUrl = this.globalState.business.portalSettings.logoImageUrl;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tactivate(params) {\r\n\t\t// Verify Access to SessionStorage, display error if access is denied\r\n\t\ttry {\r\n\t\t\tlet storage = window.sessionStorage;\r\n\t\t\tstorage.setItem('test', 'test');\r\n\t\t\tstorage.removeItem('test');\r\n\t\t} catch (e) {\r\n\t\t\tthis.router.routes.find((routeConfig) => routeConfig.name === 'error').settings.type = 'SessionStorageError';\r\n\t\t\tthis.router.navigateToRoute('error');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet portalId = params.id;\r\n\t\tif (params.id.length < 7) {//short portal id navigation\r\n\t\t\treturn this.payrazr.getPortalId(portalId)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\twindow.location = response.entity; // response.entity contains the portal guid\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((e) => {\r\n\t\t\t\t\tthis.router.navigateToRoute('inactive');\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!this.globalState.business) {\r\n\t\t\t\treturn this.payrazr.getPortal(portalId, recaptchaToken)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tif (!response)\r\n\t\t\t\t\t\t\tthis.router.navigateToRoute('inactive');\r\n\r\n\t\t\t\t\t\t// getPortal sets up globalState.business\r\n\t\t\t\t\t\tif (this.globalState.business) {\r\n\t\t\t\t\t\t\t// setup default business in i18n\r\n\t\t\t\t\t\t\tthis.i18n.i18next.loadNamespaces(this.globalState.business.key.toString(), (err) => {\r\n this.eventAggregator.publish(I18N_EA_SIGNAL);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.i18n.i18next.setDefaultNamespace(this.globalState.business.key.toString());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n this.eventAggregator.publish(I18N_EA_SIGNAL);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((e) => {\r\n\t\t\t\t\t\tthis.router.navigateToRoute('inactive');\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t//TODO: Chris - add computedFrom\r\n\tget csPhone() {\r\n\t\treturn this.globalState.business && this.globalState.business.portalSettings\r\n\t\t\t? this.globalState.business.portalSettings.csPhone\r\n\t\t\t: \"\";\r\n\t}\r\n\t//TODO: Chris - add computedFrom\r\n\tget csEmail() {\r\n\t\treturn this.globalState.business && this.globalState.business.portalSettings\r\n\t\t\t? this.globalState.business.portalSettings.csEmail\r\n\t\t\t: \"\";\r\n\t}\r\n\r\n\ttoggleCiMode(e: any) {\r\n\t\te = e || window.event;\r\n\t\tif (e.altKey && e.ctrlKey) {\r\n\t\t\tconsole.log('Toggling CI Mode');\r\n\r\n\t\t\tlet currentLanguage = this.i18n.getLocale();\r\n\t\t\tlet nextLanguage = 'en';\r\n\t\t\tif (currentLanguage == 'cimode') {\t\t\t\t\r\n\t\t\t\tthis.i18n.i18next.options.skipTranslationOnMissingKey = true;\r\n\t\t\t}\r\n else {\r\n // skipTranslationOnMissingKey is required for fallback text to work but it \r\n\t\t\t\t// also breaks cimode from working. We'll need to set it true/false depending \r\n\t\t\t\t// on whether we're in cimode or not.\r\n\t\t\t\tthis.i18n.i18next.options.skipTranslationOnMissingKey = false; \r\n\t\t\t\tnextLanguage = 'cimode';\r\n\t\t\t}\r\n\r\n\t\t\tthis.i18n.setLocale(nextLanguage);\r\n\t\t}\r\n\t}\r\n\r\n\tshowLegalModal(content:string) {\r\n\t\tif (content === 'terms') {\r\n\t\t\tthis.dialogService.open({ viewModel: LegalTermsDialog, lock: false });\r\n\t\t} else if (content === 'privacyPolicy') {\r\n\t\t\tthis.dialogService.open({ viewModel: LegalPrivacyPolicyDialog, lock: false });\r\n\t\t} else if (content === 'disclosures') {\r\n\t\t\tthis.dialogService.open({ viewModel: LegalDisclosuresDialog, lock: false });\r\n\t\t}\r\n\t\t\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { computedFrom, autoinject, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ContactInformation } from '../../models/contactInformation';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Customer } from '../../models/customer';\r\nimport { MfaTwoFactorMethod } from '../../models/mfa/mfa-two-factor-method';\r\n\r\n@autoinject\r\n\r\nexport class Preferences {\r\n\tsavedPhoneNumber: any;\r\n\tmodel: any;\r\n\tisSMSEnabled: boolean;\r\n\terrorMessage: any;\r\n\tvalidationErrors: any;\r\n\tsmsRequiresVerification: any;\r\n\tisSmsOptedIn: boolean;\r\n\tisInvoiceEnabled: boolean;\r\n\tsuccessItem: any;\r\n\t@bindable selectedCustomer: Customer;\r\n\tshowMfaHelpfulTextForEmail: boolean;\r\n\tshowMfaHelpfulTextForSMS: boolean;\r\n\r\n\tconstructor(private router: Router, private payrazrService: PayrazrService, private globalState: State, private i18n: I18N) {\r\n\t\tthis.savedPhoneNumber = ''; // This is the mobile telephone number for user currently persisted in Payrazr DB\r\n\t\tthis.isSMSEnabled = false;\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.smsRequiresVerification = false;\r\n\t\tthis.isSmsOptedIn = false;\r\n\t\tthis.successItem = '';\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.isInvoiceEnabled = this.globalState.business.portalSettings.businessSettings.isInvoiceEnabled;\r\n\t\tthis.refreshGlobalCustomer();\r\n\t}\r\n\r\n\tselectedCustomerChanged() {\r\n\t\tthis.refreshGlobalCustomer(this.selectedCustomer.id);\r\n\t}\r\n\r\n\t// Both this and avalableCustomerDescs are called multiple times by\r\n\t// the view for unsure reasons; if there's a notable performance lag\r\n\t// in the future when switching customers/patients, try debugging here.\r\n\t@computedFrom('globalState.customer', 'globalState.associatedCustomers')\r\n\tget availableCustomers(): Customer[] {\r\n\t\treturn [this.globalState.customer].concat(this.globalState.associatedCustomers);\r\n\t}\r\n\r\n\t@computedFrom('availableCustomers')\r\n\tget availableCustomerDescs(): string[] {\r\n\t\treturn this.availableCustomers.map(c => c.name);\r\n\t}\r\n\r\n\trefreshGlobalCustomer(customerId: string = null) {\r\n\t\tthis.payrazrService.refreshGlobalCustomer()\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet customer = this.globalState.customer;\r\n\r\n\t\t\t\tif (customerId) {\r\n\t\t\t\t\tthis.globalState.associatedCustomers.forEach(x => {\r\n\t\t\t\t\t\tif (x.id === customerId) {\r\n\t\t\t\t\t\t\tcustomer = x;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.model = new Model(customer);\r\n\t\t\t\tthis.isSmsOptedIn = customer.notificationSettings.smsIsOptedIn;\r\n\t\t\t\tthis.smsRequiresVerification = !customer.notificationSettings.smsIsValidated;\r\n\t\t\t\tthis.isSMSEnabled = this.globalState.business.portalSettings.businessSettings.enableSMS;\r\n\t\t\t\t// If savedPhoneNumber is valid, save for comparison against mobilePhone field\r\n\t\t\t\tlet validator = new MobileNumberValidator(this.i18n);\r\n\t\t\t\tif (validator.validNumber(customer)) {\r\n\t\t\t\t\tthis.savedPhoneNumber = ValidationHelpers.sanitizePhoneNumber(customer.mobilePhone);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.savedPhoneNumber = 'X'; // can't be matched\r\n\t\t\t\t}\r\n\t\t\t\tthis.setupMfaHelpfulText();\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tconsole.error('Failed to refresh customer information.');\r\n\t\t\t});\r\n\t}\r\n\r\n\tsetupMfaHelpfulText() {\r\n\t\tif (this.globalState.features.mfaConsumerPortal\r\n\t\t\t&& (this.globalState.business?.portalSettings?.businessSettings?.enableMFA ?? false)\r\n\t\t\t&& (this.globalState.customer?.mfaSettings?.twoFactorEnabled ?? false))\r\n\t\t{\r\n\t\t\tthis.showMfaHelpfulTextForSMS = ValidationHelpers.isPhoneNumber(ValidationHelpers.sanitizePhoneNumber(this.getMobilePhoneNumber));\r\n\t\t\tthis.showMfaHelpfulTextForEmail = ValidationHelpers.isEmailAddress(this.getEmail);\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('model.mobilePhone')\r\n\tget getMobilePhoneNumber() {\r\n\t\treturn this.model.mobilePhone;\r\n\t}\r\n\r\n\t@computedFrom('model.email')\r\n\tget getEmail() {\r\n\t\treturn this.model.email;\r\n\t}\r\n\r\n\t@computedFrom('model.smsIsOptedIn', 'isSmsOptedIn')\r\n\tget isOptedInForSMS() {\r\n\t\ttry {\r\n\t\t\treturn this.model.smsIsOptedIn && this.isSmsOptedIn;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encounted identifying sms opt-in setting');\r\n\t\t}\r\n\t}\r\n\r\n\tgetRouteSettings() {\r\n\t\treturn {\r\n\t\t\tredirectTo: 'preferences',\r\n\t\t\tphoneNumber: this.model.mobilePhone,\r\n\t\t\tcustomerId: this.model.customer.id\r\n\t\t};\r\n\t}\r\n\r\n\tsmsVerification() {\r\n\t\tthis.router.currentInstruction.config.settings = this.getRouteSettings();\r\n\t\tthis.router.navigateToRoute('verification');\r\n\t}\r\n\r\n\tupdateContactInformation() {\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tlet notificationValidator = new NotificationValidator(this.i18n, this.isInvoiceEnabled);\r\n\t\tlet mobileValidator = new MobileNumberValidator(this.i18n, this.isSmsOptedIn);\r\n\r\n\t\tif (notificationValidator.hasErrors(this.model) || mobileValidator.hasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = notificationValidator.errors.concat(mobileValidator.errors);\r\n\t\t} else {\r\n\t\t\tlet contactInfo = new ContactInformation();\r\n\t\t\tcontactInfo.customerId = this.model.customer.id;\r\n\t\t\tcontactInfo.mobilePhone = this.model.mobilePhone;\r\n\t\t\tcontactInfo.smsNotificationsEnabled = this.isSmsOptedIn;\r\n\t\t\tcontactInfo.emailAddress = this.model.email;\r\n\t\t\tcontactInfo.emailNotificationsEnabled = this.model.isEmailOptedIn;\r\n\t\t\tcontactInfo.isPaperStatementsOptedIn = this.model.isPaperStatementsOptedIn;\r\n\t\t\tcontactInfo.isEmailStatementsOptedIn = this.model.isEmailStatementsOptedIn;\r\n\r\n\t\t\tthis.payrazrService.updateContactInformation(contactInfo)\r\n\t\t\t\t.then((response) => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\tthis.setupMfaHelpfulText();\r\n\t\t\t\t\t\tthis.successItem = this.i18n.i18next.t('personalInformation', 'Personal Information');\r\n\t\t\t\t\t\tif (response.entity) {\r\n\t\t\t\t\t\t\tthis.smsRequiresVerification = true;\r\n\t\t\t\t\t\t\tthis.router.currentInstruction.config.settings = this.getRouteSettings();\r\n\t\t\t\t\t\t\tthis.router.navigateToRoute('verification');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\talert(response.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tthis.errorMessage = this.i18n.i18next.t('updateUnsuccessfulError', { defaultValue: `Update was unsuccessful: ${err}`, error: err });\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// TODO: Refactor this class\r\nexport class Model {\r\n\tcustomer: any;\r\n\tusername: any;\r\n\tcurrentPassword: any;\r\n\tnewPassword: any;\r\n\tquestion1: any;\r\n\tquestion2: any;\r\n\tanswer1: any;\r\n\tanswer2: any;\r\n\tisEmailOptedIn: boolean;\r\n\tisPaperStatementsOptedIn: boolean;\r\n\tisEmailStatementsOptedIn: boolean;\r\n\temail: any;\r\n\thomePhone: any;\r\n\tmobilePhone: any;\r\n\tworkPhone: any;\r\n\tsmsIsOptedIn: boolean;\r\n\r\n\tconstructor(customer) {\r\n\t\tthis.customer = customer;\r\n\r\n\t\tthis.username = customer.securitySettings.username;\r\n\r\n\t\tthis.currentPassword = '';\r\n\t\tthis.newPassword = '';\r\n\r\n\t\tthis.question1 = customer.securitySettings.question1;\r\n\t\tthis.question2 = customer.securitySettings.question2;\r\n\r\n\t\tthis.answer1 = '';\r\n\t\tthis.answer2 = '';\r\n\r\n\t\tthis.isPaperStatementsOptedIn = customer.documentSettings.isPaperOptedIn;\r\n\t\tthis.isEmailStatementsOptedIn = customer.documentSettings.isEmailOptedIn;\r\n\r\n\t\tthis.email = customer.email;\r\n\r\n\t\tthis.homePhone = customer.homePhone;\r\n\t\tthis.mobilePhone = ValidationHelpers.sanitizePhoneNumber(customer.mobilePhone);\r\n\t\tthis.workPhone = customer.workPhone;\r\n\r\n\t\tthis.isEmailOptedIn = (customer.notificationSettings.isEmailOptedIn === undefined) ? false : customer.notificationSettings.isEmailOptedIn;\r\n\t\t// Unless the customer explicitly opts out, they are opted in.\r\n\t\tthis.smsIsOptedIn = customer.notificationSettings.smsIsOptedIn === undefined ? true : customer.notificationSettings.smsIsOptedIn;\r\n\t}\r\n}\r\n\r\nexport class MobileNumberValidator { \r\n\terrors: any;\r\n\tsmsOptedIn: any;\r\n\tphoneValidationRegex: any;\r\n\r\n\tconstructor(private i18n: I18N, obj?) {\r\n\t\tthis.errors = [];\r\n\t\tthis.smsOptedIn = obj;\r\n\t\tthis.phoneValidationRegex = /.*\\d{3}.*\\d{3}.*\\d{4}/;\r\n\t}\r\n\thasErrors(model) {\r\n\t\tif (this.smsOptedIn === true) {\r\n\t\t\tif (!model.mobilePhone) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('enterMobileNumber', 'Please enter in a mobile number'));\r\n\t\t\t}\r\n\t\t\tif (!this.phoneValidationRegex.test(model.mobilePhone)) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('mobileNumberDigitsVerification', 'Mobile number must be 10 digits'));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// If SMS is not enabled continue to do basic validation on telephone number but allow empty field\r\n\t\t\tif (model.mobilePhone) {\r\n\t\t\t\tif (!this.phoneValidationRegex.test(model.mobilePhone)) {\r\n\t\t\t\t\tthis.addError(this.i18n.i18next.t('mobileNumberDigitsVerification', 'Mobile number must be 10 digits'));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\tvalidNumber(model) {\r\n\t\tif (model.mobilePhone === '' || !this.phoneValidationRegex.test(model.mobilePhone)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\r\n\t}\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n\r\n}\r\n\r\nexport class NotificationValidator {\r\n\terrors: any;\r\n\r\n\tconstructor(private i18n: I18N, private isInvoiceEnabled: boolean) {\r\n\t\tthis.errors = [];\r\n\t}\r\n\r\n\thasErrors(model: Model) {\r\n\t\tif ((model.isEmailOptedIn || model.isEmailStatementsOptedIn) && !ValidationHelpers.isEmailAddress(model.email)) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('provideValidEmail', 'Please provide a valid email address'));\r\n\t\t}\r\n\r\n\t\tif (this.isInvoiceEnabled && !model.isPaperStatementsOptedIn && !model.isEmailStatementsOptedIn) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('selectStatementNotificationMethod', 'Please select at least one statement notification method.'));\r\n\t\t}\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox-div, .checkbox-div * {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.checkbox-div {\\r\\n margin: .4em;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\ninput[type=\\\"checkbox\\\"] {\\r\\n width: 1.25em;\\r\\n height: 1.25em;\\r\\n margin: .5em;\\r\\n}\\r\\n\\r\\ninput[type=\\\"checkbox\\\"], input[type=\\\"checkbox\\\"] + label {\\r\\n margin: 0.25em;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { mock, instance, verify, when, anyNumber, anything, resetCalls } from 'ts-mockito';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Business } from '../../models/business';\r\nimport { Features } from '../../models/features';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Preferences, Model } from './preferences';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('add-payment-method', () => {\r\n\t\t\tlet component: Preferences;\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst features = new Features({});\r\n\t\t\t\twhen(mockState.features).thenReturn(features);\r\n\t\t\t\twhen(mockState.business).thenReturn(instance(mockBusiness));\r\n\t\t\t\twhen(mockBusiness.portalSettings).thenReturn({\r\n\t\t\t\t\tbusinessSettings: {\r\n\t\t\t\t\t\tisInvoiceEnabled: true,\r\n\t\t\t\t\t\tenableSMS: true\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\twhen(mockState.customer).thenReturn(instance(mockCustomer));\r\n\t\t\t\tcomponent = new Preferences(\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('activate()', () => {\r\n\t\t\t\tit('should setup data', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.refreshGlobalCustomer()).thenResolve();\r\n\t\t\t\t\twhen(mockCustomer.notificationSettings).thenReturn({\r\n\t\t\t\t\t\tsmsIsOptedIn: true,\r\n\t\t\t\t\t\tsmsIsValidated: true,\r\n\t\t\t\t\t\tisEmailOptedIn: true\r\n\t\t\t\t\t});\r\n\t\t\t\t\twhen(mockCustomer.securitySettings).thenReturn({\r\n\t\t\t\t\t\tusername: 'test',\r\n\t\t\t\t\t\tquestion1: 'testq1',\r\n\t\t\t\t\t\tquestion2: 'testq2'\r\n\t\t\t\t\t});\r\n\t\t\t\t\twhen(mockCustomer.documentSettings).thenReturn({\r\n\t\t\t\t\t\tisPaperOptedIn: true,\r\n\t\t\t\t\t\tisEmailOptedIn: true\r\n\t\t\t\t\t});\r\n\t\t\t\t\tawait component.activate();\r\n\t\t\t\t\texpect(component.isSmsOptedIn).toBeTruthy();\r\n\t\t\t\t\texpect(component.smsRequiresVerification).toBeFalsy();\r\n\t\t\t\t\texpect(component.isSMSEnabled).toBeTruthy();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('updateContactInformation()', () => {\r\n\t\t\t\tit('should handle success', async () => {\r\n\t\t\t\t\twhen(mockPayrazrService.updateContactInformation(anything())).thenResolve({\r\n\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\tentity: {}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tconst model = new Model({\r\n\t\t\t\t\t\tsecuritySettings: {\r\n\t\t\t\t\t\t\tusername: 'testName',\r\n\t\t\t\t\t\t\tquestion1: 'q1',\r\n\t\t\t\t\t\t\tquestion2: 'q2'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tnotificationSettings: {\r\n\t\t\t\t\t\t\tisEmailOptedIn: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tdocumentSettings: {\r\n\t\t\t\t\t\t\tisPaperOptedIn: true,\r\n\t\t\t\t\t\t\tisEmailOptedIn: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\temail: 'test@test.com',\r\n\t\t\t\t\t\thomePhone: '1234567890',\r\n\t\t\t\t\t\tmobilePhone: '1234567890'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tcomponent.model = model;\r\n\t\t\t\t\tawait component.updateContactInformation();\r\n\t\t\t\t\texpect(component.validationErrors.length).toEqual(0);\r\n\t\t\t\t\texpect(component.smsRequiresVerification).toBeTruthy();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { State } from '../../services/global-state';\r\nimport { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Language } from '../../models/language';\r\nimport { ArrayHelper } from '../../helpers/array-helper';\r\nimport { ValidationController, ValidationControllerFactory, ValidationRules, ValidateResult } from 'aurelia-validation';\r\nimport { HpfConsumerService, SetConsumerUserPreferredLanguageRequest } from '../../services/hpf-consumer.service';\r\nimport { ServiceResponse } from '../../models/service-response';\r\nimport { observable } from 'aurelia-binding';\r\nimport { PostLoginRouteManager } from '../../helpers/post-login-route-manager';\r\n\r\n@autoinject\r\nexport class PreferredLanguage {\r\n\tvalidationController: ValidationController;\r\n\r\n\tlanguages: Language[];\r\n\tlanguageDescs: string[];\r\n\t@observable selectedLanguage: Language;\r\n\tshowOtherLanguage: boolean = false;\r\n\totherLanguage: string;\r\n\tdeclineOption: Language;\r\n\totherLanguageOption: Language;\r\n\tselectALanguageOption: Language;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate consumerService: HpfConsumerService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate postLoginRouteManager: PostLoginRouteManager,\r\n\t\tvalidationControllerFactory: ValidationControllerFactory) {\r\n\t\tthis.validationController = validationControllerFactory.createForCurrentScope();\r\n\r\n\t\tthis.selectALanguageOption = new Language(null, this.i18n.i18next.t('selectALanguage', 'Select a language'));\r\n\t\tthis.declineOption = new Language('decline', this.i18n.i18next.t('declineToState', 'Decline to state'));\r\n\t\tthis.otherLanguageOption = new Language('other', this.i18n.i18next.t('Other', 'Other'));\r\n\r\n\t\tthis.configureValidationRules();\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.payrazrService.getISO6391Languages()\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet tempLanguageList: Language[] = [];\r\n\t\t\t\t// put default text first in list\r\n\t\t\t\ttempLanguageList.push(this.selectALanguageOption);\r\n\r\n\t\t\t\t// convert response into Language type\r\n\t\t\t\tresponse.forEach(item => {\r\n\t\t\t\t\ttempLanguageList.push(new Language(item.languageCode, item.languageName, item.languageNativeName));\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// move english to second\r\n\t\t\t\tlet indexOfEnglish = tempLanguageList.findIndex((l) => l.languageCode === 'en');\r\n\t\t\t\tArrayHelper.move(tempLanguageList, indexOfEnglish, 1);\r\n\r\n\t\t\t\t// Add our custom options\r\n\t\t\t\tArrayHelper.insert(tempLanguageList, this.declineOption, 2);\r\n\t\t\t\ttempLanguageList.push(this.otherLanguageOption);\r\n\r\n\t\t\t\tthis.languages = tempLanguageList;\r\n\t\t\t\tthis.languageDescs = this.languages.map(l => l.getLanguageDropDownName());\r\n\t\t\t});\r\n\t}\r\n\r\n\tselectedLanguageChanged(newValue: Language, oldValue: Language) {\r\n\t\tif (newValue === null) {\r\n\t\t\tthis.showOtherLanguage = false;\r\n\t\t}\r\n\t\telse if (newValue.languageCode === this.otherLanguageOption.languageCode) {\r\n\t\t\tthis.showOtherLanguage = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.showOtherLanguage = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcontinue() {\r\n\t\tthis.validationController.errors = [];\r\n\r\n\t\tthis.validationController.validate()\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.valid) {\r\n\t\t\t\t\tlet request = new SetConsumerUserPreferredLanguageRequest();\r\n\r\n\t\t\t\t\tif (this.selectedLanguage.languageCode === this.declineOption.languageCode) {\r\n\t\t\t\t\t\trequest.declinedToState = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.selectedLanguage.languageCode === this.otherLanguageOption.languageCode) {\r\n\t\t\t\t\t\trequest.otherLanguage = this.otherLanguage;\r\n\t\t\t\t\t\trequest.declinedToState = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\trequest.languageCode = this.selectedLanguage.languageCode;\r\n\t\t\t\t\t\trequest.declinedToState = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.consumerService.setConsumerUserPreferredLanguage(request)\r\n\t\t\t\t\t\t.then((serviceResponse: ServiceResponse) => {\r\n\t\t\t\t\t\t\tif (!serviceResponse.isSuccessful) {\r\n\t\t\t\t\t\t\t\tthis.validationController.errors.push(new ValidateResult(null, null, null, false, 'Unable to save preferred language'));\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.globalState.customer.preferredLanguageSettings.preferredLanguageCode = request.languageCode;\r\n\t\t\t\t\t\t\tthis.globalState.customer.preferredLanguageSettings.declinedToStatePreferredLanguage = request.declinedToState;\r\n\t\t\t\t\t\t\tthis.globalState.customer.preferredLanguageSettings.otherPreferredLanguage = request.otherLanguage;\r\n\r\n\t\t\t\t\t\t\tlet routeResponse = this.postLoginRouteManager.calculateRoute();\r\n\t\t\t\t\t\t\tif (routeResponse.routeSettings) {\r\n\t\t\t\t\t\t\t\tthis.router.currentInstruction.config.settings = routeResponse.routeSettings;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.router.navigateToRoute(routeResponse.route);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\t\tthis.validationController.errors.push(new ValidateResult(null, null, null, false, 'Unable to save preferred language'));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tconfigureValidationRules() {\r\n\t\tthis.validationController.addObject(this);\r\n\t\tlet self = this;\r\n\t\tValidationRules\r\n\t\t\t.ensureObject()\r\n\t\t\t.satisfies((x: PreferredLanguage) => self.selectedLanguage != null || self.otherLanguage != null)\r\n\t\t\t.withMessage(this.i18n.i18next.t('languageSelectionIsRequired', 'Language selection is required'))\r\n\r\n\t\t\t.ensure((x: PreferredLanguage) => x.selectedLanguage)\r\n\t\t\t.satisfies((x: PreferredLanguage) => self.otherLanguage != null && self.otherLanguage !== '')\r\n\t\t\t.when((x: PreferredLanguage) => self.selectedLanguage != null && self.selectedLanguage.languageCode === self.otherLanguageOption.languageCode)\r\n\t\t\t.withMessage(this.i18n.i18next.t('otherLanguageValidationText', 'Other Language is required if Other is selected'))\r\n\r\n\t\t\t.on(this);\r\n\t}\r\n}\r\n","module.exports = \"\";","import {DialogController} from 'aurelia-dialog';\r\nimport { I18N } from 'aurelia-i18n';\r\n \r\nexport class CancelRecurringDialog {\r\n\tstatic inject = [DialogController, I18N];\r\n\theader: string;\r\n\tsubheader: string;\r\n\r\n\tconstructor(public controller, private i18n) { }\r\n\r\n\tactivate() {\r\n\t\tthis.header = this.i18n.i18next.t('cancelRecurringPlan', 'Cancel Recurring Plan');\r\n\t\tthis.subheader = this.i18n.i18next.t('confirmCancelRecurring', 'You are about to cancel this recurring plan, do you wish to continue?');\r\n\t}\r\n}\r\n","module.exports = \" \\r\\n \\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { bindable, inject, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\n\r\n@autoinject\r\nexport class PayInInstallmentReceipt {\r\n\trouter: any;\r\n\teventAggregator: any;\r\n paymentInformation: any;\r\n\taccount: Account;\r\n\tbucketKey: number | null;\r\n\r\n\tconstructor(private globalState: State, router: Router, eventAggregator: EventAggregator) {\r\n\t\tthis.router = router;\r\n\t\tthis.eventAggregator = eventAggregator;\r\n\t}\r\n\tactivate(model, routeData) {\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === model.id;\r\n\t\t});\r\n\t\tthis.bucketKey = this.account.bucket\r\n\t\t\t? this.account.bucket.bucketKey\r\n\t\t\t: this.account.bucketKey || null;\r\n this.paymentInformation = routeData.paymentInformation;\r\n\t}\r\n\treturnToDashboard() {\r\n\t\tthis.router.navigateToRoute('dashboard');\r\n\t}\r\n}","module.exports = \"\\r\\n\\r\\n\";","import { autoinject, computedFrom } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router, RouteConfig } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport numeral from 'numeral';\r\nimport { AchToken } from '../../models/ach-token';\r\nimport { CardToken } from '../../models/card-token';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PortalTemplateTypes } from '../../services/template-service';\r\nimport { Customer } from '../../models/customer';\r\nimport { PaymentPlanType } from '../../models/paymentPlanType';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../models/merchant-consumer-portal-fee-settings';\r\nimport { PaymentPlanSettings } from '../../models/payment-plan-settings';\r\nimport { ApplePaySettings, ApplePayUtil, DigitalWalletPaymentDetails, DigitalWalletType } from '../../models/digital-wallet';\r\nimport { PaymentFeeType } from '../../models/hpfApi';\r\n\r\n@autoinject\r\nexport class SetupRecurring {\r\n\tpaymentInformation: any;\r\n\taccount: any;\r\n\tcustomer: Customer;\r\n\tportfolioSettings: any;\r\n\trecurringSettings: any;\r\n\tnumberOfRetries: any;\r\n\tbalance: any;\r\n\tselectedInstallmentNumber: any;\r\n\tvalidationErrors: any;\r\n\tmovingToConfirmationPage: any;\r\n\tisSubmitting = false;\r\n\tcardNumber: any;\r\n\tcardInfoKey: any;\r\n\r\n\t// for changed event\r\n\tpaymentAmount: any = '';\r\n\tlastPaymentDate: any = '';\r\n\tselectedFrequency: any;\r\n\tfirstPaymentDate: any;\r\n\tavailableFrequencies: any;\r\n\tminFuture: any;\r\n\tmaxFuture: any;\r\n\tmaxLastFutureDays: any;\r\n\thideTheIndefiniteIndicator: any;\r\n\tcalendarDisplayMode: any;\r\n\tconvenienceFeeDisclosure: any;\r\n\trecurringOptionsSelected: any;\r\n\tstate: string = 'setup';\r\n\tconfirmationTemplateData: TemplateData;\r\n\tconfirmationTitle: string;\r\n\ttotalServiceFee: any;\r\n\tpaymentDate: any;\r\n\ttransactionError: any;\r\n\tsingleServiceFee: any;\r\n\tfirstName: any;\r\n\tlastName: any;\r\n\ttoday: any;\r\n\tcontent: any;\r\n\thashedContent: any;\r\n\tcalculatedFeeAmount: number = 0;\r\n\tcalculatedTotalAmount: number = 0;\r\n\tisDigitalWallet: boolean;\r\n\tmerchantKey: number;\r\n\tmerchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings = new MerchantConsumerPortalFeeSettings();\r\n\tpaymentPlanSettings: PaymentPlanSettings = new PaymentPlanSettings();\r\n\r\n\tget isApplePay(): boolean {\r\n\t\treturn this.isDigitalWallet && this.paymentInformation.digitalWalletSettings?.isApplePay();\r\n\t}\r\n\r\n\tlastPaymentDateRadioByDate = {\r\n\t\tid:1,\r\n\t\tdescription:'By Date'\r\n\t};\r\n\r\n\tlastPaymentDateRadioIndefinite = {\r\n\t\tid:2,\r\n\t\tdescription:'Indefinite'\r\n\t};\r\n\r\n\tlastPaymentDateOptions = [\r\n\t\tthis.lastPaymentDateRadioByDate,\r\n\t\tthis.lastPaymentDateRadioIndefinite\r\n\t];\r\n\r\n\tlastPaymentDateOptionSelected: number = 0;\r\n\r\n\tconstructor(private router: Router, private globalState: State, private payrazrService: PayrazrService, private i18n: I18N) {\r\n\t\tthis.firstPaymentDate = '';\r\n\t\tthis.availableFrequencies = [];\r\n\t\tthis.minFuture = 0;\r\n\t\tthis.maxFuture = 60;\r\n\t\tthis.maxLastFutureDays = 9999999;\r\n\t\tthis.calendarDisplayMode = 0;\r\n\t\tthis.selectedFrequency = '';\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.today = moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY');\r\n\t\tthis.confirmationTitle = this.i18n.i18next.t('completePlanSetUp', 'Please review the below information, enter the Account Holder Name EXACTLY AS IT APPEARS BELOW, and click \"I Accept\", in order to complete the plan set-up.');\r\n\t}\r\n\r\n\tactivate(params) {\r\n\t\tthis.account = this.globalState.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === params.id;\r\n\t\t});\r\n\r\n\t\tthis.customer = this.globalState.customer;\r\n\r\n\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\tcustomer.accounts.forEach(account => {\r\n\t\t\t\t\tif (this.account.customerAccountKey === account.customerAccountKey) {\r\n\t\t\t\t\t\tthis.customer = customer;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst currentPortfolio = this.globalState.business.fetchPortfolioSettings(this.account.portfolioName);\r\n\t\t// map recurring settings\r\n\t\tthis.portfolioSettings = currentPortfolio.settings;\r\n\t\tthis.recurringSettings = this.portfolioSettings.paymentTypes.recurring;\r\n\t\tthis.numberOfRetries = parseInt(this.recurringSettings.numberOfRetriesForCardDeclines, 10);\r\n\t\tthis.balance = this.account.balance;\r\n\t\tthis.availableFrequencies = this.recurringSettings.paymentFrequencies;\r\n\r\n\t\tthis.setMaxPaymentDates();\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.paymentPlanSettings.accountId = this.account.id;\r\n\t\tthis.paymentPlanSettings.paymentPlanType = PaymentPlanType.Recurring;\r\n\t\tthis.paymentPlanSettings.paymentFeeType = PaymentFeeType.PaymentPlan;\r\n\r\n\t\tconst currentPortfolio = this.globalState.business.fetchPortfolioSettings(this.account.portfolioName);\r\n\t\t// map key and fee settings from merchant settings\r\n\t\tthis.merchantKey = currentPortfolio.merchantSettings.merchantKey;\r\n\t\tthis.merchantConsumerPortalFeeSettings.feesEnabled = currentPortfolio.merchantSettings.feeSettings.serviceFeeEnabled;\r\n\t\tthis.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans = currentPortfolio.merchantSettings.feeSettings.allowFeesOnPaymentPlans;\r\n\t\tthis.merchantConsumerPortalFeeSettings.allowServiceFeesOnEveryTransaction = currentPortfolio.merchantSettings.feeSettings.allowServiceFeesOnEveryTransaction;\r\n\t}\r\n\r\n\ttranslateFrequency(frequencyId: number) {\r\n\t\tswitch (frequencyId) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn this.i18n.i18next.t('selectAValue', 'Please select a value');\r\n\t\t\tcase 1:\r\n\t\t\t\treturn this.i18n.i18next.t('weekly', 'Weekly');\r\n\t\t\tcase 2:\r\n\t\t\t\treturn this.i18n.i18next.t('every2Weeks', 'Every 2 weeks');\r\n\t\t\tcase 3:\r\n\t\t\t\treturn this.i18n.i18next.t('every28Days', 'Every 28 Days');\r\n\t\t\tcase 4:\r\n\t\t\t\treturn this.i18n.i18next.t('monthly', 'Monthly');\r\n\t\t\tcase 5:\r\n\t\t\t\treturn this.i18n.i18next.t('eachMonth15', '15th of each month');\r\n\t\t\tcase 6:\r\n\t\t\t\treturn this.i18n.i18next.t('endOfMonth', 'End of month');\r\n\t\t\tcase 7:\r\n\t\t\t\treturn this.i18n.i18next.t('every2Months', 'Every 2 months');\r\n\t\t}\r\n\t}\r\n\r\n\tindefiniteLastPaymentChanged() {\r\n\t\tthis.lastPaymentDate = '';\r\n\t\tthis.lastPaymentDateOptionSelected = this.lastPaymentDateRadioIndefinite.id;\r\n\t}\r\n\r\n\tlastPaymentDateChanged() {\r\n\t\tif (this.lastPaymentDateOptionSelected !== this.lastPaymentDateRadioByDate.id) {\r\n\t\t\tthis.lastPaymentDateOptionSelected = this.lastPaymentDateRadioByDate.id;\r\n\t\t}\r\n\t}\r\n\r\n\tpaymentAmountChanged() {\r\n\t\tthis.frequencyToDisplayMode();\r\n\r\n\t\tif (this.paymentAmount === '') { return; }\r\n\r\n\t\ttry {\r\n\t\t\tthis.paymentAmount = numeral(this.paymentAmount).format('0.00');\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tthis.paymentAmount = '';\r\n\t\t}\r\n\t}\r\n\r\n\tselectedFrequencyChanged() {\r\n\t\tthis.firstPaymentDate = '';\r\n\t\tthis.frequencyToDisplayMode();\r\n\t}\r\n\r\n\tfrequencyToDisplayMode() {\r\n\t\tthis.calendarDisplayMode = 0;\r\n\r\n\t\tlet indexofSelectedFrequency = parseInt(this.selectedFrequency, 10);\r\n\t\tif (indexofSelectedFrequency === 5) { this.midofEachMonthHandler(); }\r\n\t\tif (indexofSelectedFrequency === 6) { this.endOfMonthHandler(); }\r\n\t}\r\n\r\n\tmidofEachMonthHandler() {\r\n\t\tthis.calendarDisplayMode = 1;\r\n\t\tlet newDate = new Date(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\t\tlet theNumOfDate = newDate.getDate();\r\n\t\tlet currentMidOfMonth = new Date(newDate.getFullYear(), newDate.getMonth(), 15);\r\n\t\tlet nextMidOfMonth = new Date(newDate.getFullYear(), newDate.getMonth() + 1, 15);\r\n\r\n\t\tlet midOfMonth = theNumOfDate <= 15 ? currentMidOfMonth : nextMidOfMonth;\r\n\t\tthis.firstPaymentDate = moment(midOfMonth).format('MM/DD/YYYY');\r\n\t}\r\n\r\n\tendOfMonthHandler() {\r\n\t\tthis.calendarDisplayMode = 2;\r\n\t\tlet newDate = new Date(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\t\tlet endOfMonth = new Date(newDate.getFullYear(), newDate.getMonth() + 1, 0);\r\n\t\tthis.firstPaymentDate = moment(endOfMonth).format('MM/DD/YYYY');\r\n\t}\r\n\r\n\tget numberOfServiceFee() {\r\n\t\t// todo: need to create a new api call to get the exact number of service fee\r\n\t\tif (!this.selectedInstallmentNumber || this.selectedInstallmentNumber === 'Please select a value') {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\treturn this.selectedInstallmentNumber.split(' ')[0];\r\n\t}\r\n\r\n\tget customerAccountKeys(): number[] {\r\n\t\treturn [this.account.customerAccountKey];\r\n\t}\r\n\r\n\tget allowFeesOnPaymentPlans(): boolean {\r\n\t\treturn this.merchantConsumerPortalFeeSettings.feesEnabled && this.merchantConsumerPortalFeeSettings.allowFeesOnPaymentPlans;\r\n\t}\r\n\r\n\tnext(event: CustomEvent) {\r\n\t\tthis.validationErrors = event.detail.errors;\r\n\t\tthis.validate();\r\n\t\tif (this.validationErrors.length === 0) {\r\n\t\t\tthis.paymentInformation = event.detail;\r\n\t\t\tthis.paymentInformationFromForm();\r\n\t\t\tthis.paymentPlanSettings.recurring = this.paymentInformation.recurring;\r\n\t\t\tthis.cardNumber = this.paymentInformation.card ? this.paymentInformation.card.cardNumber : null;\r\n\t\t\tthis.cardInfoKey = this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod ? this.paymentInformation.card.selectedPaymentMethod.cardInfoKey : null;\r\n\r\n\t\t\t// map Apple Pay\r\n\t\t\tif (this.isDigitalWallet && this.paymentInformation.digitalWalletSettings?.isApplePay()) {\r\n\t\t\t\tthis.setApplePaySettingsRecurringFields();\r\n\t\t\t\tthis.getConfirmationTemplateData();\r\n\t\t\t\tthis.showConfirmation();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.payrazrService.calculateFee(event.detail.card ? true : false, this.account.portfolioName, event.detail.zipCode, event.detail.amount, this.cardNumber, this.cardInfoKey, this.customerAccountKeys, PaymentPlanType.Recurring)\r\n\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\tthis.paymentInformation.firstPaymentFee = result.entity.fee;\r\n\t\t\t\t\t\tlet feeOnSubsequentPayments = this.merchantConsumerPortalFeeSettings.allowServiceFeesOnEveryTransaction ? result.entity.fee : 0;\r\n\t\t\t\t\t\tthis.paymentInformation.subsequentPaymentFee = feeOnSubsequentPayments;\r\n\t\t\t\t\t\tthis.getConfirmationTemplateData();\r\n\t\t\t\t\t\tthis.showConfirmation();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\talert(this.i18n.i18next.t('unableToCommunicateWithServer', 'Unable to communicate with the server. Please try again.'));\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetApplePaySettingsRecurringFields(): void {\r\n\t\tif (!this.paymentInformation.digitalWalletSettings?.isApplePay()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst applePaySettings: ApplePaySettings = this.paymentInformation.digitalWalletSettings as ApplePaySettings;\r\n\r\n\t\t// recurring requests are set to pending to display 'amount pending' text in modal\r\n\t\tapplePaySettings.totalType = 'pending';\r\n\t\tapplePaySettings.recurringAmount = this.paymentAmount;\r\n\t\tapplePaySettings.recurringLabel = '';\r\n\t\tapplePaySettings.paymentDescription = this.i18n.i18next.t('setUpRecurringPaymentPlan', 'Set Up A Recurring Payment Plan');\r\n\t\tapplePaySettings.paymentTiming = 'recurring';\r\n\t\tapplePaySettings.recurringPaymentStartDate = new Date(this.firstPaymentDate);\r\n\t\tapplePaySettings.recurringPaymentIntervalUnit = ApplePayUtil.getRecurringPaymentDateUnit(this.selectedFrequency);\r\n\t\tapplePaySettings.recurringPaymentIntervalCount = ApplePayUtil.getRecurringPaymentIntervalCount(this.selectedFrequency);\r\n\t\tapplePaySettings.billingAgreement = ApplePayUtil.getBillingAgreement(this.merchantConsumerPortalFeeSettings, this.i18n);\r\n\t\tapplePaySettings.mangementURL = this.getViewInstallmentUrl();\r\n\r\n\t\tif (this.paymentInformation.recurring.lastPaymentDate) {\r\n\t\t\tapplePaySettings.recurringPaymentEndDate = new Date(this.paymentInformation.recurring.lastPaymentDate);\r\n\t\t}\r\n\r\n\t\tthis.paymentInformation.digitalWalletSettings = applePaySettings;\r\n\t}\r\n\r\n\tgetViewInstallmentUrl(): string {\r\n\t\tlet urlSplit: string[] = window.location.href.split('/');\r\n\t\turlSplit.pop();\r\n\t\treturn urlSplit.join('/') + '/view';\r\n\t}\r\n\r\n\tshowConfirmation() {\r\n\t\tthis.state = 'confirmation';\r\n\t}\r\n\r\n\thideConfirmation() {\r\n\t\tthis.state = 'setup';\r\n\t}\r\n\r\n\tgetConfirmationTemplateData() {\r\n\t\tthis.totalServiceFee = 0;\r\n\r\n\t\tlet customObject: any = {\r\n\t\t\tpaymentAmount : numeral(this.paymentInformation.recurring.paymentAmount).format('($0,0.00)'),\r\n\t\t\taccountNumberLabel : this.globalState.business.portalSettings.accountNumberLabel,\r\n\t\t\tcustomerAccountNumber: this.account.referenceId,\r\n\t\t\taccountNumber: this.account.referenceId, // backward compatibility\r\n\t\t\tcustomerAccountName: this.account.name,\r\n\t\t\tbalance: numeral(this.account.balance).format('($0,0.00)'),\r\n\t\t\tfirstPaymentFee: this.firstPaymentFee,\r\n\t\t\tsubsequentPaymentFee: this.subsequentPaymentFee,\r\n\t\t\tfrequency : this.paymentInformation.recurring.frequency.name,\r\n\t\t\ttotal : numeral(this.calculatedTotalAmount).format('($0,0.00)'),\r\n\t\t\tmerchantName : this.globalState.business.name,\r\n\t\t\tpaymentScheduleTable: '',\r\n\t\t\tnumberOfRetries: this.paymentInformation.recurring.numberOfRetriesForCardDeclines,\r\n\t\t\taccountName: this.customer.name,\r\n\t\t\tzipCode: this.isDigitalWallet ? 'Will Display in Apple Pay' : this.paymentInformation.zipCode,\r\n\t\t\tpaymentMethod: this.paymentMethod,\r\n\t\t\tcustomerAccountLocationName: (this.account.bucket) ? this.account.bucket.displayName : '',\r\n\t\t\tcustomerAccountLocationReferenceId: (this.account.bucket) ? this.account.bucket.referenceId : '',\r\n\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\tbillingEmail: this.globalState.customer.email,\r\n\t\t\toriginalLenderName: this.account.originalLenderName,\r\n\t\t\trepaymentType: this.account.repaymentType\r\n\t\t};\r\n\r\n\t\tconst merchantKey = this.globalState.business.getMerchantKeyAssociatedToPortfolioByPortfolioName(this.account.portfolioName);\r\n\t\tthis.confirmationTemplateData = new TemplateData(customObject, merchantKey);\r\n\t}\r\n\r\n\tget firstPaymentFee(): string {\r\n\t\treturn this.isDigitalWallet && this.allowFeesOnPaymentPlans\r\n\t\t\t? 'Will Display in Apple Pay'\r\n\t\t\t: numeral(this.paymentInformation.firstPaymentFee).format('($0,0.00)');\r\n\t}\r\n\r\n\tget subsequentPaymentFee(): string {\r\n\t\treturn this.isDigitalWallet && this.allowFeesOnPaymentPlans && this.merchantConsumerPortalFeeSettings.allowServiceFeesOnEveryTransaction\r\n\t\t\t? 'Will Display in Apple Pay'\r\n\t\t\t: numeral(this.paymentInformation.subsequentPaymentFee).format('($0,0.00)');\r\n\t}\r\n\r\n\tget paymentMethod() {\r\n\t\tif (this.paymentInformation.isWallet) {\r\n\t\t\tif (this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.card.selectedPaymentMethod.cardType} ending ${this.paymentInformation.card.selectedPaymentMethod.last4ofCard}`, paymentMethodTypes: this.paymentInformation.card.selectedPaymentMethod.cardType, accountNumber: this.paymentInformation.card.selectedPaymentMethod.last4ofCard });\r\n\t\t\t}\r\n\t\t\telse if (this.paymentInformation.check && this.paymentInformation.check.selectedPaymentMethod) {\r\n\t\t\t\treturn this.i18n.i18next.t('walletPaymentMethods', { defaultValue: `${this.paymentInformation.check.selectedPaymentMethod.achAccountType} ending ${this.paymentInformation.check.selectedPaymentMethod.last4ofAccount}`, paymentMethodTypes: this.paymentInformation.check.selectedPaymentMethod.achAccountType, accountNumber: this.paymentInformation.check.selectedPaymentMethod.last4ofAccount });\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.paymentInformation.isCardPayment) {\r\n\t\t\t\treturn this.paymentInformation.card.description;\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.isCheckPayment) {\r\n\t\t\t\treturn this.paymentInformation.check.description;\r\n\t\t\t}\r\n\t\t\tif (this.paymentInformation.isDigitalWallet) {\r\n\t\t\t\treturn this.paymentInformation.digitalWalletSettings.getDigitalWalletName();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsubmit($event: CustomEvent) {\r\n\t\tthis.paymentDate = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\r\n\t\treturn this.handleSaveToWallet()\r\n\t\t\t.then(response => {\r\n\t\t\t\t// TODO: Throw an error message specifying that the payment\r\n\t\t\t\t// method could not be added to the wallet.\r\n\t\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = !!response.entity;\r\n\r\n\t\t\t\tif (this.paymentInformation.savedPaymentMethodToWallet) {\r\n\t\t\t\t\tif (!!this.paymentInformation.card) {\r\n\t\t\t\t\t\tthis.paymentInformation.card.cardInfoKey = response.entity.cardInfoKey;\r\n\t\t\t\t\t} else if (!!this.paymentInformation.check) {\r\n\t\t\t\t\t\tthis.paymentInformation.check.checkInfoKey = response.entity.checkInfoKey;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.callApiBasedOnPaymentMechanism($event.detail);\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.response.isSuccessful) {\r\n\t\t\t\t\tthis.paymentInformation.planId = result.response.planId;\r\n\t\t\t\t\tthis.paymentInformation.merchantKey = result.response.merchantKey;\r\n\t\t\t\t\tthis.paymentInformation.portalTemplateType = this.isCardPayment()\r\n\t\t\t\t\t\t? PortalTemplateTypes.CreditCardRecurringPaymentPlanReceipt\r\n\t\t\t\t\t\t: PortalTemplateTypes.CheckRecurringPaymentPlanReceipt;\r\n\t\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.paymentInformation.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = result.response.savedPaymentMethodToWallet;\r\n\t\t\t\t\tthis.paymentInformation.resultCode = result.response.resultCode;\r\n\t\t\t\t\tthis.paymentInformation.resultMessage = result.response.message;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.isApplePay) {\r\n\t\t\t\t\tconst isSuccessful: boolean = result.response.isSuccessful;\r\n\t\t\t\t\tApplePayUtil.completeSession($event, isSuccessful);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.navigateToReceipt();\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (this.isDigitalWallet) {\r\n\t\t\t\t\tconst isSuccessful: boolean = false;\r\n\t\t\t\t\tApplePayUtil.completeSession($event, isSuccessful);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.transactionError = error;\r\n\t\t\t});\r\n\t}\r\n\r\n\tnavigateToReceipt(): void {\r\n\t\tthis.isSubmitting = false;\r\n\t\tconst receiptRoute: RouteConfig = this.router.routes.find(x => x.name === 'recurring/recurring-receipt');\r\n\t\treceiptRoute.paymentInformation = this.paymentInformation;\r\n\t\tthis.router.navigateToRoute(receiptRoute.name, { id: this.account.id });\r\n\t}\r\n\r\n\thandleSaveToWallet(): Promise {\r\n\t\tlet saveToWallet = this.paymentInformation.addPaymentMethodToWalletIsSelected;\r\n\r\n\t\tif (saveToWallet\r\n\t\t\t&& this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected = false;\r\n\t\t}\r\n\r\n\t\tif (!saveToWallet\r\n\t\t\t|| !this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\treturn new Promise(resolve => {\r\n\t\t\t\tresolve({\r\n\t\t\t\t\tisSuccessful: true\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet customerId: string = this.globalState.customer.id;\r\n\r\n\t\t// Use the customer.id of the customer in context.\r\n\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\tcustomer.accounts.forEach(account => {\r\n\t\t\t\t\tif (this.account.customerAccountKey === account.customerAccountKey) {\r\n\t\t\t\t\t\tcustomerId = customer.id;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!!this.paymentInformation.card) {\r\n\t\t\tlet cardToken = new CardToken();\r\n\t\t\tcardToken.cardholderName = this.paymentInformation.name;\r\n\t\t\tcardToken.cardNumber = this.paymentInformation.card.cardNumber;\r\n\t\t\tcardToken.expirationDate = this.paymentInformation.card.expirationDate;\r\n\t\t\tcardToken.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\t\treturn this.payrazrService.addCardPaymentMethod(cardToken, false, customerId);\r\n\t\t} else if (!!this.paymentInformation.check) {\r\n\t\t\tlet achToken = new AchToken();\r\n\t\t\tachToken.accountName = this.paymentInformation.name;\r\n\t\t\tachToken.accountNumber = this.paymentInformation.check.accountNumber;\r\n\t\t\tachToken.aba = this.paymentInformation.check.transitNumber;\r\n\t\t\tachToken.accountType = this.paymentInformation.check.accountType;\r\n\t\t\tachToken.addressLine1 = this.paymentInformation.check.addressLine1;\r\n\t\t\tachToken.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\t\treturn this.payrazrService.addAchPaymentMethod(achToken, false, customerId);\r\n\t\t}\r\n\t}\r\n\r\n\tcallApiBasedOnPaymentMechanism(submitEvent: any) {\r\n\t\tlet isCardPayment = this.isCardPayment();\r\n\t\tlet paymentDetails = this.getPaymentDetailsForPlanSubmission(submitEvent);\r\n\t\tlet retries = isCardPayment ? this.paymentInformation.recurring.numberOfRetriesForCardDeclines : 0;\r\n\r\n\t\tif (this.isDigitalWallet) {\r\n\t\t\tthis.singleServiceFee = submitEvent.calculatedServiceFee;\r\n\t\t}\r\n\r\n\t\treturn this.payrazrService.createRecurringPaymentPlan(\r\n\t\t\tisCardPayment,\r\n\t\t\tthis.account,\r\n\t\t\tthis.paymentInformation.recurring.paymentAmount,\r\n\t\t\tthis.paymentInformation.recurring.firstPaymentDate,\r\n\t\t\tthis.paymentInformation.recurring.lastPaymentDate,\r\n\t\t\tthis.paymentInformation.firstPaymentFee,\r\n\t\t\tthis.paymentInformation.subsequentPaymentFee,\r\n\t\t\tthis.paymentInformation.name,\r\n\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\tthis.paymentInformation.billingState,\r\n\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tthis.totalServiceFee,\r\n\t\t\tthis.singleServiceFee,\r\n\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\tpaymentDetails,\r\n\t\t\tretries,\r\n\t\t\tthis.paymentInformation.recurring.frequency.id,\r\n\t\t\tthis.firstName,\r\n\t\t\tthis.lastName,\r\n\t\t\tthis.today, // this.signedDate,\r\n\t\t\tsubmitEvent.content,\r\n\t\t\tsubmitEvent.hashedContent,\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\tnull,\r\n\t\t\tthis.isDigitalWallet);\r\n\t}\r\n\r\n\tgetPaymentDetailsForPlanSubmission(submitEvent: any): any {\r\n\t\tif (this.isDigitalWallet && submitEvent.digitalWalletType === DigitalWalletType.ApplePay) {\r\n\t\t\treturn this.getDigitalWalletPaymentDetailsFromSubmitEvent(submitEvent);\r\n\t\t}\r\n\t\treturn this.isCardPayment() ? this.paymentInformation.card : this.paymentInformation.check;\r\n\t}\r\n\r\n\tgetDigitalWalletPaymentDetailsFromSubmitEvent(submitEvent: any): DigitalWalletPaymentDetails {\r\n\t\tif (submitEvent.digitalWalletType === DigitalWalletType.ApplePay) {\r\n\t\t\tconst applePayPayment: ApplePayJS.ApplePayPayment = submitEvent.payment;\r\n\t\t\tconst applePayPaymentToken = JSON.stringify(applePayPayment.token);\r\n\t\t\tlet digitalWalletPaymentDetails: DigitalWalletPaymentDetails = {\r\n\t\t\t\tauthenticationPaymentToken: btoa(applePayPaymentToken),\r\n\t\t\t\tdigitalWalletType: DigitalWalletType.ApplePay,\r\n\t\t\t\tisDebitCard: applePayPayment.token.paymentMethod.type === 'debit',\r\n\t\t\t\tisCreditCard: applePayPayment.token.paymentMethod.type === 'credit',\r\n\t\t\t\taccountName: applePayPayment.billingContact?.givenName + ' ' + applePayPayment.billingContact?.familyName,\r\n\t\t\t\tzipCode: applePayPayment.billingContact?.postalCode ?? '',\r\n\t\t\t};\r\n\r\n\t\t\treturn digitalWalletPaymentDetails;\r\n\t\t}\r\n\t}\r\n\r\n\tshowErrorMessage(message: string) {\r\n\t\talert(message);\r\n\t}\r\n\r\n\tisCardPayment(): boolean {\r\n\t\treturn !!this.paymentInformation.card || this.isDigitalWalletCard();\r\n\t}\r\n\r\n\tisDigitalWalletCard(): boolean {\r\n\t\treturn this.isDigitalWallet && (this.paymentInformation.digitalWalletSettings?.isApplePay() ?? false);\r\n\t}\r\n\r\n\tpaymentInformationFromForm() {\r\n\t\tlet selectedFrequency = this.selectedFrequency;\r\n\t\tlet frequency = this.recurringSettings.paymentFrequencies.find(x => x.id == selectedFrequency);\r\n\t\t/*collect recurring details to paymentinformation*/\r\n\t\tthis.paymentInformation.recurring = {\r\n\t\t\tpaymentAmount: this.paymentAmount,\r\n\t\t\tfirstPaymentDate: this.firstPaymentDate,\r\n\t\t\tlastPaymentDate: this.lastPaymentDate,\r\n\t\t\tfrequency,\r\n\t\t\tnumberOfRetriesForCardDeclines: this.recurringSettings.numberOfRetriesForCardDeclines\r\n\t\t};\r\n\t}\r\n\r\n\t@computedFrom('availableFrequencies')\r\n\tget availableFrequencyIds(): number[] {\r\n\t\tlet opts: number[] = this.availableFrequencies.map(freq => freq.id);\r\n\t\treturn [0, ...opts]; // prepend 'Please select a value' option\r\n\t}\r\n\r\n\t@computedFrom('availableFrequencyIds')\r\n\tget availableFrequencyDescriptions(): string[] {\r\n\t\treturn this.availableFrequencyIds.map(id => this.translateFrequency(id));\r\n\t}\r\n\r\n\tvalidate() {\r\n\t\tif (this.paymentAmount === '') {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectPaymentAmount', 'Please select a payment amount'));\r\n\t\t}\r\n\r\n\t\tif (this.selectedFrequency === '0') {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectFrequencyOfRecurringPayments', 'Please select the frequency of recurring payments'));\r\n\t\t}\r\n\r\n\t\tthis.validatePaymentDates();\r\n\t}\r\n\r\n\tvalidatePaymentDates() {\r\n\t\tlet firstPaymentDate = moment(this.firstPaymentDate, 'MM/DD/YYYY');\r\n\t\tlet lastPaymentDate = moment(this.lastPaymentDate, 'MM/DD/YYYY');\r\n\r\n\t\tlet minFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.minFuture, 'd').startOf('day');\r\n\t\tlet maxFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.maxFuture, 'd').endOf('day');\r\n\t\tlet maxLastFutureDays = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.maxLastFutureDays, 'd').endOf('day');\r\n\r\n\t\tif (!firstPaymentDate.isValid()) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectValidFirstPaymentDate', 'Please select a valid first payment date'));\r\n\t\t}\r\n\r\n\t\tif (firstPaymentDate < moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).startOf('day')) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('firstPaymentDateCannotBeInPast', 'First payment date cannot be in the past'));\r\n\t\t}\r\n\r\n\t\tif (firstPaymentDate > maxFuture) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateCannotBeMoreThan', { defaultValue: 'Payment date cannot be more than ' + this.maxFuture + ' day' + (this.maxFuture > 1 ? 's' : '') + ' from now', future: this.maxFuture, sAddition: this.maxFuture > 1 ? 's' : '' }));\r\n\t\t}\r\n\r\n\t\tif (lastPaymentDate > maxLastFutureDays) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('paymentDateCannotBeMoreThan', { defaultValue: 'Payment date cannot be more than ' + this.maxLastFutureDays + ' day' + (this.maxLastFutureDays > 1 ? 's' : '') + ' from now', future: this.maxLastFutureDays, sAddition: this.maxLastFutureDays > 1 ? 's' : '' }));\r\n\t\t}\r\n\r\n\t\tif (this.lastPaymentDateOptionSelected === this.lastPaymentDateRadioByDate.id) {\r\n\t\t\tif (!lastPaymentDate.isValid()) {\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('selectValidLastPaymentDate', 'Please select a valid last payment date'));\r\n\t\t\t}\r\n\r\n\t\t\tif (lastPaymentDate < firstPaymentDate) {\r\n\t\t\t\tthis.validationErrors.push(this.i18n.i18next.t('lastPaymentDateCannotBeBeforeFirst', 'Last payment date cannot be before first payment date'));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t\t\tthis.validationErrors = [];\r\n\t\t\treturn;\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.validationErrors = new Array();\r\n\t}\r\n\r\n\tsetMaxPaymentDates() {\r\n\t\tthis.maxFuture = this.recurringSettings.maxFirstRecurringPaymentFutureDays;\r\n\t\tthis.lastPaymentDateOptionSelected = this.lastPaymentDateRadioByDate.id;\r\n\t\tthis.maxLastFutureDays = this.recurringSettings.maxLastRecurringPaymentFutureDays || this.maxLastFutureDays;\r\n\t\tthis.hideTheIndefiniteIndicator = this.recurringSettings.hideTheIndefiniteIndicator;\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","import { Router, RouteConfig } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { Business } from '../../models/business';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { mock, instance, when, verify, resetCalls, anything } from 'ts-mockito';\r\nimport { SetupRecurring } from './setup-recurring';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ApplePaySettings, ApplePayUtil, DigitalWalletSettings, DigitalWalletType } from '../../models/digital-wallet';\r\nimport * as moment from 'moment';\r\nimport { PortalTemplateTypes } from '../../services/template-service';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('recurring', () => {\r\n\t\t\tdescribe('setup-recurring', () => {\r\n\t\t\t\tlet component: SetupRecurring;\r\n\t\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\t\tlet stubState: State;\r\n\t\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\t\tconst mockAccount: Account = mock(Account);\r\n\t\t\t\tconst mockApplePaySettings: ApplePaySettings = mock(ApplePaySettings);\r\n\t\t\t\tlet stubMockEvent: CustomEvent;\r\n\r\n\t\t\t\tlet portalSettings = {\r\n\t\t\t\t\tportfolioKey: 7845,\r\n\t\t\t\t\tname: 'Z2305422 Default Portfolio',\r\n\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\trehab: {\r\n\t\t\t\t\t\t\t\temail: null,\r\n\t\t\t\t\t\t\t\tphone: null,\r\n\t\t\t\t\t\t\t\taddress1: null,\r\n\t\t\t\t\t\t\t\taddress2: null,\r\n\t\t\t\t\t\t\t\taddress3: null,\r\n\t\t\t\t\t\t\t\ttaxTransactionType: null,\r\n\t\t\t\t\t\t\t\ttaxTranscriptType: '1040-C',\r\n\t\t\t\t\t\t\t\tpayInFull: null,\r\n\t\t\t\t\t\t\t\tsettleNow: null,\r\n\t\t\t\t\t\t\t\tfirstPaymentLimit: null\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tmaxFutureDays: 1,\r\n\t\t\t\t\t\t\tallowSingle: true,\r\n\t\t\t\t\t\t\tallowFuture: true,\r\n\t\t\t\t\t\t\tallowRehab: false,\r\n\t\t\t\t\t\t\tallowInstallments: false,\r\n\t\t\t\t\t\t\tinstallments: {\r\n\t\t\t\t\t\t\t\tmaxFirstInstallmentFutureDays: 10,\r\n\t\t\t\t\t\t\t\tnumberOfRetriesForCardDeclines: 0,\r\n\t\t\t\t\t\t\t\tbalanceRanges: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tmin: 1,\r\n\t\t\t\t\t\t\t\t\t\tmax: 9999999,\r\n\t\t\t\t\t\t\t\t\t\tpayInFull: true,\r\n\t\t\t\t\t\t\t\t\t\tpayInFullDiscountPercent: 0,\r\n\t\t\t\t\t\t\t\t\t\tenableInstallments: true,\r\n\t\t\t\t\t\t\t\t\t\tenableNegotiator: true,\r\n\t\t\t\t\t\t\t\t\t\tinstallments: [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tnumber: 2,\r\n\t\t\t\t\t\t\t\t\t\t\t\tdiscountPercent: 0\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tnumber: 4,\r\n\t\t\t\t\t\t\t\t\t\t\t\tdiscountPercent: 2\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tnumber: 8,\r\n\t\t\t\t\t\t\t\t\t\t\t\tdiscountPercent: 4\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\trecurringPaymentsFrequencies: [\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Weekly'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 3,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Every 28 Days'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: '15th of each month'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 7,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Every 2 months'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 6,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'End of month'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 4,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Monthly'\r\n\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: 2,\r\n\t\t\t\t\t\t\t\t\t\t\t\tname: 'Every 2 weeks'\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\trecurringPaymentsFrequencies: []\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tallowRecurring: true,\r\n\t\t\t\t\t\t\trecurring: {\r\n\t\t\t\t\t\t\t\tmaxFirstRecurringPaymentFutureDays: 30,\r\n\t\t\t\t\t\t\t\tmaxLastRecurringPaymentFutureDays: null,\r\n\t\t\t\t\t\t\t\thideTheIndefiniteIndicator: false,\r\n\t\t\t\t\t\t\t\tnumberOfRetriesForCardDeclines: 0,\r\n\t\t\t\t\t\t\t\tpaymentFrequencies: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 4,\r\n\t\t\t\t\t\t\t\t\t\tname: 'Monthly'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 1,\r\n\t\t\t\t\t\t\t\t\t\tname: 'Weekly'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 3,\r\n\t\t\t\t\t\t\t\t\t\tname: 'Every 28 Days'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 5,\r\n\t\t\t\t\t\t\t\t\t\tname: '15th of each month'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 7,\r\n\t\t\t\t\t\t\t\t\t\tname: 'Every 2 months'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 6,\r\n\t\t\t\t\t\t\t\t\t\tname: 'End of month'\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tid: 2,\r\n\t\t\t\t\t\t\t\t\t\tname: 'Every 2 weeks'\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tenableMinimumPaymentDueOnAccount: false,\r\n\t\t\t\t\t\t\tallowConsumersToCancelSingleFutureOnPortal: true,\r\n\t\t\t\t\t\t\tallowConsumerToCancelPaymentPlan: true,\r\n\t\t\t\t\t\t\tallowConsumersToSkipAPayment: true,\r\n\t\t\t\t\t\t\tmaximumNumberOfPaymentsAConsumerCanSkip: 2\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tpaymentMethods: {\r\n\t\t\t\t\t\t\tallowCreditCard: true,\r\n\t\t\t\t\t\t\tallowAch: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tminimumPaymentAmount: 1,\r\n\t\t\t\t\t\tmaximumPaymentAmount: 9999999,\r\n\t\t\t\t\t\tenablePayByText: false,\r\n\t\t\t\t\t\tmaxFutureDays: 0,\r\n\t\t\t\t\t\tmultiplePaymentLimit: {\r\n\t\t\t\t\t\t\tenabled: true,\r\n\t\t\t\t\t\t\tlimit: 2\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\trehabPlanOptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tid: 1,\r\n\t\t\t\t\t\t\t\tname: 'Monthly'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmerchantSettings: {\r\n\t\t\t\t\t\tmerchantKey: 7796,\r\n\t\t\t\t\t\tzid: 'Z2305422',\r\n\t\t\t\t\t\tmaxFutureDays: 45,\r\n\t\t\t\t\t\tcanProcessAch: true,\r\n\t\t\t\t\t\tcanProcessCreditCard: true,\r\n\t\t\t\t\t\tacceptsDebit: true,\r\n\t\t\t\t\t\tacceptsCredit: true,\r\n\t\t\t\t\t\tthirdPartyIntegrationSettings: {\r\n\t\t\t\t\t\t\tplatform: 0,\r\n\t\t\t\t\t\t\tattributes: {}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\taccountNumberFormat: null,\r\n\t\t\t\t\t\thasAccountTypeFor3rdParty: false,\r\n\t\t\t\t\t\tisAccountTypeVisible: false,\r\n\t\t\t\t\t\tisAccountTypeRequired: false,\r\n\t\t\t\t\t\tportalRegistrationWithoutZipCode: false,\r\n\t\t\t\t\t\trequireMinPayment: false,\r\n\t\t\t\t\t\tmaximumPayment: 0,\r\n\t\t\t\t\t\tfeeSettings: {\r\n\t\t\t\t\t\t\tserviceFeeAmount: 0,\r\n\t\t\t\t\t\t\tallowServiceFeesOnEveryTransaction: false,\r\n\t\t\t\t\t\t\tserviceFeeEnabled: false,\r\n\t\t\t\t\t\t\tallowFeesOnAutopays: false,\r\n\t\t\t\t\t\t\tallowServiceFeesOnEveryAutopayTransaction: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsendPlanReceiptToMerchant: false,\r\n\t\t\t\t\t\tmerchantConfiguredReceiptEmails: '',\r\n\t\t\t\t\t\tcardsAccepted: {\r\n\t\t\t\t\t\t\tamex: true,\r\n\t\t\t\t\t\t\tcartblanch: true,\r\n\t\t\t\t\t\t\tdiners: true,\r\n\t\t\t\t\t\t\tdiscover: true,\r\n\t\t\t\t\t\t\tjal: true,\r\n\t\t\t\t\t\t\tjcb: true,\r\n\t\t\t\t\t\t\tmastercard: true,\r\n\t\t\t\t\t\t\tvisa: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tdefaultFeeDisclosure: null\r\n\t\t\t\t\t},\r\n\t\t\t\t\tpaymentTypes: {},\r\n\t\t\t\t\tpaymentMethods: {\r\n\t\t\t\t\t\tallowAch: true,\r\n\t\t\t\t\t\tallowCreditCard: true,\r\n\t\t\t\t\t\tacceptsDebit: true,\r\n\t\t\t\t\t\tacceptsCredit: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tautopaySettings: {\r\n\t\t\t\t\t\tportfolioKey: 7845,\r\n\t\t\t\t\t\tenableAutopay: true,\r\n\t\t\t\t\t\tpayInFullOnly: false,\r\n\t\t\t\t\t\tnumberofRetriesForCardDeclines: 0,\r\n\t\t\t\t\t\tmaxFutureStartDateInDays: 30,\r\n\t\t\t\t\t\tautopayPaymentOptions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tportfolioKey: 7845,\r\n\t\t\t\t\t\t\t\tautopayRuleType: 1,\r\n\t\t\t\t\t\t\t\tautopayRuleValue: 0\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tselectableDaysOfMonth: null\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet currentCustomer: Customer;\r\n\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet applePaySettings: ApplePaySettings = new ApplePaySettings(mockI18N, stubState);\r\n\t\t\t\tapplePaySettings.isApplePay = () => true;\r\n\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tstubState = new State(\r\n\t\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\t\tinstance(mockEventAggregator)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tstubState.business = instance(mockBusiness);\r\n\t\t\t\t\tstubState.business.fetchPortfolioSettings = () => portalSettings;\r\n\r\n\t\t\t\t\tcurrentCustomer = new Customer(stubState.business);\r\n\r\n\t\t\t\t\tstubState.customer = currentCustomer;\r\n\r\n\t\t\t\t\tspyOn(stubState.business, 'fetchPortfolioSettings').and.callFake(() => portalSettings);\r\n\r\n\t\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\r\n\t\t\t\t\tcomponent = new SetupRecurring(\r\n\t\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\t\tstubState,\r\n\t\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tresetCalls(mockRouter);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tafterEach(() => {\r\n\t\t\t\t\tcomponent.account = null;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should initialize SetupRecurring component', () => {\r\n\t\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('goBack()', () => {\r\n\r\n\t\t\t\t\tit('should redirect to secure', () => {\r\n\r\n\t\t\t\t\t\twhen(mockRouter.navigateToRoute('secure')).thenReturn();\r\n\t\t\t\t\t\tcomponent.goBack();\r\n\r\n\t\t\t\t\t\tverify(mockRouter.navigateToRoute('secure')).called();\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('activate()', () => {\r\n\r\n\t\t\t\t\tlet account = instance(mockAccount);\r\n\t\t\t\t\tconst model = { id: '123' };\r\n\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tstubState.customer = currentCustomer;\r\n\t\t\t\t\t\tstubState.customer.accounts = Array();\r\n\t\t\t\t\t\taccount.id = '123';\r\n\t\t\t\t\t\taccount.portfolioName = 'portfolioName';\r\n\t\t\t\t\t\tstubState.customer.accounts.push(account);\r\n\t\t\t\t\t\tstubState.customer.portfolios = [{\r\n\t\t\t\t\t\t\tportfolioName: 'portfolioName'\r\n\t\t\t\t\t\t}];\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should last payment date option radio button selected by default', () => {\r\n\r\n\t\t\t\t\t\tcomponent.activate(model);\r\n\r\n\t\t\t\t\t\texpect(stubState.business.fetchPortfolioSettings).toHaveBeenCalled();\r\n\t\t\t\t\t\texpect(component.lastPaymentDateOptionSelected).toBe(component.lastPaymentDateRadioByDate.id);\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('next()', () => {\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tspyOn(component, 'validate');\r\n\t\t\t\t\t\tspyOn(component, 'paymentInformationFromForm');\r\n\t\t\t\t\t\tspyOn(component, 'getConfirmationTemplateData');\r\n\t\t\t\t\t\tspyOn(component, 'showConfirmation');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tdescribe('Apple Pay', () => {\r\n\t\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\t\tcomponent.isDigitalWallet = true;\r\n\t\t\t\t\t\t\tspyOn(component, 'setApplePaySettingsRecurringFields');\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit(('should set Apple recurring fields and show confirmation when Apple Pay'), () => {\r\n\t\t\t\t\t\t\t// Arrange\r\n\t\t\t\t\t\t\tmockApplePaySettings.isApplePay = () => true;\r\n\t\t\t\t\t\t\tstubMockEvent = new CustomEvent('mockNextEvent', {\r\n\t\t\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\t\t\terrors: [],\r\n\t\t\t\t\t\t\t\t\tdigitalWalletSettings: mockApplePaySettings\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// Act\r\n\t\t\t\t\t\t\tcomponent.next(stubMockEvent);\r\n\r\n\t\t\t\t\t\t\t// Assert\r\n\t\t\t\t\t\t\texpect(component.setApplePaySettingsRecurringFields).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.getConfirmationTemplateData).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t\texpect(component.showConfirmation).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('submit()', () => {\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tcomponent.paymentInformation = {};\r\n\t\t\t\t\t\tspyOn(component, 'navigateToReceipt');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tdescribe('Apple Pay', () => {\r\n\t\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\t\tcomponent.isDigitalWallet = true;\r\n\t\t\t\t\t\t\tspyOn(ApplePayUtil, 'completeSession');\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit(('should set submit recurring plan when Apple Pay'), async () => {\r\n\t\t\t\t\t\t\t// Arrange\r\n\t\t\t\t\t\t\tconst expectedMerchantKey = Math.floor(Math.random() * 10);\r\n\t\t\t\t\t\t\tconst expectedPlanId = Math.floor(Math.random() * 10);\r\n\t\t\t\t\t\t\tconst expectedPaymentDate = moment(moment.tz(stubState.business.businessTimezone).format('MM/DD/YYYY'));\r\n\r\n\t\t\t\t\t\t\tmockApplePaySettings.isApplePay = () => true;\r\n\t\t\t\t\t\t\tstubMockEvent = new CustomEvent('mockNextEvent', {\r\n\t\t\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\t\t\terrors: [],\r\n\t\t\t\t\t\t\t\t\tdigitalWalletSettings: mockApplePaySettings,\r\n\t\t\t\t\t\t\t\t\tcalculatedServiceFee: Math.floor(Math.random() * 10)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\t\t\tdigitalWalletSettings: stubMockEvent.detail.digitalWalletSettings\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tawait spyOn(component, 'handleSaveToWallet').and.returnValue(Promise.resolve({ isSuccessful: true }));\r\n\t\t\t\t\t\t\tawait spyOn(component, 'callApiBasedOnPaymentMechanism')\r\n\t\t\t\t\t\t\t\t.and.returnValue(Promise.resolve(\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tresponse:\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\t\t\t\t\tmerchantKey: expectedMerchantKey,\r\n\t\t\t\t\t\t\t\t\t\t\tplanId: expectedPlanId\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}));\r\n\r\n\t\t\t\t\t\t\t// Act\r\n\t\t\t\t\t\t\tawait component.submit(stubMockEvent);\r\n\r\n\t\t\t\t\t\t\t// Assert\r\n\t\t\t\t\t\t\texpect(component.paymentDate)\r\n\t\t\t\t\t\t\t\t.toEqual(expectedPaymentDate);\r\n\t\t\t\t\t\t\texpect(component.paymentInformation.savedPaymentMethodToWallet)\r\n\t\t\t\t\t\t\t\t.toEqual(undefined);\r\n\t\t\t\t\t\t\texpect(component.paymentInformation.merchantKey)\r\n\t\t\t\t\t\t\t\t.toEqual(expectedMerchantKey);\r\n\t\t\t\t\t\t\texpect(component.paymentInformation.planId)\r\n\t\t\t\t\t\t\t\t.toEqual(expectedPlanId);\r\n\t\t\t\t\t\t\texpect(component.paymentInformation.portalTemplateType)\r\n\t\t\t\t\t\t\t\t.toEqual(PortalTemplateTypes.CreditCardRecurringPaymentPlanReceipt);\r\n\t\t\t\t\t\t\texpect(ApplePayUtil.completeSession)\r\n\t\t\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tit(('should complete Apple Pay session when callApiBasedOnPaymentMechanism() fails'), async () => {\r\n\t\t\t\t\t\t\t// Arrange\r\n\t\t\t\t\t\t\tstubMockEvent = new CustomEvent('mockNextEvent', {\r\n\t\t\t\t\t\t\t\tdetail: anything()\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tcomponent.paymentInformation = {\r\n\t\t\t\t\t\t\t\tdigitalWalletSettings: stubMockEvent.detail.digitalWalletSettings\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tawait spyOn(component, 'handleSaveToWallet')\r\n\t\t\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t\t\t.returnValue(Promise.resolve({ isSuccessful: true }));\r\n\r\n\t\t\t\t\t\t\tawait spyOn(component, 'callApiBasedOnPaymentMechanism')\r\n\t\t\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t\t\t.returnValue(Promise.reject());\r\n\r\n\t\t\t\t\t\t\t// Act\r\n\t\t\t\t\t\t\tawait component.submit(anything());\r\n\r\n\t\t\t\t\t\t\t// Assert\r\n\t\t\t\t\t\t\texpect(component.isSubmitting)\r\n\t\t\t\t\t\t\t\t.toBeFalse();\r\n\t\t\t\t\t\t\texpect(ApplePayUtil.completeSession)\r\n\t\t\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { bindable, autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../models/customer';\r\nimport { State } from '../../services/global-state';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { CancelRecurringDialog } from './cancel-recurring.dialog';\r\n\r\n@autoinject\r\nexport class ViewRecurring {\r\n\taccount: Account;\r\n\tallowSkippingOfPayments: boolean = false;\r\n\tshowActionsButton: boolean = false;\r\n\tplan:any;\r\n\r\n\tconstructor(private state: State, private payrazrService: PayrazrService, private router: Router, private dialogService: DialogService, private i18n: I18N) {\r\n\r\n\t}\r\n\r\n\tactivate(params) {\r\n\t\tthis.account = this.state.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === params.id;\r\n\t\t});\r\n\t\tthis.state.business.applyPortfolioSettingsToPortal(this.account.portfolioName, false);\r\n\r\n\t\tlet portfolioPortalSettings = this.state.business.fetchPortfolioSettings(this.account.portfolioName).settings;\r\n\r\n\t\tthis.allowSkippingOfPayments = portfolioPortalSettings.paymentTypes.allowConsumersToSkipAPayment || false;\r\n\t\tthis.showActionsButton = this.allowSkippingOfPayments;\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n\tshowError(message: string) {\r\n\t\talert(message); // TODO: use somethign other than alerts\r\n\t}\r\n\r\n\tcancelPlan() {\r\n\t\tthis.dialogService.open({ viewModel: CancelRecurringDialog, lock: false })\r\n\t\t\t.whenClosed(response => {\r\n\t\t\t\tif (!response.wasCancelled) {\r\n\t\t\t\t\t// This is a HUGE assumption. There can only ever be a single plan on an account int portal. This may cause issues in the future if that changes\r\n\t\t\t\t\tthis.payrazrService.cancelPaymentPlan(this.account.paymentPlans[0].id).then(\r\n\t\t\t\t\t\t(result) => {\r\n\t\t\t\t\t\t\tif (result === true) {\r\n\t\t\t\t\t\t\t\tthis.router.navigate('');\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.showError(this.i18n.i18next.t('recurringCancellationFailed', 'Failed to cancel recurring plan'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(error) => {\r\n\t\t\t\t\t\t\tthis.showError(this.i18n.i18next.t('recurringCancellationFailed', 'Failed to cancel recurring plan'));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tskipPayments() {\r\n\t\tlet route = this.router.routes.find(\r\n\t\t\tx => x.name === 'skipPlanPayments'\r\n\t\t);\r\n\r\n\t\troute.accountId = this.account.id;\r\n\r\n\t\tthis.router.navigateToRoute(route.name);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport * as moment from 'moment';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Payment } from './payment';\r\nimport { Router } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class CancelSingleFuture{\r\n\tisSubmitting = false;\r\n\tpayment: Payment;\r\n\r\n\tconstructor(\r\n\t\tprivate state: State,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate router: Router\r\n\t) {}\r\n\r\n\tactivate(params, routeData) {\r\n\t\tthis.payment = routeData.payment;\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.isSubmitting = true;\r\n\t\tthis.payrazrService.cancelPaymentPlan(this.payment.plan.id).then(\r\n\t\t\t(result) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\tthis.back();\r\n\t\t\t},\r\n\t\t\t(error) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import * as moment from 'moment';\r\n\r\nexport class Payment {\r\n\tpaymentDate: moment.Moment;\r\n\tpaymentAmount;\r\n\tpaymentMethodType;\r\n\tpaymentMethodAccount;\r\n\tallowCancel: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tpublic plan,\r\n\t\tpublic accountName,\r\n\t\tpublic accountId,\r\n\t\tinstrument,\r\n\t\tplannedPayment,\r\n\t\tportfolioSettings,\r\n\t\tpublic contactName\r\n\t) {\r\n\t\tthis.paymentDate = moment(plannedPayment.paymentDate);\r\n\t\tthis.paymentAmount = plannedPayment.paymentAmount;\r\n\t\tthis.paymentMethodType = instrument.paymentType;\r\n\t\tthis.paymentMethodAccount = instrument.paymentAccount;\r\n\t\tif (portfolioSettings && portfolioSettings.settings && portfolioSettings.settings.paymentTypes) {\r\n\t\t\tthis.allowCancel = portfolioSettings.settings.paymentTypes.allowConsumersToCancelSingleFutureOnPortal || false;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport * as moment from 'moment';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Payment } from './payment';\r\nimport { Router, CanActivateNextStep } from 'aurelia-router';\r\n\r\n@autoinject\r\nexport class ScheduledPayments {\r\n\tnextPayment: any;\r\n\tscheduledPayments: any;\r\n\tisLoading = true;\r\n\t\r\n\tconstructor(private state: State, private payrazrService: PayrazrService, private router: Router) {\r\n\t\tthis.nextPayment = null;\r\n\t\tthis.scheduledPayments = null;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis.isLoading = true;\r\n\t\tthis.payrazrService.refreshGlobalCustomer()\r\n\t\t\t// this call in here in dashboard keeps the globalstate fresh in the Portal from user actions performed on children views by user\r\n\t\t\t// ... references of globalState from children views get the globalState from local storage.\r\n\t\t\t.then((state: State) => {\r\n\t\t\t\tthis.state = state;\r\n\t\t\t\tthis.loadSchedules();\r\n\t\t\t});\r\n\t}\r\n\r\n\tloadSchedules() {\r\n\t\tthis.scheduledPayments = [];\r\n\t\tif (this.state.accounts) {\r\n\t\t\tthis.state.accounts.forEach(account => {\r\n\t\t\t\tif (account.paymentPlans && account.paymentPlans.length > 0) {\r\n\t\t\t\t\tlet portfolioSettings = this.state.business.fetchPortfolioSettings(account.portfolioName);\r\n\t\t\t\t\taccount.paymentPlans.forEach(paymentPlan => {\r\n\t\t\t\t\t\tvar currentPaymentPlan = this.scheduledPayments.find(sp => sp.plan.id === paymentPlan.id);\r\n\t\t\t\t\t\tif (paymentPlan.isCombinedCustomerAccount && currentPaymentPlan) {\r\n\t\t\t\t\t\t\tthis.scheduledPayments.filter(sp => sp.plan.id === paymentPlan.id).forEach(element => {\r\n\t\t\t\t\t\t\t\telement.accountName = element.accountName + ',' + account.displayName;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.scheduledPayments = this.scheduledPayments.concat(paymentPlan.payments.map(payment => {\r\n\t\t\t\t\t\t\t\treturn new Payment(paymentPlan, account.displayName, account.id, paymentPlan.paymentInstrument, payment, portfolioSettings, account.contactName);\r\n\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.scheduledPayments = this.scheduledPayments\r\n\t\t\t.sort((a: Payment, b: Payment) => {\r\n\t\t\t\tconst aDate = moment(a.paymentDate);\r\n\t\t\t\tconst bDate = moment(b.paymentDate);\r\n\r\n\t\t\t\tif (aDate.isAfter(bDate)) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t} else if (aDate.isSame(bDate)) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t.slice(0, 6);\r\n\r\n\t\tif (this.scheduledPayments.length > 0) {\r\n\t\t\tthis.nextPayment = this.scheduledPayments[0].paymentDate;\r\n\t\t}\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tcancel(payment: Payment) {\r\n\t\tconst cancelRoute = this.router.routes.find(x => x.name === 'scheduled-payments/cancel-single-future');\r\n\t\tcancelRoute.payment = payment;\r\n\t\tthis.router.navigateToRoute(cancelRoute.name);\r\n\t}\r\n\r\n\tview(payment: Payment) {\r\n\t\tlet planRoute = 'installments/view-installments';\r\n\t\tif (payment.plan.isRecurring) {\r\n\t\t\tplanRoute = 'recurring/view-recurring';\r\n\t\t}\r\n\r\n\t\tthis.router.navigateToRoute(planRoute, { id: payment.accountId });\r\n\t}\r\n}\r\n\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { mock, instance, verify, when, anyNumber, anything, resetCalls } from 'ts-mockito';\r\nimport * as moment from 'moment';\r\nimport { State } from '../../services/global-state';\r\nimport { ScheduledPayments } from './scheduled-payments';\r\nimport { Customer, Account } from '../../models/customer';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Router } from 'aurelia-router';\r\nimport { Business } from '../../models/business';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('scheduled-payments', () => {\r\n\t\t\tlet component: ScheduledPayments;\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockPayrazr: PayrazrService = mock(PayrazrService);\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst accounts = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tdisplayName: 'testAccount',\r\n\t\t\t\t\t\tpaymentPlans: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tpayments: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tpaymentDate: new Date('01/01/2020'),\r\n\t\t\t\t\t\t\t\t\t\tpaymentAmount: 5000\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tpaymentInstrument: {\r\n\t\t\t\t\t\t\t\t\tpaymentType: 'testType',\r\n\t\t\t\t\t\t\t\t\tpaymentAccount: 'testAccount'\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\r\n\t\t\t\twhen(mockCustomer.accounts).thenReturn(accounts as Account[]);\r\n\t\t\t\twhen(mockState.accounts).thenReturn(accounts as Array);\r\n\t\t\t\twhen(mockState.business).thenReturn(instance(mockBusiness));\r\n\t\t\t\twhen(mockBusiness.fetchPortfolioSettings(anything)).thenReturn({\r\n\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\tpaymentTypes: {\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tcomponent = new ScheduledPayments(\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockPayrazr),\r\n\t\t\t\t\tinstance(mockRouter)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t\texpect(component.isLoading).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('loadSchedules()', () => {\r\n\r\n\t\t\t\tit('should get all payments from global state', () => {\r\n\t\t\t\t\tcomponent.loadSchedules();\r\n\t\t\t\t\texpect(component.scheduledPayments.length).toEqual(1);\r\n\t\t\t\t\texpect(component.isLoading).toBeFalsy();\r\n\t\t\t\t\texpect(component.nextPayment).toEqual(moment(new Date('01/01/2020')));\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router, RouterConfiguration} from 'aurelia-router';\r\nimport { State } from '../services/global-state';\r\n\r\n@autoinject\r\nexport class SecureSite {\r\n\tglobalState: State;\r\n\trouter: Router;\r\n\r\n\tconstructor(state: State) {\r\n\t\tthis.globalState = state;\r\n\t}\r\n\r\n\tconfigureRouter(config: RouterConfiguration, router: Router): void {\r\n\t\tconfig.map([\r\n\t\t\t{ route: '', name: 'dashboard', moduleId: './customer-dashboard/customer-dashboard-index', title: 'dashboard', nav: true, settings: { fallbackText: 'Dashboard', dataTest: 'side-menu-dashboard' } },\r\n\t\t\t{ route: 'preferences', name: 'preferences', moduleId: './preferences/preferences', title: 'preferences', nav: false, settings: { fallbackText: 'Preferences' } },\r\n\t\t\t{ route: 'securitySettings', name: 'securitySettings', moduleId: './security-settings/security-settings', title: 'Security Information', nav: false, settings: { fallbackText: 'Security Settings' } },\r\n\t\t\t{ route: 'myWallet', name: 'myWallet', moduleId: './my-wallet/my-wallet', title: 'myWallet', nav: false, settings: { fallbackText: 'Wallet' } },\r\n\t\t\t{ route: 'addRemoveCustomer', name: 'addRemoveCustomer', moduleId: './add-remove-customer/add-remove-customer', title: 'addRemoveCustomer', nav: false, settings: { fallbackText: 'Add/Remove Customer' } },\r\n\t\t\t{ route: 'addCustomerNotificationPreferences', name: 'addCustomerNotificationPreferences', moduleId: './add-customer-notification-preferences/add-customer-notification-preferences', title: 'addCustomerNotificationPreferences', nav: false, settings: { fallbackText: 'Add Customer Notification Preferences' } },\r\n\t\t\t{ route: 'messages', name: 'messages', moduleId: './messages/messages', title: 'messages', nav: false, settings: { fallbackText: 'Messages' } },\r\n\t\t\t{ route: 'addPaymentMethod', name: 'addPaymentMethod', moduleId: './my-wallet/add-payment-method/add-payment-method', title: 'Add Payment Method', nav: false },\r\n\t\t\t{ route: 'editPaymentMethod', name: 'editPaymentMethod', moduleId: './my-wallet/add-payment-method/add-payment-method', title: 'Edit Payment Method', nav: false },\r\n\t\t\t{ route: 'verification', name: 'verification', moduleId: './login-register/sms-verification/sms-verification', title: 'verification', nav: false },\r\n\t\t\t{ route: 'setupPrimaryPaymentMethod', name: 'setupPrimaryPaymentMethod', moduleId: './login-register/setup-primary-payment-method/setup-primary-payment-method', title: 'Setup Primary Payment Method', nav: false },\r\n\r\n\t\t\t// installments\r\n\t\t\t{\r\n\t\t\t\troute: 'installments/:id/select-option',\r\n\t\t\t\tname: 'installments/select-option',\r\n\t\t\t\tmoduleId: './installments/installments-select-option/installments-select-option',\r\n\t\t\t\ttitle: 'Select Installment Plan',\r\n\t\t\t\tnav: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'installments/:id/view',\r\n\t\t\t\tname: 'installments/view-installments',\r\n\t\t\t\tmoduleId: './installments/view-installments',\r\n\t\t\t\ttitle: 'View Installments'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'installments/:id/setup-payment-plan/',\r\n\t\t\t\tname: 'installments/setup-payment-plan',\r\n\t\t\t\tmoduleId: './installments/setup-installment',\r\n\t\t\t\ttitle: 'Setup Installment Payment Plan'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'installments/:id/installment-receipt/',\r\n\t\t\t\tname: 'installments/installment-receipt',\r\n\t\t\t\tmoduleId: './installments/installment-receipt',\r\n\t\t\t\ttitle: 'installment Receipt'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'installments/:id/cancel',\r\n\t\t\t\tname: 'installments/cancel-installments',\r\n\t\t\t\tmoduleId: './installments/cancel-installments',\r\n\t\t\t\ttitle: 'Cancel Installments',\r\n\t\t\t\tnav: false\r\n\t\t\t},\r\n\r\n\t\t\t// recurring\r\n\t\t\t{\r\n\t\t\t\troute: 'recurring/:id/setup-payment-plan/',\r\n\t\t\t\tname: 'recurring/setup-payment-plan',\r\n\t\t\t\tmoduleId: './recurring/setup-recurring',\r\n\t\t\t\ttitle: 'Setup Recurring Payment Plan'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'recurring/:id/recurring-receipt/',\r\n\t\t\t\tname: 'recurring/recurring-receipt',\r\n\t\t\t\tmoduleId: './recurring/recurring-receipt',\r\n\t\t\t\ttitle: 'Recurring Receipt'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'recurring/:id/view',\r\n\t\t\t\tname: 'recurring/view-recurring',\r\n\t\t\t\tmoduleId: './recurring/view-recurring',\r\n\t\t\t\ttitle: 'View Recurring'\r\n\t\t\t},\r\n\r\n\t\t\t// single payment\r\n\t\t\t{\r\n\t\t\t\troute: 'single-payment',\r\n\t\t\t\tname: 'single-payment/single-payment',\r\n\t\t\t\tmoduleId: './single-payment/single-payment',\r\n\t\t\t\ttitle: 'Make a Payment'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'single-payment/receipt',\r\n\t\t\t\tname: 'single-payment/single-payment-receipt',\r\n\t\t\t\tmoduleId: './single-payment/single-payment-receipt',\r\n\t\t\t\ttitle: 'Transaction Receipt'\r\n\t\t\t},\r\n\r\n\t\t\t// autopay\r\n\t\t\t{\r\n\t\t\t\troute: 'autopay/:id/view',\r\n\t\t\t\tname: 'autopay/view-autopay',\r\n\t\t\t\tmoduleId: './autopay/view-autopay',\r\n\t\t\t\ttitle: 'View Autopay'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'autopay/:id/edit',\r\n\t\t\t\tname: 'autopay/edit-autopay',\r\n\t\t\t\tmoduleId: './autopay/edit-autopay',\r\n\t\t\t\ttitle: 'Edit Autopay'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'autopay/:id/receipt',\r\n\t\t\t\tname: 'autopay/autopay-receipt',\r\n\t\t\t\tmoduleId: './autopay/autopay-receipt',\r\n\t\t\t\ttitle: 'Autopay Receipt'\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'autopay/:id/setup',\r\n\t\t\t\tname: 'autopay/setup-autopay',\r\n\t\t\t\tmoduleId: './autopay/setup-autopay',\r\n\t\t\t\ttitle: 'Setup and Review Autopay'\r\n\t\t\t},\r\n\r\n\t\t\t// dashboard\r\n\t\t\t{\r\n\t\t\t\troute: 'docs',\r\n\t\t\t\tname: 'docs',\r\n\t\t\t\tmoduleId: './my-documents/my-documents',\r\n\t\t\t\ttitle: 'myDocs',\r\n\t\t\t\tnav: true,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tfallbackText: 'My Docs',\r\n\t\t\t\t\tdataTest: 'side-menu-my-docs'\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'payment-history',\r\n\t\t\t\tname: 'paymentHistory',\r\n\t\t\t\tmoduleId: 'pages/payment-history/payment-history',\r\n\t\t\t\ttitle: 'paymentHistory',\r\n\t\t\t\tnav: true,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tfallbackText: 'Payment History',\r\n\t\t\t\t\tdataTest: 'side-menu-payment-history'\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'payment-history/receipt',\r\n\t\t\t\tname: 'paymentHistoryReceipt',\r\n\t\t\t\tmoduleId: 'pages/payment-history/payment-history-receipt',\r\n\t\t\t\ttitle: 'paymentHistoryReceipt',\r\n\t\t\t\tnav: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'scheduled-payments',\r\n\t\t\t\tname: 'scheduledPayments',\r\n\t\t\t\tmoduleId: 'pages/scheduled-payments/scheduled-payments',\r\n\t\t\t\ttitle: 'scheduledPayments',\r\n\t\t\t\tnav: true,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\tfallbackText: 'Scheduled Payments',\r\n\t\t\t\t\tdataTest: 'side-menu-scheduled-payments'\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'scheduled-payments/cancel-single-future',\r\n\t\t\t\tname: 'scheduled-payments/cancel-single-future',\r\n\t\t\t\tmoduleId: 'pages/scheduled-payments/cancel-single-future',\r\n\t\t\t\ttitle: 'cancelSingleFuture',\r\n\t\t\t\tnav: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'skip-plan-payments/skip-plan-payments',\r\n\t\t\t\tname: 'skipPlanPayments',\r\n\t\t\t\tmoduleId: 'pages/skip-plan-payments/skip-plan-payments',\r\n\t\t\t\ttitle: 'skipPlanPayments',\r\n\t\t\t\tnav: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'negotiator/:id',\r\n\t\t\t\tname: 'negotiator',\r\n\t\t\t\tmoduleId: 'pages/negotiator/negotiator',\r\n\t\t\t\ttitle: 'negotiator',\r\n\t\t\t\tnav: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\troute: 'contact-me',\r\n\t\t\t\tname: 'contactMe',\r\n\t\t\t\tmoduleId: 'pages/contact-me/contact-me',\r\n\t\t\t\ttitle: 'contactMe',\r\n\t\t\t\tnav: false\r\n\t\t\t}\r\n\r\n\t\t]);\r\n\r\n\t\tthis.router = router;\r\n\t\tconfig.fallbackRoute('dashboard');\r\n\t}\r\n\r\n\tattached(): void {\r\n\t\tif (!this.globalState.accounts) {\r\n\t\t\tthis.router.navigateToRoute('login');\r\n\t\t}\r\n\t}\r\n}\r\n","module.exports = \"\";","import { autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { ValidationHelpers } from '../../services/validation-helpers';\r\nimport { I18N } from 'aurelia-i18n';\r\n\r\n@autoinject\r\nexport class SecuritySettings {\r\n\tmodel: any;\r\n\tsecurityQuestion1List: any;\r\n\tsecurityQuestion2List: any;\r\n\terrorMessage: any;\r\n\tvalidationErrors: any;\r\n\tcustomer: any;\r\n\tdonotshow: any;\r\n\tsuccessItem: any;\r\n\tcontactInfo: any;\r\n\tisInvoiceEnabled: boolean;\r\n\r\n\tupdateUsernameDesc: string;\r\n\tupdatePasswordDesc: string;\r\n\tupdateQuestion1Desc: string;\r\n\tupdateQuestion2Desc: string;\r\n\r\n\tconstructor(\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate globalState: State,\r\n\t\tprivate i18n: I18N) {\r\n\r\n\t\tthis.model = {};\r\n\t\tthis.securityQuestion1List = [];\r\n\t\tthis.securityQuestion2List = [];\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\t\tthis.customer = {};\r\n\t\tthis.customer.paymentMethods = {};\r\n\t\tthis.donotshow = false;\r\n\t\tthis.isInvoiceEnabled = globalState.business.portalSettings.businessSettings.isInvoiceEnabled;\r\n\r\n\t\tthis.updateUsernameDesc = this.i18n.i18next.t('updateUsernameDesc', 'Update Username');\r\n\t\tthis.updatePasswordDesc = this.i18n.i18next.t('updatePassword', 'Update Password');\r\n\t\tthis.updateQuestion1Desc = this.i18n.i18next.t('updateQuestion1Desc', 'Update Security Question 1');\r\n\t\tthis.updateQuestion2Desc = this.i18n.i18next.t('updateQuestion2Desc', 'Update Security Question 2');\r\n\t}\r\n\r\n\tactivate() {\r\n\t\tthis.payrazrService.refreshGlobalCustomer().then(response => {\r\n\t\t\tthis.model = new Model(this.globalState.customer);\r\n\t\t\tthis.securityQuestion1List = this.globalState.question1List;\r\n\t\t\tthis.securityQuestion2List = this.globalState.question2List;\r\n\t\t}).catch(err => {\r\n\t\t\tconsole.error('Failed to refresh customer information.');\r\n\t\t});\r\n\r\n\t\tthis.getCustomerPaymentMethods();\r\n\t}\r\n\r\n\tupdateUsername() {\r\n\t\tthis.successItem = '';\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tlet validator = new UsernameValidator(this.i18n);\r\n\t\tif (validator.hasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t} else {\r\n\t\t\tthis.payrazrService.updateUsername(this.model.username)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\t// if Success update the cached username.\r\n\t\t\t\t\tthis.model.customer.securitySettings.username = this.model.username;\r\n\t\t\t\t\tthis.successItem = this.successItem = this.i18n.i18next.t('username', 'Username');\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tthis.errorMessage = this.i18n.i18next.t('updateUsernameError', 'Error: Unable to update username');\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tupdatePassword() {\r\n\t\tthis.successItem = '';\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tlet validator = new PasswordValidator(this.i18n);\r\n\t\tif (validator.hasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t} else {\r\n\t\t\tthis.payrazrService.updatePassword(this.model.currentPassword, this.model.newPassword)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis.globalState.customer.updateSecuritySettings(this.model.username, this.model.question1, this.model.question2);\r\n\t\t\t\t\tthis.successItem = this.i18n.i18next.t('password', 'Password');\r\n\t\t\t\t})\r\n\t\t\t\t.catch(response => {\r\n\t\t\t\t\tresponse\r\n\t\t\t\t\t\t.json()\r\n\t\t\t\t\t\t.then(error => {\r\n\t\t\t\t\t\t\tthis.validationErrors.push(error.Message);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tupdateSecurityQuestion(questionNum) {\r\n\t\tthis.successItem = '';\r\n\t\tthis.errorMessage = '';\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tlet validator = new QuestionValidator(this.i18n, questionNum);\r\n\t\tif (validator.hasErrors(this.model)) {\r\n\t\t\tthis.validationErrors = validator.errors;\r\n\t\t} else {\r\n\t\t\tlet question = questionNum === 1 ? this.model.question1 : this.model.question2;\r\n\t\t\tlet answer = questionNum === 1 ? this.model.answer1 : this.model.answer2;\r\n\t\t\tthis.payrazrService.updateSecurityQuestion(questionNum, question, answer)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis.globalState.customer.updateSecuritySettings(this.model.username, this.model.question1, this.model.question2);\r\n\t\t\t\t\tthis.successItem = this.i18n.i18next.t('securityQuestionAnswerX', { defaultValue: `Security question/answer ${questionNum}`, questionNumber: questionNum });\r\n\t\t\t\t})\r\n\t\t\t\t.catch(response => {\r\n\t\t\t\t\tresponse\r\n\t\t\t\t\t\t.json()\r\n\t\t\t\t\t\t.then(err => {\r\n\t\t\t\t\t\t\tthis.errorMessage = this.i18n.i18next.t('updateUnsuccessfulError', { defaultValue: `Update was unsuccessful: ${err}`, error: err });\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tgetCustomerPaymentMethods() {\r\n\t\tthis.payrazrService.getCustomerPaymentMethodsByCustomerId().then(response => {\r\n\t\t\tif (response.isSuccessful) {\r\n\t\t\t\tthis.customer.paymentMethods = response.entity;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(response.message);\r\n\t\t\t}\r\n\t\t}\r\n\t\t).catch(err => {\r\n\t\t\tconsole.error('Failed to retrieve customer payment methods');\r\n\t\t});\r\n\t}\r\n}\r\n\r\nclass Model {\r\n\tcustomer: any;\r\n\tusername: any;\r\n\tcurrentPassword: any;\r\n\tnewPassword: any;\r\n\tquestion1: any;\r\n\tquestion2: any;\r\n\tanswer1: any;\r\n\tanswer2: any;\r\n\tisEmailOptedIn: boolean;\r\n\tisPaperStatementsOptedIn: boolean;\r\n\tisEmailStatementsOptedIn: boolean;\r\n\temail: any;\r\n\thomePhone: any;\r\n\tmobilePhone: any;\r\n\tworkPhone: any;\r\n\tsmsIsOptedIn: boolean;\r\n\r\n\tconstructor(customer) {\r\n\t\tthis.customer = customer;\r\n\r\n\t\tthis.username = customer.securitySettings.username;\r\n\r\n\t\tthis.currentPassword = '';\r\n\t\tthis.newPassword = '';\r\n\r\n\t\tthis.question1 = customer.securitySettings.question1;\r\n\t\tthis.question2 = customer.securitySettings.question2;\r\n\r\n\t\tthis.answer1 = '';\r\n\t\tthis.answer2 = '';\r\n\r\n\t\tthis.isPaperStatementsOptedIn = customer.documentSettings.isPaperOptedIn;\r\n\t\tthis.isEmailStatementsOptedIn = customer.documentSettings.isEmailOptedIn;\r\n\r\n\t\tthis.email = customer.email;\r\n\r\n\t\tthis.homePhone = customer.homePhone;\r\n\t\tthis.mobilePhone = ValidationHelpers.sanitizePhoneNumber(customer.mobilePhone);\r\n\t\tthis.workPhone = customer.workPhone;\r\n\r\n\t\t// Unless the customer explicitly opts out, they are opted in.\r\n\t\tthis.smsIsOptedIn = customer.notificationSettings.smsIsOptedIn === undefined ? true : customer.notificationSettings.smsIsOptedIn;\r\n\t}\r\n}\r\n\r\nclass UsernameValidator {\r\n\terrors: any;\r\n\r\n\tconstructor(private i18n: I18N) {\r\n\t\tthis.errors = [];\r\n\t}\r\n\r\n\thasErrors(model) {\r\n\t\tif (model.username === model.customer.securitySettings.username) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('currentUsernameError', 'That is the same as your current username'));\r\n\t\t}\r\n\r\n\t\tif (model.username.length < 6 || model.username.length > 50) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('usernameCharacterLengthError', 'Username must be between 6 and 50 characters in length'));\r\n\t\t}\r\n\r\n\t\tconst usernameRegex = /^[a-zA-Z0-9._@]+$/;\r\n\t\tif (!usernameRegex.test(model.username)) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('usernameCanOnlyContainCertainCharacters', 'Username can only contain letters, numbers and the following special characters: _ . @'));\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n}\r\n\r\nclass PasswordValidator {\r\n\terrors: any;\r\n\r\n\tconstructor(private i18n: I18N) {\r\n\t\tthis.errors = [];\r\n\t}\r\n\r\n\thasErrors(model) {\r\n\t\tif (model.currentPassword.length === 0) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('currentPasswordError', 'Please enter your current password'));\r\n\t\t}\r\n\t\tif (model.newPassword.length === 0) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('newPasswordConfirmPasswordError', 'If you are changing your password, you must fill both the new password and confirm password fields'));\r\n\t\t} else if (model.newPassword !== model.confirmPassword) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('passwordMatchError', 'The new passwords do not match'));\r\n\t\t} else if (model.newPassword.length < 12) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('passwordsMustBeTwelveOrMoreCharacters', 'Password must be a minimum of 12 characters.'));\r\n\t\t} else if (!ValidationHelpers.isStrongPassword(model.newPassword)) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('newPasswordRequirementError', 'New password does not meet requirements'));\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n}\r\n\r\nclass QuestionValidator {\r\n\terrors: any;\r\n\tquestionNumber: any;\r\n\r\n\tconstructor(private i18n: I18N, questionNumber) {\r\n\t\tthis.errors = [];\r\n\t\tthis.questionNumber = questionNumber;\r\n\t}\r\n\r\n\thasErrors(model) {\r\n\t\tif (this.questionNumber === 1) {\r\n\t\t\tif (model.answer1.length < 3 || model.answer1.length > 50) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('securityQuestion1Error', 'The answer to the 1st security question must be between 3 and 50 characters long'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.questionNumber === 2) {\r\n\t\t\tif (model.answer2.length < 3 || model.answer2.length > 50) {\r\n\t\t\t\tthis.addError(this.i18n.i18next.t('securityQuestion2Error', 'The answer to the 2nd security question must be between 3 and 50 characters long'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (model.question1 === model.question2) {\r\n\t\t\tthis.addError(this.i18n.i18next.t('securityQuestionSameError', 'Please select 2 different security questions'));\r\n\t\t}\r\n\r\n\t\treturn this.errors.length > 0;\r\n\t}\r\n\r\n\taddError(e) {\r\n\t\tthis.errors.push(e);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { bindingMode } from 'aurelia-binding';\r\nimport { autoinject, bindable } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport * as moment from 'moment';\r\nimport 'moment-timezone';\r\nimport * as numeral from 'numeral';\r\nimport { FormattingHelper } from '../../helpers/formatting-helper';\r\nimport { AchToken } from '../../models/ach-token';\r\nimport { CardToken } from '../../models/card-token';\r\nimport { Account, Customer, Payment } from '../../models/customer';\r\nimport { ServiceResponse } from '../../models/service-response';\r\nimport { SinglePaymentReceiptRouteSettings } from '../../models/single-payment/single-payment-receipt-route-settings';\r\nimport { SinglePaymentRouteSettings } from '../../models/single-payment/single-payment-route-settings';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { State } from '../../services/global-state';\r\nimport { AchAccountTypeEnum, CardPaymentMethod, CheckPaymentMethod, DigitalWalletPaymentMethod, HpfTransactionService, ICustomerAccountToPay, PaymentMethod, PostedInfo, SubmitTransactionRequest, TransactionTypes } from '../../services/hpf-transaction-service';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PortalTemplateTypes, TemplateService } from '../../services/template-service';\r\nimport { ComponentValidationResult } from '../../smart/components/payment-item-table/validation/component-validation-result';\r\nimport { NumberHelper } from '../../smart/helpers/number-helper';\r\nimport { AccountPaymentItem } from '../../smart/models/account-payment-item';\r\nimport { PaymentItemInitialEnteredAmount } from '../../smart/models/enums';\r\nimport { PaymentItemType } from '../../smart/models/enums/payment-item-type';\r\nimport { PaymentItemTableConfiguration } from '../../smart/models/payment-item-table-configuration';\r\nimport { ApplePaySettings, ApplePayUtil, DigitalWalletType } from '../../models/digital-wallet';\r\nimport { MerchantConsumerPortalFeeSettings } from '../../models/merchant-consumer-portal-fee-settings';\r\n\r\n@autoinject\r\nexport class SinglePayment {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedWalletToCustomer: Customer;\r\n\t// standard page-level\r\n\tisLoading: boolean = true;\r\n\tisSubmitting: boolean = false;\r\n\tvalidationErrors: Array;\r\n\tstate: string = 'setup';\r\n\tconfirmationTemplateData: TemplateData;\r\n\tconfirmationTitle: string;\r\n\terror;\r\n\tcustomTemplateName: string;\r\n\tconfirmationSubmitButtonText: string;\r\n\r\n\t// output vars from payment form\r\n\tcalculatedFeeAmount: number;\r\n\tcalculatedTotalAmount: number;\r\n\r\n\t// page-specific\r\n\tpayInFull: boolean;\r\n\tminFuture: number;\r\n\tmaxFuture: number;\r\n\tsubtotal: number = 0;\r\n\tsubDiscountAmount: number = 0;\r\n\tisSingleFuture: boolean = false;\r\n\tisPayOffEarly: boolean = false;\r\n\tmerchantConsumerPortalFeeSettings: MerchantConsumerPortalFeeSettings = new MerchantConsumerPortalFeeSettings();\r\n\r\n\t// payment item table\r\n\tpaymentItemTableConfiguration: PaymentItemTableConfiguration;\r\n\tforceRefreshOfData: boolean;\r\n\tpaymentItemTableViewModel: any;\r\n\tselectedPaymentItemsChanged(selectedPaymentItems: PaymentItem[]) {}\r\n\tpaymentItemsLoaded(paymentItems: PaymentItem[]) {\r\n\t\tthis.updateSubtotal();\r\n\t}\r\n\tenteredAmountChanged(changedItem: PaymentItem) {\r\n\t\tthis.updateSubtotal();\r\n\t}\r\n\r\n\t// payment form\r\n\tcustomer: Customer;\r\n\taccounts: Account[];\r\n\tselectedCustomerAccountKeys: number[];\r\n\tbucketKey: number | null;\r\n\tpaymentInformation: any;\r\n\tshowConvenienceFeeDisclosureOnPaymentForm: any; // ??????????\r\n\tallowSingleFuture: boolean;\r\n\tisAch: boolean = false;\r\n\tisDigitalWallet: boolean = false;\r\n\r\n\tget isApplePayPayment(): boolean {\r\n\t\treturn this.isDigitalWallet && this.paymentInformation.digitalWalletSettings?.isApplePay();\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate templateService: TemplateService,\r\n\t\tprivate i18n: I18N,\r\n\t\tprivate hpfTransactionService: HpfTransactionService,\r\n\t) {\r\n\t}\r\n\r\n\tactivate(params, routeConfig) {\r\n\t\tif (routeConfig.settings instanceof SinglePaymentRouteSettings) {\r\n\t\t\tlet routeSettings: SinglePaymentRouteSettings = routeConfig.settings as SinglePaymentRouteSettings;\r\n\t\t\tthis.payInFull = routeSettings.payInFull;\r\n\t\t\tthis.isPayOffEarly = routeSettings.isPayOffEarly;\r\n\t\t\tthis.selectedCustomerAccountKeys = routeSettings.selectedCustomerAccountKeys;\r\n\t\t}\r\n\r\n\t\tthis.customer = this.globalState.customer;\r\n\r\n\t\t// get the accounts based on keys passed through route settings\r\n\t\tthis.accounts = [];\r\n\t\tthis.selectedCustomerAccountKeys.forEach((selectedAccountKey: number) => {\r\n\t\t\tlet selectedAccount: Account = this.globalState.accounts.find((accountFromState: Account) =>\r\n\t\t\t\taccountFromState.customerAccountKey === selectedAccountKey\r\n\t\t\t);\r\n\t\t\tthis.accounts.push(selectedAccount);\r\n\t\t});\r\n\r\n\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled\r\n\t\t\t&& this.accounts.length === 1) {\r\n\t\t\tthis.globalState.associatedCustomers.forEach(customer => {\r\n\t\t\t\tcustomer.accounts.forEach(account => {\r\n\t\t\t\t\tif (this.accounts[0].customerAccountKey === account.customerAccountKey) {\r\n\t\t\t\t\t\tthis.customer = customer;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// payment date restrictions setup\r\n\t\tthis.minFuture = 0;\r\n\r\n\t\tthis.allowSingleFuture = this.getSingleFutureAllowedForSelectedAccounts();\r\n\t\tif (this.isPayOffEarly) {\r\n\t\t\tthis.allowSingleFuture = false;\r\n\t\t}\r\n\r\n\t\t// max future days setup\r\n\t\tif (!this.allowSingleFuture) {\r\n\t\t\tthis.maxFuture = 0;\r\n\t\t} else {\r\n\t\t\tthis.maxFuture = Number.MAX_VALUE;\r\n\r\n\t\t\t// loop through all portfolios to get the most restrictive settings (min of max)\r\n\t\t\tthis.accounts.forEach((a: Account) => {\r\n\t\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(a.portfolioName);\r\n\t\t\t\tlet merchantMaxFutureDays: number = parseInt(portfolio.merchantSettings.maxFutureDays, 10);\r\n\t\t\t\tlet portfolioMaxFutureDays: number = parseInt(portfolio.settings.paymentTypes.maxFutureDays, 10);\r\n\r\n\t\t\t\tif (merchantMaxFutureDays && merchantMaxFutureDays < this.maxFuture) {\r\n\t\t\t\t\tthis.maxFuture = merchantMaxFutureDays;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (portfolioMaxFutureDays && portfolioMaxFutureDays < this.maxFuture) {\r\n\t\t\t\t\tthis.maxFuture = portfolioMaxFutureDays;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// get fees enabled merchant setting. Right now just grab from the first account since we only allow a\r\n\t\t// single merchant.This would need to change for multi-merchant support\r\n\t\tthis.merchantConsumerPortalFeeSettings.feesEnabled = this.globalState.business.fetchPortfolioSettings(this.accounts[0].portfolioName).merchantSettings.feeSettings.serviceFeeEnabled;\r\n\r\n\t\t// payment item table initialization\r\n\t\tthis.paymentItemTableConfiguration = new PaymentItemTableConfiguration();\r\n\t\tthis.paymentItemTableConfiguration.itemType = PaymentItemType.Account;\r\n\t\tthis.paymentItemTableConfiguration.selectFirstItemUponLoad = false;\r\n\t\tthis.paymentItemTableConfiguration.enableItemSelection = false;\r\n\t\tthis.paymentItemTableConfiguration.onlyShowSelected = true;\r\n\t\tthis.paymentItemTableConfiguration.showPaymentAmount = true;\r\n\t\tthis.paymentItemTableConfiguration.isPaymentAmountEditable = !this.payInFull && !this.isPayOffEarly;\r\n\t\tthis.paymentItemTableConfiguration.isPayInFull = this.payInFull;\r\n\t\tthis.paymentItemTableConfiguration.isPayOffEarly = this.isPayOffEarly;\r\n\t\tthis.paymentItemTableConfiguration.showStatementLink = false;\r\n\t\tthis.paymentItemTableConfiguration.showSubtotal = this.accounts.length > 1;\r\n\t\tthis.paymentItemTableConfiguration.paymentAmountLabel = this.globalState.business.portalSettings.fields.paymentAmount.label || null;\r\n\t\tthis.forceRefreshOfData = false;\r\n\r\n\t\tif (this.isPayOffEarly) {\r\n\t\t\tthis.paymentItemTableConfiguration.initialAmountType = PaymentItemInitialEnteredAmount.pendingBalance;\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tgetSingleFutureAllowedForSelectedAccounts(): boolean {\r\n\t\tlet allowed: boolean = true;\r\n\t\tthis.accounts.forEach((a: Account) => {\r\n\t\t\tif (!allowed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(a.portfolioName);\r\n\t\t\tlet currentPortfolioAllowed: boolean = portfolio.settings.paymentTypes.allowFuture;\r\n\t\t\tif (!currentPortfolioAllowed) {\r\n\t\t\t\tallowed = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn allowed;\r\n\t}\r\n\r\n\tnext(event) {\r\n\t\t// payment form errors\r\n\t\tthis.validationErrors = event.detail.errors;\r\n\t\tlet confirmOk: boolean = true;\r\n\r\n\t\t// if no payment form errors, validate other components and the page. Currently the payment form returns a list of errors OR payment info.\r\n\t\t// Now that payment info is needed for external validation, it would be ideal if it were refactored to return both errors AND payment info, so the\r\n\t\t// list of errors could be combined into one, if needed.\r\n\r\n\t\t// payment item table errors\r\n\t\tlet paymentItemValidationResult: ComponentValidationResult = this.paymentItemTableViewModel.validate();\r\n\t\tif (!paymentItemValidationResult.isValid && paymentItemValidationResult.confirm) {\r\n\t\t\t// Remove confirmation error message.\r\n\t\t\tlet confirmErrorMessage = paymentItemValidationResult\r\n\t\t\t\t.errorMessages.splice(\r\n\t\t\t\t\tpaymentItemValidationResult.confirmErrorMessageIndex, 1);\r\n\r\n\t\t\t// Display a confirmation alert\r\n\t\t\tconfirmOk = confirm(\r\n\t\t\t\t...confirmErrorMessage);\r\n\r\n\t\t\t// Render remaining validation errors.\r\n\t\t\tthis.validationErrors.push(...paymentItemValidationResult.errorMessages);\r\n\t\t} else if (!paymentItemValidationResult.isValid) {\r\n\t\t\tthis.validationErrors.push(...paymentItemValidationResult.errorMessages);\r\n\t\t}\r\n\r\n\t\t// page errors\r\n\t\tif (event.detail.errors.length === 0) {\r\n\t\t\tthis.validationErrors.push(...this.getValidationErrors(event.detail));\r\n\t\t}\r\n\r\n\t\tif (this.validationErrors.length === 0 && confirmOk) {\r\n\t\t\tthis.paymentInformation = event.detail;\r\n\r\n\t\t\tthis.updateSubtotal();\r\n\r\n\t\t\tlet paymentDate = moment(this.paymentInformation.date, 'MM/DD/YYYY');\r\n\t\t\tlet today = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY'), 'MM/DD/YYYY');\r\n\t\t\tthis.isSingleFuture = (paymentDate > today);\r\n\r\n\t\t\tif (this.paymentInformation.isWallet) {\r\n\t\t\t\tif (this.paymentInformation.card && this.paymentInformation.card.selectedPaymentMethod) {\r\n\t\t\t\t\tthis.paymentInformation.card.cardNumber = this.paymentInformation.card.selectedPaymentMethod.last4ofCard;\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.paymentInformation.check && this.paymentInformation.check.selectedPaymentMethod) {\r\n\t\t\t\t\tthis.paymentInformation.check.accountNumber = this.paymentInformation.check.selectedPaymentMethod.last4ofAccount;\r\n\t\t\t\t\tthis.paymentInformation.check.transitNumber = this.paymentInformation.check.selectedPaymentMethod.aba;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.getConfirmationTemplateData();\r\n\r\n\t\t\tif (this.isDigitalWallet) {\r\n\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\tthis.setApplePaySettingsFields();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.showConfirmation();\r\n\t\t}\r\n\t}\r\n\r\n\tupdateSubtotal(): void {\r\n\t\tthis.subtotal = this.paymentItemTableViewModel.getTotalEnteredAmountForSelectedItems();\r\n\t\tif (this.payInFull) {\r\n\t\t\tthis.subDiscountAmount = this.paymentItemTableViewModel.getTotalDiscountAmountForSelectedItems();\r\n\t\t}\r\n\t}\r\n\r\n\tgetConfirmationTemplateData() {\r\n\t\tlet makePaymentText: string = this.i18n.i18next.t('makePayment', 'Make Payment');\r\n\r\n\t\tthis.confirmationTitle = (this.isSingleFuture) ?\r\n\t\t\tthis.i18n.i18next.t('reviewInfoPressSchedulePayment', 'Please review the following information and press the Schedule Payment button') :\r\n\t\t\tthis.i18n.i18next.t('reviewInfoPressMakePayment', {\r\n\t\t\t\tdefaultValue: 'Please review the following information and press the Make Payment button.',\r\n\t\t\t\tpayment: makePaymentText\r\n\t\t\t});\r\n\r\n\t\tthis.confirmationSubmitButtonText = (this.isSingleFuture) ?\r\n\t\t\tthis.i18n.i18next.t('schedulePayment', 'Schedule Payment') :\r\n\t\t\tmakePaymentText;\r\n\r\n\t\tlet customObject: any;\r\n\r\n\t\tif (this.paymentInformation.card) {\r\n\t\t\t// card\r\n\t\t\tthis.isAch = false;\r\n\t\t\tthis.isDigitalWallet = false;\r\n\t\t\tthis.customTemplateName = 'Credit Card Payment Confirmation';\r\n\t\t\tcustomObject = {\r\n\t\t\t\tdate: this.paymentInformation.date,\r\n\t\t\t\tname: this.paymentInformation.name,\r\n\t\t\t\taddress1: this.paymentInformation.addressLine1,\r\n\t\t\t\tphone: this.paymentInformation.billingPhone, // todo: is this used?\r\n\t\t\t\temail: this.paymentInformation.billingEmail, // todo: is this used?\r\n\t\t\t\tzip: this.paymentInformation.zipCode,\r\n\t\t\t\tfee: numeral(this.calculatedFeeAmount).format('($0,0.00)'),\r\n\t\t\t\tamount: numeral(this.subtotal).format('($0,0.00)'),\r\n\t\t\t\tcustomerAccountNumber: this.accounts[0].referenceId,\r\n\t\t\t\taccountNumber: this.accounts[0].referenceId, // backward compatibility\r\n\t\t\t\tcustomerAccountName: this.accounts[0].name,\r\n\t\t\t\tmerchantZid: this.globalState.business.getMerchantZidAssociatedToPortfolioByPortfolioName(this.accounts[0].portfolioName),\r\n\t\t\t\tdescription: this.paymentInformation.transactionDescription,\r\n\t\t\t\ttotal: numeral(this.calculatedTotalAmount).format('($0,0.00)'),\r\n\t\t\t\tcardNumber: this.paymentInformation.card.cardNumber !== 'undefined' ? '***' + FormattingHelper.mask(this.paymentInformation.card.cardNumber) : '',\r\n\t\t\t\texpDate: this.paymentInformation.card.expirationDate,\r\n\t\t\t\tcustomerAccountLocationName: (this.accounts[0].bucket) ? this.accounts[0].bucket.displayName : '',\r\n\t\t\t\tcustomerAccountLocationReferenceId: (this.accounts[0].bucket) ? this.accounts[0].bucket.referenceId : '',\r\n\t\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\t\tbillingEmail: this.globalState.customer.email\r\n\t\t\t};\r\n\t\t} else if (this.paymentInformation.check) {\r\n\t\t\t// ach\r\n\t\t\tthis.isAch = true;\r\n\t\t\tthis.isDigitalWallet = false;\r\n\t\t\tthis.customTemplateName = 'eCheck Payment Confirmation';\r\n\t\t\tcustomObject = {\r\n\t\t\t\tdate: this.paymentInformation.date,\r\n\t\t\t\tname: this.paymentInformation.name,\r\n\t\t\t\taddress1: this.paymentInformation.addressLine1,\r\n\t\t\t\tphone: this.paymentInformation.billingPhone,\r\n\t\t\t\temail: this.paymentInformation.billingEmail,\r\n\t\t\t\tzip: this.paymentInformation.zipCode,\r\n\t\t\t\tfee: numeral(this.calculatedFeeAmount).format('($0,0.00)'),\r\n\t\t\t\tamount: numeral(this.subtotal).format('($0,0.00)'),\r\n\t\t\t\tcustomerAccountNumber: this.accounts[0].referenceId,\r\n\t\t\t\taccountNumber: this.accounts[0].referenceId, // backward compatibility\r\n\t\t\t\tcustomerAccountName: this.accounts[0].name,\r\n\t\t\t\tmerchantZid: this.globalState.business.getMerchantZidAssociatedToPortfolioByPortfolioName(this.accounts[0].portfolioName),\r\n\t\t\t\tdescription: this.paymentInformation.transactionDescription,\r\n\t\t\t\ttotal: numeral(this.calculatedTotalAmount).format('($0,0.00)'),\r\n\t\t\t\tbankAccount: this.paymentInformation.check.accountNumber !== 'undefined' ? '***' + FormattingHelper.mask(this.paymentInformation.check.accountNumber) : '',\r\n\t\t\t\tcheckNumber: this.paymentInformation.check.checkNumber,\r\n\t\t\t\ttransitNumber: this.paymentInformation.check.transitNumber,\r\n\t\t\t\tcustomerAccountLocationName: (this.accounts[0].bucket) ? this.accounts[0].bucket.displayName : '',\r\n\t\t\t\tcustomerAccountLocationReferenceId: (this.accounts[0].bucket) ? this.accounts[0].bucket.referenceId : '',\r\n\t\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\t\tbillingEmail: this.globalState.customer.email\r\n\t\t\t};\r\n\t\t} else if (this.paymentInformation.digitalWalletSettings) {\r\n\t\t\t// digital wallet\r\n\t\t\tthis.isAch = false;\r\n\t\t\tthis.isDigitalWallet = true;\r\n\t\t\tthis.customTemplateName = 'Digital Wallet Sale';\r\n\t\t\tcustomObject = {\r\n\t\t\t\tdate: this.paymentInformation.date,\r\n\t\t\t\tphone: this.paymentInformation.billingPhone, // todo: is this used?\r\n\t\t\t\temail: this.paymentInformation.billingEmail, // todo: is this used?\r\n\t\t\t\tamount: numeral(this.subtotal).format('($0,0.00)'),\r\n\t\t\t\tcustomerAccountNumber: this.accounts[0].referenceId,\r\n\t\t\t\taccountNumber: this.accounts[0].referenceId, // backward compatibility\r\n\t\t\t\tcustomerAccountName: this.accounts[0].name,\r\n\t\t\t\tmerchantZid: this.globalState.business.getMerchantZidAssociatedToPortfolioByPortfolioName(this.accounts[0].portfolioName),\r\n\t\t\t\tdescription: this.paymentInformation.digitalWalletName,\r\n\t\t\t\ttotal: numeral(this.calculatedTotalAmount).format('($0,0.00)'),\r\n\t\t\t\tcustomerAccountLocationName: (this.accounts[0].bucket) ? this.accounts[0].bucket.displayName : '',\r\n\t\t\t\tcustomerAccountLocationReferenceId: (this.accounts[0].bucket) ? this.accounts[0].bucket.referenceId : '',\r\n\t\t\t\tbillingPhone: this.globalState.customer.mobilePhone,\r\n\t\t\t\tbillingEmail: this.globalState.customer.email,\r\n\t\t\t\tdigitalWalletName: this.paymentInformation.digitalWalletName,\r\n\t\t\t\ttotalLabel: this.merchantConsumerPortalFeeSettings.feesEnabled ? this.i18n.i18next.t('subTotal', 'Subtotal') + '*' : this.i18n.i18next.t('total', 'Total'),\r\n\t\t\t\tshowDigitalWalletFeeDisclosure: this.merchantConsumerPortalFeeSettings.feesEnabled\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tlet accountPayments = this.getAccountsToPayForSubmission();\r\n\t\tconst merchantKey = this.globalState.business.getMerchantKeyAssociatedToPortfolioByPortfolioName(this.accounts[0].portfolioName);\r\n\t\tthis.confirmationTemplateData = new TemplateData(customObject, merchantKey, accountPayments);\r\n\t}\r\n\r\n\tgetMerchantKey(): number {\r\n\t\tconst accountPayments = this.getAccountsToPayForSubmission();\r\n\t\treturn accountPayments[0].merchantKey; // pick out the merchant key from the first account for now until we support MMIDs\r\n\t}\r\n\r\n\tsetApplePaySettingsFields(): void {\r\n\t\tif (!this.paymentInformation.digitalWalletSettings?.isApplePay()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst applePaySettings: ApplePaySettings = this.paymentInformation.digitalWalletSettings as ApplePaySettings;\r\n\t\tapplePaySettings.totalAmount = this.subtotal.toString();\r\n\r\n\t\tif (this.isSingleFuture) {\r\n\t\t\t// recurring requests are set to pending to display 'amount pending' text in modal\r\n\t\t\tapplePaySettings.totalType = 'pending';\r\n\t\t\tapplePaySettings.paymentTiming = 'deferred';\r\n\t\t\tapplePaySettings.deferredPaymentDate = this.paymentInformation.date;\r\n\t\t}\r\n\r\n\t\tthis.paymentInformation.digitalWalletSettings = applePaySettings;\r\n\t}\r\n\r\n\tsubmit(event: CustomEvent) {\r\n\t\tconsole.log('received dispatch apple pay submit', event.detail);\r\n\r\n\t\tlet saveToWallet = this.paymentInformation.addPaymentMethodToWalletIsSelected;\r\n\r\n\t\tif (saveToWallet\r\n\t\t\t&& this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\t// Call save to wallet for a specific account after transaction success.\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected = false;\r\n\t\t}\r\n\r\n\t\treturn this.submitTransaction(event)\r\n\t\t\t.then(() => {\r\n\t\t\t\tif (!saveToWallet\r\n\t\t\t\t\t|| !this.globalState.isConsumerPortalGuarantorBillingEnabled\r\n\t\t\t\t\t|| !!this.paymentInformation.digitalWalletSettings) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet customerId: string = this.globalState.customer.id;\r\n\r\n\t\t\t\tif (this.globalState.isConsumerPortalGuarantorBillingEnabled) {\r\n\t\t\t\t\tcustomerId = this.selectedWalletToCustomer.id;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!!this.paymentInformation.card) {\r\n\t\t\t\t\tlet cardToken = new CardToken();\r\n\t\t\t\t\tcardToken.cardholderName = this.paymentInformation.name;\r\n\t\t\t\t\tcardToken.cardNumber = this.paymentInformation.card.cardNumber;\r\n\t\t\t\t\tcardToken.expirationDate = this.paymentInformation.card.expirationDate;\r\n\t\t\t\t\tcardToken.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\t\t\t\treturn this.payrazrService.addCardPaymentMethod(cardToken, false, customerId);\r\n\t\t\t\t} else if (!!this.paymentInformation.check) {\r\n\t\t\t\t\tlet achToken = new AchToken();\r\n\t\t\t\t\tachToken.accountName = this.paymentInformation.name;\r\n\t\t\t\t\tachToken.accountNumber = this.paymentInformation.check.accountNumber;\r\n\t\t\t\t\tachToken.aba = this.paymentInformation.check.transitNumber;\r\n\t\t\t\t\tachToken.accountType = this.paymentInformation.check.accountType;\r\n\t\t\t\t\tachToken.addressLine1 = this.paymentInformation.check.addressLine1;\r\n\t\t\t\t\tachToken.zipCode = this.paymentInformation.zipCode;\r\n\r\n\t\t\t\t\treturn this.payrazrService.addAchPaymentMethod(achToken, false, customerId);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet routeSettings: SinglePaymentReceiptRouteSettings = new SinglePaymentReceiptRouteSettings();\r\n\t\t\t\trouteSettings.accountPayments = this.getAccountsToPayForSubmission();\r\n\t\t\t\trouteSettings.paymentInformation = this.paymentInformation;\r\n\t\t\t\tthis.router.routes.find((routeConfig) => routeConfig.name === 'single-payment/single-payment-receipt').settings = routeSettings;\r\n\t\t\t\tthis.router.navigateToRoute('single-payment/single-payment-receipt');\r\n\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t})\r\n\t\t\t.catch(reason => {\r\n\t\t\t\talert('error');\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitTransaction(event: CustomEvent): Promise {\r\n\t\t// Use hpf api for pay today and single futures for card and check.\r\n\t\t// Continue to use old portal api methods for pay off early since the logic is slightly different.\r\n\t\t// Update: The above still stands, with a new exception:\r\n\t\t// Use HPF API for pay off early with DigitalWallet.\r\n\t\tlet useHpfApi = !this.isPayOffEarly || this.isDigitalWallet;\r\n\r\n\t\tif (useHpfApi) {\r\n\t\t\treturn this.submitToHpfApi(event)\r\n\t\t\t\t.then((response: ServiceResponse) => {\r\n\t\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\t\t// response was successful\r\n\t\t\t\t\t\tif (response.value.isSuccessful) {\r\n\t\t\t\t\t\t\t// transaction or plan creation was successful\r\n\t\t\t\t\t\t\tif (this.isSingleFuture) {\r\n\t\t\t\t\t\t\t\tthis.paymentInformation.planId = response.value.paymentId;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.paymentInformation.pnref = response.value.paymentId;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.paymentInformation.portalTemplateType = this.templateService.getPortalTemplateType(this.paymentInformation, this.isSingleFuture);\r\n\r\n\t\t\t\t\t\t\tif (response.value.hasException) {\r\n\t\t\t\t\t\t\t\tthis.paymentInformation.customMessage = response.value.resultMessage;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// transaction or plan creation failed\r\n\t\t\t\t\t\t\tthis.paymentInformation.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\t\t\tthis.paymentInformation.resultCode = response.value.resultCode;\r\n\t\t\t\t\t\t\tthis.paymentInformation.resultMessage = response.value.resultMessage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// response was not successful\r\n\t\t\t\t\t\tthis.paymentInformation.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\t\tthis.paymentInformation.resultCode = response.resultMessage; // maybe need to tweak later to pass ApiResponse result code through to here\r\n\t\t\t\t\t\tthis.paymentInformation.resultMessage = response.resultMessage;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.paymentInformation.customerAccountNumber = this.accounts[0].displayName;\r\n\t\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = this.paymentInformation.addPaymentMethodToWalletIsSelected;\r\n\t\t\t\t\tthis.paymentInformation.isFuturePayment = this.isSingleFuture;\r\n\r\n\t\t\t\t\t// complete digital wallet session\r\n\t\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\t\tconst isSuccessful: boolean = response.isSuccessful && response.value.isSuccessful && !response.value.hasException;\r\n\t\t\t\t\t\tApplePayUtil.completeSession(event, isSuccessful);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\talert('error');\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\t// complete digital wallet session\r\n\t\t\t\t\tif (this.isApplePayPayment) {\r\n\t\t\t\t\t\tApplePayUtil.completeSession(event, false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// this.transactionError = error;\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\treturn this.submitToApi()\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tif (result.response.isSuccessful) {\r\n\t\t\t\t\t\tthis.paymentInformation.pnref = result.response.pnref;\r\n\t\t\t\t\t\tthis.paymentInformation.planId = result.response.planId;\r\n\t\t\t\t\t\tthis.paymentInformation.merchantKey = result.response.merchantKey;\r\n\t\t\t\t\t\tthis.paymentInformation.portalTemplateType = this.templateService.getPortalTemplateType(this.paymentInformation, this.isSingleFuture);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.paymentInformation.portalTemplateType = PortalTemplateTypes.TransactionFailed;\r\n\t\t\t\t\t\tthis.paymentInformation.resultCode = result.response.resultCode;\r\n\t\t\t\t\t\tthis.paymentInformation.resultMessage = result.response.message;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.paymentInformation.customerAccountNumber = this.accounts[0].displayName;\r\n\t\t\t\t\tthis.paymentInformation.savedPaymentMethodToWallet = this.paymentInformation.addPaymentMethodToWalletIsSelected;\r\n\t\t\t\t\tthis.paymentInformation.isFuturePayment = this.isSingleFuture;\r\n\r\n\t\t\t\t\tif (result.response.hasException) {\r\n\t\t\t\t\t\tthis.paymentInformation.customMessage = result.response.message;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\talert('error');\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\t// this.transactionError = error;\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tsubmitToHpfApi(event: CustomEvent): Promise {\r\n\t\tlet transactionRequest = new SubmitTransactionRequest();\r\n\t\ttransactionRequest.transactionType = (this.isSingleFuture) ? TransactionTypes.SingleFuture : TransactionTypes.Sale;\r\n\t\ttransactionRequest.amount = this.subtotal;\r\n\t\ttransactionRequest.accountPayments = this.getAccountsToPayForSubmission();\r\n\t\ttransactionRequest.merchantKey = transactionRequest.accountPayments[0].merchantKey; // pick out the merchant key from the first account for now until we support MMIDs\r\n\t\ttransactionRequest.paymentDate = this.paymentInformation.date;\r\n\t\ttransactionRequest.postedInfo = new PostedInfo();\r\n\t\ttransactionRequest.postedInfo.userType = 'C'; // always consumer user type when coming from portal\r\n\t\ttransactionRequest.description = this.isDigitalWallet ? this.paymentInformation.digitalWalletName : this.paymentInformation.transactionDescription;\r\n\t\tif (this.paymentInformation.addPaymentMethodToWalletIsSelected) {\r\n\t\t\ttransactionRequest.saveToWalletForCustomerKey = this.customer.customerKey;\r\n\t\t}\r\n\r\n\t\tif (this.paymentInformation.isWallet) {\r\n\t\t\ttransactionRequest.paymentMethod = this.getWalletInfoForSubmission();\r\n\t\t} else if (this.paymentInformation.card) {\r\n\t\t\ttransactionRequest.paymentMethod = this.getCardInfoForSubmission();\r\n\t\t} else if (this.paymentInformation.check) {\r\n\t\t\ttransactionRequest.paymentMethod = this.getCheckInfoForSubmission();\r\n\t\t} else if (this.paymentInformation.digitalWalletSettings) {\r\n\t\t\ttransactionRequest.paymentMethod = this.getDigitalWalletInfoForSubmission(event?.detail);\r\n\t\t}\r\n\r\n\t\tthis.paymentInformation.merchantKey = transactionRequest.merchantKey;\r\n\r\n\t\ttransactionRequest.relatedCustomerKey = this.globalState.customer.customerKey;\r\n\r\n\t\ttransactionRequest.isPayOffEarly = this.isPayOffEarly;\r\n\r\n\t\tif (this.isPayOffEarly) {\r\n\t\t\ttransactionRequest.paymentPlanId = this.accounts[0].paymentPlans\r\n\t\t\t\t.filter(x => x.totalPayments >= 1)\r\n\t\t\t\t.sort((a, b) => a.paymentDate - b.paymentDate)\r\n\t\t\t\t.pop()\r\n\t\t\t\t.id;\r\n\t\t}\r\n\r\n\t\treturn this.hpfTransactionService.submitTransaction(transactionRequest);\r\n\t}\r\n\r\n\tprivate getAccountsToPayForSubmission() {\r\n\t\tlet accountsToPay: ICustomerAccountToPay[] = [];\r\n\t\tlet selectedPaymentItems: AccountPaymentItem[] = this.paymentItemTableViewModel.getSelectedItems();\r\n\t\tselectedPaymentItems.forEach((i: AccountPaymentItem) => {\r\n\t\t\taccountsToPay.push({\r\n\t\t\t\tcustomerAccountKey: i.itemKey,\r\n\t\t\t\tpaymentAmount: NumberHelper.parseCurrency(i.enteredAmount),\r\n\t\t\t\tdiscountAmount: this.getDiscountAmountForAccountPaymentItem(i),\r\n\t\t\t\tmerchantKey: i.merchantKey,\r\n\t\t\t\tpaymentBalanceType: i.paymentBalanceType,\r\n\t\t\t\tpaymentLimitSettings: i.paymentLimitSettings,\r\n\t\t\t\tminPaymentDue: i.minPaymentDue\r\n\t\t\t} as ICustomerAccountToPay);\r\n\t\t});\r\n\t\treturn accountsToPay;\r\n\t}\r\n\r\n\tgetDiscountAmountForAccountPaymentItem(paymentItem: AccountPaymentItem): number {\r\n\t\treturn this.payInFull\r\n\t\t\t? NumberHelper.parseCurrency((paymentItem.initialAmount * paymentItem.discount / 100).toFixed(2))\r\n\t\t\t: this.isPayOffEarly\r\n\t\t\t\t? this.getDiscountAmountFromFirstCustomerAccount()\r\n\t\t\t\t: 0;\r\n\t}\r\n\r\n\tprivate getDiscountAmountFromFirstCustomerAccount(): number {\r\n\t\treturn NumberHelper.parseCurrency((this.accounts[0].balance - this.accounts[0].adjustedBalances.pendingBalance).toFixed(2));\r\n\t}\r\n\r\n\tprivate getWalletInfoForSubmission(): PaymentMethod {\r\n\t\tif (this.paymentInformation.isCardPayment &&\r\n\t\t\tthis.paymentInformation.card &&\r\n\t\t\tthis.paymentInformation.card.selectedPaymentMethod\r\n\t\t) {\r\n\t\t\tlet card: CardPaymentMethod = new CardPaymentMethod();\r\n\t\t\tcard.paymentMethodKey = this.paymentInformation.card.selectedPaymentMethod.cardInfoKey;\r\n\t\t\treturn card;\r\n\t\t} else if (this.paymentInformation.isCheckPayment &&\r\n\t\t\tthis.paymentInformation.check &&\r\n\t\t\tthis.paymentInformation.check.selectedPaymentMethod\r\n\t\t) {\r\n\t\t\tlet check: CheckPaymentMethod = new CheckPaymentMethod();\r\n\t\t\tcheck.paymentMethodKey = this.paymentInformation.check.selectedPaymentMethod.checkInfoKey;\r\n\t\t\tcheck.checkNumber = this.paymentInformation.check.checkNumber;\r\n\t\t\treturn check;\r\n\t\t}\r\n\t\treturn null; // shouldn't get here!\r\n\t}\r\n\r\n\tprivate getCardInfoForSubmission(): CardPaymentMethod {\r\n\t\tlet card: CardPaymentMethod = new CardPaymentMethod();\r\n\t\t// common\r\n\t\tcard.customerKey = this.customer.customerKey;\r\n\t\tcard.accountName = this.paymentInformation.name;\r\n\t\tcard.addressLine1 = this.paymentInformation.addressLine1;\r\n\t\tcard.city = this.paymentInformation.billingCity;\r\n\t\tcard.state = this.paymentInformation.billingState;\r\n\t\tcard.zipCode = this.paymentInformation.zipCode;\r\n\t\t// card-specific\r\n\t\tcard.accountNumber = this.paymentInformation.card.cardNumber;\r\n\t\tcard.cvv = this.paymentInformation.card.cvv;\r\n\t\tcard.expirationMonth = parseInt(this.paymentInformation.card.expirationDate.substring(0, 2), 10);\r\n\t\tcard.expirationYear = parseInt('20' + this.paymentInformation.card.expirationDate.substring(2, 4), 10);\r\n\t\tcard.isThirdParty = this.paymentInformation.isThirdPartyPayment;\r\n\t\treturn card;\r\n\t}\r\n\r\n\tprivate getCheckInfoForSubmission(): CheckPaymentMethod {\r\n\t\tlet check: CheckPaymentMethod = new CheckPaymentMethod();\r\n\t\t// common\r\n\t\tcheck.customerKey = this.customer.customerKey;\r\n\t\tcheck.accountName = this.paymentInformation.name;\r\n\t\tcheck.addressLine1 = this.paymentInformation.addressLine1;\r\n\t\tcheck.city = this.paymentInformation.billingCity;\r\n\t\tcheck.state = this.paymentInformation.billingState;\r\n\t\tcheck.zipCode = this.paymentInformation.zipCode;\r\n\t\t// check-specific\r\n\t\tcheck.accountNumber = this.paymentInformation.check.accountNumber;\r\n\t\tcheck.aba = this.paymentInformation.check.transitNumber;\r\n\t\tcheck.checkNumber = this.paymentInformation.check.checkNumber;\r\n\t\tswitch (this.paymentInformation.check.accountType) {\r\n\t\t\tcase 'checking':\r\n\t\t\t\tcheck.achAccountType = AchAccountTypeEnum.PersonalChecking;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'savings':\r\n\t\t\t\tcheck.achAccountType = AchAccountTypeEnum.PersonalSavings;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'business':\r\n\t\t\t\tcheck.achAccountType = AchAccountTypeEnum.BusinessChecking;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn check;\r\n\t}\r\n\r\n\tgetDigitalWalletInfoForSubmission(digitalWalletEventData: any): DigitalWalletPaymentMethod {\r\n\t\tif (digitalWalletEventData === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet digitalWallet: DigitalWalletPaymentMethod = new DigitalWalletPaymentMethod();\r\n\t\t// common\r\n\t\tdigitalWallet.customerKey = this.customer.customerKey;\r\n\t\t// digital wallet specific\r\n\t\tif (digitalWalletEventData.digitalWalletType === DigitalWalletType.ApplePay) {\r\n\t\t\tconst applePayPayment: ApplePayJS.ApplePayPayment = digitalWalletEventData.payment;\r\n\t\t\tdigitalWallet.digitalWalletType = DigitalWalletType.ApplePay;\r\n\r\n\t\t\tconst applePayPaymentToken = JSON.stringify(applePayPayment.token);\r\n\t\t\tdigitalWallet.authenticationPaymentToken = btoa(applePayPaymentToken);\r\n\t\t\tdigitalWallet.calculatedServiceFee = digitalWalletEventData.calculatedServiceFee;\r\n\t\t\tdigitalWallet.cardType = applePayPayment.token.paymentMethod.type;\r\n\t\t\tdigitalWallet.isDebitCard = applePayPayment.token.paymentMethod.type === 'debit';\r\n\t\t\tdigitalWallet.isCreditCard = applePayPayment.token.paymentMethod.type === 'credit';\r\n\r\n\t\t\t// we require name and postal code\r\n\t\t\tdigitalWallet.accountName = applePayPayment.billingContact?.givenName + ' ' + applePayPayment.billingContact?.familyName;\r\n\t\t\tdigitalWallet.zipCode = applePayPayment.billingContact?.postalCode ?? '';\r\n\r\n\t\t\tconsole.log('stringified token:', applePayPaymentToken);\r\n\t\t\tconsole.log('dw payment method: ', digitalWallet);\r\n\t\t}\r\n\r\n\t\treturn digitalWallet;\r\n\t}\r\n\r\n\tsubmitToApi(): Promise {\r\n\t\tif (this.isSingleFuture) {\r\n\t\t\t// Pay future\r\n\t\t\tlet paymentDate = moment(this.paymentInformation.date, 'MM/DD/YYYY');\r\n\t\t\tif (this.paymentInformation.card) {\r\n\t\t\t\treturn this.submitSingleFutureCard(paymentDate);\r\n\t\t\t} else if (this.paymentInformation.check) {\r\n\t\t\t\treturn this.submitSingleFutureCheck(paymentDate);\r\n\t\t\t}\r\n\t\t} else if (this.isPayOffEarly) {\r\n\t\t\t// Pay off early\r\n\t\t\tif (this.paymentInformation.card) {\r\n\t\t\t\treturn this.submitPayOffEarlyCard();\r\n\t\t\t} else if (this.paymentInformation.check) {\r\n\t\t\t\treturn this.submitPayOffEarlyCheck();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// pay today\r\n\t\t\tif (this.paymentInformation.card) {\r\n\t\t\t\treturn this.submitSingleTodayCard();\r\n\t\t\t} else if (this.paymentInformation.check) {\r\n\t\t\t\treturn this.submitSingleTodayCheck();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tsubmitSingleTodayCheck(): Promise {\r\n\t\treturn this.payrazrService.submitCheckPaymentV2(\r\n\t\t\tthis.globalState.customer,\r\n\t\t\tthis.accounts[0],\r\n\t\t\tthis.paymentInformation.name,\r\n\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\tthis.paymentInformation.billingState,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\tnull,\r\n\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\tthis.subtotal,\r\n\t\t\tthis.calculatedFeeAmount,\r\n\t\t\tthis.paymentInformation.check,\r\n\t\t\tnull,\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\tthis.subDiscountAmount\r\n\t\t);\r\n\t}\r\n\tsubmitSingleFutureCheck(paymentDate): Promise {\r\n\t\treturn this.payrazrService.submitCheckPaymentPlan(\r\n\t\t\tthis.accounts[0],\r\n\t\t\t0,\r\n\t\t\tthis.subtotal,\r\n\t\t\t1,\r\n\t\t\tpaymentDate,\r\n\t\t\tthis.paymentInformation.name,\r\n\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\tthis.paymentInformation.billingState,\r\n\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\tnull,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tthis.calculatedFeeAmount,\r\n\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\tthis.paymentInformation.check,\r\n\t\t\t0,\r\n\t\t\tfalse,\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\tthis.subDiscountAmount\r\n\t\t);\r\n\t}\r\n\tsubmitPayOffEarlyCheck(): Promise {\r\n\t\t// Currently pay off early does not support ach. Add that here\r\n\t\treturn null;\r\n\t}\r\n\tsubmitSingleTodayCard(): Promise {\r\n\t\treturn this.payrazrService.submitCardPaymentV2(\r\n\t\t\tthis.globalState.customer,\r\n\t\t\tthis.accounts[0],\r\n\t\t\tthis.paymentInformation.name,\r\n\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\tthis.paymentInformation.billingState,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\tnull,\r\n\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\tthis.subtotal,\r\n\t\t\tthis.calculatedFeeAmount,\r\n\t\t\tthis.paymentInformation.card,\r\n\t\t\tnull,\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\tthis.subDiscountAmount\r\n\t\t);\r\n\t}\r\n\tsubmitSingleFutureCard(paymentDate): Promise {\r\n\t\treturn this.payrazrService.submitCardPaymentPlan(\r\n\t\t\tthis.accounts[0],\r\n\t\t\t0,\r\n\t\t\tthis.subtotal,\r\n\t\t\t1,\r\n\t\t\tpaymentDate,\r\n\t\t\tthis.paymentInformation.name,\r\n\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\tthis.paymentInformation.billingState,\r\n\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\tnull,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tthis.calculatedFeeAmount,\r\n\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\tthis.paymentInformation.card,\r\n\t\t\t0,\r\n\t\t\tfalse,\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\tthis.subDiscountAmount\r\n\t\t);\r\n\t}\r\n\tsubmitPayOffEarlyCard(): Promise {\r\n\t\tthis.subDiscountAmount = this.getDiscountAmountFromFirstCustomerAccount();\r\n\r\n\t\treturn this.payrazrService.submitCardPaymentV2ForInstallmentsPayOffEarly(\r\n\t\t\tthis.globalState.customer,\r\n\t\t\tthis.accounts[0],\r\n\t\t\tthis.paymentInformation.name,\r\n\t\t\tthis.paymentInformation.addressLine1,\r\n\t\t\tthis.paymentInformation.billingCity,\r\n\t\t\tthis.paymentInformation.billingState,\r\n\t\t\tthis.paymentInformation.zipCode,\r\n\t\t\tthis.paymentInformation.billingPhone,\r\n\t\t\tthis.paymentInformation.billingEmail,\r\n\t\t\tthis.paymentInformation.transactionDescription,\r\n\t\t\tthis.paymentInformation.isThirdPartyPayment,\r\n\t\t\tthis.paymentInformation.amount,\r\n\t\t\tthis.paymentInformation.fee,\r\n\t\t\tthis.paymentInformation.card,\r\n\t\t\tthis.paymentInformation.addPaymentMethodToWalletIsSelected,\r\n\t\t\tthis.subDiscountAmount\r\n\t\t);\r\n\t}\r\n\r\n\tshowConfirmation() {\r\n\t\tthis.state = 'confirmation';\r\n\t}\r\n\r\n\thideConfirmation() {\r\n\t\tthis.state = 'setup';\r\n\t}\r\n\r\n\tgetValidationErrors(paymentInformation: any): string[] {\r\n\t\tlet validationErrors: string[] = [];\r\n\r\n\t\tlet paymentDate = moment(paymentInformation.date, 'MM/DD/YYYY');\r\n\t\tlet minFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.minFuture, 'd').startOf('day');\r\n\t\tlet maxFuture = moment(moment.tz(this.globalState.business.businessTimezone).format('MM/DD/YYYY')).add(this.maxFuture, 'd').endOf('day');\r\n\r\n\t\tif (!paymentDate.isValid()) {\r\n\t\t\tvalidationErrors.push(this.i18n.i18next.t('invalidPaymentDate', 'Invalid payment date'));\r\n\t\t}\r\n\r\n\t\tif (paymentDate < minFuture) {\r\n\t\t\tvalidationErrors.push(this.i18n.i18next.t('postDateCannotBeInPast', 'Post-date cannot be in the past'));\r\n\t\t}\r\n\t\tif (paymentDate > maxFuture) {\r\n\t\t\tvalidationErrors.push(this.i18n.i18next.t('postDateCannotBeMoreThan', { defaultValue: `Post-date cannot be more than ${this.maxFuture} day${this.maxFuture > 1 ? 's' : ''} from now`, future: this.maxFuture, sAddition: this.maxFuture > 1 ? 's' : '' }));\r\n\t\t}\r\n\r\n\t\treturn validationErrors;\r\n\t}\r\n\r\n\tgoBack() {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.validationErrors = new Array();\r\n\t}\r\n}\r\n","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { bindable, bindingMode } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class SinglePaymentFeeSummary {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) feeAmount: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) totalAmount: number;\r\n\t@bindable isDigitalWallet: boolean;\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".summary-container {\\r\\n padding: 20px;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { Account } from '../../models/customer';\r\nimport { SinglePaymentReceiptRouteSettings } from '../../models/single-payment/single-payment-receipt-route-settings';\r\nimport { State } from '../../services/global-state';\r\nimport { ICustomerAccountToPay } from '../../services/hpf-transaction-service';\r\n\r\n@autoinject\r\nexport class SinglePaymentReceipt {\r\n\tportalTemplateType;\r\n\tpnref;\r\n\tmerchantKey;\r\n\tsavedPaymentMethodToWallet;\r\n\tresultCode;\r\n\tresultMessage;\r\n\tplanId;\r\n\tisFuturePayment;\r\n\tfirstAccountCustomerAccountNumber;\r\n\tfirstAccountBucketKey: number | null;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n\tcustomMessage;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tactivate(params, routeConfig) {\r\n\t\tlet paymentInformation: any;\r\n\t\tif (routeConfig.settings instanceof SinglePaymentReceiptRouteSettings) {\r\n\t\t\tlet routeSettings: SinglePaymentReceiptRouteSettings = routeConfig.settings as SinglePaymentReceiptRouteSettings;\r\n\t\t\tthis.accountPayments = routeSettings.accountPayments;\r\n\t\t\tpaymentInformation = routeSettings.paymentInformation;\r\n\t\t}\r\n\r\n\t\t// get the accounts based on keys passed through route settings\r\n\t\tlet accounts: Account[] = [];\r\n\t\tthis.accountPayments.forEach((accountPayment: ICustomerAccountToPay) => {\r\n\t\t\tlet selectedAccount: Account = this.globalState.accounts.find((accountFromState: Account) =>\r\n\t\t\t\taccountFromState.customerAccountKey === accountPayment.customerAccountKey\r\n\t\t\t);\r\n\t\t\taccounts.push(selectedAccount);\r\n\t\t});\r\n\r\n\t\t// arbitrarily pass first account to receipt component. It's used to look up merchant and for email audit.\r\n\t\tthis.firstAccountCustomerAccountNumber = accounts[0].displayName;\r\n\t\tthis.firstAccountBucketKey = accounts[0].bucket\r\n\t\t\t? accounts[0].bucket.bucketKey\r\n\t\t\t: accounts[0].bucketKey || null;\r\n\r\n\t\tthis.portalTemplateType = paymentInformation.portalTemplateType;\r\n\t\tthis.pnref = paymentInformation.pnref;\r\n\t\tthis.merchantKey = paymentInformation.merchantKey;\r\n\t\tthis.savedPaymentMethodToWallet = paymentInformation.savedPaymentMethodToWallet;\r\n\t\tthis.resultCode = paymentInformation.resultCode;\r\n\t\tthis.resultMessage = paymentInformation.resultMessage;\r\n\t\tthis.planId = paymentInformation.planId || '';\r\n\t\tthis.isFuturePayment = paymentInformation.isFuturePayment ? true : false;\r\n\t\tthis.customMessage = paymentInformation.customMessage;\r\n\t}\r\n\r\n\tshowError(error: string) {\r\n\t\talert(error);\r\n\t}\r\n\r\n\treturnToDashboard() {\r\n\t\tthis.router.navigateToRoute('secure');\r\n\t}\r\n}\r\n","module.exports = \"\\r\\n\";","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { anyString, anything, instance, mock, when } from 'ts-mockito';\r\nimport { Business } from '../../models/business';\r\nimport { Account, Customer } from '../../models/customer';\r\nimport { ApplePaySettings, ApplePayUtil } from '../../models/digital-wallet';\r\nimport { SinglePaymentRouteSettings } from '../../models/single-payment/single-payment-route-settings';\r\nimport { TemplateData } from '../../models/template-data';\r\nimport { State } from '../../services/global-state';\r\nimport { DigitalWalletPaymentMethod, HpfTransactionService } from '../../services/hpf-transaction-service';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { PortalTemplateTypes, TemplateService } from '../../services/template-service';\r\nimport { PaymentItemTable } from '../../smart/components/payment-item-table/payment-item-table';\r\nimport { ComponentValidationResult } from '../../smart/components/payment-item-table/validation/component-validation-result';\r\nimport { NumberHelper } from '../../smart/helpers/number-helper';\r\nimport { AccountPaymentItem } from '../../smart/models/account-payment-item';\r\nimport { ServiceResponse } from '../../smart/models/service-response';\r\nimport { SinglePayment } from './single-payment';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('pages', () => {\r\n\t\tdescribe('single-payment', () => {\r\n\t\t\tlet component: SinglePayment;\r\n\t\t\tlet stubState: State;\r\n\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\t\t\tconst mockEventAggregator: EventAggregator = mock(EventAggregator);\r\n\t\t\tconst mockCustomer: Customer = mock(Customer);\r\n\t\t\tconst mockCustomerAccount: Account = mock(Account);\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockHpfTransactionService: HpfTransactionService = mock(HpfTransactionService);\r\n\t\t\tconst mockTemplateService: TemplateService = mock(TemplateService);\r\n\t\t\tconst mockPaymentItemTableViewModel: PaymentItemTable = mock(PaymentItemTable);\r\n\t\t\tconst mockApplePaySettings: ApplePaySettings = mock(ApplePaySettings);\r\n\t\t\tconst mockDigitalWalletPaymentMethod: DigitalWalletPaymentMethod = mock(DigitalWalletPaymentMethod);\r\n\t\t\tconst mockAccountPaymentItems: AccountPaymentItem[] = [mock(AccountPaymentItem)];\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tstubState = new State(\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockEventAggregator));\r\n\r\n\t\t\t\tstubState.customer = instance(mockCustomer);\r\n\r\n\t\t\t\tlet customerAccount = instance(mockCustomerAccount);\r\n\t\t\t\tcustomerAccount.portfolioName = 'loremIpsum';\r\n\t\t\t\tcustomerAccount.customerAccountKey = 1;\r\n\t\t\t\tstubState.customer.accounts = [customerAccount];\r\n\r\n\t\t\t\tlet business = instance(mockBusiness);\r\n\t\t\t\tbusiness.portalSettings = {\r\n\t\t\t\t\tfields: {\r\n\t\t\t\t\t\tpaymentAmount: {\r\n\t\t\t\t\t\t\tlabel: 'payment amount'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tstubState.business = business;\r\n\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Mocking a method of a plain object (non mocked instance).\r\n\t\t\t\t// This is saying that, when you encounter a reference to mockI18N.i18next\r\n\t\t\t\t// return the reference specified.\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\t// Then we are mocking the i18next.t() method.\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\r\n\t\t\t\tcomponent = new SinglePayment(\r\n\t\t\t\t\tstubState,\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockTemplateService),\r\n\t\t\t\t\tinstance(mockI18N),\r\n\t\t\t\t\tinstance(mockHpfTransactionService));\r\n\r\n\t\t\t\tmockApplePaySettings.isApplePay = () => true;\r\n\r\n\t\t\t\tcomponent.paymentItemTableViewModel = {\r\n\t\t\t\t\tgetSelectedItems: () => null\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tafterEach(() => {\r\n\t\t\t\tstubState = null;\r\n\t\t\t\tcomponent = null;\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize SinglePayment component', () => {\r\n\t\t\t\texpect(component).toBeTruthy();\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('activate()', () => {\r\n\t\t\t\tit('should initialize customer, customer account(s), and payment settings from global state and routeConfig', () => {\r\n\t\t\t\t\t// Mock a method of an existing instance (as opposed to mocking a method of a mocked instance).\r\n\t\t\t\t\tspyOn(component, 'getSingleFutureAllowedForSelectedAccounts').and.returnValue(true);\r\n\r\n\t\t\t\t\tspyOn(stubState.business, 'fetchPortfolioSettings')\r\n\t\t\t\t\t\t.withArgs(stubState.accounts[0].portfolioName)\r\n\t\t\t\t\t\t.and.returnValue({\r\n\t\t\t\t\t\t\tmerchantSettings: {\r\n\t\t\t\t\t\t\t\tmaxFutureDays: 30,\r\n\t\t\t\t\t\t\t\tfeeSettings: {\r\n\t\t\t\t\t\t\t\t\tserviceFeeEnabled: false\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\t\tmaxFutureDays: 45,\r\n\t\t\t\t\t\t\t\t\tallowFuture: true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tlet routeSettings = new SinglePaymentRouteSettings();\r\n\t\t\t\t\trouteSettings.payInFull = true;\r\n\t\t\t\t\trouteSettings.isPayOffEarly = false;\r\n\t\t\t\t\trouteSettings.selectedCustomerAccountKeys = [stubState.customer.accounts[0].customerAccountKey];\r\n\r\n\t\t\t\t\tlet routeConfig = {\r\n\t\t\t\t\t\tsettings: routeSettings\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tcomponent.activate({}, routeConfig);\r\n\r\n\t\t\t\t\texpect(component.getSingleFutureAllowedForSelectedAccounts).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.customer).toBe(stubState.customer);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getSingleFutureAllowedForSelectedAccounts()', () => {\r\n\t\t\t\tlet tests = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texpectation: 'should iterate through customer accounts and return true per portfolio settings',\r\n\t\t\t\t\t\tallowFuture: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\texpectation: 'should iterate through customer accounts and return false per portfolio settings',\r\n\t\t\t\t\t\tallowFuture: false\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\r\n\t\t\t\ttests.forEach(x => {\r\n\t\t\t\t\tit(x.expectation, () => {\r\n\t\t\t\t\t\tspyOn(stubState.business, 'fetchPortfolioSettings')\r\n\t\t\t\t\t\t\t.withArgs(stubState.accounts[0].portfolioName)\r\n\t\t\t\t\t\t\t.and.returnValue({\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tpaymentTypes: {\r\n\t\t\t\t\t\t\t\t\t\tallowFuture: x.allowFuture\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tcomponent.accounts = stubState.customer.accounts;\r\n\t\t\t\t\t\tlet response = component.getSingleFutureAllowedForSelectedAccounts();\r\n\t\t\t\t\t\texpect(stubState.business.fetchPortfolioSettings).toHaveBeenCalled();\r\n\t\t\t\t\t\texpect(response).toBe(x.allowFuture);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('next()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tspyOn(component, 'updateSubtotal').and.stub();\r\n\t\t\t\t\tspyOn(component, 'getConfirmationTemplateData').and.stub();\r\n\t\t\t\t\tspyOn(component, 'setApplePaySettingsFields').and.stub();\r\n\t\t\t\t\tspyOn(component, 'showConfirmation').and.stub();\r\n\t\t\t\t\tspyOn(window, 'confirm').and.returnValue(true);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should execute with no errors', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst pageErrors = [];\r\n\t\t\t\t\tconst validationErrors = [];\r\n\r\n\t\t\t\t\tlet componentValidationResult: ComponentValidationResult = new ComponentValidationResult();\r\n\t\t\t\t\tcomponentValidationResult.isValid = true;\r\n\t\t\t\t\tcomponentValidationResult.confirm = false;\r\n\t\t\t\t\tcomponentValidationResult.errorMessages = validationErrors;\r\n\t\t\t\t\tcomponentValidationResult.confirmErrorMessageIndex = -1;\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'validate').and.returnValue(componentValidationResult);\r\n\t\t\t\t\tspyOn(component, 'getValidationErrors').and.returnValue(pageErrors);\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.next({\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\terrors: pageErrors\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.validate).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.getValidationErrors).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.updateSubtotal).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.getConfirmationTemplateData).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.showConfirmation).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should execute with confirmOk', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst pageErrors = [];\r\n\t\t\t\t\tconst validationErrors = [\r\n\t\t\t\t\t\t// confirmation error\r\n\t\t\t\t\t\t'lorem ipsum'\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\tlet componentValidationResult: ComponentValidationResult = new ComponentValidationResult();\r\n\t\t\t\t\tcomponentValidationResult.isValid = false;\r\n\t\t\t\t\tcomponentValidationResult.confirm = true;\r\n\t\t\t\t\tcomponentValidationResult.errorMessages = validationErrors;\r\n\t\t\t\t\tcomponentValidationResult.confirmErrorMessageIndex = 0;\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'validate').and.returnValue(componentValidationResult);\r\n\t\t\t\t\tspyOn(component, 'getValidationErrors').and.returnValue(pageErrors);\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.next({\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\terrors: pageErrors\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.validate).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.getValidationErrors).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.updateSubtotal).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.getConfirmationTemplateData).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.showConfirmation).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should display confirmation alert and render validation errors', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst pageErrors = [];\r\n\t\t\t\t\tconst validationErrors = [\r\n\t\t\t\t\t\t// validation error\r\n\t\t\t\t\t\t'lorem ipsum',\r\n\t\t\t\t\t\t// confirmation error\r\n\t\t\t\t\t\t'dolor sit amet'\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\tlet componentValidationResult: ComponentValidationResult = new ComponentValidationResult();\r\n\t\t\t\t\tcomponentValidationResult.isValid = false;\r\n\t\t\t\t\tcomponentValidationResult.confirm = true;\r\n\t\t\t\t\tcomponentValidationResult.errorMessages = validationErrors;\r\n\t\t\t\t\tcomponentValidationResult.confirmErrorMessageIndex = 1;\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'validate').and.returnValue(componentValidationResult);\r\n\t\t\t\t\tspyOn(component, 'getValidationErrors').and.returnValue(pageErrors);\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.next({\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\terrors: pageErrors\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.validate).toHaveBeenCalled();\r\n\t\t\t\t\texpect(window.confirm).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should render validation errors', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst pageErrors = [];\r\n\t\t\t\t\tconst validationErrors = [\r\n\t\t\t\t\t\t// validation error\r\n\t\t\t\t\t\t'lorem ipsum',\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\tlet componentValidationResult: ComponentValidationResult = new ComponentValidationResult();\r\n\t\t\t\t\tcomponentValidationResult.isValid = false;\r\n\t\t\t\t\tcomponentValidationResult.confirm = false;\r\n\t\t\t\t\tcomponentValidationResult.errorMessages = validationErrors;\r\n\t\t\t\t\tcomponentValidationResult.confirmErrorMessageIndex = -1;\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'validate').and.returnValue(componentValidationResult);\r\n\t\t\t\t\tspyOn(component, 'getValidationErrors').and.returnValue(pageErrors);\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.next({\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\terrors: pageErrors\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.validate).toHaveBeenCalled();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should render page errors', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst pageErrors = [\r\n\t\t\t\t\t\t// page errors\r\n\t\t\t\t\t\t'lorem ipsum'\r\n\t\t\t\t\t];\r\n\t\t\t\t\tconst validationErrors = [];\r\n\r\n\t\t\t\t\tlet componentValidationResult: ComponentValidationResult = new ComponentValidationResult();\r\n\t\t\t\t\tcomponentValidationResult.isValid = true;\r\n\t\t\t\t\tcomponentValidationResult.confirm = false;\r\n\t\t\t\t\tcomponentValidationResult.errorMessages = validationErrors;\r\n\t\t\t\t\tcomponentValidationResult.confirmErrorMessageIndex = -1;\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'validate').and.returnValue(componentValidationResult);\r\n\t\t\t\t\tspyOn(component, 'getValidationErrors').and.returnValue(pageErrors);\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.next({\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\terrors: pageErrors\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.validate).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.validationErrors.length).toEqual(1);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should set Apple Pay recurring settings when is Apple Pay', () => {\r\n\t\t\t\t\t// Arrange\r\n\t\t\t\t\tconst pageErrors = [];\r\n\t\t\t\t\tconst validationErrors = [];\r\n\r\n\t\t\t\t\tlet componentValidationResult: ComponentValidationResult = new ComponentValidationResult();\r\n\t\t\t\t\tcomponentValidationResult.isValid = true;\r\n\t\t\t\t\tcomponentValidationResult.confirm = false;\r\n\t\t\t\t\tcomponentValidationResult.errorMessages = validationErrors;\r\n\t\t\t\t\tcomponentValidationResult.confirmErrorMessageIndex = -1;\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tconst applePaySettings: ApplePaySettings = new ApplePaySettings(mockI18N, stubState);\r\n\t\t\t\t\tapplePaySettings.isApplePay = () => true;\r\n\t\t\t\t\tcomponent.isDigitalWallet = true;\r\n\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'validate').and.returnValue(componentValidationResult);\r\n\t\t\t\t\tspyOn(component, 'getValidationErrors').and.returnValue(pageErrors);\r\n\r\n\t\t\t\t\t// Act\r\n\t\t\t\t\tcomponent.next({\r\n\t\t\t\t\t\tdetail: {\r\n\t\t\t\t\t\t\terrors: pageErrors,\r\n\t\t\t\t\t\t\tdigitalWalletSettings: applePaySettings\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// Assert\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.validate).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.setApplePaySettingsFields).toHaveBeenCalledTimes(1);\r\n\t\t\t\t\texpect(component.validationErrors.length).toEqual(0);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('updateSubtotal()', () => {\r\n\t\t\t\tit('should get subtotal from paymentItemTableViewModel', () => {\r\n\t\t\t\t\tconst mockPaymentItemTableViewModel: PaymentItemTable = mock(PaymentItemTable);\r\n\r\n\t\t\t\t\tcomponent.paymentItemTableViewModel = mockPaymentItemTableViewModel;\r\n\r\n\t\t\t\t\tlet expectedSubtotal = 10;\r\n\t\t\t\t\tspyOn(mockPaymentItemTableViewModel, 'getTotalEnteredAmountForSelectedItems')\r\n\t\t\t\t\t\t.and.returnValue(expectedSubtotal);\r\n\r\n\t\t\t\t\tcomponent.updateSubtotal();\r\n\r\n\t\t\t\t\texpect(mockPaymentItemTableViewModel.getTotalEnteredAmountForSelectedItems).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.subtotal).toEqual(expectedSubtotal);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getConfirmationTemplateData()', () => {\r\n\t\t\t\txit('should get confirmation template data', () => {\r\n\t\t\t\t\tlet paymentInformation = {\r\n\t\t\t\t\t\tcard: {\r\n\t\t\t\t\t\t\tcardNumber: '4444333322221111',\r\n\t\t\t\t\t\t\texpirationDate: '11/25'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\twhen(component.paymentInformation).thenReturn(paymentInformation);\r\n\t\t\t\t\tspyOn(paymentInformation, 'card')\r\n\t\t\t\t\t\t.and.returnValue(paymentInformation.card);\r\n\r\n\t\t\t\t\tspyOn(component, 'getAccountsToPayForSubmission').and.stub();\r\n\r\n\t\t\t\t\tcomponent.getConfirmationTemplateData();\r\n\r\n\t\t\t\t\texpect(mockI18N.i18next.t(anyString(), anyString())).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component['getAccountsToPayForSubmission']).toHaveBeenCalled();\r\n\t\t\t\t\texpect(component.confirmationTemplateData).toBeInstanceOf(TemplateData);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getValidationErrors(paymentInformation: any)', () => {\r\n\t\t\t\tit('should be invalid payment date', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tlet paymentInformation = {\r\n\t\t\t\t\t\tdate: 'foo'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tlet result = component.getValidationErrors(paymentInformation);\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(result.length).toBeGreaterThan(0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should be post-date cannot be in the past', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tlet msCurrentDate = Date.now();\r\n\t\t\t\t\tlet msOneWeek = 60 * 60 * 24 * 7 * 1000;\r\n\t\t\t\t\tlet paymentInformation = {\r\n\t\t\t\t\t\tdate: new Date(msCurrentDate - msOneWeek)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tlet result = component.getValidationErrors(paymentInformation);\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(result.length).toBeGreaterThan(0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should be post-date cannot be more than...', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tlet msCurrentDate = Date.now();\r\n\t\t\t\t\tlet msFiftyDays = 60 * 60 * 24 * 50 * 1000;\r\n\t\t\t\t\tlet paymentInformation = {\r\n\t\t\t\t\t\tdate: new Date(msCurrentDate + msFiftyDays)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tlet result = component.getValidationErrors(paymentInformation);\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(result.length).toBeGreaterThan(0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should have no errors', () => {\r\n\t\t\t\t\t// arrange\r\n\t\t\t\t\tlet msCurrentDate = Date.now();\r\n\t\t\t\t\tlet maxFuture = 45;\r\n\t\t\t\t\tcomponent.maxFuture = maxFuture;\r\n\t\t\t\t\tlet msMaxFutureDays = 60 * 60 * 24 * (component.maxFuture) * 1000;\r\n\t\t\t\t\tlet paymentInformation = {\r\n\t\t\t\t\t\tdate: new Date(msCurrentDate + msMaxFutureDays)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// act\r\n\t\t\t\t\tlet result = component.getValidationErrors(paymentInformation);\r\n\r\n\t\t\t\t\t// assert\r\n\t\t\t\t\texpect(result.length).toEqual(0);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('submitTransaction()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.paymentInformation = {};\r\n\t\t\t\t\tstubState.customer.accounts[0].displayName = 'testValue';\r\n\t\t\t\t\tcomponent.accounts = stubState.customer.accounts;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('Apple Pay', () => {\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tcomponent.isDigitalWallet = true;\r\n\t\t\t\t\t\tspyOn(ApplePayUtil, 'completeSession');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should submit Apple Pay single future sucessfully to Hpf Api', async () => {\r\n\t\t\t\t\t\t// Arrange\r\n\t\t\t\t\t\tconst mockEvent: CustomEvent = mock(CustomEvent);\r\n\t\t\t\t\t\tconst mockServiceResponse: ServiceResponse = mock(ServiceResponse);\r\n\t\t\t\t\t\tmockServiceResponse.value = {\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\thasException: false\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.isSingleFuture = true;\r\n\t\t\t\t\t\tcomponent.paymentInformation.digitalWalletSettings = mockApplePaySettings;\r\n\t\t\t\t\t\tcomponent.paymentInformation.addPaymentMethodToWalletIsSelected = false;\r\n\r\n\t\t\t\t\t\tawait spyOn(component, 'submitToHpfApi')\r\n\t\t\t\t\t\t\t.and.returnValue(Promise.resolve(mockServiceResponse));\r\n\r\n\t\t\t\t\t\tspyOn(mockTemplateService, 'getPortalTemplateType')\r\n\t\t\t\t\t\t\t.and.returnValue(PortalTemplateTypes.CreditCardInstallmentPlanReceipt);\r\n\r\n\t\t\t\t\t\t// Act\r\n\t\t\t\t\t\tawait component.submitTransaction(mockEvent);\r\n\r\n\t\t\t\t\t\t// Assert\r\n\t\t\t\t\t\texpect(component.paymentInformation.customerAccountNumber)\r\n\t\t\t\t\t\t\t.toEqual(stubState.customer.accounts[0].displayName);\r\n\t\t\t\t\t\texpect(ApplePayUtil.completeSession)\r\n\t\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.paymentInformation.savedPaymentMethodToWallet)\r\n\t\t\t\t\t\t\t.toBeFalse();\r\n\t\t\t\t\t\texpect(component.paymentInformation.isFuturePayment)\r\n\t\t\t\t\t\t\t.toBeTrue();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should complete Apple Pay session when Hpf Api call fails', async () => {\r\n\t\t\t\t\t\t// Arrange\r\n\t\t\t\t\t\tcomponent.isSingleFuture = true;\r\n\t\t\t\t\t\tcomponent.paymentInformation.digitalWalletSettings = mockApplePaySettings;\r\n\t\t\t\t\t\tcomponent.paymentInformation.addPaymentMethodToWalletIsSelected = false;\r\n\r\n\t\t\t\t\t\tawait spyOn(component, 'submitToHpfApi')\r\n\t\t\t\t\t\t\t.and.returnValue(Promise.reject(anything()));\r\n\r\n\t\t\t\t\t\t// Act\r\n\t\t\t\t\t\tawait component.submitTransaction(anything());\r\n\r\n\t\t\t\t\t\t// Assert\r\n\t\t\t\t\t\texpect(ApplePayUtil.completeSession)\r\n\t\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.isSubmitting)\r\n\t\t\t\t\t\t\t.toBeFalse();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('submitToHpfApi()', () => {\r\n\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\tcomponent.paymentInformation = { date: new Date() };\r\n\t\t\t\t\tstubState.customer.accounts[0].balance = 1000;\r\n\t\t\t\t\tstubState.customer.accounts[0].adjustedBalances = { pendingBalance: Math.floor(Math.random() * 100) };\r\n\t\t\t\t\tstubState.customer.accounts[0].paymentPlans = [{ totalPayments: 10, paymentDate: new Date() }];\r\n\t\t\t\t\tcomponent.accounts = stubState.customer.accounts;\r\n\t\t\t\t\tspyOn(NumberHelper, 'parseCurrency').and.returnValue(Math.floor(Math.random() * 10));\r\n\t\t\t\t\tspyOn(component.paymentItemTableViewModel, 'getSelectedItems').and.returnValue(mockAccountPaymentItems);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdescribe('ApplePay', () => {\r\n\t\t\t\t\tbeforeEach(() => {\r\n\t\t\t\t\t\tcomponent.isDigitalWallet = true;\r\n\t\t\t\t\t\tcomponent.paymentInformation.digitalWalletSettings = mockApplePaySettings;\r\n\t\t\t\t\t\tspyOn(component, 'getDiscountAmountForAccountPaymentItem');\r\n\t\t\t\t\t\tspyOn(component, 'getDigitalWalletInfoForSubmission')\r\n\t\t\t\t\t\t\t.and\r\n\t\t\t\t\t\t\t.returnValue(mockDigitalWalletPaymentMethod);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tit('should submit Apple Pay pay off early and call getDiscountAmountForAccountPaymentItem()', async () => {\r\n\t\t\t\t\t\t// Arrange\r\n\t\t\t\t\t\tconst mockEvent: CustomEvent = mock(CustomEvent);\r\n\t\t\t\t\t\tconst mockServiceResponse: ServiceResponse = mock(ServiceResponse);\r\n\t\t\t\t\t\tmockServiceResponse.value = {\r\n\t\t\t\t\t\t\tisSuccessful: true,\r\n\t\t\t\t\t\t\thasException: false\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tcomponent.isPayOffEarly = true;\r\n\r\n\t\t\t\t\t\tawait spyOn(mockHpfTransactionService, 'submitTransaction')\r\n\t\t\t\t\t\t\t.and.returnValue(new Promise(() => mockServiceResponse));\r\n\r\n\t\t\t\t\t\t// Act\r\n\t\t\t\t\t\tawait component.submitToHpfApi(mockEvent);\r\n\r\n\t\t\t\t\t\t// Assert\r\n\t\t\t\t\t\texpect(component.getDigitalWalletInfoForSubmission)\r\n\t\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t\texpect(component.getDiscountAmountForAccountPaymentItem)\r\n\t\t\t\t\t\t\t.toHaveBeenCalledTimes(1);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { State } from '../../services/global-state';\r\nimport * as moment from 'moment';\r\nimport { PayrazrService } from '../../services/payrazr';\r\nimport { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Account } from '../../models/customer';\r\nimport { HpfPaymentPlanService } from '../../services/hpf-payment-plan.service';\r\nimport { ApiResponse } from '../../models/api-response';\r\n\r\n@autoinject\r\nexport class SkipPlanPayments{\r\n\tisSubmitting = false;\r\n\tisLoading = true;\r\n\tmaxPayments: number[] = [];\r\n\tselectedNumberOfPayments = null;\r\n\treason = null;\r\n\taccount: Account;\r\n\tvalidationErrors: string[] = [];\r\n\tplannedPayments;\r\n\tplanEndDate;\r\n\tplanId;\r\n\tplanKey;\r\n\tisMAPP = false;\r\n\r\n\tconstructor(\r\n\t\tprivate state: State,\r\n\t\tprivate payrazrService: PayrazrService,\r\n\t\tprivate hpfPaymentPlanService: HpfPaymentPlanService,\r\n\t\tprivate router: Router,\r\n\t\tprivate i18n: I18N\r\n\t) {}\r\n\r\n\tactivate(params, data) {\r\n\t\tthis.account = this.state.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === data.accountId;\r\n\t\t});\r\n\t\tthis.state.business.applyPortfolioSettingsToPortal(this.account.portfolioName, false);\r\n\r\n\t\tlet portfolioPortalSettings = this.state.business.fetchPortfolioSettings(this.account.portfolioName).settings;\r\n\t\tif (!portfolioPortalSettings.paymentTypes.allowConsumersToSkipAPayment) {\r\n\t\t\tthis.back();\r\n\t\t} else {\r\n\t\t\tconst maxSkip: number = parseInt(portfolioPortalSettings.paymentTypes.maximumNumberOfPaymentsAConsumerCanSkip || 0, 10);\r\n\t\t\tthis.getPlan().then(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.getMaxPaymentsToSKip(maxSkip);\r\n\t\t\t\t},\r\n\t\t\t\t(errer) => {\r\n\t\t\t\t\tthis.validationErrors = ['An Error Occured'];\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tgetPlan() {\r\n\t\treturn this.payrazrService.getPaymentPlanByCustomerAccountId(this.account.id)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.endDate) {\r\n\t\t\t\t\tthis.planEndDate = moment(result.endDate).format('MM/DD/YYYY');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.planEndDate = 'Indefinite';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.planId = result.id;\r\n\t\t\t\tthis.planKey = result.key;\r\n\t\t\t\tthis.isMAPP = result.isCombinedCustomerAccount;\r\n\r\n\t\t\t\t// Get list of payments\r\n\t\t\t\treturn this.payrazrService.getLatestActivePaymentPlanPlannedPaymentsByCustomerAccountId(this.account.id)\r\n\t\t\t\t\t.then(results => {\r\n\t\t\t\t\t\tthis.plannedPayments = results.plannedPayments.length;\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetMaxPaymentsToSKip(max: number) {\r\n\t\tif (this.planEndDate !== 'Indefinite') {\r\n\t\t\tmax = max < this.plannedPayments ? max : this.plannedPayments;\r\n\t\t}\r\n\t\tthis.maxPayments = Array.from(Array(max), (_, i) => i + 1);\r\n\t}\r\n\r\n\tback() {\r\n\t\tthis.router.navigateBack();\r\n\t}\r\n\r\n\tsubmit() {\r\n\t\tthis.isSubmitting = true;\r\n\t\tthis.validationErrors = [];\r\n\r\n\t\tif(this.isMAPP) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('cannotSkipMultiAccountPaymentPlans', 'Cannot skip payments plans with multi accounts'));\r\n\t\t\tthis.isSubmitting = false;\r\n\t\t\treturn;\r\n\t\t};\r\n\r\n\t\tif (!this.reason) {\r\n\t\t\tthis.validationErrors.push(this.i18n.i18next.t('reasonIsRequired', 'Reason is required'));\r\n\t\t\tthis.isSubmitting = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.hpfPaymentPlanService.skipPlanPayments(this.planKey, this.selectedNumberOfPayments, this.reason).then(\r\n\t\t\t(result: ApiResponse) => {\r\n\t\t\t\tif (result.isSuccessful) {\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\tthis.back();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t\t\talert(result.errors[0]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t(error) => {\r\n\t\t\t\tthis.isSubmitting = false;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","//\r\n// ***** DO NOT INSTANTIATE THIS CLASS DIRECTLY *****\r\n//\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { ServiceResponse } from '../models/service-response';\r\n\r\n@autoinject\r\nexport class BaseService {\r\n\r\n\tconstructor() {}\r\n\r\n\tprotected success(successMessage: string = '', value: any = null): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tresolve(new ServiceResponse({ isSuccessful: true, resultMessage: successMessage, value }));\r\n\t\t});\r\n\t}\r\n\r\n\tprotected error(errorMessage: string = ''): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tresolve(new ServiceResponse({ isSuccessful: false, resultMessage: errorMessage, value: null }));\r\n\t\t});\r\n\t}\r\n}\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { inject } from 'aurelia-framework';\r\nimport config from '../config/config';\r\n\r\n@inject(HttpClient)\r\nexport class FeatureService {\r\n\thttp: HttpClient;\r\n\r\n\tconstructor(http: HttpClient) {\r\n\t\tthis.http = http;\r\n\t\thttp.configure(c => {\r\n\t\t\tc.useStandardConfiguration().withBaseUrl(config.serviceUrl);\r\n\t\t});\r\n\t}\r\n\r\n\tgetFeatures() {\r\n\t\treturn this.get('/feature/features');\r\n\t}\r\n\r\n\tget(url: string) {\r\n\t\treturn this.http.fetch(url)\r\n\t\t\t.then(r => r.json());\r\n\t}\r\n}\r\n","import { computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Customer, Payment, Account } from '../models/customer';\r\nimport { Features } from '../models/features';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { BasePage } from '../pages/base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Portal } from '../models/portal';\r\n\r\n@autoinject\r\nexport class State extends BasePage {\r\n\tfeatures: Features;\r\n\tquestion1List: any;\r\n\tquestion2List: any;\r\n\tpasswordRulesHtml: any;\r\n\t_customer: Customer;\r\n\t_associatedCustomers: Array;\r\n\t_accounts: Array;\r\n\tbusiness: any;\r\n\t_payments: any;\r\n\taccount: Account;\r\n\tisLoggingIn: boolean;\r\n documentLists: any;\r\n hideEzpayTerms: boolean;\r\n hideSignupTerms: boolean;\r\n\r\n\tconstructor(private i18n: I18N, eventAggregator: EventAggregator) {\r\n\t\tsuper(eventAggregator);\r\n\t\tthis.features = new Features(null);\r\n\t\tthis._customer = null;\r\n this.business = null;\r\n this.hideEzpayTerms = false;\r\n this.hideSignupTerms = false;\r\n\t}\r\n\tattached() {\r\n\t\tsuper.attached();\r\n\t}\r\n\tloadTranslations() {\r\n\t\tthis.passwordRulesHtml =\r\n\t\t\tthis.i18n.i18next.t(\r\n\t\t\t\t'vtChangePasswordDescriptionFormatted',\r\n\t\t\t\t'

This system requires strong passwords. Your new password must be:

  • a minimum of 12 characters
  • include at least three of the following four categories:
    • lower case letter (a-z)
    • one upper case letter (A-Z)
    • numeric digit (0-9)
    • special character (@$!%*?)
  • Additionally, password must not share 3 or more consecutive characters from the username, first, or last name
');\r\n\r\n\t\tthis.question1List = [\r\n\t\t\tthis.i18n.i18next.t('nameOfFirstAndLastNameOfFirstBoyfriendOrGirlfriend', 'What is the first and last name of your first boyfriend or girlfriend?'),\r\n\t\t\tthis.i18n.i18next.t('phoneNumberFromChildhood', 'Which phone number do you remember most from your childhood?'),\r\n\t\t\tthis.i18n.i18next.t('favoritePlaceToVisitAsChild', 'What was your favorite place to visit as a child?'),\r\n\t\t\tthis.i18n.i18next.t('favoriteActorMusicianOrArtist', 'Who is your favorite actor, musician, or artist?'),\r\n\t\t\tthis.i18n.i18next.t('nameOfFavoritePet', 'What is the name of your favorite pet?'),\r\n\t\t\tthis.i18n.i18next.t('cityOfBirth', 'In what city were you born?'),\r\n\t\t\tthis.i18n.i18next.t('highSchoolAttended', 'What high school did you attend?'),\r\n\t\t\tthis.i18n.i18next.t('nameOfFirstSchool', 'What is the name of your first school?'),\r\n\t\t\tthis.i18n.i18next.t('favoriteMovie', 'What is your favorite movie?'),\r\n\t\t\tthis.i18n.i18next.t('mothersMaidenName', 'What is your mother\\'s maiden name?'),\r\n\t\t\tthis.i18n.i18next.t('streetOfGrowth', 'What street did you grow up on?'),\r\n\t\t\tthis.i18n.i18next.t('makeOfFirstCar', 'What was the make of your first car?'),\r\n\t\t\tthis.i18n.i18next.t('whenIsAnniversary', 'When is your anniversary?'),\r\n\t\t\tthis.i18n.i18next.t('favoriteColor', 'What is your favorite color?'),\r\n\t\t\tthis.i18n.i18next.t('fathersMiddleName', 'What is your father\\'s middle name?'),\r\n\t\t\tthis.i18n.i18next.t('nameOfFirstGradeTeacher', 'What is the name of your first grade teacher?'),\r\n\t\t\tthis.i18n.i18next.t('highSchoolMascot', 'What was your high school mascot?'),\r\n\t\t\tthis.i18n.i18next.t('favoriteWebBrowser', 'Which is your favorite web browser?')\r\n\t];\r\n\r\n\t// Check if these are used, if not delete.\r\n\tthis.question2List = [\r\n\t\t'Why are you wearing that?',\r\n\t\t'When do you think the world will end?',\r\n\t\t'Do these pants make me look fat?',\r\n\t\t'What do the voices in your head say in the early morning?',\r\n\t\t'Why purple?'\r\n\t];\r\n}\r\n\tlogout() {\r\n\t\tthis.customer = null;\r\n\t\tthis.payments = null;\r\n\t\tthis.token = this.anonymousToken;\r\n\t}\r\n\r\n\t@computedFrom('_customer')\r\n\tget customer(): Customer {\r\n\t\tif (!this._customer) {\r\n\t\t\tthis._customer = new Customer(this.business);\r\n\t\t}\r\n\r\n\t\treturn this._customer;\r\n\t}\r\n\r\n\tset customer(value: Customer) {\r\n\t\tthis._customer = value;\r\n\t\tsessionStorage.customer = JSON.stringify(value);\r\n\r\n\t\tif (this._customer && this._payments) {\r\n\t\t\tthis._customer.calculateLastActivity(this._payments, this.i18n);\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('_associatedCustomers')\r\n\tget associatedCustomers(): Array {\r\n\t\tif (!this._associatedCustomers) {\r\n\t\t\tthis._associatedCustomers = [];\r\n\t\t}\r\n\r\n\t\treturn this._associatedCustomers;\r\n\t}\r\n\r\n\tset associatedCustomers(value: Array) {\r\n\t\tthis._associatedCustomers = value;\r\n\t\tsessionStorage.customers = JSON.stringify(value);\r\n\r\n\t\t// TODO: Calculate last activity?\r\n\t}\r\n\r\n\t@computedFrom('_accounts')\r\n\tget accounts(): Array {\r\n\t\tlet accounts = this.customer.accounts || [];\r\n\t\tthis.associatedCustomers.forEach(x => {\r\n\t\t\taccounts = accounts.concat(x.accounts);\r\n\t\t});\r\n\r\n\t\treturn accounts;\r\n\t}\r\n\r\n\t@computedFrom('_payments')\r\n\tget payments() {\r\n\t\tif (!this._payments) {\r\n\t\t\tthis._payments = Payment.fetchFromSession();\r\n\t\t}\r\n\t\treturn this._payments;\r\n\t}\r\n\tset payments(value) {\r\n\t\tthis._payments = value;\r\n\t\tsessionStorage.payments = JSON.stringify(value);\r\n\r\n\t\tif (this._customer && this._payments) {\r\n\t\t\tthis._customer.calculateLastActivity(this._payments, this.i18n);\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('_customer')\r\n\tget hasPayByTextEnabledPortfolio() {\r\n\t\ttry {\r\n\t\t\tfor (let n in this._customer.portfolios) {\r\n\t\t\t\tif (this._customer.portfolios[n].portalSettings) {\r\n\t\t\t\t\tlet settings = JSON.parse(this._customer.portfolios[n].portalSettings);\r\n\r\n\t\t\t\t\tif ('enablePayByText' in settings && settings.enablePayByText) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encountered...');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('_customer')\r\n\tget hasCreditCardEnabledPortfolio() {\r\n\t\ttry {\r\n\t\t\tfor (let n in this._customer.portfolios) {\r\n\t\t\t\tif (this._customer.portfolios[n].portalSettings) {\r\n let settings = JSON.parse(this._customer.portfolios[n].portalSettings);\r\n\r\n\t\t\t\t\tif ('paymentMethods' in settings && settings.paymentMethods && 'allowCreditCard' in settings.paymentMethods && settings.paymentMethods.allowCreditCard) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encountered...');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('_customer')\r\n\tget hasECheckEnabledPortfolio() {\r\n\t\ttry {\r\n\t\t\tfor (let n in this._customer.portfolios) {\r\n\t\t\t\tif (this._customer.portfolios[n].portalSettings) {\r\n\t\t\t\t\tlet settings = JSON.parse(this._customer.portfolios[n].portalSettings)\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t'paymentMethods' in settings\r\n\t\t\t\t\t\t&& settings.paymentMethods\r\n\t\t\t\t\t\t&& 'allowAch' in settings.paymentMethods\r\n\t\t\t\t\t\t&& settings.paymentMethods.allowAch\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error encountered...');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('business')\r\n\tget isConsumerPortalGuarantorBillingEnabled(): boolean {\r\n\t\ttry {\r\n\t\t\tlet portal: Portal = this.business.portalSettings;\r\n\t\t\treturn portal.settings.enableAddCustomerToPortalUser;\r\n\t\t} catch (err) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tget token() {\r\n\t\treturn sessionStorage.getItem('token') || '';\r\n\t}\r\n\r\n\tset token(value: string) {\r\n\t\tsessionStorage.setItem('token', value);\r\n\t}\r\n\r\n\tget anonymousToken() {\r\n\t\treturn sessionStorage.getItem('anonymousToken') || '';\r\n\t}\r\n\r\n\tset anonymousToken(value: string) {\r\n\t\tsessionStorage.setItem('anonymousToken', value);\r\n\t}\r\n\r\n\tupdateAccountStateOffline(id: any, state: any) {\r\n\t\tthis.account = this.customer.accounts.find((element, index, array) => {\r\n\t\t\treturn element.id === id;\r\n\t\t});\r\n\t\tthis.account.state = state;\r\n\t}\r\n\r\n}\r\n","import { computedFrom } from 'aurelia-binding';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport 'whatwg-fetch';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\n@autoinject\r\nexport class HpfCarouselService extends HPFServiceClient {\r\n\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tgetCarousel(portalId: string) {\r\n\t\tlet url = `/portal/${portalId}/carousel`;\r\n\t\treturn this.get(url).then(\r\n\t\t\t(response) => {\r\n\t\t\t\tlet result = {\r\n\t\t\t\t\tinterval: 6,\r\n\t\t\t\t\titems: []\r\n\t\t\t\t};\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tresult.items = response.value.carouselItems || [];\r\n\t\t\t\t\tresult.interval = response.value.interval || 6;\r\n\t\t\t\t}\r\n\t\t\t\treturn result;\r\n\t\t\t},\r\n\t\t\t(error) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tinterval: 6,\r\n\t\t\t\t\titems: []\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t);\r\n\t}\r\n}\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport 'whatwg-fetch';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\n@autoinject\r\nexport class HpfConsumerService extends HPFServiceClient {\r\n\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\taddCustomersToConsumerUser(request: AddCustomersToConsumerUserRequest): Promise {\r\n\t\treturn this.post('/consumers/customers', request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\t// Removing apiResponse.getErrorMessage() call.\r\n\t\t\t\t\t// Chrome throws an error: apiResponse.getErrorMessage is not a function.\r\n\t\t\t\t\treturn this.error('Unable to add customer(s)');\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n\r\n\tremoveCustomersFromConsumerUser(request: RemoveCustomersFromConsumerUserRequest): Promise {\r\n\t\treturn this.delete('/consumers/customers', request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\t// Removing apiResponse.getErrorMessage() call.\r\n\t\t\t\t\t// Chrome throws an error: apiResponse.getErrorMessage is not a function.\r\n\r\n\t\t\t\t\tif (apiResponse.errors && apiResponse.errors.length > 0) {\r\n\t\t\t\t\t\treturn this.error(apiResponse.errors[0]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.error('Unable to remove customer(s)');\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n\r\n\tsetAssociatedCustomerNotificationPreferences(request: SetCustomerNotificationSettingsRequest): Promise {\r\n\t\treturn this.put(`/customers/${request.customerKey}/notificationSettings`, request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\treturn this.error('Unable to set notification preferences.');\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n\r\n\tsetConsumerUserPreferredLanguage(request: SetConsumerUserPreferredLanguageRequest): Promise {\r\n\t\treturn this.post('/consumers/preferredLanguage', request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\treturn this.error('Unable to save preferred language.');\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('');\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\nexport class AddCustomersToConsumerUserRequest {\r\n\tcustomerKeys: Array;\r\n}\r\n\r\nexport class RemoveCustomersFromConsumerUserRequest {\r\n\tcustomerKeys: Array;\r\n}\r\n\r\nexport class SetCustomerNotificationSettingsRequest {\r\n\tcustomerKey: number;\r\n\r\n\tisSmsOptedIn: boolean;\r\n\r\n\tisSmsValidated: boolean;\r\n\r\n\tisEmailOptedIn: boolean;\r\n\r\n\temailAddress: string;\r\n\r\n\tmobilePhoneNumber: string;\r\n}\r\n\r\nexport class SetConsumerUserPreferredLanguageRequest {\r\n\tlanguageCode: string;\r\n\tdeclinedToState: boolean;\r\n\totherLanguage: string;\r\n}\r\n","import { computedFrom } from 'aurelia-binding';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport 'whatwg-fetch';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { Offer } from '../models/offer';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\n@autoinject\r\nexport class HpfCustomerService extends HPFServiceClient {\r\n\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tmakeOffer(accountKey, frequency, amount) {\r\n\t\tlet url = `/customerAccounts/${accountKey}/offer`;\r\n\t\tlet content = {\r\n\t\t\tfrequency,\r\n\t\t\tamount\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content).then((result) => {\r\n\t\t\tif (result.isSuccessful) {\r\n\t\t\t\treturn result.value as MakeOfferResponse;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tlogOfferSelected(sessionId, selectedOfferType: number) {\r\n\t\tlet url = `/negotiatorActivities/${sessionId}`;\r\n\t\tlet content = {\r\n\t\t\tselectedOfferType\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content).then((result) => {\r\n\t\t\tif (result.isSuccessful) {\r\n\t\t\t\treturn result.value;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tsendContactMeRequest(customerAccountKey: number, consumerName: string, consumerEmail: string, consumerPhoneNumber: string, requiresAssistedCall: boolean) {\r\n\t\tlet url = `/customerAccounts/${customerAccountKey}/consumerContact`;\r\n\t\tlet content = {\r\n\t\t\tcustomerAccountKey,\r\n\t\t\tconsumerName,\r\n\t\t\tconsumerEmail,\r\n\t\t\tconsumerPhoneNumber,\r\n\t\t\trequiresAssistedCall\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content).then((result) => {\r\n\t\t\tif (result.isSuccessful) {\r\n\t\t\t\treturn result.value as MakeOfferResponse;\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n\r\n\r\nexport class MakeOfferResponse {\r\n\taccepted: boolean;\r\n\tcounterOffer: Offer;\r\n\tacceptedOffer: Offer;\r\n\tnegotiatorActivitySessionId: string;\r\n}\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { CreateApplePayWebSessionRequest } from '../models/hpfApi';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\nexport class HpfDigitalWalletService extends HPFServiceClient {\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tgetDigitalWalletServiceSettings(): Promise {\r\n\t\treturn this.get('/digitalWallet/settings')\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treturn this.error(`Unable to retrieve digital wallet settings: ${apiResponse.getErrorMessage()}`);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tif (apiResponse.errors && apiResponse.errors.length > 0) {\r\n\t\t\t\t\t\t\treturn this.error(`Unable to retrieve digital wallet settings: ${apiResponse.errors[0]}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn this.error(`Unable to retrieve digital wallet settings`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n\r\n\tcreateApplePayWebSession(request: CreateApplePayWebSessionRequest): Promise {\r\n\t\treturn this.post('/digitalWallet/applepay/websession', request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treturn this.error(`Unable to create ApplePay web session: ${apiResponse.getErrorMessage()}`);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tif (apiResponse.errors && apiResponse.errors.length > 0) {\r\n\t\t\t\t\t\t\treturn this.error(`Unable to create ApplePay web session: ${apiResponse.errors[0]}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn this.error(`Unable to create ApplePay web session`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { CalculateFeeRequest } from '../models/hpfApi';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\nexport class HpfFeeService extends HPFServiceClient {\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tcalculateFee(request: CalculateFeeRequest): Promise {\r\n\t\treturn this.post('/fee', request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treturn this.error(`Unable to calculate fee: ${apiResponse.getErrorMessage()}`);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tif (apiResponse.errors && apiResponse.errors.length > 0) {\r\n\t\t\t\t\t\t\treturn this.error(`Unable to calculate fee: ${apiResponse.errors[0]}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn this.error(`Unable to calculate fee`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HPFServiceClient } from './hpfApi';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { State } from './global-state';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { CheckPaymentMethod } from './hpf-transaction-service';\r\n\r\n@autoinject\r\nexport class HpfPaymentMethodService extends HPFServiceClient {\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tverifyCheckAccepted(customerKey: number, paymentMethod: CheckPaymentMethod, userType: string): Promise {\r\n\t\tlet requestBody: any;\r\n\t\trequestBody = ({\r\n\t\t\tcustomerKey,\r\n\t\t\tcheck: paymentMethod,\r\n\t\t\tuserType\r\n\t\t} as IVerifyCheckAcceptedRequest);\r\n\r\n\t\treturn this.post(\r\n\t\t\t`/customer/${customerKey}/paymentmethods/check/verification`,\r\n\t\t\trequestBody)\r\n\t\t\t.then((response: ApiResponse) => {\r\n\t\t\t\tif (!response.isSuccessful) {\r\n\t\t\t\t\tlet errorMessage = response.errors.length > 0 ?\r\n\t\t\t\t\t\tresponse.errors[0] :\r\n\t\t\t\t\t\t'Unable to verify bank account';\r\n\t\t\t\t\treturn this.error(`${errorMessage}`);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success();\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\nexport interface IVerifyCheckAcceptedRequest {\r\n\tcustomerKey: number;\r\n\tcheck: CheckPaymentMethod;\r\n\tuserType: string;\r\n}","import { computedFrom } from 'aurelia-binding';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport 'whatwg-fetch';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\n@autoinject\r\nexport class HpfPaymentPlanService extends HPFServiceClient {\r\n\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tskipPlanPayments(planKey: number, numberOfPayments: number, reason: string) {\r\n\t\tlet url = `/paymentPlan/${planKey}/skipPayments`;\r\n\t\tlet content = {\r\n\t\t\tpaymentPlanKey: planKey,\r\n\t\t\tnumberOfPayments,\r\n\t\t\treason,\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content);\r\n\t}\r\n}\r\n","import { computedFrom } from 'aurelia-binding';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { extend } from 'aurelia-i18n';\r\nimport 'whatwg-fetch';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { Payment } from '../models/customer';\r\nimport { DigitalWalletType } from '../models/digital-wallet';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\nimport { HPFServiceClient } from './hpfApi';\r\n\r\n@autoinject\r\nexport class HpfTransactionService extends HPFServiceClient {\r\n\r\n\tconstructor(\r\n\t\tstate: State,\r\n\t\thttp: HttpClient,\r\n\t) {\r\n\t\tsuper(state, http);\r\n\t}\r\n\r\n\tsubmitTransaction(request: SubmitTransactionRequest): Promise {\r\n\t\treturn this.post('/transaction', request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treturn this.error(`Unable to process transaction: ${apiResponse.getErrorMessage()}`);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tif (apiResponse.errors && apiResponse.errors.length > 0) {\r\n\t\t\t\t\t\t\treturn this.error(`Unable to process transaction: ${apiResponse.errors[0]}`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn this.error(`Unable to process transaction`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\nexport class SubmitTransactionRequest {\r\n\ttransactionType: TransactionTypes;\r\n\tpaymentMethod: PaymentMethod;\r\n\tinvoicePayments: IInvoice[] = []; // not used yet\r\n\taccountPayments: ICustomerAccountToPay[];\r\n\tpaymentDate: string;\r\n\tamount: number;\r\n\tdiscountAmount: number | null;\r\n\tconvenienceFeeOverrideAmount: number | null = null; // no overrides by consumer in portal;\r\n\tmerchantKey: number;\r\n\tdescription: string;\r\n\tsaveToWalletForCustomerKey: number | null;\r\n\tpostedInfo: PostedInfo;\r\n\trelatedCustomerKey: number | null;\r\n\tserviceFeeAmount: number | null; // informational field used by digital wallets\r\n\tisPayOffEarly: boolean;\r\n\tpaymentPlanId: string;\r\n}\r\n\r\nexport class SubmitTransactionResponse {\r\n\tisSuccessful: string;\r\n\tpaymentId: string;\r\n\tresultCode: string;\r\n\tresultMessage: string;\r\n}\r\n\r\nexport enum TransactionTypes {\r\n\tSale = 1,\r\n\tSingleFuture = 2\r\n}\r\n\r\n// ---------------------------------------------------------------------------------\r\n// The following classes were copied over from HPF and are in general\r\n// models/enums/interfaces folders in that project. For now, just keep them here\r\n// in portal and refactor later once/if needed outside of this file.\r\n// ---------------------------------------------------------------------------------\r\n\r\nexport class PaymentMethod {\r\n\tcustomerKey: number = -1;\r\n\tpaymentMethodType: PaymentMethodType = PaymentMethodType.NotSet;\r\n\tpaymentMethodKey: number | null = null;\r\n\tisPrimaryPaymentMethod: boolean = false;\r\n\taccountName: string = '';\r\n\taccountNumber: string = '';\r\n\taddressLine1: string = '';\r\n\tcity: string = '';\r\n\tstate: string = '';\r\n\tzipCode: string = '';\r\n\tpaymentAccountNickname: string = '';\r\n\r\n\tget paymentMethodTypeName(): string {\r\n\t\treturn 'Unknown';\r\n\t}\r\n\r\n\tdeserialize(input: any): PaymentMethod {\r\n\t\tlet self: any = this;\r\n\t\tfor (let prop in input) {\r\n\t\t\tself[prop] = input[prop];\r\n\t\t}\r\n\t\treturn self;\r\n\t}\r\n}\r\n\r\nexport enum PaymentMethodType {\r\n\tNotSet = -1,\r\n\tECheck = 0,\r\n\tCard = 1,\r\n\tDigitalWallet = 2,\r\n\tCredit = 3,\r\n\tDebit = 4\r\n}\r\n\r\nexport enum CardNetworkNameType {\r\n\tNotSet = -1,\r\n\tAmex = 0,\r\n\tDiscover = 1,\r\n\tMasterCard = 2,\r\n\tVisa = 3,\r\n\tOther = 99\r\n}\r\n\r\nexport class CardPaymentMethod extends PaymentMethod {\r\n\texpirationMonth: number = 0;\r\n\texpirationYear: number = 0;\r\n\tcvv: string = '';\r\n\tcardNetworkName: string = '';\r\n\tcardNetworkNameType: CardNetworkNameType = CardNetworkNameType.NotSet;\r\n\tisThirdParty: boolean = false;\r\n\r\n\tconstructor(paymentMethodKey?: number, cvv?: string, zipCode?: string, expirationMonth?: number, expirationYear?: number, cardNetworkNameType?: CardNetworkNameType, isThirdParty?: boolean) {\r\n\t\tsuper();\r\n\t\tthis.paymentMethodType = PaymentMethodType.Card;\r\n\t\tthis.paymentMethodKey = paymentMethodKey;\r\n\t\tthis.cvv = cvv;\r\n\t\tthis.zipCode = zipCode;\r\n\t\tthis.expirationMonth = expirationMonth;\r\n\t\tthis.expirationYear = expirationYear;\r\n\t\tthis.cardNetworkNameType = cardNetworkNameType;\r\n\t\tthis.isThirdParty = isThirdParty;\r\n\t}\r\n\r\n\t@computedFrom('cardNetworkName')\r\n\tget paymentMethodTypeName(): string {\r\n\t\treturn this.cardNetworkName;\r\n\t}\r\n\r\n\tdeserialize(input: any): CardPaymentMethod {\r\n\t\tlet self: any = this;\r\n\t\tfor (let prop in input) {\r\n\t\t\tself[prop] = input[prop];\r\n\t\t}\r\n\t\treturn self;\r\n\t}\r\n}\r\n\r\nexport class CheckPaymentMethod extends PaymentMethod {\r\n\tachAccountType: AchAccountTypeEnum;\r\n\taba: string = '';\r\n\tcheckNumber = '';\r\n\r\n\tconstructor(paymentMethodKey?: number, zipCode?: string) {\r\n\t\tsuper();\r\n\t\tthis.achAccountType = AchAccountTypeEnum.PersonalChecking;\r\n\t\tthis.paymentMethodType = PaymentMethodType.ECheck;\r\n\t\tthis.paymentMethodKey = paymentMethodKey;\r\n\t\tthis.zipCode = zipCode;\r\n\t}\r\n\r\n\t@computedFrom('achAccountType')\r\n\tget paymentMethodTypeName(): string {\r\n\t\tswitch (this.achAccountType) {\r\n\t\t\tcase AchAccountTypeEnum.PersonalChecking:\r\n\t\t\t\treturn 'Personal Checking';\r\n\t\t\tcase AchAccountTypeEnum.PersonalSavings:\r\n\t\t\t\treturn 'Personal Savings';\r\n\t\t\tcase AchAccountTypeEnum.BusinessChecking:\r\n\t\t\t\treturn 'Business Checking';\r\n\t\t}\r\n\t}\r\n\r\n\tdeserialize(input: any): CheckPaymentMethod {\r\n\t\tvar self: any = this;\r\n\t\tfor (let prop in input) {\r\n\t\t\tself[prop] = input[prop];\r\n\t\t}\r\n\t\treturn self;\r\n\t}\r\n}\r\n\r\nexport class DigitalWalletPaymentMethod extends PaymentMethod {\r\n\tisCreditCard: boolean;\r\n\tisDebitCard: boolean;\r\n\twalletMerchantId: string;\r\n\tdigitalWalletType: DigitalWalletType;\r\n\tauthenticationPaymentToken: string;\r\n\tcardType: string;\r\n\tcustomFields: string[] = []; // ApplePayToDo: implement?\r\n\tcalculatedServiceFee: number; // informational field of the fee amount in the payment token\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.paymentMethodType = PaymentMethodType.DigitalWallet;\r\n\t}\r\n}\r\n\r\nexport enum AchAccountTypeEnum {\r\n\tPersonalChecking = 1,\r\n\tPersonalSavings = 2,\r\n\tBusinessChecking = 3\r\n}\r\n\r\nexport interface IInvoice {\r\n\tinvoiceKey: number;\r\n\tcustomerAccountKey: number;\r\n\tpaymentAmount: number;\r\n\tmerchantKey: number;\r\n\tpaymentBalanceType: TransactionBalancePaymentType;\r\n\tpaymentLimitSettings: PaymentLimitSettings;\r\n}\r\n\r\nexport interface ICustomerAccountToPay {\r\n\tcustomerAccountKey: number;\r\n\tpaymentAmount: number;\r\n\tdiscountAmount: number;\r\n\tmerchantKey: number;\r\n\tpaymentBalanceType: TransactionBalancePaymentType;\r\n\tpaymentLimitSettings: PaymentLimitSettings;\r\n\tminPaymentDue: number;\r\n\treferenceId: string;\r\n\tcustomerName: string;\r\n}\r\n\r\nexport enum TransactionBalancePaymentType {\r\n\tNotSet = 0,\r\n\tFullPayment = 1,\r\n\tShortPayment = 2,\r\n\tOverPayment = 3\r\n}\r\n\r\nexport class PaymentLimitSettings {\r\n\tportfolioKey: number = -1;\r\n\tallowShortPay: boolean = true;\r\n\trequireShortPayReason: boolean = false;\r\n\tenableShortPayUserComment: boolean = false;\r\n\tallowOverPay: boolean = false;\r\n\tenableOverPayWarningMessage: boolean = false;\r\n\tshortPayReasons: string[] = [];\r\n\tselectedShortPayReason: number = -1;\r\n\tshortPayComment: string = '';\r\n\tminimumPaymentAmount: number = 0 || null;\r\n\tmaximumPaymentAmount: number = 0 || null;\r\n\tenableMinimumPaymentDueOnAccount: boolean = false;\r\n}\r\n\r\nexport class PostedInfo {\r\n\tusername: string = '';\r\n\tpassword: string = '';\r\n\treturnUrl: string = '';\r\n\tackUrl: string = '';\r\n\tuserType: string = '';\r\n\treferenceTransactionId: string = '';\r\n\turlType: string = '';\r\n\tuserId: string = null;\r\n\tinvoiceComment: string = '';\r\n\taccountEmailAddress: string = '';\r\n\tpaymentCategory: string = '';\r\n\r\n\tget displayPaymentCategory(): boolean {\r\n\t\treturn (this.paymentCategory && this.userType.toLowerCase() === 'a');\r\n\t}\r\n}\r\n\r\nexport enum UserType {\r\n\tNotSet = 0,\r\n\tAgent = 1,\r\n\tConsumer = 2\r\n}","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport 'whatwg-fetch';\r\nimport config from '../config/config';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { CreateAutopayRequest, UpdateAutopayRequest } from '../models/hpfApi';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { State } from './global-state';\r\n\r\n@autoinject\r\nexport class HPFServiceClient {\r\n\tbase: string;\r\n\tqueryParameters: any;\r\n\r\n\tconstructor(\r\n\t\tprivate globalState: State,\r\n\t\tprivate http: HttpClient,\r\n\t) {\r\n\t\tthis.base = config.hpfServiceUrl;\r\n\t\tthis.queryParameters = {};\r\n\t\tlocation.search.substr(1).split('&').forEach(item => {\r\n\t\t\tconst index = decodeURI(item.split('=')[0].toLowerCase());\r\n\t\t\tconst value = decodeURI(item.split('=')[1]).replace('undefined', '');\r\n\t\t\tthis.queryParameters[index] = value;\r\n\t\t});\r\n\t}\r\n\r\n\t// ---------------------------------------------------------------------------------\r\n\t// Autopay (todo: move to separate service)\r\n\t// ---------------------------------------------------------------------------------\r\n\r\n\tgetAutopayByAccount(customerAccountKey: string): Promise {\r\n\t\tconst url = `/customerAccounts/${customerAccountKey}/autopay`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetAutopayByKey(autopayKey: string): Promise {\r\n\t\tconst url = `/autopay/${autopayKey}`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetPortfolioAutopaySettings(portfolioKey: number): Promise {\r\n\t\tconst url = `/portfolio/${portfolioKey}/autopaySettings`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tcreateAutopay(request: CreateAutopayRequest): Promise {\r\n\t\tconst url = `/autopay`;\r\n\t\treturn this.post(url, request);\r\n\t}\r\n\r\n\tupdateAutopay(autopayKey: string, request: UpdateAutopayRequest): Promise {\r\n\t\tconst url = `/autopay/${autopayKey}`;\r\n\t\treturn this.put(url, request);\r\n\t}\r\n\r\n\tdeleteAutopay(autopayKey: string): Promise {\r\n\t\tconst url = `/autopay/${autopayKey}`;\r\n\t\treturn this.delete(url, {});\r\n\t}\r\n\r\n\t// ---------------------------------------------------------------------------------\r\n\t// Buckets (todo: move to separate service)\r\n\t// ---------------------------------------------------------------------------------\r\n\r\n\tgetBucket(bucketKey: number): Promise {\r\n\t\tconst url = `/bucket/${bucketKey}`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetBuckets(): Promise {\r\n\t\tconst url = `/bucket?isActiveOnly=true`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\t// ---------------------------------------------------------------------------------\r\n\t// Internal http functions\r\n\t// ---------------------------------------------------------------------------------\r\n\r\n\tupdateJwtToken(): Promise {\r\n\t\tconst url = `/token`;\r\n\t\treturn this.put(url, null)\r\n\t\t\t.then(r => {\r\n\t\t\t\tif (r.isSuccessful) {\r\n\t\t\t\t\tthis.globalState.token = r.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tget(url: string): Promise {\r\n\t\tlet init = {\r\n\t\t\tmethod: 'get',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t})\r\n\t\t};\r\n\r\n\t\treturn this.http.fetch(`${this.base}${url}`, init)\r\n\t\t\t.then(r => r.json());\r\n\r\n\t}\r\n\r\n\tput(url: any, content: any): Promise {\r\n\t\tlet request = JSON.stringify(content);\r\n\r\n\t\tlet init = {\r\n\t\t\tmethod: 'put',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t}),\r\n\t\t\tbody: request\r\n\t\t};\r\n\r\n\t\treturn this.http.fetch(`${this.base}${url}`, init)\r\n\t\t\t.then(r => r.json());\r\n\t}\r\n\r\n\tpost(url: any, content?: any) {\r\n\t\tlet request = JSON.stringify(content);\r\n\r\n\t\tlet init = {\r\n\t\t\tmethod: 'post',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t}),\r\n\t\t\tbody: request\r\n\t\t};\r\n\r\n\t\treturn this.http.fetch(`${this.base}${url}`, init)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.status === 204) {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\treturn response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tdelete(url: string, content: any): Promise {\r\n\t\tlet request = JSON.stringify(content);\r\n\r\n\t\tlet init = {\r\n\t\t\tmethod: 'delete',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t}),\r\n\t\t\tbody: request\r\n\t\t};\r\n\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\treturn this.http\r\n\t\t\t\t.fetch(`${this.base}${url}`, init)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tresponse.json()\r\n\t\t\t\t\t\t.then((responseJson: ApiResponse) => {\r\n\t\t\t\t\t\t\tresolve(this.createApiResponseFromHttpResponse(responseJson));\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(error => {\r\n\t\t\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\t\t\terrors: ['API Delete Failed.']\r\n\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\terrors: ['API Delete Failed.']\r\n\t\t\t\t\t}));\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t// explicitly map the http json response into an api response in order to overcome\r\n\t// serialization issues that come with implicit serialization (e.g. methods undefined)\r\n\tprivate createApiResponseFromHttpResponse(responseJson: ApiResponse): ApiResponse {\r\n\t\treturn new ApiResponse({\r\n\t\t\tisSuccessful: responseJson.isSuccessful,\r\n\t\t\tresultCode: responseJson.resultCode,\r\n\t\t\tvalue: responseJson.value,\r\n\t\t\tlogMessages: responseJson.logMessages,\r\n\t\t\terrors: responseJson.errors\r\n\t\t});\r\n\t}\r\n\r\n\tprotected success(successMessage: string = '', value: any = null): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tresolve(new ServiceResponse({ isSuccessful: true, resultMessage: successMessage, value }));\r\n\t\t});\r\n\t}\r\n\r\n\tprotected error(errorMessage: string = ''): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tresolve(new ServiceResponse({ isSuccessful: false, resultMessage: errorMessage, value: null }));\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { mock, instance, verify, when, anyNumber, anything, capture } from 'ts-mockito';\r\nimport { HPFServiceClient } from '../../ClientApp/services/hpfApi';\r\nimport { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { State } from './global-state';\r\nimport { ApiResponse } from '../models/api-response';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('services', () => {\r\n\t\tdescribe('HPFServiceClient', () => {\r\n\t\t\tlet svc: HPFServiceClient;\r\n\t\t\tconst mockHttpClient: HttpClient = mock(HttpClient);\r\n\t\t\tconst mockState: State = mock();\r\n\t\t\tconst mockRouter: Router = mock();\r\n\t\t\tconst mockI18N: I18N = mock();\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tsvc = new HPFServiceClient(\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockHttpClient),\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('GET', () => {\r\n\r\n\r\n\t\t\t\tit('should initialize', () => {\r\n\t\t\t\t\texpect(svc).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should call http proper config', () => {\r\n\t\t\t\t\tlet url = '/test/url/';\r\n\t\t\t\t\tlet config = {\r\n\t\t\t\t\t\tmethod: 'get',\r\n\t\t\t\t\t\theaders: new Headers({\r\n\t\t\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlet response = {\r\n\t\t\t\t\t\tok: true,\r\n\t\t\t\t\t\tstatus: 200\r\n\t\t\t\t\t};\r\n\t\t\t\t\twhen(mockHttpClient.fetch(`${svc.base}${url}`, anything())).thenReturn(new Promise(() => response));\r\n\t\t\t\t\tsvc.get(url);\r\n\t\t\t\t\tverify(mockHttpClient.fetch(`${svc.base}${url}`, anything())).called();\r\n\t\t\t\t\texpect(capture(mockHttpClient.fetch).last()[1]).toEqual(config);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { HttpClient } from \"aurelia-fetch-client\";\r\nimport { Router } from \"aurelia-router\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport config from \"../config/config\";\r\nimport { State } from \"./global-state\";\r\nimport { SessionManager } from \"./session-manager\";\r\n\r\n@autoinject\r\nexport class HTTPInjector {\r\n\r\n\tconstructor(\r\n private state: State,\r\n private sessionManager: SessionManager,\r\n private http: HttpClient,\r\n private router: Router\r\n ) {\r\n\t\tconst tokenUpdateUrl = `${config.hpfServiceUrl}/token`;\r\n\t\tconst tokenUpdateMethod = \"PUT\";\r\n http.configure(c => {\r\n c\r\n .useStandardConfiguration()\r\n .withInterceptor({\r\n request(request) {\r\n // Check if we need to update jwt token, skip for service call to update endpoint\r\n\t\t\t\t\t\tlet updateToken: boolean = false;\r\n\t\t\t\t\t\tif (!(request.method === tokenUpdateMethod && request.url === tokenUpdateUrl)) {\r\n\t\t\t\t\t\t\tupdateToken = sessionManager.shouldUpdateToken()\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsessionManager.resetSessionTimer(router, null, updateToken);\r\n\r\n // Attatch jwtToken\r\n\t\t\t\t\t\tif (state.token) {\r\n\t\t\t\t\t\t\tif (request.headers.has(\"Authorization\")) {\r\n\t\t\t\t\t\t\t\trequest.headers.delete(\"Authorization\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\trequest.headers.append(\"Authorization\", `Bearer ${state.token}`);\r\n\t\t\t\t\t\t}\r\n\r\n return request;\r\n },\r\n response(response) {\r\n return response;\r\n },\r\n\t\t\t\t\tresponseError(response) {\r\n\t\t\t\t\t\tif (response.status == 401) {\r\n\t\t\t\t\t\t\tconsole.log(`Intercepted response ${response.status} using URL: ${response.url}`);\r\n\t\t\t\t\t\t\tif (!response.url.endsWith('/login')) {\r\n\t\t\t\t\t\t\t\trouter.navigate('401');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthrow response;\r\n\t\t\t\t\t}\r\n });\r\n });\r\n }\r\n}\r\n","export class InstallmentCalculator {\r\n\tsettings: any;\r\n\tbalance: any;\r\n\r\n\tconstructor(portalSettings: any, balance: any) {\r\n\t\tthis.settings = portalSettings;\r\n\t\tthis.balance = balance;\r\n\t}\r\n\r\n\tsinglePaymentAmount() {\r\n\t\treturn this.balance;\r\n\t}\r\n\r\n\ttwoPaymentAmount() {\r\n\t\treturn this.balance / 2;\r\n\t}\r\n\r\n\tthreePaymentAmount() {\r\n\t\treturn this.balance / 3;\r\n\t}\r\n}\r\n","import { InstallmentCalculator } from '../../ClientApp/services/installment-calculator';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('services', () => {\r\n\t\tdescribe('installment-calculator', () => {\r\n\t\t\tlet svc: InstallmentCalculator;\r\n\t\t\tconst settings = { test: 'test' };\r\n\t\t\tconst ballance = 6;\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tsvc = new InstallmentCalculator(settings, ballance);\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('Class initialization', () => {\r\n\t\t\t\tit('should initialize ballance', () => {\r\n\t\t\t\t\texpect(svc.balance).toEqual(ballance);\r\n\t\t\t\t});\r\n\t\t\t\tit('should initialize settings', () => {\r\n\t\t\t\t\texpect(svc.settings).toEqual(settings);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('singlePaymentAmount', () => {\r\n\t\t\t\tconst expected = ballance;\r\n\t\t\t\tit('should return proper ballance', () => {\r\n\t\t\t\t\texpect(svc.singlePaymentAmount()).toEqual(expected);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('twoPaymentAmount', () => {\r\n\t\t\t\tconst expected = ballance / 2;\r\n\t\t\t\tit('should return proper ballance', () => {\r\n\t\t\t\t\texpect(svc.twoPaymentAmount()).toEqual(expected);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tdescribe('threePaymentAmount', () => {\r\n\t\t\t\tconst expected = ballance / 3;\r\n\t\t\t\tit('should return proper ballance', () => {\r\n\t\t\t\t\texpect(svc.threePaymentAmount()).toEqual(expected);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { computedFrom, autoinject } from 'aurelia-framework';\r\nimport * as moment from 'moment';\r\nimport { Router } from 'aurelia-router';\r\nimport { Customer, Payment, Account } from '../models/customer';\r\nimport { Features } from '../models/features';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { BasePage } from '../pages/base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { PayrazrService } from './payrazr';\r\nimport { State } from './global-state';\r\n\r\n@autoinject\r\nexport class MessagesService {\r\n\tmessages = [];\r\n\taccounts = [];\r\n\tnewMessages = 0;\r\n\tnewMessagesNotificationText: string = '';\r\n\r\n\tconstructor(private payrazrService: PayrazrService, private globalState: State, private router: Router, private i18n: I18N) {\r\n\t\tthis.accounts = (globalState.accounts || []).filter(item => {\r\n\t\t\tlet portfolio = this.globalState.business.fetchPortfolioSettings(item.portfolioName);\r\n\r\n\t\t\treturn (portfolio && portfolio.hasSettings && portfolio.settings.paymentMethods);\r\n\t\t});\r\n\t}\r\n\r\n\tgetMessages() {\r\n\t\treturn this.payrazrService.getMessages()\r\n\t\t\t.then(response => {\r\n\t\t\t\tthis.messages = [];\r\n\t\t\t\tthis.newMessages = 0;\r\n\t\t\t\tlet accountRefIdDic = {};\r\n\t\t\t\tthis.accounts.forEach((account) => {\r\n\t\t\t\t\taccountRefIdDic[account.name] = account.displayName;\r\n\t\t\t\t}, this);\r\n\t\t\t\tresponse.forEach((message) => {\r\n\t\t\t\t\tif (accountRefIdDic[message.customerAccountReferenceId]) {\r\n\t\t\t\t\t\tmessage.CustomerAccountReferenceId = accountRefIdDic[message.customerAccountReferenceId];\r\n\t\t\t\t\t\tthis.replaceTokensInMessage(message);\r\n\t\t\t\t\t\tthis.messages.push(message);\r\n\t\t\t\t\t\tif (!message.readDate) {\r\n\t\t\t\t\t\t\tthis.newMessages++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}, this);\r\n\t\t\t\tthis.newMessagesNotificationText = this.i18n.i18next.t('youHaveXNewMessage', { defaultValue: `You have ${this.newMessages} new message`, count: this.newMessages }) + (this.newMessages === 1 ? '' : 's');\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t});\r\n\t}\r\n\r\n\treplaceTokensInMessage(message) {\r\n\t\t// replace documentlink token\r\n\t\tif (message.message.indexOf('{documentlink}') > 0) {\r\n\t\t\tmessage.message = message.message.replace('{documentlink}', '');\r\n\t\t\tmessage.hasLink = true;\r\n\t\t\tmessage.linkText = this.i18n.i18next.t('seeDocuments', 'See Documents');\r\n\t\t}\r\n\t}\r\n\r\n\tmarkAsRead(message) {\r\n\t\tlet date = moment();\r\n\t\tmessage.readDate = date;\r\n\t\tthis.newMessages--;\r\n\t\tthis.payrazrService.markMessageAsRead([message.messageId]);\r\n\t}\r\n\r\n}\r\n","import { Router, NavModel, RouteConfig } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport * as moment from 'moment';\r\nimport { mock, instance, verify, when, anyNumber, anything, resetCalls } from 'ts-mockito';\r\nimport { State } from './global-state';\r\nimport { PayrazrService } from './payrazr';\r\nimport { MessagesService } from './messages.service';\r\nimport { Customer, Account } from '../models/customer';\r\nimport { Business } from '../models/business';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('services', () => {\r\n\t\tdescribe('messages.service', () => {\r\n\t\t\tlet service: MessagesService;\r\n\t\t\tconst mockBusiness: Business = mock(Business);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockPayrazrService: PayrazrService = mock(PayrazrService);\r\n\t\t\tconst mockMessagesService: MessagesService = mock(MessagesService);\r\n\t\t\tconst mockI18N: I18N = mock(I18N);\r\n\r\n\t\t\t// Initialize Component\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst accounts = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'test1',\r\n\t\t\t\t\t\tdisplayName: 'test1',\r\n\t\t\t\t\t\tportfolioName: 'test1'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: 'test2',\r\n\t\t\t\t\t\tdisplayName: 'test2',\r\n\t\t\t\t\t\tportfolioName: 'test2'\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\tconst portfolioSetting = {\r\n\t\t\t\t\thasSettings: true,\r\n\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\tpaymentMethods: {}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\twhen(mockState.accounts).thenReturn(accounts as Array);\r\n\t\t\t\twhen(mockBusiness.fetchPortfolioSettings(anything())).thenReturn(portfolioSetting);\r\n\t\t\t\twhen(mockState.business).thenReturn(instance(mockBusiness));\r\n\t\t\t\t service = new MessagesService(\r\n\t\t\t\t\tinstance(mockPayrazrService),\r\n\t\t\t\t\tinstance(mockState),\r\n\t\t\t\t\tinstance(mockRouter),\r\n\t\t\t\t\tinstance(mockI18N)\r\n\t\t\t\t);\r\n\t\t\t});\r\n\r\n\t\t\t// Mock I18N Dependencies\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tconst i18next = {\r\n\t\t\t\t\tt: (a, b) => a\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockI18N.i18next).thenReturn(i18next);\r\n\t\t\t\tspyOn(i18next, 't').and.returnValue('localized');\r\n\t\t\t});\r\n\r\n\t\t\tit('should initialize component', () => {\r\n\t\t\t\texpect(service).toBeTruthy();\r\n\t\t\t\texpect(service.accounts.length).toEqual(2);\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('markAsRead()', () => {\r\n\t\t\t\tlet message = {\r\n\t\t\t\t\tmessageId: 0,\r\n\t\t\t\t\treadDate: null\r\n\t\t\t\t};\r\n\t\t\t\twhen(mockPayrazrService.markMessageAsRead(anything())).thenResolve();\r\n\t\t\t\tit('should mark message as read', () => {\r\n\t\t\t\t\tservice.newMessages = 5;\r\n\t\t\t\t\tservice.markAsRead(message);\r\n\t\t\t\t\texpect(service.newMessages).toEqual(4);\r\n\t\t\t\t\texpect(message.readDate.locale()).toEqual(moment().locale());\r\n\t\t\t\t\tverify(mockPayrazrService.markMessageAsRead(anything())).called();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('replaceTokensInMessage()', () => {\r\n\t\t\t\tlet message = {\r\n\t\t\t\t\tmessageId: 0,\r\n\t\t\t\t\tmessage: '',\r\n\t\t\t\t\thasLink: false,\r\n\t\t\t\t\tlinkText: null\r\n\t\t\t\t};\r\n\t\t\t\tit('should skip messages without documents', () => {\r\n\t\t\t\t\tmessage.message = '';\r\n\t\t\t\t\tmessage.hasLink = false;\r\n\t\t\t\t\tmessage.linkText = null;\r\n\t\t\t\t\tservice.replaceTokensInMessage(message);\r\n\t\t\t\t\texpect(message.hasLink).toBeFalsy();\r\n\t\t\t\t\texpect(message.linkText).toBeNull();\r\n\t\t\t\t});\r\n\t\t\t\tit('should replace document links', () => {\r\n\t\t\t\t\tmessage.message = 'test {documentlink}';\r\n\t\t\t\t\tservice.replaceTokensInMessage(message);\r\n\t\t\t\t\texpect(message.hasLink).toBeTruthy();\r\n\t\t\t\t\texpect(message.linkText).toEqual('localized');\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('getMessages()', () => {\r\n\t\t\t\tlet response = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcustomerAccountReferenceId: 'test1',\r\n\t\t\t\t\t\treadDate: null,\r\n\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\thasLink: false,\r\n\t\t\t\t\t\tlinkText: null\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcustomerAccountReferenceId: 'XYZ',\r\n\t\t\t\t\t\treadDate: null,\r\n\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\thasLink: false,\r\n\t\t\t\t\t\tlinkText: null\r\n\t\t\t\t\t}\r\n\t\t\t\t];\r\n\t\t\t\twhen(mockPayrazrService.getMessages()).thenResolve(response);\r\n\t\t\t\tit('should only add messages for active accounts', () => {\r\n\t\t\t\t\tservice.getMessages().then(() => {\r\n\t\t\t\t\t\texpect(service.messages.length).toEqual(1);\r\n\t\t\t\t\t\texpect(service.messages[0]).toEqual(response[0]);\r\n\t\t\t\t\t\texpect(service.newMessages).toEqual(1);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport * as $ from \"jquery\";\r\nimport * as moment from 'moment';\r\nimport numeral from 'numeral';\r\nimport 'whatwg-fetch';\r\nimport config from '../config/config';\r\nimport { FormattingHelper } from '../helpers/formatting-helper';\r\nimport { Business } from '../models/business';\r\nimport { Customer, CustomerPaymentMethod } from '../models/customer';\r\nimport { Portal } from '../models/portal';\r\nimport { Portfolio } from '../models/portfolio';\r\nimport { State } from './global-state';\r\nimport { PaymentHistory } from '../models/payment-history';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ApiResponse } from \"../models/api-response\";\r\nimport { TemplateData } from '../models/template-data';\r\nimport { Language } from '../models/language';\r\nimport { FeeCalculationValue } from '../models/feeCalculationValue';\r\nimport { PaymentPlanType } from '../models/paymentPlanType';\r\nimport { UpdateCardPaymentModel } from '../models/update-card-payment-model';\r\nimport { UpdateAchPaymentModel } from '../models/update-ach-payment-model';\r\nimport { CombinedInstallmentAccountItem } from '../models/combined-installment-account-item';\r\nimport { SubmitDigitalWalletPaymentRequest } from '../models/submit-digital-wallet-payment-request';\r\nimport { DigitalWalletPaymentDetails } from '../models/digital-wallet';\r\n\r\n@autoinject\r\nexport class PayrazrService {\r\n base: string;\r\n queryParameters: any;\r\n\r\n constructor(\r\n private globalState: State,\r\n private http: HttpClient,\r\n private router: Router,\r\n private i18n: I18N\r\n ) {\r\n this.base = config.serviceUrl;\r\n\t\tthis.queryParameters = {};\r\n\t\tlocation.search.substr(1).split(\"&\").forEach(item => { \r\n const index = decodeURI(item.split(\"=\")[0].toLowerCase());\r\n const value = decodeURI(item.split(\"=\")[1]).replace(\"undefined\", \"\"); \r\n this.queryParameters[index] = value; \r\n });\r\n\t}\r\n\r\n\tgetParameterValue(key: any) {\r\n\t\tvar key = key.toLowerCase();\r\n\t\tvar value = this.queryParameters[key];\r\n\r\n\t\tif (value) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tget awaitingResponse() {\r\n\t\treturn this.http.isRequesting;\r\n\t}\r\n\r\n\tgetPortal(portalId: any, recaptchaToken: any) {\r\n\t\tthis.globalState.business = null;\r\n\r\n\t\tvar url = `/portal/${portalId}`;\r\n\r\n\t\tif (recaptchaToken)\r\n\t\t\turl += `?captchaToken=${recaptchaToken}`;\r\n\r\n\t\treturn this.get(url)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.portal.settings === \"{}\") {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.globalState.business = new Business({\r\n\t\t\t\t\t\tportalId: portalId,\r\n\t\t\t\t\t\tkey: response.businessKey,\r\n\t\t\t\t\t\tsessionId: response.sessionId,\r\n\t\t\t\t\t\tname: response.businessName,\r\n\t\t\t\t\t\tphone: response.businessPhone,\r\n\t\t\t\t\t\tlegalName: response.businessLegalName,\r\n\t\t\t\t\t\taddress: response.businessAddress,\r\n\t\t\t\t\t\tportalSettings: new Portal(response.portal, this.i18n),\r\n\t\t\t\t\t\tezpayPortfolio: response.ezpayPortfolio ? new Portfolio(response.ezpayPortfolio) : null,\r\n\t\t\t\t\t\trunPlannedPaymentDays: response.runPlannedPaymentDays,\r\n\t\t\t\t\t\tverticalMarket: response.verticalMarket,\r\n\t\t\t\t\t\tbusinessTimezone: response.businessTimezone\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.globalState.anonymousToken = response.token; // initialize\r\n\r\n\t\t\t\t\tif (!this.globalState.token) {\r\n\t\t\t\t\t\tthis.globalState.token = this.globalState.anonymousToken;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.globalState.business.applyBusinessSettings(response.businessSettings);\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetPortalId(shortPortalId: any) {\r\n\t\treturn this.get(`/${shortPortalId}`)\r\n\t\t\t.then(response => {\r\n\t\t\t\treturn response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tlogin(username: any, password: any, cookie: string = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/login`;\r\n\t\tlet content = {\r\n\t\t\tusername: username,\r\n\t\t\tpassword: password,\r\n\t\t\tcookieValue: cookie\r\n\t\t};\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\tresetSession() {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/reset-session`;\r\n\t\treturn this.post(url);\r\n\t}\r\n\r\n\tlogout(sessionId: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/logout/${this.globalState.business.sessionId}`;\r\n\t\treturn this.post(url);\r\n\t}\r\n\r\n\tstartEzpay() {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/startEzpay`;\r\n\t\treturn this.post(url);\r\n\t}\r\n\r\n\trefreshGlobalCustomer() {\r\n\t\tlet customerId = this.globalState.customer.id;\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${customerId}`;\r\n\t\treturn this.get(url)\r\n\t\t\t.then(result => {\r\n\t\t\t\tthis.globalState.customer = new Customer(this.globalState.business, result);\r\n\r\n\t\t\t\tthis.globalState.associatedCustomers = [];\r\n\t\t\t\tfor (let i of result.associatedCustomers || []) {\r\n\t\t\t\t\tthis.globalState.associatedCustomers.push(new Customer(this.globalState.business, i));\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.globalState;\r\n\t\t\t});\r\n\t}\r\n\r\n\tapplyTemplate(templateName: string, templateData: TemplateData) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/applyTemplate/${encodeURIComponent(templateName)}`;\r\n\t\treturn this.post(url, templateData);\r\n\t}\r\n\r\n\tapplyTemplateAndReturnHash(templateName: string, templateData: TemplateData, feeValues: Array = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/secure/applyTemplate/${encodeURIComponent(templateName)}`;\r\n\t\treturn this.post(url, templateData);\r\n\t}\r\n\r\n\tgetConfirmHtml(paymentMethod: string, templateData: TemplateData) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/confirmation/${paymentMethod}`;\r\n\t\treturn this.post(url, templateData);\r\n\t}\r\n\r\n\tgetReceiptHtml(cardOrCheck: string, templateData: TemplateData) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/receipt/${cardOrCheck}`;\r\n\t\treturn this.post(url, templateData);\r\n\t}\r\n\r\n\tgetDisclosure() {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/disclosure`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tlookupCustomerByFilters(accountReferenceId: any, registrationId: any, registrationId2: any, registrationId3: any, zipCode: any, bucketKey?: number) {\r\n\t\tlet content = {\r\n\t\t\tcustomerAccountReferenceId: accountReferenceId,\r\n\t\t\tRegistrationId: registrationId,\r\n\t\t\tRegistrationId2: registrationId2,\r\n\t\t\tRegistrationId3: registrationId3,\r\n\t\t\tZipCode: zipCode,\r\n\t\t\tBucketKey: bucketKey\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/lookup`;\r\n\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\tcreateOrder(accountReferenceId: any, firstName: any, lastName: any, ssn: any, email: any, addr: any, city: any, state: any, zipCode: any, preAddr: any, preCity: any, preState: any, preZip: any, year: any, type: any, bucketKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/veritax/${encodeURIComponent(accountReferenceId)}/createOrder`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\tlet content = {\r\n\t\t\tapplicant: {\r\n\t\t\t\tfirstName: firstName,\r\n\t\t\t\tlastName: lastName,\r\n\t\t\t\tsocialSecurityNumber: ssn,\r\n\t\t\t\temailAddress: email,\r\n\t\t\t\taddress: {\r\n\t\t\t\t\taddressLine: addr,\r\n\t\t\t\t\tcity: city,\r\n\t\t\t\t\tstate: state,\r\n\t\t\t\t\tzipCode: zipCode,\r\n\t\t\t\t},\r\n\t\t\t\t//todo: verify the veritax send right previous state when we disable, what should we send when we disable previous address\r\n\t\t\t\tpreviousAddress: {\r\n\t\t\t\t\taddressLine: preAddr,\r\n\t\t\t\t\tcity: preCity,\r\n\t\t\t\t\tstate: preState,\r\n\t\t\t\t\tzipCode: preZip,\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\treportType: type,\r\n\t\t\treportYear: year\r\n\t\t}\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\tgetLastVeritaxOrder(accountReferenceId: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/veritax/${encodeURIComponent(accountReferenceId)}/getLastOrder`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tregisterConsumerUser(params: any) {\r\n\t\tlet content = {\r\n\t\t\tcustomerId: params.customerId,\r\n\t\t\tusername: params.username,\r\n\t\t\tpassword: params.password,\r\n\t\t\tquestion1: params.question1,\r\n\t\t\tanswer1: params.question1Answer,\r\n\t\t\tquestion2: params.question2,\r\n\t\t\tanswer2: params.question2Answer,\r\n\t\t\temailAddress: params.emailAddress,\r\n\t\t\twantsEmailNotifications: params.wantsEmailNotifications,\r\n\t\t\tmobileNumber: params.mobilePhone,\r\n\t\t\twantsSMSNotifications: params.enabledSMSNotifications,\r\n\t\t\tisPaperStatementsOptedIn: params.isPaperStatementsOptedIn,\r\n\t\t\tisEmailStatementsOptedIn: params.isEmailStatementsOptedIn\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/register`;\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\t//TODO: Add the correct endpoints\r\n\tsavePaymentMethod(customer: any, methodName: any, paymentMethod: any) {\r\n\t\tconsole.log('savePaymentMethod', arguments);\r\n\t\tlet url;\r\n\t\tlet content;\r\n\r\n\t\tif (paymentMethod.transitNumber) {\r\n\t\t\turl = 'URL FOR ACH TOKEN';\r\n\t\t\tcontent = {\r\n\t\t\t\taccount: {\r\n\t\t\t\t\taccountName: customer.name,\r\n\t\t\t\t\taba: paymentMethod.transitNumber,\r\n\t\t\t\t\taccountNumber: paymentMethod.accountNumber,\r\n\t\t\t\t\taccountType: paymentMethod.mapAccountTypeToApi()\r\n\t\t\t\t},\r\n\t\t\t\tcustomerId: customer.id\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\t//apiService = 'URL FOR CARD TOKEN'; // portal refactor note: commented this out as it is not even used in rest of file\r\n\t\t\tcontent = {\r\n\t\t\t\tcard: {\r\n\t\t\t\t\tcardNumber: paymentMethod.cardNumber,\r\n\t\t\t\t\texpirationDate: paymentMethod.expirationDate,\r\n\t\t\t\t\tcardholderName: customer.name,\r\n\t\t\t\t\tcvv: paymentMethod.cvv,\r\n\t\t\t\t\taddressLine1: customer.primaryAddress.addressLine1,\r\n\t\t\t\t\tzipCode: customer.primaryAddress.zipCode\r\n\t\t\t\t},\r\n\t\t\t\tcustomerId: customer.id\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn this.makeFakeServiceCall((accept, reject) => {\r\n\t\t\tlet method;\r\n\t\t\tif (paymentMethod.transitNumber) {\r\n\t\t\t\tmethod = new CustomerPaymentMethod({\r\n\t\t\t\t\t'name': methodName,\r\n\t\t\t\t\t'type': 'ACH',\r\n\t\t\t\t\t'description': `Bank account ending in ${FormattingHelper.mask(paymentMethod.accountNumber)}`\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tmethod = new CustomerPaymentMethod({\r\n\t\t\t\t\t'name': methodName,\r\n\t\t\t\t\t'type': 'Card',\r\n\t\t\t\t\t'description': `Card ending in ${FormattingHelper.mask(paymentMethod.cardNumber)}`\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tcustomer.paymentMethods.push(method);\r\n\r\n\t\t\taccept(customer);\r\n\t\t});\r\n\t}\r\n\r\n\tupdateUsername(newUsername: any) {\r\n\t\tlet content = {\r\n\t\t\tNewUsername: newUsername\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(this.globalState.customer.id)}/security/username`;\r\n\t\treturn this.put(url, content);\r\n\t}\r\n\r\n\tupdatePassword(oldPassword: any, newPassword: any) {\r\n\t\tlet content = {\r\n\t\t\tOldPassword: oldPassword,\r\n\t\t\tNewPassword: newPassword\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(this.globalState.customer.id)}/security/password`;\r\n\t\treturn this.put(url, content);\r\n\t}\r\n\r\n\tupdateSecurityQuestion(questionNumber: any, question: any, answer: any) {\r\n\t\tlet content = {\r\n\t\t\tQuestion: question,\r\n\t\t\tAnswer: answer\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(this.globalState.customer.id)}/security/question/${questionNumber}`;\r\n\t\treturn this.put(url, content);\r\n\t}\r\n\r\n\tupdateContactInformation(params: any) {\r\n\t\tlet content = {\r\n\t\t\thomePhone: params.homePhone,\r\n\t\t\tworkPhone: params.workPhone,\r\n\t\t\tmobilePhone: params.mobilePhone,\r\n\t\t\tsmsNotificationsEnabled: params.smsNotificationsEnabled,\r\n\t\t\temailAddress: params.emailAddress,\r\n\t\t\temailNotificationsEnabled: params.emailNotificationsEnabled,\r\n\t\t\tisPaperStatementsOptedIn: params.isPaperStatementsOptedIn,\r\n\t\t\tisEmailStatementsOptedIn: params.isEmailStatementsOptedIn\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(params.customerId)}/contactInformation`;\r\n\t\treturn this.put(url, content);\r\n\t}\r\n\r\n\tresendSmsVerificationCode(phoneNumber: any, customerId: any = null) {\r\n\t\t// Give preference to the customerId parameter.\r\n\t\t// If not set, default to the global cutomer in context.\r\n\t\tcustomerId = customerId || this.globalState.customer.id;\r\n\r\n\t\tcustomerId = encodeURIComponent(customerId);\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${customerId}/resendSmsVerificationCode`;\r\n\r\n\t\treturn this.post(url, phoneNumber);\r\n\t}\r\n\r\n\tsmsPhoneNumberVerification(verificationCode: any, customerId: string = null) {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet content = {\r\n\t\t\tVerificationCode: verificationCode\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/validateSmsVerificationCode`;\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\tupdateEmailInfo(email, wantsEmailNotifications: any) {\r\n\t\tlet content = {\r\n\t\t\tEmail: email,\r\n\t\t\tWantsEmailNotifications: wantsEmailNotifications\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(this.globalState.customer.id)}/security/emailInfo`;\r\n\t\treturn this.put(url, content);\r\n\t}\r\n\r\n\tgetCustomerSecurityQuestion(content: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/securityQuestion`;\r\n\r\n\t\treturn new Promise((accept, reject) => {\r\n\t\t\tthis.post(url, content)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tif (response.isSuccessful)\r\n\t\t\t\t\t\taccept(response.entity);\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tswitch (response.message) {\r\n\t\t\t\t\t\t\tcase 'AccountLocked':\r\n\t\t\t\t\t\t\t\treject(this.i18n.i18next.t('userAccountLockedContactToUnlock', { defaultValue: `This user account has been locked. Please contact us at ${this.globalState.business.portalSettings.csPhone} to unlock this account or try again later.`, phoneNumber: this.globalState.business.portalSettings.csPhone }));\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'NotFound':\r\n\t\t\t\t\t\t\t\treject(this.i18n.i18next.t('unableToLocateAccount','Unable to locate that account'));\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 'CustomerAccountIsInactive':\r\n\t\t\t\t\t\t\t\treject(this.i18n.i18next.t('yourAccountNoLongerActive','Your account is no longer active. If you feel you have received this message in error, please contact customer service.'));\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\treject(this.i18n.i18next.t('unknownError',\"Unknown error\"));\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\treject(this.i18n.i18next.t('internalError',\"Internal Error\"));\r\n\t\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\tcheckAnswerToSecurityQuestion(customerId: any, question: any, answer: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/checkSecurityQuestion`;\r\n\t\tlet content = {\r\n\t\t\tQuestion: question,\r\n\t\t\tAnswer: answer\r\n\t\t};\r\n\r\n\t\treturn this.put(url, content);\r\n\t}\r\n\r\n\tresetForgottenPassword(customerId: any, username: any, securityQuestion: any, securityAnswer: any, newPassword: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/resetPassword`;\r\n\t\tlet content = {\r\n\t\t\tusername: username,\r\n\t\t\tsecurityQuestion: securityQuestion,\r\n\t\t\tsecurityAnswer: securityAnswer,\r\n\t\t\tnewPassword: newPassword\r\n\t\t};\r\n\r\n\t\treturn new Promise((accept, reject) => {\r\n\t\t\tthis.post(url, content)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tif (response.resultCode == 1) {\r\n\t\t\t\t\t\taccept(response);\r\n\t\t\t\t\t} else if (response.resultCode == 3) {\r\n\t\t\t\t\t\treject(this.i18n.i18next.t('answerDoesNotMatchSecurityQuestion','The answer doesn\\'t match the security question, please re-enter'));\r\n\t\t\t\t\t} else if (response.resultCode == 4) {\r\n\t\t\t\t\t\treject(this.i18n.i18next.t('cannotReusePreviousPassword','You cannot re-use a previous password, please try a new one'));\r\n\t\t\t\t\t} else if (response.resultCode == 9999) {\r\n\t\t\t\t\t\treject(this.i18n.i18next.t('newPasswordDoesNotMatchRequirement','The new password doesn\\'t match the requirement, please try a new one'));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treject(this.i18n.i18next.t('unknownError', \"Unknown error\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\treject(this.i18n.i18next.t('internalError', \"Internal Error\"));\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tcalculateFee(isCardTransaction: any, portfolioName: any, zipCode: any, amountUsedToCalculateSurchargeOnIfApplicable: any, cardNumber: any,\r\n\t\tcardInfoKey: any = null, customerAccountKeys: any = null, paymentPlanType: PaymentPlanType = PaymentPlanType.NotSet, merchantKey: any = null) {\r\n\t\tcardInfoKey = cardInfoKey || null;\r\n\t\tcardNumber = cardNumber || null;\r\n\t\tamountUsedToCalculateSurchargeOnIfApplicable = amountUsedToCalculateSurchargeOnIfApplicable || 0;\r\n\t\tcustomerAccountKeys = customerAccountKeys || null;\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/fee`;\r\n\r\n\t\tlet requestBody = {\r\n\t\t\tpaymentMethodType: (isCardTransaction ? 'card' : 'ach'),\r\n\t\t\tportfolioName,\r\n\t\t\tzipCode,\r\n\t\t\tamountUsedToCalculateSurchargeOnIfApplicable,\r\n\t\t\tcardNumber,\r\n\t\t\tcardInfoKey,\r\n\t\t\tcustomerAccountKeys,\r\n\t\t\tpaymentPlanType,\r\n\t\t\tmerchantKey\r\n\t\t};\r\n\r\n\t\treturn this.post(url, requestBody);\r\n\t}\r\n\r\n\tpaymentTermsRejected(account: any, bucketKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/paymenttermsrejected`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\t\treturn this.post(url, {});\r\n\t}\r\n\r\n\tcheckCardType(cardNumber: any, portfolioName: any, cardInfoKey?: any, merchantKey?: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/checktype/card`;\r\n\r\n\t\tif (cardInfoKey === undefined)\r\n\t\t\tcardInfoKey = 0;\r\n\r\n\t\tvar data = {\r\n\t\t\tportfolioName: portfolioName,\r\n\t\t\tcardNumber: cardNumber,\r\n\t\t\tcardInfoKey: cardInfoKey,\r\n\t\t\tmerchantKey: merchantKey\r\n\t\t};\r\n\t\treturn this.post(url, data);\r\n\r\n\t}\r\n\r\n\tsubmitCheckPaymentV2(customer: any, account: any, nameOnCheck: any, addressLine1: any, billingCity: any, billingState: any, zipCode: any, billingPhone: any, billingEmail: any,\r\n\t\tisEmailOptedIn: boolean, transactionDescription: any, isThirdPartyPayment: any, amount: any, fee: any, checkDetails: any, processorOverride: any, saveToWallet: any, discountAmount: any,\r\n\t\tbucketKey: number | null = null, merchantKey: number | null = null, captchaToken: string = null, isUnvalidatedEzpay: boolean = false) {\r\n\t\tvar paymentDate = moment();\r\n\t\tlet checkInfoKey = checkDetails.selectedPaymentMethod ? checkDetails.selectedPaymentMethod.checkInfoKey : 0;\r\n\t\tlet customFields = checkDetails.customFields || [];\r\n\t\tlet content = {\r\n\t\t\tcheckInfoKey: checkInfoKey,\r\n\t\t\tnameOnAccount: nameOnCheck,\r\n\t\t\taba: checkDetails.transitNumber,\r\n\t\t\taccountNumber: checkDetails.accountNumber,\r\n\t\t\taccountType: checkDetails.mapAccountTypeToApi(),\r\n\t\t\taddressLine1: addressLine1,\r\n\t\t\tbillingCity: billingCity,\r\n\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\tphoneNumber: billingPhone,\r\n\t\t\temail: billingEmail,\r\n\t\t\tisEmailOptedIn: isEmailOptedIn,\r\n\t\t\tzipCode: zipCode,\r\n\t\t\tpaymentAmount: amount,\r\n\t\t\tServiceFee: fee,\r\n\t\t\tcheckNumber: checkDetails.checkNumber,\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\tprocessorOverride: processorOverride,\r\n\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\tcustomFields: customFields.map(item => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tValue: item.visible ? (item.value || '') : ''\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tdiscountAmount: discountAmount,\r\n\t\t\tisUnvalidatedEzpay: isUnvalidatedEzpay\r\n\t\t};\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/sale/Ach`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\t\tif (merchantKey) {\r\n\t\t\turl += `${bucketKey ? '&' : '?'}merchantKey=${merchantKey}`;\r\n\t\t}\r\n\t\tif (captchaToken) {\r\n\t\t\turl += `${(bucketKey || merchantKey) ? '&' : '?'}captchaToken=${captchaToken}`;\r\n\t\t}\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitCardPaymentV2ForInstallmentsPayOffEarly(customer: any, account: any, nameOnCard: any, addressLine1: any, billingCity: any, billingState: any,\r\n\t\tzipCode: any, billingPhone: any, billingEmail: any, transactionDescription: any, isThirdPartyPayment: any, amount: any, fee: any, cardDetails: any,\r\n\t\tsaveToWallet: any, discountAmount: number, bucketKey: number | null = null) {\r\n\t\tvar paymentDate = moment();\r\n\r\n\t\tlet cardInfoKey = cardDetails.selectedPaymentMethod ? cardDetails.selectedPaymentMethod.cardInfoKey : 0;\r\n\t\tlet customFields = cardDetails.customFields || [];\r\n\r\n\t\tvar mostRecentPaymentPlan = account.paymentPlans\r\n\t\t\t.filter(item => item.totalPayments >= 1)\r\n\t\t\t.sort((a, b) => a.paymentDate - b.paymentDate)\r\n\t\t\t.pop();\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/paymentPlan/${mostRecentPaymentPlan.id}/sale/card`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\tlet content = {\r\n\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\tcardInfoKey: cardInfoKey,\r\n\t\t\tnameOnCard: nameOnCard,\r\n\t\t\taddressLine1: addressLine1,\r\n\t\t\tbillingCity: billingCity,\r\n\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\tphoneNumber: billingPhone,\r\n\t\t\temail: billingEmail,\r\n\t\t\tzipCode: zipCode,\r\n\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\tcardNumber: cardDetails.cardNumber,\r\n\t\t\tcvv: cardDetails.cvv,\r\n\t\t\texpirationDate: cardDetails.expirationDate,\r\n\t\t\tpaymentAmount: amount,\r\n\t\t\tserviceFee: fee,\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\tcustomFields: customFields.map(item => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tValue: item.visible ? (item.value || '') : ''\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tdiscountAmount: discountAmount\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitCardPaymentV2(customer: any, account: any, nameOnCard: any, addressLine1: any, billingCity: any, billingState: any, zipCode: any,\r\n\t\tbillingPhone: any, billingEmail: any, isEmailOptedIn: boolean, transactionDescription: any, isThirdPartyPayment: any, amount: any, fee: any, cardDetails: any,\r\n\t\tprocessorOverride: any, saveToWallet: any, discountAmount: any, bucketKey: number | null = null, merchantKey: number | null = null,\r\n\t\tcaptchaToken: string = null, isUnvalidatedEzpay: boolean = false, verificationCode: string = null, mfaEmail: string = null, mfaPhoneNumber: string = null) {\r\n\t\tvar paymentDate = moment();\r\n\t\tlet cardInfoKey = cardDetails.selectedPaymentMethod ? cardDetails.selectedPaymentMethod.cardInfoKey : 0;\r\n\t\tlet customFields = cardDetails.customFields || [];\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/sale/card`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\t\tif (merchantKey) {\r\n\t\t\turl += `${bucketKey ? '&' : '?'}merchantKey=${merchantKey}`;\r\n\t\t}\r\n\t\tif (captchaToken) {\r\n\t\t\turl += `${(bucketKey || merchantKey) ? '&' : '?'}captchaToken=${captchaToken}`;\r\n\t\t}\r\n\r\n\t\tlet content = {\r\n\t\t\tcardInfoKey: cardInfoKey,\r\n\t\t\tnameOnCard: nameOnCard,\r\n\t\t\taddressLine1: addressLine1,\r\n\t\t\tbillingCity: billingCity,\r\n\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\tphoneNumber: billingPhone,\r\n\t\t\temail: billingEmail,\r\n\t\t\tisEmailOptedIn: isEmailOptedIn,\r\n\t\t\tzipCode: zipCode,\r\n\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\tcardNumber: cardDetails.cardNumber,\r\n\t\t\tcvv: cardDetails.cvv,\r\n\t\t\texpirationDate: cardDetails.expirationDate,\r\n\t\t\tpaymentAmount: amount,\r\n\t\t\tserviceFee: fee,\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\tprocessorOverride: processorOverride,\r\n\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\tcustomFields: customFields.map(item => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tValue: item.visible ? (item.value || '') : ''\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tdiscountAmount: discountAmount,\r\n\t\t\tisUnvalidatedEzpay: isUnvalidatedEzpay,\r\n\t\t\tverificationCode,\r\n\t\t\tmfaEmail,\r\n\t\t\tmfaPhoneNumber\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitCardDigitalWalletPayment(request: SubmitDigitalWalletPaymentRequest): Promise {\r\n\t\tlet url = `/portal/${request.portalId}/account/${encodeURIComponent(request.customerAccountId)}/sale/card/digitalWallet`;\r\n\t\tif (request.bucketKey) {\r\n\t\t\turl += `?bucketKey=${request.bucketKey}`;\r\n\t\t}\r\n\t\tif (request.merchantKey) {\r\n\t\t\turl += `${request.bucketKey ? '&' : '?'}merchantKey=${request.merchantKey}`;\r\n\t\t}\r\n\r\n\t\treturn this.post(url, request.digitalWalletPaymentDetails)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n\t\t\t\t\tresponse\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitDigitalWalletPaymentPlan(\r\n\t\taccount: any,\r\n\t\tdigitalWalletPaymentDetails: DigitalWalletPaymentDetails,\r\n\t\tmerchantKey: number | null = null,\r\n\t\tbucketKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/paymentplan/digitalWallet`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\t\tif (merchantKey) {\r\n\t\t\turl += `${bucketKey ? '&' : '?'}merchantKey=${merchantKey}`;\r\n\t\t}\r\n\r\n\t\tlet content = digitalWalletPaymentDetails;\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n\t\t\t\t\tresponse: response,\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitCheckPaymentPlan(account: any, initialPayment: any, monthlyPayment: any, numberOfMonths: any, firstPaymentDate: any, name: any, address1: any,\r\n\t\tbillingCity: any, billingState: any, billingPhone: any, billingEmail: any, isEmailOptedIn: boolean, zip: any, fee: any, transactionDescription: any, isThirdPartyPayment: any,\r\n\t\tcheckDetails: any, maxRetries: any, isRehab: any, saveToWallet: any, discountAmount: any, bucketKey: number | null = null, merchantKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/paymentplan/ach`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\t\tif (merchantKey) {\r\n\t\t\turl += `${bucketKey ? '&' : '?'}merchantKey=${merchantKey}`;\r\n\t\t}\r\n\r\n\t\tlet checkInfoKey = checkDetails.selectedPaymentMethod ? checkDetails.selectedPaymentMethod.checkInfoKey : 0;\r\n\t\tlet content = {\r\n\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\tcheckInfoKey: checkInfoKey,\r\n\t\t\tnameOnAccount: name,\r\n\t\t\taddressLine1: address1,\r\n\t\t\tbillingCity: billingCity,\r\n\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\tphoneNumber: billingPhone,\r\n\t\t\temail: billingEmail,\r\n\t\t\tisEmailOptedIn: isEmailOptedIn,\r\n\t\t\tzipCode: zip,\r\n\t\t\taba: checkDetails.transitNumber,\r\n\t\t\tcheckNumber: checkDetails.checkNumber,\r\n\t\t\taccountNumber: checkDetails.accountNumber,\r\n\t\t\taccountType: checkDetails.mapAccountTypeToApi(),\r\n\t\t\tnumberOfPayments: numberOfMonths,\r\n\t\t\tpaymentAmount: monthlyPayment,\r\n\t\t\tserviceFee: fee,\r\n\t\t\tfirstPaymentDate: moment(firstPaymentDate).format('MM/DD/YYYY'),\r\n\t\t\tmaxRetries: maxRetries,\r\n\t\t\tisRehab: isRehab,\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\tdiscountAmount: discountAmount\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response,\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetPlannedPaymentsByCustomerAccountId(id: any, bucketKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(id)}/plannedPayments`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetLatestActivePaymentPlanPlannedPaymentsByCustomerAccountId(id: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(id)}/latestActivePaymentPlanPlannedPayments`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetPaymentPlanByCustomerAccountId(id: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(id)}/paymentPlan`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetCustomerPaymentMethodsByCustomerId(customerId: string = null) {\r\n\t\tif (customerId === null) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/paymentMethods`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\taddAchPaymentMethod(token: any, makePrimary: any, customerId: string = null) {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customers/${encodeURIComponent(customerId)}/paymentMethods/ach?makePrimary=${encodeURIComponent(makePrimary || false)}`;\r\n\t\treturn this.post(url, token);\r\n\t}\r\n\r\n\tupdateAchPaymentMethod(updateAchPaymentModel: UpdateAchPaymentModel) {\r\n\t\tlet checkInfoKey = updateAchPaymentModel.achToken.checkInfoKey;\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/paymentMethod/ach/${encodeURIComponent(checkInfoKey)}`;\r\n\t\treturn this.put(url, updateAchPaymentModel);\r\n\t}\r\n\r\n\taddCardPaymentMethod(token: any, makePrimary: any, customerId: string = null) {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/paymentMethods/card?makePrimary=${encodeURIComponent(makePrimary || false)}`;\r\n\t\treturn this.post(url, token);\r\n\t}\r\n\r\n\tupdateCardPaymentMethod(updateCardPaymentModel: UpdateCardPaymentModel) {\r\n\t\tlet cardInfoKey = updateCardPaymentModel.cardToken.cardInfoKey;\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/paymentMethod/card/${encodeURIComponent(cardInfoKey)}`;\r\n\t\treturn this.put(url, updateCardPaymentModel);\r\n\t}\r\n\r\n\tremovePaymentMethod(paymentMethodType: any, paymentMethodInfoKey: any, customerId: string = null) {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/paymentMethods/${paymentMethodType}/delete/${paymentMethodInfoKey}`;\r\n\t\treturn this.post(url);\r\n\t}\r\n\r\n\t//paymentMethodKey = CardInfoKey or CheckInfoKey\r\n\t//paymentMethodType = Check or Credit\r\n\tsetCustomerPrimaryPaymentMethod(paymentMethodKey: any, paymentMethodType: any, customerId: string = null) {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/paymentMethod/${encodeURIComponent(paymentMethodKey)}/primaryPaymentMethod?paymentMethodType=${encodeURIComponent(paymentMethodType)}`;\r\n\t\treturn this.post(url);\r\n\t}\r\n\r\n\tcreateCheckInstallmentPaymentPlan(account: any, totalAmount: any, numberOfPayments: any, selectedPaymentDate: any, name: any, address1: any,\r\n\t\tbillingCity: any, billingState: any, billingPhone: any, billingEmail: any, zip: any, totalServiceFee: any, singleServiceFee: any, transactionDescription: any,\r\n\t\tisThirdPartyPayment: any, checkDetails: any, maxRetries: any, payToday: any, frequency: any, signedFirstName: any, signedLastName: any, signedDate: any, appliedDiscount: any,\r\n\t\tgeneratedRegEHtml: any, generatedRegHashValue: any, saveToWallet: any, bucketKey: number | null = null, negotiatorActivitySessionId: string, combinedInstallmentAccounts: Array) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/installments`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\tlet checkInfoKey = checkDetails.selectedPaymentMethod ? checkDetails.selectedPaymentMethod.checkInfoKey : 0;\r\n\t\tlet content = {\r\n\t\t\tisCardPayment: false,\r\n\t\t\tachPaymentDetails: {\r\n\t\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\t\tcheckInfoKey: checkInfoKey,\r\n\t\t\t\tnameOnAccount: name,\r\n\t\t\t\taddressLine1: address1,\r\n\t\t\t\tbillingCity: billingCity,\r\n\t\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\t\tphoneNumber: billingPhone,\r\n\t\t\t\temail: billingEmail,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\taba: checkDetails.transitNumber,\r\n\t\t\t\tcheckNumber: checkDetails.checkNumber,\r\n\t\t\t\taccountNumber: checkDetails.accountNumber,\r\n\t\t\t\taccountType: checkDetails.mapAccountTypeToApi(),\r\n\t\t\t\tisThirdParty: isThirdPartyPayment\r\n\t\t\t},\r\n\t\t\tinstallmentSettingModel: {\r\n\t\t\t\tnumberOfPayments: numberOfPayments,\r\n\t\t\t\ttotalPaymentAmount: totalAmount,\r\n\t\t\t\tselectedPaymentDate: moment(selectedPaymentDate).format('MM/DD/YYYY'),\r\n\t\t\t\tpayToday: payToday,\r\n\t\t\t\tfrequency: frequency,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\tmaxRetries: maxRetries,\r\n\t\t\t\tappliedDiscount: appliedDiscount,\r\n\t\t\t},\r\n\t\t\tinstallmentAuthorizationFormInformation: {\r\n\t\t\t\tsignedFirstName: signedFirstName,\r\n\t\t\t\tsignedLastName: signedLastName,\r\n\t\t\t\tsignedDate: signedDate,\r\n\t\t\t\tgeneratedRegE: generatedRegEHtml,\r\n\t\t\t\thashedValue: generatedRegHashValue\r\n\t\t\t},\r\n\t\t\ttotalServiceFee: totalServiceFee,\r\n\t\t\tsingleServiceFee: singleServiceFee,\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\tnegotiatorActivitySessionId,\r\n\t\t\tcombinedInstallmentAccountItems: combinedInstallmentAccounts\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response,\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tsubmitCardPaymentPlan(account: any, initialPayment: any, monthlyPayment: any, numberOfMonths: any, firstPaymentDate: any, name: any, address1: any,\r\n\t\tbillingCity: any, billingState: any, billingPhone: any, billingEmail: any, isEmailOptedIn: boolean, zip: any, fee: any, transactionDescription: any, isThirdPartyPayment: any,\r\n\t\tcardDetails: any, maxRetries: any, isRehab: any, saveToWallet: any, discountAmount: any, bucketKey: number | null = null, merchantKey: number | null = null,\r\n\t\tdigitalWalletPaymentDetails: DigitalWalletPaymentDetails | null = null, isDigitalWallet: boolean = false) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/paymentplan/card`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\t\tif (merchantKey) {\r\n\t\t\turl += `${bucketKey ? '&' : '?'}merchantKey=${merchantKey}`;\r\n\t\t}\r\n\r\n\t\tlet content: any;\r\n\r\n\t\tif (isDigitalWallet) {\r\n\t\t\tcontent = digitalWalletPaymentDetails;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet cardInfoKey = cardDetails.selectedPaymentMethod ? cardDetails.selectedPaymentMethod.cardInfoKey : 0;\r\n\t\t\tcontent = {\r\n\t\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\t\tcardInfoKey: cardInfoKey,\r\n\t\t\t\tnameOnCard: name,\r\n\t\t\t\taddressLine1: address1,\r\n\t\t\t\tbillingCity: billingCity,\r\n\t\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\t\tphoneNumber: billingPhone,\r\n\t\t\t\temail: billingEmail,\r\n\t\t\t\tisEmailOptedIn: isEmailOptedIn,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\t//isThirdParty: false, // portal refactor note: this is declared twice here. The one below will win.\r\n\t\t\t\tcardNumber: cardDetails.cardNumber,\r\n\t\t\t\tcvv: cardDetails.cvv,\r\n\t\t\t\texpirationDate: cardDetails.expirationDate,\r\n\t\t\t\tnumberOfPayments: numberOfMonths,\r\n\t\t\t\tpaymentAmount: monthlyPayment,\r\n\t\t\t\tserviceFee: fee,\r\n\t\t\t\tfirstPaymentDate: moment(firstPaymentDate).format('MM/DD/YYYY'),\r\n\t\t\t\tmaxRetries: maxRetries,\r\n\t\t\t\tisRehab: isRehab,\r\n\t\t\t\tdescription: transactionDescription,\r\n\t\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\t\tdiscountAmount: discountAmount\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n\t\t\t\t\tresponse: response,\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tcreateCardInstallmentPaymentPlan(account: any, totalAmount: any, numberOfPayment: any, selectedPaymentDate: any, name: any, address1: any, billingCity: any,\r\n\t\tbillingState: any, billingPhone: any, billingEmail: any, zip: any, totalServiceFee: any, singleServiceFee: any, transactionDescription: any,\r\n\t\tisThirdPartyPayment: any, cardDetails: any, maxRetries: any, payToday: any, frequency: any, signedFirstName: any, signedLastName: any, signedDate: any,\r\n\t\tappliedDiscount: any, generatedRegEHtml: any, generatedRegHashValue: any, saveToWallet: any, negotiatorActivitySessionId: string, combinedInstallmentAccounts: Array,\r\n\t\tisDigitalWallet: boolean, digitalWalletPaymentDetails: DigitalWalletPaymentDetails) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/installments`;\r\n\t\tlet cardInfoKey = cardDetails?.selectedPaymentMethod ? cardDetails.selectedPaymentMethod.cardInfoKey : 0;\r\n\t\tlet content = {\r\n\t\t\tisCardPayment: true,\r\n\t\t\tcardPaymentDetails: {\r\n\t\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\t\tcardInfoKey: cardInfoKey,\r\n\t\t\t\tnameOnCard: name,\r\n\t\t\t\taddressLine1: address1,\r\n\t\t\t\tbillingCity: billingCity,\r\n\t\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\t\tphoneNumber: billingPhone,\r\n\t\t\t\temail: billingEmail,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\t\tcardNumber: cardDetails?.cardNumber,\r\n\t\t\t\tcvv: cardDetails?.cvv,\r\n\t\t\t\texpirationDate: cardDetails?.expirationDate,\r\n\t\t\t},\r\n\t\t\tdigitalWalletPaymentDetails: digitalWalletPaymentDetails,\r\n\t\t\tinstallmentSettingModel: {\r\n\t\t\t\tnumberOfPayments: numberOfPayment,\r\n\t\t\t\ttotalPaymentAmount: totalAmount,\r\n\t\t\t\tselectedPaymentDate: moment(selectedPaymentDate).format('MM/DD/YYYY'),\r\n\t\t\t\tpayToday: payToday,\r\n\t\t\t\tfrequency: frequency,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\tmaxRetries: maxRetries,\r\n\t\t\t\tappliedDiscount: appliedDiscount\r\n\t\t\t},\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\tinstallmentAuthorizationFormInformation: {\r\n\t\t\t\tsignedFirstName: signedFirstName,\r\n\t\t\t\tsignedLastName: signedLastName,\r\n\t\t\t\tsignedDate: signedDate,\r\n\t\t\t\tgeneratedRegE: generatedRegEHtml,\r\n\t\t\t\thashedValue: generatedRegHashValue\r\n\t\t\t},\r\n\t\t\ttotalServiceFee: totalServiceFee,\r\n\t\t\tsingleServiceFee: singleServiceFee,\r\n\t\t\tnegotiatorActivitySessionId,\r\n\t\t\tcombinedInstallmentAccountItems: combinedInstallmentAccounts,\r\n\t\t\tisDigitalWallet: isDigitalWallet\r\n\t\t};\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response,\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tcreateRecurringPaymentPlan(isCardPayment: any, account: any, totalAmount: any, firstPaymentDate: any, lastPaymentDate: any, firstPaymentFee: any, subsequentPaymentFee: any,\r\n\t\tname: any, address1: any, billingCity: any, billingState: any, billingPhone: any, billingEmail: any, zip: any, totalServiceFee: any, singleServiceFee: any, transactionDescription: any,\r\n\t\tisThirdPartyPayment: any, paymentDetails: any, maxRetries: any, frequency: any, signedFirstName: any, signedLastName: any, signedDate: any, generatedRegEHtml: any, generatedRegHashValue: any,\r\n\t\tsaveToWallet: any, bucketKey: number | null = null, isDigitalWallet: boolean = false) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(account.id)}/recurring`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\tlet _lastPaymentDate = lastPaymentDate ? moment(lastPaymentDate).format('MM/DD/YYYY') : null;\r\n\r\n\t\tlet content: any = {\r\n\t\t\tisCardPayment: isCardPayment,\r\n\t\t\trecurringSettingModel: {\r\n\t\t\t\tpaymentAmount: totalAmount,\r\n\t\t\t\tfirstPaymentDate: moment(firstPaymentDate).format('MM/DD/YYYY'),\r\n\t\t\t\tlastPaymentDate: _lastPaymentDate,\r\n\t\t\t\tfirstPaymentFee: firstPaymentFee,\r\n\t\t\t\tsubsequentPaymentFee: subsequentPaymentFee,\r\n\t\t\t\tfrequency: frequency,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\tmaxRetries: maxRetries\r\n\t\t\t},\r\n\t\t\tdescription: transactionDescription,\r\n\t\t\trecurringAuthorizationFormInformation: {\r\n\t\t\t\tsignedFirstName: signedFirstName,\r\n\t\t\t\tsignedLastName: signedLastName,\r\n\t\t\t\tsignedDate: signedDate,\r\n\t\t\t\tgeneratedRegE: generatedRegEHtml,\r\n\t\t\t\thashedValue: generatedRegHashValue\r\n\t\t\t},\r\n\t\t\ttotalServiceFee: totalServiceFee,\r\n\t\t\tsingleServiceFee: singleServiceFee,\r\n\t\t\tisDigitalWallet: isDigitalWallet\r\n\t\t};\r\n\r\n\t\tif (isCardPayment) {\r\n\t\t\tif (isDigitalWallet) {\r\n\t\t\t\tcontent.digitalWalletPaymentDetails = paymentDetails as DigitalWalletPaymentDetails;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcontent.cardPaymentDetails = {\r\n\t\t\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\t\t\tcardInfoKey: paymentDetails.selectedPaymentMethod ? paymentDetails.selectedPaymentMethod.cardInfoKey : 0,\r\n\t\t\t\t\tnameOnCard: name,\r\n\t\t\t\t\taddressLine1: address1,\r\n\t\t\t\t\tbillingCity: billingCity,\r\n\t\t\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\t\t\tphoneNumber: billingPhone,\r\n\t\t\t\t\temail: billingEmail,\r\n\t\t\t\t\tzipCode: zip,\r\n\t\t\t\t\tisThirdParty: isThirdPartyPayment,\r\n\t\t\t\t\tcardNumber: paymentDetails.cardNumber,\r\n\t\t\t\t\tcvv: paymentDetails.cvv,\r\n\t\t\t\t\texpirationDate: paymentDetails.expirationDate\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcontent.achPaymentDetails = {\r\n\t\t\t\tsaveToWallet: saveToWallet,\r\n\t\t\t\tcheckInfoKey: paymentDetails.selectedPaymentMethod ? paymentDetails.selectedPaymentMethod.checkInfoKey : 0,\r\n\t\t\t\tnameOnAccount: name,\r\n\t\t\t\taddressLine1: address1,\r\n\t\t\t\tbillingCity: billingCity,\r\n\t\t\t\tbillingState: billingState ? billingState : null,\r\n\t\t\t\tphoneNumber: billingPhone,\r\n\t\t\t\temail: billingEmail,\r\n\t\t\t\tzipCode: zip,\r\n\t\t\t\taba: paymentDetails.transitNumber,\r\n\t\t\t\tcheckNumber: paymentDetails.checkNumber,\r\n\t\t\t\taccountNumber: paymentDetails.accountNumber,\r\n\t\t\t\taccountType: paymentDetails.mapAccountTypeToApi(),\r\n\t\t\t\tisThirdParty: isThirdPartyPayment\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n response: response\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tcancelPaymentPlan(planId: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/paymentPlan/${planId}/cancelplan`;\r\n\t\treturn this.get(url)\r\n\t}\r\n\r\n\tsubmitPaymentPlanOffer(accountId: any, initialPayment: any, monthlyPayment: any, numberOfMonths: any) {\r\n\t\tvar self = this;\r\n\t\treturn this.makeFakeServiceCall((accept, reject) => {\r\n\t\t\tvar account = self.globalState.accounts.find((item) => { return item.id === accountId; });\r\n\t\t\tif (account) {\r\n\t\t\t\tvar total = numeral().unformat(initialPayment) + numeral().unformat(monthlyPayment) * numeral().unformat(numberOfMonths);\r\n\r\n\t\t\t\tif (total >= account.balance * 0.85) {\r\n\t\t\t\t\taccept({ accepted: true });\r\n\t\t\t\t} else {\r\n\t\t\t\t\taccept({\r\n\t\t\t\t\t\taccepted: false,\r\n\t\t\t\t\t\tcounterOffers: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tinitialPayment: 123.75,\r\n\t\t\t\t\t\t\t\tmonthlyPayment: 250,\r\n\t\t\t\t\t\t\t\tnumberOfMonths: 4,\r\n\t\t\t\t\t\t\t\ttotalPayment: 1123.75\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tinitialPayment: 223.75,\r\n\t\t\t\t\t\t\t\tmonthlyPayment: 300,\r\n\t\t\t\t\t\t\t\tnumberOfMonths: 3,\r\n\t\t\t\t\t\t\t\ttotalPayment: 1123.75\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tinitialPayment: 300,\r\n\t\t\t\t\t\t\t\tmonthlyPayment: 400,\r\n\t\t\t\t\t\t\t\tnumberOfMonths: 2,\r\n\t\t\t\t\t\t\t\ttotalPayment: 1100\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tinitialPayment: 1050,\r\n\t\t\t\t\t\t\t\tmonthlyPayment: 0,\r\n\t\t\t\t\t\t\t\tnumberOfMonths: 0,\r\n\t\t\t\t\t\t\t\ttotalPayment: 1050\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treject('Cannot locate customer account');\r\n\t\t\t}\r\n\t\t}, 2000);\r\n\t}\r\n\r\n\tgetPaymentHistory(customerId: string = null): Promise {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/history`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tgetRehabDocumentsList(customerId: string = null) {\r\n\t\tif (!customerId) {\r\n\t\t\tcustomerId = this.globalState.customer.id;\r\n\t\t}\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/docs`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tsaveDocument(accountId: any, document: any) {\r\n\t\tlet url = `/PayrazrApiWeb/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(accountId)}/document`;\r\n\t\tvar data = new FormData();\r\n\t\tdata.append(\"documentData\", document);\r\n\r\n\t\tconsole.log(`Saving document to ${url}`);\r\n\t\tlet documentPromise = $.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: url,\r\n\t\t\tcontentType: false,\r\n\t\t\tprocessData: false,\r\n\t\t\tdata: data\r\n\t\t});\r\n\t\treturn Promise.all([documentPromise]);\r\n\t}\r\n\r\n\tcomputePlannedPayments(\r\n\t\taccountId: any,\r\n\t\ttotalAmount: any,\r\n\t\tnumberOfPayments: any,\r\n\t\tSelectedPaymentDate: any,\r\n\t\tpayToday: any,\r\n\t\tfrequency: any,\r\n\t\tzipCode: any,\r\n\t\tpaymentMethodType: any,\r\n\t\tcardNumber: any,\r\n\t\tcardInfoKey: any = null,\r\n\t\tcomputePlanWithoutFees: boolean = false) {\r\n\t\tcardInfoKey = cardInfoKey || null;\r\n\t\tcardNumber = cardInfoKey || null;\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${encodeURIComponent(accountId)}/computePlanedPayments`;\r\n\t\tconst content =\r\n\t\t{\r\n\t\t\tnumberOfPayments,\r\n\t\t\ttotalPaymentAmount: totalAmount,\r\n\t\t\tSelectedPaymentDate,\r\n\t\t\tpayToday,\r\n\t\t\tfrequency,\r\n\t\t\tzipCode,\r\n\t\t\tpaymentMethodType,\r\n\t\t\tcardNumber,\r\n\t\t\tcardInfoKey,\r\n\t\t\tcomputePlanWithoutFees\r\n\t\t};\r\n\t\treturn this.post(url, content)\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet result = {\r\n\t\t\t\t\tplannedPayments: response,\r\n\t\t\t\t};\r\n\t\t\t\treturn result;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetMessages() {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(this.globalState.customer.id)}/messages`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tmarkMessageAsRead(messages: any) {\r\n\r\n\t\tlet content = messages;\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(this.globalState.customer.id)}/messages/markasread`;\r\n\t\treturn this.post(url, content);\r\n\t\t// let self = this;\r\n\r\n\t\t// // real code will have to call services not yet written to gather messages\r\n\t\t// return this.makeFakeServiceCall((accept, reject) => {\r\n\t\t// for (let ii = self.globalState.business.messages.length - 1; ii >= 0 ; --ii) {\r\n\t\t// if (self.globalState.business.messages[ii].id === messageId) {\r\n\t\t// self.globalState.business.messages.splice(ii, 1);\r\n\t\t// }\r\n\t\t// }\r\n\t\t// for (let ii = self.globalState.customer.messages.length - 1; ii >= 0 ; --ii) {\r\n\t\t// if (self.globalState.customer.messages[ii].id === messageId) {\r\n\t\t// self.globalState.customer.messages.splice(ii, 1);\r\n\t\t// }\r\n\t\t// }\r\n\t\t// accept();\r\n\t\t// }, 1000);\r\n\t}\r\n\r\n\tformatResultCode(code: any, codeDetail: any) {\r\n\t\tif (code === 1) {\r\n\t\t\treturn 'Success';\r\n\t\t} else {\r\n\t\t\treturn `Error: ${code} (detail: ${codeDetail})`;\r\n\t\t}\r\n\t}\r\n\r\n\t//todo: check if we can change customerAccountNumber to customerAccountId\r\n\tsendEmail(fromAddress: any, toAddress: any, subject: any, message: any, customerAccountNumber: any, bucketKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/email/send`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\tlet content = {\r\n\t\t\tfromAddress: fromAddress,\r\n\t\t\ttoAddress: toAddress,\r\n\t\t\tsubject: subject,\r\n\t\t\tmessage: message,\r\n\t\t\tcustomerAccountNumber: customerAccountNumber,\r\n\t\t\tbucketKey: bucketKey\r\n\t\t};\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\tsendEmailWithApplyTemplateRequest(fromAddress: any, toAddress: any, subject: any, applyTemplateRequest: any, customerAccountNumber: any, bucketKey: number | null = null) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/email/sendWithApplyTemplateRequest`;\r\n\t\tif (bucketKey) {\r\n\t\t\turl += `?bucketKey=${bucketKey}`;\r\n\t\t}\r\n\r\n\t\tlet content = {\r\n\t\t\tfromAddress: fromAddress,\r\n\t\t\ttoAddress: toAddress,\r\n\t\t\tsubject: subject,\r\n\t\t\tapplyTemplateRequest: applyTemplateRequest,\r\n\t\t\tcustomerAccountNumber: customerAccountNumber,\r\n\t\t\tbucketKey: bucketKey\r\n\t\t};\r\n\t\treturn this.post(url, content);\r\n\t}\r\n\r\n\tsendCustomerInvoice(customerId: any) {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${encodeURIComponent(customerId)}/invoiceNotification`;\r\n\t\treturn this.post(url);\r\n\t}\r\n\r\n\tsendMfaVerificationCode(mfaDetails: any, customerId: any = null) {\r\n\t\t// Give preference to the customerId parameter.\r\n\t\t// If not set, default to the global cutomer in context.\r\n\t\tcustomerId = customerId || this.globalState.customer.id;\r\n\r\n\t\tcustomerId = encodeURIComponent(customerId);\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${customerId}/sendMfaVerificationCode`;\r\n\r\n\t\treturn this.post(url, mfaDetails);\r\n\t}\r\n\r\n\tverifyMfaVerificationCode(mfaDetails: any, customerId: any = null) {\r\n\t\tcustomerId = customerId || this.globalState.customer.id;\r\n\t\tcustomerId = encodeURIComponent(customerId);\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/customer/${customerId}/verifyMfaVerificationCode`;\r\n\t\treturn this.post(url, mfaDetails);\r\n\t}\r\n\r\n\tsendUnvalidatedEzPayVerificationCode(customerId: string, mfaDetails: any) {\r\n\t\tcustomerId = encodeURIComponent(customerId);\r\n\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/account/${customerId}/sendUnvalidatedEzPayVerificationCode`;\r\n\r\n\t\treturn this.post(url, mfaDetails);\r\n\t}\r\n\r\n\tverifyUnvalidatedEzPayVerificationCode(customerId: string, mfaDetails: any) {\r\n\t\tcustomerId = encodeURIComponent(customerId);\r\n\r\n\t\tlet portalId = this.globalState.business.portalId;\r\n\r\n\t\tlet url = `/portal/${portalId}/account/${customerId}/verifyUnvalidatedEzPayVerificationCode`;\r\n\r\n\t\treturn this.post(url, mfaDetails);\r\n\t}\r\n\r\n\treplaceSpecialCharactersWithUnderscore(str: any) {\r\n\t\tif (str.length === 0)\r\n\t\t\treturn str;\r\n\t\tvar s = str.replace(/[^0-9a-zA-Z]+/g, '_');\r\n\t\treturn s;\r\n\t}\r\n\r\n\tvalidateEmail(email: any) {\r\n\t\tvar reg = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\treturn reg.test(email);\r\n\t}\r\n\r\n\treferenceIdWrapper(referenceId: any, separator: any, merchantThirdPartyIntegrationPlatform: any) {\r\n\t\tif (!referenceId) return referenceId;\r\n\t\tif (merchantThirdPartyIntegrationPlatform === 2) {\r\n\t\t\treturn referenceId.split(separator)[0];\r\n\t\t}\r\n\t\treturn referenceId;\r\n\t}\r\n\r\n\tgetISO6391Languages() {\r\n\t\tlet url = `/locales/iso6391Lanaguages`;\r\n\t\treturn this.get(url);\r\n\t}\r\n\r\n\tget(url: any) {\r\n\t\tlet init = {\r\n\t\t\tmethod: 'get',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'PayrazrSessionId': this.globalState.business ? this.globalState.business.sessionId : null\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn this.http.fetch(`${this.base}${url}`, init)\r\n\t\t\t.then(r => r.json());\r\n\t}\r\n\r\n\tput(url: any, content: any) {\r\n\t\tlet request = JSON.stringify(content);\r\n\r\n\t\tlet init = {\r\n\t\t\tmethod: 'put',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'PayrazrSessionId': this.globalState.business.sessionId\r\n\t\t\t}),\r\n\t\t\tbody: request\r\n\t\t};\r\n\r\n\t\treturn this.http.fetch(`${this.base}${url}`, init)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.status == 204) {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\treturn response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tpost(url: any, content?: any) {\r\n\t\tlet request = JSON.stringify(content);\r\n\r\n\t\tlet init = {\r\n\t\t\tmethod: 'post',\r\n\t\t\theaders: new Headers({\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'PayrazrSessionId': this.globalState.business.sessionId\r\n\t\t\t}),\r\n\t\t\tbody: request\r\n\t\t};\r\n\r\n\t\treturn this.http.fetch(`${this.base}${url}`, init)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.status == 204) {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then(response => {\r\n\t\t\t\treturn response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetFile(fileUrl: string): Promise {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tlet xhttp = new XMLHttpRequest();\r\n\t\t\txhttp.open('GET', `${fileUrl}`, true);\r\n\t\t\txhttp.responseType = 'blob';\r\n\t\t\txhttp.setRequestHeader('PayrazrSessionId', this.globalState.business.sessionId);\r\n\t\t\txhttp.setRequestHeader('Authorization', `Bearer ${this.globalState.token}`);\r\n\t\t\txhttp.send();\r\n\t\t\txhttp.onload = () => {\r\n\t\t\t\tif (xhttp.status === 200) {\r\n\t\t\t\t\tresolve(xhttp.response);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(xhttp.response);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\t// This doesn't use the baseurl by default. Pass in the full url\r\n\tdownloadFile(fileUrl: any, saveAsFilename: any) {\r\n\t\tvar xhttp = new XMLHttpRequest();\r\n\t\txhttp.onreadystatechange = () => {\r\n\t\t\tif (xhttp.readyState === 4 && xhttp.status === 200) {\r\n\t\t\t\tconst filename = (saveAsFilename ? saveAsFilename : '');\r\n\t\t\t\tthis.createAndOpenFile(xhttp.response, filename);\r\n\t\t\t} else if(xhttp.readyState === 4 && xhttp.status === 404) {\r\n\t\t\t\t// TODO: Use something other than alert here, like toast\r\n\t\t\t\talert('An error occured when attempting to download file.');\r\n\t\t\t}\r\n\t\t};\r\n\t\txhttp.open(\"GET\", `${fileUrl}`, true);\r\n\t\txhttp.responseType = \"blob\";\r\n\t\txhttp.setRequestHeader(\"PayrazrSessionId\", this.globalState.business.sessionId);\r\n\t\txhttp.setRequestHeader('Authorization', `Bearer ${this.globalState.token}`);\r\n\t\txhttp.send();\r\n\t}\r\n\r\n\tcreateAndOpenFile(blobString: string, fileName: string) {\r\n\t\tlet a: HTMLAnchorElement = document.createElement(\"a\");\r\n\t\tdocument.body.appendChild(a)\r\n\r\n\t\tif (window.navigator.msSaveOrOpenBlob) {\r\n\t\t\t// ie11 \r\n\t\t\tconst blob: Blob = new Blob([blobString]);\r\n\t\t\ta.click = () => {\r\n\t\t\t\twindow.navigator.msSaveOrOpenBlob(blob, fileName);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Real browsers\r\n\t\t\tconst downloadUrl = URL.createObjectURL(blobString);\r\n\t\t\ta.href = downloadUrl;\r\n\t\t\ta.download = fileName;\r\n\t\t}\r\n\r\n\t\ta.click();\r\n\t}\r\n\r\n\tmakeFakeServiceCall(action: any, delay?: any) {\r\n\t\treturn new Promise((accept, reject) => {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\taction(accept, reject);\r\n\t\t\t}, delay);\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\n/*\r\nconstructor(http, httpUtility, appConfig) {\r\n this.appConfig = appConfig;\r\n this.httpUtility = httpUtility;\r\n\r\n http.configure(config => {\r\n config\r\n .withDefaults({\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'X-Requested-With': 'Fetch',\r\n 'Authorization': `Bearer ${Cookie.get('blahblahblah')}`\r\n }\r\n })\r\n .withInterceptor({\r\n request: (request) => { return this.httpUtility.requestInterceptor(request); },\r\n requestError: (requestError) => { return this.httpUtility.requestErrorInterceptor(requestError); },\r\n response: (response) => { return this.httpUtility.responseInterceptor(response); },\r\n responseError: (responseError) => { return this.httpUtility.responseErrorInterceptor(responseError); }\r\n })\r\n .withBaseUrl(this.appConfig.apiUri)\r\n });\r\n\r\n this.http = http;\r\n }\r\n*/\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport 'whatwg-fetch';\r\nimport config from '../config/config';\r\nimport { State } from './global-state';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ApiResponse } from \"../models/api-response\";\r\n\r\n@autoinject\r\nexport class RestServiceClient {\r\n base: string;\r\n queryParameters: any;\r\n\r\n constructor(\r\n private globalState: State,\r\n private http: HttpClient,\r\n private router: Router,\r\n private i18n: I18N\r\n ) {\r\n this.base = config.serviceUrl;\r\n this.queryParameters = {};\r\n\t\tlocation.search.substr(1).split(\"&\").forEach(item => { \r\n const index = decodeURI(item.split(\"=\")[0].toLowerCase());\r\n const value = decodeURI(item.split(\"=\")[1]).replace(\"undefined\", \"\"); \r\n this.queryParameters[index] = value; \r\n });\r\n }\r\n\r\n get(url: string): Promise {\r\n let init = {\r\n method: 'get',\r\n headers: new Headers({\r\n 'Content-Type': 'application/json',\r\n 'PayrazrSessionId': this.globalState.business ? this.globalState.business.sessionId : null\r\n })\r\n }\r\n\r\n return new Promise((resolve) => {\r\n return this.http\r\n .fetch(`${this.base}${url}`, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Get Failed.']\r\n }));\r\n });\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Get Failed.']\r\n }));\r\n });\r\n });\r\n }\r\n\r\n post(url: string, content: any): Promise {\r\n let request = JSON.stringify(content);\r\n\r\n let init = {\r\n method: 'post',\r\n headers: new Headers({\r\n 'Content-Type': 'application/json',\r\n 'PayrazrSessionId': this.globalState.business ? this.globalState.business.sessionId : null\r\n }),\r\n body: request\r\n };\r\n\r\n return new Promise((resolve) => {\r\n return this.http\r\n .fetch(`${this.base}${url}`, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Post Failed.']\r\n }));\r\n });\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Post Failed.']\r\n }));\r\n });\r\n });\r\n }\r\n\r\n delete(url: string, content: any): Promise {\r\n let request = JSON.stringify(content);\r\n\r\n let init = {\r\n method: 'delete',\r\n headers: new Headers({\r\n 'Content-Type': 'application/json',\r\n 'PayrazrSessionId': this.globalState.business ? this.globalState.business.sessionId : null\r\n }),\r\n body: request\r\n };\r\n\r\n return new Promise((resolve) => {\r\n return this.http\r\n .fetch(`${this.base}${url}`, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Delete Failed.']\r\n }));\r\n });\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Delete Failed.']\r\n }));\r\n });\r\n });\r\n }\r\n\r\n put(url: string, content: any): Promise {\r\n let request = JSON.stringify(content);\r\n\r\n let init = {\r\n method: 'put',\r\n headers: new Headers({\r\n 'Content-Type': 'application/json',\r\n 'PayrazrSessionId': this.globalState.business ? this.globalState.business.sessionId : null\r\n }),\r\n body: request\r\n };\r\n\r\n return new Promise((resolve) => {\r\n this.http\r\n .fetch(`${this.base}${url}`, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Put Failed.']\r\n }));\r\n });\r\n })\r\n .catch(error => {\r\n resolve(new ApiResponse({\r\n isSuccessful: false,\r\n errors: ['API Put Failed.']\r\n }));\r\n });\r\n });\r\n }\r\n\r\n // explicitly map the http json response into an api response in order to overcome \r\n // serialization issues that come with implicit serialization (e.g. methods undefined)\r\n createApiResponseFromHttpResponse(responseJson: ApiResponse): ApiResponse {\r\n return new ApiResponse({\r\n isSuccessful: responseJson.isSuccessful,\r\n resultCode: responseJson.resultCode,\r\n value: responseJson.value,\r\n logMessages: responseJson.logMessages,\r\n errors: responseJson.errors\r\n });\r\n }\r\n}\r\n\r\n","import { computedFrom, autoinject } from 'aurelia-framework';\r\nimport { Customer, Payment, Account } from '../models/customer';\r\nimport { Features } from '../models/features';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { BasePage } from '../pages/base-page';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport * as JWT from 'jwt-decode';\r\nimport { HPFServiceClient } from './hpfApi';\r\nimport { State } from './global-state';\r\n\r\n@autoinject\r\nexport class SessionManager {\r\n\tsessionTimer: any;\r\n\tlogoutTimer: any;\r\n\texpireInMinutes: number;\r\n\tmodalTimeoutMs: number = 30 * 1000;\r\n\tintervalID: number;\r\n\treadonly KEYCODE_SPACE = 32;\r\n\trouter: any;\r\n\treadonly KEYCODE_TAB = 9;\r\n\treadonly KEYCODE_ESC = 27;\r\n\r\n\tconstructor(private hpfService: HPFServiceClient, private state: State) {\r\n\t\tthis.sessionTimer = null;\r\n\t}\r\n\r\n\tendSession() {\r\n\t\tthis.state.logout();\r\n\t\tthis.state.business = null;\r\n\t\tthis.state.token = '';\r\n\t\tthis.stopSessionTimer();\r\n\t}\r\n\r\n\tresetSessionTimer(router: any, expireInMinutes?: number, updateToken?: boolean) {\r\n\t\tthis.router = router;\r\n\t\tconsole.info('session restarted at:', new Date());\r\n\t\tlet timeoutId = this.sessionTimer;\r\n\t\twhile (timeoutId--) {\r\n\t\t\twindow.clearTimeout(this.sessionTimer);\r\n\t\t}\r\n\r\n\t\t// Update token if the business exists and has one already\r\n\t\t// The skip prevents infinite loops on token update service\r\n\t\tif (this.state.token && updateToken) {\r\n\t\t\tthis.hpfService.updateJwtToken();\r\n\t\t}\r\n\r\n\t\tthis.expireInMinutes = expireInMinutes || 19.5;\r\n\r\n\t\tlet expireInMs = 1000 * 60 * this.expireInMinutes;\r\n\t\tthis.sessionTimer = window.setTimeout(() => {\r\n\t\t\tthis.displayWarningModal(this.modalTimeoutMs);\r\n\t\t}, expireInMs);\r\n\t}\r\n\r\n\tdisplayWarningModal(timeoutMs: number): void {\r\n\t\tconst modal = document.querySelector('timeout-modal') as HTMLElement;\r\n\t\tconst modalTimerText = modal.querySelector('#modalTimerText') as HTMLLabelElement;\r\n\t\tconst modalExtendButton = modal.querySelector('#modalExtendButton') as HTMLButtonElement;\r\n\t\tconst modalEndButton = modal.querySelector('#modalEndButton') as HTMLButtonElement;\r\n\t\tconst secs = (timeoutMs / 1000).toString(); // 30.000\r\n\r\n\t\tmodalExtendButton.addEventListener('click', (e: MouseEvent) => {\r\n\t\t\tthis.extendSession();\r\n\t\t\twindow.removeEventListener('click', this.extendSession);\r\n\t\t});\r\n\r\n\t\tmodalEndButton.addEventListener('click', (e: MouseEvent) => {\r\n\t\t\tthis.cleanupTimeout();\r\n\t\t\twindow.removeEventListener('click', this.cleanupTimeout);\r\n\t\t});\r\n\r\n\t\t// set actual logout timer\r\n\t\tthis.logoutTimer = window.setTimeout(() => {\r\n\t\t\tthis.cleanupTimeout();\r\n\t\t}, timeoutMs);\r\n\r\n\t\tmodalTimerText.innerHTML = secs.split('.')[0];\r\n\r\n\t\t// set focus to modal\r\n\t\t// show modal w/ remaining time\r\n\t\tmodal.style.display = 'block';\r\n\r\n\t\tmodalExtendButton.focus();\r\n\r\n\t\tdocument.addEventListener('keydown', this.checkKeepFocus.bind(this));\r\n\r\n\t\tlet runIter = function() {\r\n\t\t\ttimeoutMs = timeoutMs - 1000;\r\n\t\t\tconst secs = (timeoutMs / 1000).toString(); // 30.000\r\n\t\t\tmodalTimerText.innerHTML = secs.split('.')[0];\r\n\t\t};\r\n\r\n\t\t// update text every second\r\n\t\tthis.intervalID = setInterval(runIter, 1000);\r\n\t}\r\n\r\n\thideModal() {\r\n\t\tconst timeoutModal = document.querySelector('timeout-modal') as HTMLElement;\r\n\t\twindow.removeEventListener('keydown', this.checkKeepFocus);\r\n\t\ttimeoutModal.style.display = 'none';\r\n\t}\r\n\r\n\textendSession(): void {\r\n\t\tthis.hideModal();\r\n\t\tlet tempIntervalId = this.intervalID;\r\n\t\twindow.clearInterval(this.intervalID);\r\n\t\twhile (tempIntervalId--) {\r\n\t\t\twindow.clearInterval(tempIntervalId);\r\n\t\t}\r\n\t\tthis.resetSessionTimer(this.router, this.expireInMinutes, this.shouldUpdateToken());\r\n\t}\r\n\r\n\tcleanupTimeout(): void {\r\n\t\twindow.clearTimeout(this.logoutTimer);\r\n\t\t// remove window event listener\r\n\t\t// close modal\r\n\t\tthis.hideModal();\r\n\t\twindow.clearInterval(this.intervalID);\r\n\t\tconsole.info('session expired at:', new Date());\r\n\t\tthis.router.navigateToRoute('401');\r\n\t}\r\n\r\n\tstopSessionTimer() {\r\n\t\tif (this.sessionTimer) {\r\n\t\t\twindow.clearTimeout(this.sessionTimer);\r\n\t\t\tthis.sessionTimer = null;\r\n\t\t}\r\n\t}\r\n\r\n\tshouldUpdateToken(): boolean {\r\n\t\t// console.log(new Error().stack);\r\n\t\tlet update = false;\r\n\t\tif (this.state.business && this.state.token) {\r\n\t\t\tlet jwt = JWT(this.state.token);\r\n\t\t\tlet timeToExpire = this.getJwtTimeToExpire(jwt);\r\n\r\n\t\t\t// if session expires in a minute, renew\r\n\t\t\tupdate = ((60 * 1000) > timeToExpire);\r\n\t\t}\r\n\t\treturn update;\r\n\t}\r\n\r\n\tcheckKeepFocus(e: KeyboardEvent) {\r\n\t\tconst isTabPressed = (e.key === 'Tab' || e.keyCode === this.KEYCODE_TAB);\r\n\r\n\t\tif (!isTabPressed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.shiftKey) /* shift + tab */ {\r\n\t\t\tif (document.activeElement === this.firstModalFocusable) {\r\n\t\t\t\tthis.lastModalFocusable.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t} else /* tab */ {\r\n\t\t\tif (document.activeElement === this.lastModalFocusable) {\r\n\t\t\t\tthis.firstModalFocusable.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// check if user is has active session\r\n\tisAuthenticated(): boolean {\r\n\t\tif (!this.state || !this.state.token) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet jwt = JWT(this.state.token);\r\n\t\tlet timeToExpire = this.getJwtTimeToExpire(jwt);\r\n\r\n\t\t// if there is no ConsumerUserKey the anonymous token is being used and there is not a logged in user session\r\n\t\treturn timeToExpire > 0 && jwt.ConsumerUserKey != null;\r\n\t}\r\n\r\n\tgetJwtTimeToExpire(jwt): number {\r\n\t\tlet expirationDate = new Date(jwt.exp * 1000); // exp time is not in milliseconds\r\n\t\treturn expirationDate.valueOf() - (new Date()).valueOf();\r\n\t}\r\n\r\n\tget firstModalFocusable() {\r\n\t\treturn this.modalFocusables[0];\r\n\t}\r\n\r\n\tget lastModalFocusable() {\r\n\t\treturn this.modalFocusables[this.modalFocusables.length - 1];\r\n\t}\r\n\r\n\tget modalFocusables(): HTMLElement[] {\r\n\t\tconst modal = document.querySelector('timeout-modal') as HTMLElement;\r\n\t\tconst modalExtendButton = modal.querySelector('#modalExtendButton') as HTMLButtonElement;\r\n\t\tconst modalEndButton = modal.querySelector('#modalEndButton') as HTMLButtonElement;\r\n\r\n\t\treturn [modalExtendButton, modalEndButton];\r\n\t}\r\n}\r\n","import { Router } from 'aurelia-router';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { mock, instance, verify, when, anyNumber, anything } from 'ts-mockito';\r\nimport { State } from './global-state';\r\nimport { ApiResponse } from '../models/api-response';\r\nimport { SessionManager } from './session-manager';\r\nimport { HPFServiceClient } from '../../ClientApp/services/hpfApi';\r\nimport * as JWT from 'jwt-decode';\r\n\r\ndescribe('NewPortalWeb', () => {\r\n\tdescribe('services', () => {\r\n\t\tdescribe('SessionManager', () => {\r\n\t\t\tlet svc: SessionManager;\r\n\t\t\tconst mockState: State = mock(State);\r\n\t\t\tconst mockHpfApi: HPFServiceClient = mock(HPFServiceClient);\r\n\t\t\tconst mockRouter: Router = mock(Router);\r\n\t\t\tconst anonymousToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJCdXNpbmVzc0tleSI6IjEwMTYiLCJuYmYiOjE2NDQ0NDA5MjQsImV4cCI6MTY0NDQ0MjEyNCwiaWF0IjoxNjQ0NDQwOTI0fQ.Qsk-GtL7lbQ_frULRYaumpVscx0bgOiT8u14BctqWS4';\r\n\t\t\tconst token: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJCdXNpbmVzc0tleSI6IjEwMTYiLCJVc2VyS2V5IjoiNyIsIkNvbnN1bWVyVXNlcktleSI6IjEwMzUiLCJuYmYiOjE2NDQ0NDEwMDIsImV4cCI6MTY0NDQ0MjIwMiwiaWF0IjoxNjQ0NDQxMDAyfQ.Ab8uMgKcTXeT2-63hEOFip5DPBw9ECC5jXyLxygw5zw';\r\n\r\n\t\t\tbeforeEach(() => {\r\n\t\t\t\tsvc = new SessionManager(\r\n\t\t\t\t\tinstance(mockHpfApi),\r\n\t\t\t\t\tinstance(mockState)\r\n\t\t\t\t);\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('ShouldUpdateToken', () => {\r\n\t\t\t\tit('should not update if business or token are indefined', () => {\r\n\t\t\t\t\twhen(mockState.business).thenReturn(null);\r\n\t\t\t\t\twhen(mockState.token).thenReturn(null);\r\n\t\t\t\t\texpect(svc.shouldUpdateToken()).toBeFalsy();\r\n\r\n\t\t\t\t\twhen(mockState.business).thenReturn({});\r\n\t\t\t\t\twhen(mockState.token).thenReturn(null);\r\n\t\t\t\t\texpect(svc.shouldUpdateToken()).toBeFalsy();\r\n\r\n\t\t\t\t\twhen(mockState.business).thenReturn(null);\r\n\t\t\t\t\twhen(mockState.token).thenReturn('arstarts');\r\n\t\t\t\t\texpect(svc.shouldUpdateToken()).toBeFalsy();\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\r\n\t\t\tdescribe('ShouldAuthenticateSession', () => {\r\n\t\t\t\tit('should be authenticated when jwt contains consumerUserKeykey and is not expired', () => {\r\n\t\t\t\t\tspyOn(svc, 'getJwtTimeToExpire').and.returnValue(1);\r\n\t\t\t\t\twhen(mockState.token).thenReturn(token);\r\n\t\t\t\t\texpect(svc.isAuthenticated()).toBeTruthy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should not be authenticated when jwt does not contain consumerUserKey', () => {\r\n\t\t\t\t\tspyOn(svc, 'getJwtTimeToExpire').and.returnValue(1);\r\n\t\t\t\t\twhen(mockState.token).thenReturn(anonymousToken);\r\n\t\t\t\t\texpect(svc.isAuthenticated()).toBeFalsy();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tit('should not be authenticated when jwt is expired', () => {\r\n\t\t\t\t\tspyOn(svc, 'getJwtTimeToExpire').and.returnValue(0);\r\n\t\t\t\t\twhen(mockState.token).thenReturn(token);\r\n\t\t\t\t\texpect(svc.isAuthenticated()).toBeFalsy();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n});\r\n","import { autoinject } from \"aurelia-framework\";\r\nimport { ApiResponse } from \"../models/api-response\";\r\nimport { ServiceResponse } from \"../models/service-response\";\r\nimport { BaseService } from \"./base-service\";\r\nimport { RestServiceClient } from \"./rest-service-client\";\r\nimport { State } from './global-state';\r\nimport { ICustomerAccountToPay } from \"./hpf-transaction-service\";\r\n\r\n@autoinject\r\nexport class TemplateService extends BaseService {\r\n\tglobalState: State;\r\n\r\n\tconstructor(private http: RestServiceClient, state: State) {\r\n\t\tsuper();\r\n\t\tthis.globalState = state;\r\n\t}\r\n\r\n\tapplyTemplate(request: ApplyTemplateBaseRequest): Promise {\r\n\t\tlet url = `/portal/${this.globalState.business.portalId}/application/template`;\r\n\t\treturn this.http.post(url, request)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\treturn this.error(`Unable to get template: ${apiResponse.getErrorMessage()}`);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.success('', apiResponse.value);\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetPortalTemplateType(paymentInformation: any, isSingleFuture: boolean): PortalTemplateTypes {\r\n\t\tif (!paymentInformation) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst isCard: boolean = !!paymentInformation.card || paymentInformation.digitalWalletSettings?.isCard();\r\n\r\n\t\tif (isSingleFuture) {\r\n\t\t\treturn isCard ? PortalTemplateTypes.CreditCardInstallmentPlanReceipt : PortalTemplateTypes.CheckInstallmentPlanReceipt;\r\n\t\t}\r\n\r\n\t\treturn isCard ? PortalTemplateTypes.CreditCardSinglePaymentReceipt : PortalTemplateTypes.CheckSinglePaymentReceipt;\r\n\t}\r\n}\r\n\r\n@autoinject\r\nexport abstract class ApplyTemplateBaseRequest {\r\n\tprotected templateType: PortalTemplateTypes;\r\n\tisForNotification: boolean;\r\n\tsavedPaymentMethodToWallet: boolean;\r\n\tisEzpay: boolean;\r\n}\r\n\r\nexport class ApplyCardSinglePaymentTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.CreditCardSinglePaymentReceipt;\r\n\tpnref: number;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n}\r\n\r\nexport class ApplyCheckSinglePaymentTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.CheckSinglePaymentReceipt;\r\n\tpnref: number;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n}\r\n\r\nexport class ApplyCardInstallmentPlanReceiptTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.CreditCardInstallmentPlanReceipt;\r\n\tplanId: string;\r\n\tmerchantKey: number;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n}\r\n\r\nexport class ApplyCheckInstallmentPlanReceiptTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.CheckInstallmentPlanReceipt;\r\n\tplanId: string;\r\n\tmerchantKey: number;\r\n\taccountPayments: ICustomerAccountToPay[];\r\n}\r\n\r\nexport class ApplyCardRecurringPlanReceiptTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.CreditCardRecurringPaymentPlanReceipt;\r\n\tplanId: string;\r\n\tmerchantKey: number;\r\n}\r\n\r\nexport class ApplyCheckRecurringPlanReceiptTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.CheckRecurringPaymentPlanReceipt;\r\n\tautopayId: string;\r\n\tplanStartDate: Date;\r\n\tplanEndDate: Date;\r\n\tnumberOfPayments: number;\r\n\tmechantDescriptor: string;\r\n\tplanFrequency: string;\r\n\tpaymentAmountLimit: number;\r\n\tserviceFee: number;\r\n\taccountName: string;\r\n\tcustomerAccountNumber: number;\r\n\tpaymentMethod: string;\r\n\tzipCode: string;\r\n}\r\n\r\nexport class ApplyAutopayPlanReceiptTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.AutopayPlanReceipt;\r\n\tautopayKey: string;\r\n\tmerchantKey: number;\r\n}\r\n\r\nexport class ApplyTransactionFailedTemplateRequest extends ApplyTemplateBaseRequest {\r\n\tprotected templateType = PortalTemplateTypes.TransactionFailed;\r\n\tresultCode: string;\r\n\tresultMessage: string;\r\n}\r\n\r\nexport enum PortalTemplateTypes {\r\n\tCheckSinglePaymentReceipt = 101,\r\n\tCheckInstallmentPlanReceipt = 102,\r\n\tCreditCardSinglePaymentReceipt = 103,\r\n\tCreditCardInstallmentPlanReceipt = 104,\r\n\tCreditCardRecurringPaymentPlanReceipt = 119,\r\n\tCheckRecurringPaymentPlanReceipt = 120,\r\n\tAutopayPlanReceipt = 127,\r\n\tTransactionFailed = 999\r\n}\r\n\r\nexport enum PortalTemplateTypesNames {\r\n\tAutopayPlanReceipt = 'Autopay Plan Receipt'\r\n}\r\n","export class ValidationHelpers {\r\n\tstatic isNumeric(value: any) {\r\n\t\treturn !isNaN(parseFloat(value)) && isFinite(value);\r\n\t}\r\n\r\n\tstatic isPhoneNumber(value: any) {\r\n\t\tconst phoneNumberRegex = /^[0-9]{10}$/;\r\n\t\treturn phoneNumberRegex.test(value);\r\n\t}\r\n\r\n\tstatic isAchBankAccountNumber(value: any) {\r\n\t\tconst achNumberRegex = /^[\\d]{5,17}$/;\r\n\t\treturn achNumberRegex.test(value);\r\n\t}\r\n\r\n\t// returns the numbers of the phone number by removing all formatting.\r\n\tstatic sanitizePhoneNumber(value: any) {\r\n\t\tif (!value) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn value.replace(/[^0-9]/g, '');\r\n\t}\r\n\r\n\tstatic isZipCode(value) {\r\n\t\treturn value.match(/^\\d{5}(?:[-\\s]?\\d{4})?$/);\r\n\t}\r\n\r\n\tstatic isOnlyDigits(value) {\r\n\t\tfor (let ii = 0; ii < value.length; ++ii) {\r\n\t\t\tif (value.charAt(ii) < '0' || value.charAt(ii) > '9') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tstatic isEmailAddress(value) {\r\n\t\treturn value.match(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$/);\r\n\t}\r\n\r\n\tstatic isTransitNumber(value) {\r\n\t\tif (value.length !== 9) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (!this.isOnlyDigits(value)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tlet sum =\r\n\t\t\tparseInt(value[0]) * 3 +\r\n\t\t\tparseInt(value[1]) * 7 +\r\n\t\t\tparseInt(value[2]) * 1 +\r\n\t\t\tparseInt(value[3]) * 3 +\r\n\t\t\tparseInt(value[4]) * 7 +\r\n\t\t\tparseInt(value[5]) * 1 +\r\n\t\t\tparseInt(value[6]) * 3 +\r\n\t\t\tparseInt(value[7]) * 7 +\r\n\t\t\tparseInt(value[8]) * 1;\r\n\t\treturn (sum % 10) === 0;\r\n\t}\r\n\r\n\tstatic isValidCreditCardNumber(value: any) {\r\n\t\t// perform luhm check\r\n\t\tlet inputNum = value.toString();\r\n\t\tlet sum = 0;\r\n\t\tlet doubleUp = false;\r\n\r\n\t\t/* from the right to left, double every other digit starting with the second to last digit.*/\r\n\t\tfor (let i = inputNum.length - 1; i >= 0; i--) {\r\n\t\t\tlet curDigit = parseInt(inputNum.charAt(i), 10);\r\n\r\n\t\t\t/* double every other digit starting with the second to last digit */\r\n\t\t\tif (doubleUp) {\r\n\t\t\t\t/* doubled number is greater than 9 than subtracted 9 */\r\n\t\t\t\tif ((curDigit * 2) > 9) {\r\n\t\t\t\t\tsum += (curDigit * 2) - 9;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tsum += curDigit * 2;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tsum += curDigit;\r\n\t\t\t}\r\n\t\t\tdoubleUp = !doubleUp;\r\n\t\t}\r\n\r\n\t\t/* sum and divide it by 10. If the remainder equals zero, the original credit card number is valid. */\r\n\t\treturn (sum % 10) == 0 ? true : false;\r\n\t}\r\n\r\n\t// Validates credit card expiration date given a 4 digit value expressed as MMYY.\r\n\tstatic isValidExpirationDate(value: any) {\r\n\t\tif (!value) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet expirationMonth = value.substring(0, 2);\r\n\t\tlet expirationYear = value.substring(2) % 100;\r\n\r\n\t\tlet today = new Date();\r\n\t\tlet currentYear = today.getFullYear() % 100;\r\n\t\tlet currentMonth = (today.getMonth() + 1).toString().length < 2\r\n\t\t\t? ('0' + (today.getMonth() + 1).toString())\r\n\t\t\t: (today.getMonth() + 1).toString();\r\n\r\n\t\tif (expirationYear < currentYear) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ((expirationYear === currentYear) && (expirationMonth < currentMonth)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tstatic isValidUsername(value: any) {\r\n\t\tconst usernameRegex = /^[a-zA-Z0-9._@]+$/;\r\n\t\treturn usernameRegex.test(value);\r\n\t}\r\n\r\n\t// Validates billing name consists of a two part (first and last) name.\r\n\tstatic isValidBillingName(value: any) {\r\n\t\ttry {\r\n\t\t\tif (!value || value.length === 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tconst billingNameRegex = /[A-Za-z] +[A-Za-z]/;\r\n\t\t\treturn billingNameRegex.test(value);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error('Error validating billing name.');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic isStrongPassword(password: any) {\r\n\t\tlet valid = true;\r\n\r\n\t\tif (password.length < 12) { valid = false; }\r\n\r\n\t\tlet containsAmpersand = new RegExp('[&]');\r\n\r\n\t\tif (containsAmpersand.test(password)) { valid = false; }\r\n\r\n\t\tlet atLeastOneLowerCase = new RegExp('[a-z]+');\r\n\t\tlet atLeastOneUpperCase = new RegExp('[A-Z]+');\r\n\t\tlet atLeastOneNumber = new RegExp('[0-9]+');\r\n\t\tlet atLeastOneSpecialCharacter = new RegExp('[@$!%*?]+');\r\n\r\n\t\tlet score = 0;\r\n\t\tif (atLeastOneLowerCase.test(password)) { score++; }\r\n\t\tif (atLeastOneUpperCase.test(password)) { score++; }\r\n\t\tif (atLeastOneNumber.test(password)) { score++; }\r\n\t\tif (atLeastOneSpecialCharacter.test(password)) { score++; }\r\n\t\tif (score < 3) { valid = false; }\r\n\r\n\t\treturn valid;\r\n\t}\r\n}\r\n","// import {ValidationEngine} from 'aurelia-validatejs';\r\n\r\n// export class ValidationObserver {\r\n// constructor(model) {\r\n// \t\t\t\tthis.errors = [];\r\n// \t\t this.reporter = ValidationEngine.getValidationReporter(model);\r\n// \t\t this.subscriber = this.reporter.subscribe(result => {\r\n// \t\t\t\t\t\tthis.renderErrors(result);\r\n// \t\t\t\t});\r\n// }\r\n\r\n// \t\thasErrors() {\r\n// \t\t\t\treturn !!this.errors.length;\r\n// \t\t}\r\n\r\n// \t\trenderErrors(result) {\r\n// \t\t\t\tthis.errors.splice(0, this.errors.length);\r\n// \t\t\t\tresult.forEach(error => {\r\n// \t\t\t\t\t\tthis.errors.push(error)\r\n// \t\t\t\t});\r\n// \t\t}\r\n\r\n// \t\tdispose() {\r\n// \t\t\tthis.subscriber.dispose();\r\n// \t\t}\r\n// }\r\n","import { bindable, bindingMode} from 'aurelia-framework';\r\n\r\nexport class CheckBox {\r\n\t@bindable({ defaultBindingMode: bindingMode.oneTime }) label: string = '';\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) isChecked: boolean = false;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) isEnabled: boolean = true;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) click: any = function () { return false; };\r\n\t@bindable({ defaultBindingMode: bindingMode.oneTime }) isFormControl: string = 'true';\r\n\r\n\tconstructor() { }\r\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/*BootStrap Animated Checkbox style*/\\r\\n.checkbox input[type=\\\"checkbox\\\"] {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.checkbox {\\r\\n\\theight: 18px;\\r\\n}\\r\\n\\r\\n.text-right label > span.cr {\\r\\n\\tmargin-right: 0px !important;\\r\\n}\\r\\n\\r\\n@media (max-width: 767.98px) {\\r\\n\\t.checkbox .cr, .radio .cr {\\r\\n\\t\\tposition: relative;\\r\\n\\t\\tdisplay: inline-block;\\r\\n\\t\\tborder: 1px solid #a9a9a9;\\r\\n\\t\\tborder-radius: .25em;\\r\\n\\t\\twidth: 1.3em;\\r\\n\\t\\theight: 1.3em;\\r\\n\\t\\tfloat: left;\\r\\n\\t\\tmargin-right: .5em;\\r\\n\\t\\tmargin-bottom: -6px !important;\\r\\n\\t\\tcursor: pointer;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n\\t.checkbox .cr, .radio .cr {\\r\\n\\t\\tposition: relative;\\r\\n\\t\\tdisplay: inline-block;\\r\\n\\t\\tborder: 1px solid #a9a9a9;\\r\\n\\t\\tborder-radius: .25em;\\r\\n\\t\\twidth: 1.3em;\\r\\n\\t\\theight: 1.3em;\\r\\n\\t\\tfloat: left;\\r\\n\\t\\tmargin-right: .5em;\\r\\n\\t\\tmargin-top: -14px !important;\\r\\n\\t\\tcursor: pointer;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.checkbox label input[type=\\\"checkbox\\\"]:checked + .cr > .cr-icon, .radio label input[type=\\\"radio\\\"]:checked + .cr > .cr-icon {\\r\\n\\ttransform: scale(1) rotateZ(0deg);\\r\\n\\topacity: 1;\\r\\n\\tbackground-color: red;\\r\\n}\\r\\n\\r\\n.checkbox label input[type=\\\"checkbox\\\"] + .cr > .cr-icon, .radio label input[type=\\\"radio\\\"] + .cr > .cr-icon {\\r\\n\\ttransform: scale(3) rotateZ(-20deg);\\r\\n\\topacity: 0;\\r\\n\\ttransition: all .3s ease-in;\\r\\n}\\r\\n\\r\\n.checkbox .cr .cr-icon, .radio .cr .cr-icon {\\r\\n\\tposition: absolute;\\r\\n\\tfont-size: .8em;\\r\\n\\tline-height: 0;\\r\\n\\ttop: 50%;\\r\\n\\tleft: 20%;\\r\\n}\\r\\n\\r\\n.checkbox-label {\\r\\n\\tfont-size: 1em;\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { bindable, bindingMode, computedFrom } from 'aurelia-framework';\r\n\r\nexport class DatePicker {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) disabled: boolean = false;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) selectedDate: string;;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) label?: string = 'Date';\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) controlId: string;\r\n\r\n\tconstructor() {\r\n\r\n\t}\r\n\r\n\tchanged() {\r\n\t\tthis.selectedDate = (document.getElementById(this.controlId + 'dp')).value;\r\n\t}\r\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"td.day {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\nth.prev {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\nth.next {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\nth.datepicker-switch {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\ntd span.month {\\r\\n\\tcursor: pointer;\\r\\n\\tpadding: 0 4px;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\";","export class OnlyShowSelectedInTableValueConverter {\r\n\ttoView(value: any[], onlyShowSelected: boolean) {\r\n\t\tif (!onlyShowSelected) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\treturn value.filter((item) => item.isSelected);\r\n\t}}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HPFServiceClient } from '../../../services/hpfApi';\r\nimport { JsonSerializer } from '../../helpers/json-serializer';\r\nimport { AccountPaymentItem } from '../../models/account-payment-item';\r\nimport { ApiResponse } from '../../models/api-response';\r\nimport { PaymentItemTableConfiguration } from '../../models/payment-item-table-configuration';\r\nimport { ServiceResponse } from '../../models/service-response';\r\nimport { BaseService } from '../../services/base-service';\r\nimport { Logger } from '../../services/logger';\r\nimport { PaymentItemTableSettings } from './persistence/payment-item-table-settings';\r\nimport { PaymentItemDiscountBalanceRange } from '../../models/payment-item-discount-balance-range';\r\nimport { ObjectHelper } from '../../helpers/object-helper';\r\n\r\n// there's currently a co-mingling of HPFServiceClient, HTTPInjector, and Portal's global state, with\r\n// regard to handling the JWT. Ideally it would be decoupled or refactored in a such a way that it can\r\n// be used independently of portal. For time's sake, just tie into the existing infrastructure for now.\r\n@autoinject\r\nexport class PaymentItemService extends BaseService {\r\n\tconstructor(\r\n\t\tprivate http: HPFServiceClient,\r\n\t\tprotected logger: Logger,\r\n\t\tprotected serializer: JsonSerializer\r\n\t) {\r\n\t\tsuper(logger, serializer);\r\n\t}\r\n\r\n\tgetPaymentItemTableSettings(businessKey: number, customerAccountKeys: number[], forceRefreshOfData: boolean): Promise {\r\n\t\tlet settingsToReturn: PaymentItemTableSettings = this.loadSettings();\r\n\r\n\t\t// if not forcing info to be pulled from database, load from local storage\r\n\t\tif (!forceRefreshOfData) {\r\n\t\t\treturn this.success('', settingsToReturn);\r\n\t\t}\r\n\r\n\t\t// if forcing refresh, grab from database\r\n\t\tlet requestBody: any = { businessKey, customerAccountKeys } as IGetAccountPaymentItemsRequest;\r\n\t\treturn this.http.post(`/customerAccounts/paymentItems`, requestBody)\r\n\t\t\t.then((apiResponse: ApiResponse) => {\r\n\t\t\t\tif (!apiResponse.isSuccessful) {\r\n\t\t\t\t\treturn this.error(`${apiResponse.getErrorMessage()}`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// handle global settings\r\n\t\t\t\tsettingsToReturn.displayMinPaymentDue = apiResponse.value.displayMinPaymentDue;\r\n\t\t\t\tsettingsToReturn.portalMinimumPaymentAmount = apiResponse.value.portalMinimumPaymentAmount;\r\n\t\t\t\tsettingsToReturn.portalMaximumPaymentAmount = apiResponse.value.portalMaximumPaymentAmount;\r\n\t\t\t\tsettingsToReturn.isBusinessBucketEnabled = apiResponse.value.isBusinessBucketEnabled;\r\n\t\t\t\tsettingsToReturn.isShoppingCartEnabled = apiResponse.value.isShoppingCartEnabled;\r\n\t\t\t\tsettingsToReturn.displayCustomerAccountName = apiResponse.value.displayCustomerAccountName;\r\n\r\n\t\t\t\t// handle items\r\n\t\t\t\tsettingsToReturn.items = [];\r\n\t\t\t\tapiResponse.value.paymentItems.forEach((i: AccountPaymentItem) => {\r\n\t\t\t\t\t// set up account. Note some additional initialization is done here; not all properties are set from the response object\r\n\t\t\t\t\tlet item: AccountPaymentItem = new AccountPaymentItem();\r\n\t\t\t\t\titem.itemKey = i.itemKey;\r\n\t\t\t\t\titem.paymentItemId = i.paymentItemId;\r\n\t\t\t\t\titem.isSelected = false;\r\n\t\t\t\t\titem.merchantKey = i.merchantKey;\r\n\t\t\t\t\titem.initialAmount = i.initialAmount;\r\n\t\t\t\t\titem.adjustedBalances = i.adjustedBalances;\r\n\t\t\t\t\titem.enteredAmount = i.initialAmount.toString();\r\n\t\t\t\t\titem.customerAccountReferenceId = i.customerAccountReferenceId;\r\n\t\t\t\t\titem.customerAccountName = i.customerAccountName;\r\n\t\t\t\t\titem.contactName = i.contactName;\r\n\t\t\t\t\titem.dueDate = (i.dueDate == null ? '' : i.dueDate);\r\n\t\t\t\t\titem.minPaymentDue = i.minPaymentDue;\r\n\t\t\t\t\titem.accountDescription = i.accountDescription;\r\n\t\t\t\t\titem.latestStatementDocumentKey = i.latestStatementDocumentKey;\r\n\t\t\t\t\titem.bucketDisplayName = i.bucketDisplayName;\r\n\t\t\t\t\titem.portfolioKey = i.portfolioKey;\r\n\t\t\t\t\titem.areFeesEnabled = i.areFeesEnabled;\r\n\r\n\t\t\t\t\t// set up payment limit settings\r\n\t\t\t\t\titem.paymentLimitSettings = ObjectHelper.deepCopyObject(apiResponse.value.paymentLimitSettings.find((x: any) => x.portfolioKey === item.portfolioKey));\r\n\r\n\t\t\t\t\t// set up balance ranges\r\n\t\t\t\t\tapiResponse.value.balanceRanges.forEach((x: any) => {\r\n\t\t\t\t\t\tif (x.portfolioKey === item.portfolioKey) {\r\n\t\t\t\t\t\t\tconst range = new PaymentItemDiscountBalanceRange();\r\n\t\t\t\t\t\t\trange.min = x.min;\r\n\t\t\t\t\t\t\trange.max = x.max;\r\n\t\t\t\t\t\t\trange.payInFullDiscount = x.payInFullDiscountPercent;\r\n\t\t\t\t\t\t\titem.discountBalanceRanges.push(range);\r\n\t\t\t\t\t\t\titem.getDiscount();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tsettingsToReturn.items.push(item);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.saveSettings(settingsToReturn);\r\n\t\t\t\treturn this.success('', settingsToReturn);\r\n\t\t\t});\r\n\t}\r\n\r\n\t//\r\n\t// functions to load and save from persistent storage\r\n\t//\r\n\r\n\tloadConfiguration(): PaymentItemTableConfiguration {\r\n\t\treturn this.loadSettings().configuration;\r\n\t}\r\n\r\n\tsaveConfiguration(configuration: PaymentItemTableConfiguration) {\r\n\t\tlet settings: PaymentItemTableSettings = this.loadSettings();\r\n\t\tsettings.configuration = configuration;\r\n\t\tthis.saveSettings(settings);\r\n\t}\r\n\r\n\tloadBusinessKey(): number {\r\n\t\treturn this.loadSettings().businessKey;\r\n\t}\r\n\r\n\tsaveBusinessKey(businessKey: number) {\r\n\t\tlet settings: PaymentItemTableSettings = this.loadSettings();\r\n\t\tsettings.businessKey = businessKey;\r\n\t\tthis.saveSettings(settings);\r\n\t}\r\n\r\n\tloadCustomerAccountKeys(): number[] {\r\n\t\treturn this.loadSettings().customerAccountKeys;\r\n\t}\r\n\r\n\tsaveCustomerAccountKeys(customerAccountKeys: number[]) {\r\n\t\tlet settings: PaymentItemTableSettings = this.loadSettings();\r\n\t\tsettings.customerAccountKeys = customerAccountKeys;\r\n\t\tthis.saveSettings(settings);\r\n\t}\r\n\r\n\tloadForceRefreshOfData(): boolean {\r\n\t\treturn this.loadSettings().forceRefreshOfData;\r\n\t}\r\n\r\n\tsaveForceRefreshOfData(forceRefreshOfData: boolean) {\r\n\t\tlet settings: PaymentItemTableSettings = this.loadSettings();\r\n\t\tsettings.forceRefreshOfData = forceRefreshOfData;\r\n\t\tthis.saveSettings(settings);\r\n\t}\r\n\r\n\tsaveItems(items: AccountPaymentItem[]) {\r\n\t\tlet settings: PaymentItemTableSettings = this.loadSettings();\r\n\t\tsettings.items = items;\r\n\t\tthis.saveSettings(settings);\r\n\t}\r\n\r\n\tprivate loadSettings(): PaymentItemTableSettings {\r\n\t\tlet settings: PaymentItemTableSettings = this.getFromStorage('paymentItemTableSettings', PaymentItemTableSettings);\r\n\t\treturn (settings !== null) ? settings : new PaymentItemTableSettings();\r\n\t}\r\n\r\n\tprivate saveSettings(settings: PaymentItemTableSettings): void {\r\n\t\tthis.setInStorage('paymentItemTableSettings', settings);\r\n\t}\r\n}\r\n\r\nexport interface IGetAccountPaymentItemsRequest {\r\n\tbusinessKey: number;\r\n\tcustomerAccountKeys: number[];\r\n}\r\n","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { bindable, bindingMode } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport numeral from 'numeral';\r\nimport { AccountPaymentItem } from '../../models/account-payment-item';\r\nimport { PaymentItemInitialEnteredAmount, PaymentItemType, TransactionBalancePaymentType } from '../../models/enums';\r\nimport { PaymentItemTableConfiguration } from '../../models/payment-item-table-configuration';\r\nimport { ServiceResponse } from '../../models/service-response';\r\nimport { PaymentItemService } from './payment-item-service';\r\nimport { PaymentItemTableSettings } from './persistence/payment-item-table-settings';\r\nimport { ComponentValidationResult } from './validation/component-validation-result';\r\nimport { IValidationRule } from './validation/i-validation-rule';\r\nimport { RuleValidationResult } from './validation/rule-validation-result';\r\nimport { EnteredAmountGreaterThanZeroRule } from './validation/rules/entered-amount-greater-than-zero-rule';\r\nimport { MeetsAccountMinAmountRule } from './validation/rules/meets-account-min-amount-rule';\r\nimport { MeetsPortalAndPortfolioMaxAmountRule } from './validation/rules/meets-portal-and-portfolio-max-amount-rule';\r\nimport { MeetsPortalAndPortfolioMinAmountRule } from './validation/rules/meets-portal-and-portfolio-min-amount-rule';\r\nimport { SelectAtLeastOneItemRule } from './validation/rules/select-at-least-one-item-rule';\r\nimport { VerifyShortPayReasonCommentRule } from './validation/rules/verify-short-pay-reason-comment-rule';\r\nimport { VerifyShortPaymentsAllowedRule } from './validation/rules/verify-short-payments-allowed-rule';\r\nimport { VerifyOverPaymentsAllowedRule } from './validation/rules/verify-over-payments-allowed-rule';\r\nimport { NumberHelper } from '../../helpers/number-helper';\r\n\r\n@autoinject\r\nexport class PaymentItemTable {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) configuration: PaymentItemTableConfiguration;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) businessKey: number;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) customerAccountKeys: number[];\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) forceRefreshOfData: boolean;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) items: AccountPaymentItem[] = [];\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) feeAmountGreaterThanZero: boolean;\r\n\r\n\t// callbacks\r\n\t@bindable({ defaultBindingMode: bindingMode.oneWay }) itemsLoaded;\r\n\t@bindable({ defaultBindingMode: bindingMode.oneWay }) selectedItemsChanged;\r\n\t@bindable({ defaultBindingMode: bindingMode.oneWay }) enteredAmountChanged;\r\n\r\n\t// outputs\r\n\t@bindable({ defaultBindingMode: bindingMode.toView }) hasMultipleMerchants: boolean;\r\n\r\n\t// local vars\r\n\tshowDiscount = false;\r\n\tshowDueDate = false;\r\n\tshowBucket: boolean;\r\n\tshowSubtotal: boolean = false;\r\n\tshowMinPaymentDue: boolean;\r\n\tshowCustomerAccountName: boolean;\r\n\tshowContactName: boolean;\r\n\tisPayOffEarly: boolean;\r\n\tbalanceLabel: string;\r\n\tpaymentAmountLabel: string;\r\n\tportalMinimumPaymentAmount: number;\r\n\tportalMaximumPaymentAmount: number;\r\n\tselectedItemMerchantKey: number;\r\n\tenableMultiSelect: boolean = false;\r\n\tsubtotalSpacing: number;\r\n\tfeesEnabled: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate paymentItemService: PaymentItemService,\r\n\t\tprivate i18n: I18N\r\n\t) {\r\n\t}\r\n\r\n\tattached() {\r\n\t\t// populate from persistent storage, which should've been initialized at some point\r\n\t\tthis.configuration = this.paymentItemService.loadConfiguration();\r\n\t\tthis.businessKey = this.paymentItemService.loadBusinessKey();\r\n\t\tthis.customerAccountKeys = this.paymentItemService.loadCustomerAccountKeys();\r\n\t\tthis.forceRefreshOfData = this.paymentItemService.loadForceRefreshOfData();\r\n\t\tthis.loadItems();\r\n\t}\r\n\r\n\tconfigurationChanged(newValue: PaymentItemTableConfiguration, oldValue: PaymentItemTableConfiguration): void {\r\n\t\tif (newValue !== undefined) {\r\n\t\t\tthis.paymentItemService.saveConfiguration(newValue);\r\n\t\t}\r\n\t}\r\n\r\n\tbusinessKeyChanged(newValue: number, oldValue: number): void {\r\n\t\tif (newValue !== undefined) {\r\n\t\t\tthis.paymentItemService.saveBusinessKey(newValue);\r\n\t\t}\r\n\t}\r\n\r\n\tcustomerAccountKeysChanged(newValue: number[], oldValue: number[]): void {\r\n\t\tif (newValue !== undefined) {\r\n\t\t\tthis.paymentItemService.saveCustomerAccountKeys(newValue);\r\n\t\t}\r\n\t}\r\n\r\n\tforceRefreshOfDataChanged(newValue: boolean, oldValue: boolean): void {\r\n\t\tif (newValue !== undefined) {\r\n\t\t\tthis.paymentItemService.saveForceRefreshOfData(newValue);\r\n\t\t}\r\n\t}\r\n\r\n\tloadItems(): void {\r\n\t\t// if all required inputs have been specified, make the call to load data\r\n\t\tif (this.configuration && this.configuration.itemType === PaymentItemType.Account &&\r\n\t\t\tthis.businessKey !== undefined &&\r\n\t\t\tthis.customerAccountKeys && this.customerAccountKeys.length > 0 &&\r\n\t\t\tthis.forceRefreshOfData !== undefined\r\n\t\t) {\r\n\t\t\tthis.loadSettings();\r\n\t\t}\r\n\t}\r\n\r\n\tloadSettings(): void {\r\n\t\tthis.paymentItemService.getPaymentItemTableSettings(this.businessKey, this.customerAccountKeys, this.forceRefreshOfData)\r\n\t\t\t.then((response: ServiceResponse) => {\r\n\t\t\t\tif (response.isSuccessful) {\r\n\t\t\t\t\tlet settings: PaymentItemTableSettings = response.value;\r\n\t\t\t\t\tlet merchantKey: number;\r\n\r\n\t\t\t\t\tthis.enableMultiSelect = this.configuration.useMultiselect\r\n\t\t\t\t\t\t? settings.isShoppingCartEnabled || false\r\n\t\t\t\t\t\t: false;\r\n\t\t\t\t\tthis.showBucket = this.configuration.showBucket && settings.isBusinessBucketEnabled;\r\n\t\t\t\t\tthis.showSubtotal = this.configuration.showSubtotal || false;\r\n\t\t\t\t\tthis.showMinPaymentDue = settings.displayMinPaymentDue;\r\n\t\t\t\t\tthis.portalMinimumPaymentAmount = settings.portalMinimumPaymentAmount;\r\n\t\t\t\t\tthis.portalMaximumPaymentAmount = settings.portalMaximumPaymentAmount;\r\n\t\t\t\t\tthis.showCustomerAccountName = settings.displayCustomerAccountName;\r\n\t\t\t\t\tthis.showContactName = this.configuration.isGuarantorBillingEnabled;\r\n\t\t\t\t\tthis.items = settings.items;\r\n\t\t\t\t\tthis.isPayOffEarly = this.configuration.isPayOffEarly || false;\r\n\t\t\t\t\tthis.getLabels();\r\n\r\n\t\t\t\t\tthis.configuration.showShortPayReason = {};\r\n\r\n\t\t\t\t\tthis.items.forEach((item: AccountPaymentItem) => {\r\n\t\t\t\t\t\t// if payment amount cannot be edited, it should be set to the full amount\r\n\t\t\t\t\t\tif (this.configuration.showPaymentAmount) {\r\n\t\t\t\t\t\t\tif (this.configuration.isPaymentAmountEditable) {\r\n\t\t\t\t\t\t\t\titem.enteredAmount = null;\r\n\t\t\t\t\t\t\t} else if (this.configuration.initialAmountType === PaymentItemInitialEnteredAmount.pendingBalance) {\r\n\t\t\t\t\t\t\t\titem.enteredAmount = item.adjustedBalances.pendingBalance.toFixed(2);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\titem.enteredAmount = item.initialAmount.toFixed(2);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Check for multiple merchants\r\n\t\t\t\t\t\tif (merchantKey === undefined) {\r\n\t\t\t\t\t\t\tmerchantKey = item.merchantKey;\r\n\t\t\t\t\t\t} else if (merchantKey !== item.merchantKey) {\r\n\t\t\t\t\t\t\tthis.hasMultipleMerchants = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tlet selectedFirstItem: boolean = false;\r\n\t\t\t\t\tif (this.items && this.items.length > 0 && this.configuration.selectFirstItemUponLoad) {\r\n\t\t\t\t\t\tthis.items[0].isSelected = true;\r\n\t\t\t\t\t\tselectedFirstItem = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.paymentItemService.saveItems(this.items);\r\n\r\n\t\t\t\t\tthis.itemsLoaded({\r\n\t\t\t\t\t\tpaymentItems: this.items\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (selectedFirstItem) {\r\n\t\t\t\t\t\tthis.selectedItemsChanged({\r\n\t\t\t\t\t\t\tselectedPaymentItems: [this.items[0]]\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.getSelectedItemMerchantKey();\r\n\t\t\t\t\tthis.getShowDiscount();\r\n\t\t\t\t\tthis.getShowDueDate();\r\n\t\t\t\t\tthis.getSubtotalSpacing();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// else handle error case?\r\n\t\t\t});\r\n\t}\r\n\r\n\tgetLabels() {\r\n\t\tif (this.isPayOffEarly) {\r\n\t\t\tthis.balanceLabel = this.i18n.i18next.t('accountBalance', 'Account Balance');\r\n\t\t\tthis.paymentAmountLabel = this.i18n.i18next.t('remainingPlanAmount', 'Remaining Plan Amount');\r\n\t\t} else if (this.configuration.paymentAmountLabel) {\r\n\t\t\tthis.balanceLabel = this.i18n.i18next.t('balance', 'Balance');\r\n\t\t\tthis.paymentAmountLabel = this.configuration.paymentAmountLabel;\r\n\t\t} else {\r\n\t\t\tthis.balanceLabel = this.i18n.i18next.t('balance', 'Balance');\r\n\t\t\tthis.paymentAmountLabel = this.i18n.i18next.t('paymentAmount', 'Payment Amount');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handle enter/spacebar keys and prevent double event fires\r\n\t */\r\n\trowPressed(event: KeyboardEvent, selectedItem: AccountPaymentItem): void {\r\n\t\tevent.stopPropagation();\r\n\t\tevent.preventDefault();\r\n\t\tif (event.keyCode === 13 || event.keyCode === 32) {\r\n\t\t\tthis.rowClicked(selectedItem);\r\n\t\t}\r\n\t}\r\n\r\n\trowClicked(selectedItem: AccountPaymentItem): void {\r\n\t\tif (this.configuration.enableItemSelection) {\r\n\t\t\tthis.items.forEach((item: AccountPaymentItem) => {\r\n\t\t\t\tlet disabled = this.isItemDisabled(item);\r\n\t\t\t\tif (item.itemKey === selectedItem.itemKey) {\r\n\t\t\t\t\titem.isSelected = disabled ? item.isSelected : !item.isSelected; // Only flip the selected flag if item is not disabled\r\n\t\t\t\t} else if (!this.enableMultiSelect) {\r\n\t\t\t\t\titem.isSelected = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet selectedItems = this.items.filter(item => item.isSelected);\r\n\t\t\tthis.selectedItemsChanged({\r\n\t\t\t\tselectedPaymentItems: selectedItems\r\n\t\t\t});\r\n\r\n\t\t\tthis.getSelectedItemMerchantKey();\r\n\t\t\tthis.paymentItemService.saveItems(this.items);\r\n\t\t}\r\n\t}\r\n\r\n\tenteredAmountKeyup(item: AccountPaymentItem) {\r\n\t\tthis.paymentItemService.saveItems(this.items);\r\n\t\tthis.enteredAmountChanged({\r\n\t\t\tchangedPaymentItem: [ item ]\r\n\t\t});\r\n\t}\r\n\r\n\tfilterEnteredAmountInput(event: KeyboardEvent) {\r\n\t\tlet validInput = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.'];\r\n\t\tlet input = event.char || event.key; // IE11 is a terrible browser that reads the numpad '.' key as 'Del' this forces IE11 to use the char value of '.'\r\n\t\treturn (validInput.indexOf(input) !== -1);\r\n\t}\r\n\r\n\tformatEnteredAmount(item: AccountPaymentItem) {\r\n\t\t// Remove dollar and comma characters.\r\n\t\t// This is in case the user pastes the amount.\r\n\t\tif (item.enteredAmount) {\r\n\t\t\titem.enteredAmount = item.enteredAmount.replace(/[$,]/g, '');\r\n\t\t}\r\n\r\n\t\titem.enteredAmount = numeral(item.enteredAmount).format('(0.00)');\r\n\t\tthis.renderShortPayReason(item);\r\n\r\n\t\t// Trigger enteredAmountChanged\r\n\t\tthis.enteredAmountChanged({\r\n\t\t\tchangedPaymentItem: [item]\r\n\t\t});\r\n\t}\r\n\r\n\trenderShortPayReason(item: AccountPaymentItem) {\r\n\t\tlet paymentAmount = parseFloat(item.enteredAmount) || 0;\r\n\t\tlet accountBalance = item.initialAmount;\r\n\r\n\t\tlet renderIt: boolean = paymentAmount < accountBalance\r\n\t\t\t&& item.paymentLimitSettings.allowShortPay\r\n\t\t\t&& item.paymentLimitSettings.requireShortPayReason;\r\n\r\n\t\tthis.configuration.showShortPayReason[item.paymentItemId] = renderIt;\r\n\t}\r\n\r\n\tgetTotalEnteredAmountForSelectedItems(): number {\r\n\t\tlet total: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\t// try to get entered amount for each selected item. Ignore those with invalid amounts.\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\t// Remove dollar and comma characters.\r\n\t\t\t\t// This is in case the user pastes the amount.\r\n\t\t\t\tif (i.enteredAmount) {\r\n\t\t\t\t\ti.enteredAmount = i.enteredAmount.replace(/[$,]/g, '');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Make sure the amount is a valid floating-point number.\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotal += NumberHelper.parseCurrency(parsedAmount.toFixed(2));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn total;\r\n\t}\r\n\r\n\tgetTotalDiscountAmountForSelectedItems(): number {\r\n\t\tlet total: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\t// try to get entered amount for each selected item. Ignore those with invalid amounts.\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\t// Make sure the amount is a valid floating-point number.\r\n\t\t\t\ttotal += NumberHelper.parseCurrency((i.initialAmount * i.discount / 100).toFixed(2));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn total;\r\n\t}\r\n\r\n\t// Show discount if any item has one set, and configured for payInFull\r\n\tgetShowDiscount() {\r\n\t\tthis.items.forEach((item: AccountPaymentItem) => {\r\n\t\t\tif (\r\n item.isSelected\r\n && item.discount\r\n && item.discount > 0\r\n && this.configuration.isPayInFull\r\n ) {\r\n\t\t\t\tthis.showDiscount = true;\r\n\t\t\t\titem.enteredAmount = (item.initialAmount * (1 - item.discount / 100)).toFixed(2);\r\n\t\t\t\tthis.enteredAmountChanged({\r\n\t\t\t\t\tchangedPaymentItem: [ item ]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// only show due date if configured for it and at least one visible account has a value for it\r\n\tgetShowDueDate() {\r\n\t\tthis.showDueDate = false;\r\n\t\tif (this.configuration.showDueDate) {\r\n\t\t\tthis.items.forEach((item: AccountPaymentItem) => {\r\n\t\t\t\tif (!this.showDueDate) {\r\n\t\t\t\t\t// if only showing selected, check selected items. Otherwise, check across all items.\r\n\t\t\t\t\tif (this.configuration.onlyShowSelected) {\r\n\t\t\t\t\t\tif (item.isSelected && item.dueDate) {\r\n\t\t\t\t\t\t\tthis.showDueDate = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (item.dueDate) {\r\n\t\t\t\t\t\tthis.showDueDate = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(): ComponentValidationResult {\r\n\t\t// do the validation checks in multiple waves to prevent duplicate or redundant error\r\n\t\t// messages. In the future it would be nice to chain these in a smarter way.\r\n\t\tlet componentResult: ComponentValidationResult;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\ti.paymentBalanceType = TransactionBalancePaymentType.NotSet;\r\n\t\t});\r\n\r\n\t\t// first wave of validation rules\r\n\t\tlet rules: IValidationRule[] = [];\r\n\t\trules.push(new SelectAtLeastOneItemRule(this.i18n, this.items));\r\n\t\trules.push(new MeetsPortalAndPortfolioMinAmountRule(this.i18n, this.items, this.portalMinimumPaymentAmount));\r\n\t\trules.push(new MeetsPortalAndPortfolioMaxAmountRule(this.i18n, this.items, this.portalMaximumPaymentAmount));\r\n\t\trules.push(new MeetsAccountMinAmountRule(this.i18n, this.items));\r\n\r\n\t\trules.push(new VerifyShortPaymentsAllowedRule(this.i18n, this.items, this.configuration));\r\n\t\trules.push(new VerifyShortPayReasonCommentRule(this.i18n, this.items, this.configuration));\r\n\t\trules.push(new VerifyOverPaymentsAllowedRule(this.i18n, this.items));\r\n\r\n\t\tcomponentResult = this.validateRules(rules);\r\n\t\tif (!componentResult.isValid) {\r\n\t\t\treturn componentResult;\r\n\t\t}\r\n\r\n\t\t// next wave\r\n\t\trules = [];\r\n\t\trules.push(new EnteredAmountGreaterThanZeroRule(this.i18n, this.items));\r\n\t\tcomponentResult = this.validateRules(rules);\r\n\t\tif (!componentResult.isValid) {\r\n\t\t\treturn componentResult;\r\n\t\t}\r\n\r\n\t\treturn componentResult;\r\n\t}\r\n\r\n\tgetSelectedItemMerchantKey() {\r\n\t\tlet firstSelected = this.items.find(item => item.isSelected);\r\n\t\tif (firstSelected) {\r\n\t\t\tthis.selectedItemMerchantKey = firstSelected.merchantKey;\r\n\t\t\tthis.feesEnabled = firstSelected.areFeesEnabled;\r\n\t\t} else {\r\n\t\t\tthis.selectedItemMerchantKey = null;\r\n\t\t}\r\n\r\n\t\tthis.updateItemDisabledState();\r\n\t}\r\n\r\n\tupdateItemDisabledState() {\r\n\t\tthis.items.forEach(item => {\r\n\t\t\titem.disabled = this.isItemDisabled(item);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate validateRules(rules: IValidationRule[]): ComponentValidationResult {\r\n\t\tlet result: ComponentValidationResult = new ComponentValidationResult();\r\n\t\trules.forEach((r: IValidationRule) => {\r\n\t\t\tlet ruleResult: RuleValidationResult = r.validate();\r\n\t\t\tif (!ruleResult.isValid) {\r\n\t\t\t\tresult.isValid = false;\r\n\t\t\t\tresult.errorMessages.push(ruleResult.errorMessage);\r\n\t\t\t\tresult.confirm = ruleResult.confirm || false;\r\n\t\t\t\tif (result.confirm) {\r\n\t\t\t\t\tresult.confirmErrorMessageIndex = result.errorMessages.length - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\tgetSelectedItems(): AccountPaymentItem[] {\r\n\t\treturn this.items.filter((i: AccountPaymentItem) => i.isSelected);\r\n\t}\r\n\r\n\tisItemDisabled(item: AccountPaymentItem): boolean {\r\n\t\t// When shopping cart is enabled and the provided item is a different merchant return true\r\n\t\tlet disabled = false;\r\n\r\n\t\tif (\r\n\t\t\tthis.enableMultiSelect\r\n\t\t\t&& this.selectedItemMerchantKey\r\n\t\t\t&& item.merchantKey !== this.selectedItemMerchantKey\r\n\t\t) {\r\n\t\t\tdisabled = true;\r\n\t\t}\r\n\r\n\t\treturn disabled;\r\n\t}\r\n\r\n\tget subtotal() {\r\n\t\tlet selected: AccountPaymentItem[] = this.items.filter(item => item.isSelected);\r\n\t\tlet total: number = selected.reduce((accumulator: number, item: AccountPaymentItem): number => {\r\n\t\t\treturn accumulator + parseFloat(item.enteredAmount) || 0;\r\n\t\t}, 0);\r\n\r\n\t\treturn total;\r\n\t}\r\n\r\n\tgetSubtotalSpacing() {\r\n\t\tlet cols = 1; // number of non if/show bound columns\r\n\r\n\t\tif (this.configuration.enableItemSelection) {\r\n\t\t\tcols++;\r\n\t\t}\r\n\t\tif (this.showCustomerAccountName) {\r\n\t\t\tcols++;\r\n\t\t}\r\n\t\tif (this.configuration.showInitialAmount) {\r\n\t\t\tcols++;\r\n\t\t}\r\n\t\tif (this.showMinPaymentDue) {\r\n\t\t\tcols++;\r\n\t\t}\r\n\t\tif (this.showDueDate) {\r\n\t\t\tcols++;\r\n\t\t}\r\n\t\tif (this.showDiscount) {\r\n\t\t\tcols++;\r\n\t\t}\r\n\r\n\t\tthis.subtotalSpacing = cols;\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"@media (min-width: 768px) {\\r\\n\\t.checkbox-label {\\r\\n\\t\\tmargin-bottom: 0px !important;\\r\\n\\t\\tmargin-top: 8px !important;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.row {\\r\\n\\tdisplay: -ms-flexbox;\\r\\n\\tdisplay: flex;\\r\\n\\t-ms-flex-wrap: nowrap;\\r\\n\\tflex-wrap: nowrap;\\r\\n}\\r\\n\\r\\n#table-header .row {\\r\\n\\tborder: 1px solid #ddd;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n#item-table #table-body div:hover {\\r\\n\\tbackground-color: #f2f2f2;\\r\\n}\\r\\n\\r\\n#table-body div.row:nth-child(even) {\\r\\n\\tbackground-color:#f2f2f2;\\r\\n}\\r\\n\\r\\n#table-body .row {\\r\\n\\tborder: 1px solid #ddd;\\r\\n}\\r\\n\\r\\ntr.disabled,\\r\\ntr.disabled .cr {\\r\\n cursor: default !important;\\r\\n}\\r\\n\\r\\n.d-inline .align-middle {\\r\\n overflow-wrap: break-word;\\r\\n}\\r\\n\\r\\n.align-middle {\\r\\n\\tvertical-align: -webkit-baseline-middle !important;\\r\\n}\\r\\n\\r\\n.desktop-grid-checkbox {\\r\\n\\tmargin-top: 10px;\\r\\n}\\r\\n\\r\\n.mobile-grid-checkbox {\\r\\n\\tmargin-bottom: 0px;\\r\\n}\\r\\n\\r\\n.statement-icon {\\r\\n\\tfont-size: 1.5em !important;\\r\\n}\\r\\n\\r\\n.cursor-default td {\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.mobile-vertical-center {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n justify-content: center;\\r\\n}\\r\\n\\r\\n.subtotal-label {\\r\\n text-align: right !important;\\r\\n font-weight: bold;\\r\\n}\\r\\n.subtotal-value {\\r\\n text-align: left !important;\\r\\n}\\r\\n\\r\\n.mobile-grid-header, .mobile-grid-header-50 {\\r\\n\\tdisplay: inline-block;\\r\\n\\tfont-weight: bold;\\r\\n\\tmin-width: 120px;\\r\\n\\twidth: fit-content;\\r\\n\\ttext-align: left;\\r\\n\\tmargin-top: .5em;\\r\\n}\\r\\n\\r\\n.col-11 {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n}\\r\\n\\r\\n/* this is specifically to prevent checkboxes from flipping back states on mouseclick */\\r\\n.clickthrough {\\r\\n\\tpointer-events: none;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n\";","import { AccountPaymentItem } from '../../../models/account-payment-item';\r\nimport { PaymentItemTableConfiguration } from '../../../models/payment-item-table-configuration';\r\n\r\nexport class PaymentItemTableSettings {\r\n\tconfiguration: PaymentItemTableConfiguration;\r\n\titems: AccountPaymentItem[] = [];\r\n\tbusinessKey: number;\r\n\tcustomerAccountKeys: number[] = [];\r\n\tforceRefreshOfData: boolean;\r\n\tdisplayMinPaymentDue: boolean;\r\n\tportalMinimumPaymentAmount: number;\r\n\tportalMaximumPaymentAmount: number;\r\n\tisBusinessBucketEnabled: boolean;\r\n\tisShoppingCartEnabled: boolean;\r\n\tdisplayCustomerAccountName: boolean;\r\n}\r\n","export class ComponentValidationResult {\r\n\tisValid: boolean = true;\r\n\terrorMessages: string[] = [];\r\n\t// Confirm - whether to display the error as a confirmation prompt.\r\n\tconfirm: boolean = false;\r\n\tconfirmErrorMessageIndex: number = 0;\r\n}\r\n","export class RuleValidationResult {\r\n\tisValid: boolean = true;\r\n\terrorMessage: string = '';\r\n\t// Confirm - whether to display the error as a confirmation prompt.\r\n\tconfirm: boolean = false;\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class DateLessThan45DaysOutRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private date: string) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\ttry {\r\n\t\t\tlet parts = this.date.split('/');\r\n\t\t\tlet day = parseInt(parts[1], 10);\r\n\t\t\tlet month = parseInt(parts[0], 10);\r\n\t\t\tlet year = parseInt(parts[2], 10);\r\n\r\n\t\t\tlet selectedDate = new Date(year, month, day);\r\n\t\t\tlet maxDate = new Date(new Date().getFullYear(), (new Date().getMonth() + 1), new Date().getDate() + 45);\r\n\r\n\t\t\tresult.isValid = (selectedDate <= maxDate);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('paymentDateMustBeWithinFortyFiveDays', 'Payment Date must be less than 45 days out.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class DateTodayOrGreaterRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private date: string) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\ttry {\r\n\t\t\tlet parts = this.date.split('/');\r\n\t\t\tlet day = parseInt(parts[1], 10);\r\n\t\t\tlet month = parseInt(parts[0], 10);\r\n\t\t\tlet year = parseInt(parts[2], 10);\r\n\r\n\t\t\tlet selectedDate = new Date(year, month, day);\r\n\t\t\tlet minDate = new Date(new Date().getFullYear(), (new Date().getMonth() + 1), new Date().getDate());\r\n\r\n\t\t\tresult.isValid = (selectedDate >= minDate);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('paymentDateMustBeTodayOrGreater', 'Payment Date must be today or greater.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class EnteredAmountGreaterThanZeroRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[]) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\tlet greaterThanZero: boolean = true;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (!greaterThanZero) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (isNaN(parsedAmount) || parsedAmount <= 0) {\r\n\t\t\t\t\tgreaterThanZero = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.isValid = greaterThanZero;\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('paymentAmountMustBeGreaterThanZero', 'Payment Amount must be greater than 0.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsAccountMinAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[]) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\t// enforce customer account minimum payment due if necessary\r\n\t\tlet isValid: boolean = true;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tif (isValid && i.paymentLimitSettings.enableMinimumPaymentDueOnAccount) {\r\n\t\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\t\tif (isNaN(parsedAmount) || parsedAmount < i.minPaymentDue) {\r\n\t\t\t\t\t\tisValid = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.isValid = isValid;\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('accountPaymentAmountMeetMinimumDue',\r\n\t\t\t\t'Payment Amount for account must be greater than or equal to minimum payment due.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from '../../../../helpers/string-helper';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsPortalAndPortfolioMaxAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[], private portalMaximumPaymentAmount: number) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\tif (!this.items) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlet max: number = 9999999999;\r\n\t\tlet portfolioMaximumPaymentAmount: number = max;\r\n\r\n\t\t// in the case that no portal max is set, treat it like the default max, so it will not be factored in\r\n\t\tif (!this.portalMaximumPaymentAmount) {\r\n\t\t\tthis.portalMaximumPaymentAmount = max;\r\n\t\t}\r\n\r\n\t\t// enforce portal and portfolio-level max payment on total payment. If multiple portfolios selected, it should use\r\n\t\t// the min of the max (most restrictive). If portal max is less than portfolio max, use portal max, and vice versa.\r\n\t\tlet totalAmount: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tif (i.paymentLimitSettings.maximumPaymentAmount != null &&\r\n\t\t\t\t\ti.paymentLimitSettings.maximumPaymentAmount !== 0 &&\r\n\t\t\t\t\ti.paymentLimitSettings.maximumPaymentAmount < portfolioMaximumPaymentAmount) {\r\n\t\t\t\t\tportfolioMaximumPaymentAmount = i.paymentLimitSettings.maximumPaymentAmount;\r\n\t\t\t\t}\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotalAmount += parsedAmount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// use the minimum of portal and portfolio maximums\r\n\t\tmax = (this.portalMaximumPaymentAmount < portfolioMaximumPaymentAmount) ? this.portalMaximumPaymentAmount : portfolioMaximumPaymentAmount;\r\n\t\tresult.isValid = (totalAmount <= max);\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('totalPaymentDoesNotMeetMaxLimits', {\r\n\t\t\t\tdefaultValue: 'Total payment cannot exceed ' + StringHelper.formatCurrency(max) + '.',\r\n\t\t\t\tmaxPayment: StringHelper.formatCurrency(max)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from '../../../../helpers/string-helper';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsPortalAndPortfolioMinAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[], private portalMinimumPaymentAmount: number) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\tif (!this.items) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlet min: number = 0;\r\n\t\tlet porfolioMinimumPaymentAmount: number = min;\r\n\r\n\t\t// in the case that no portal min is set, treat it like default min, so it will not be factored in\r\n\t\tif (!this.portalMinimumPaymentAmount) {\r\n\t\t\tthis.portalMinimumPaymentAmount = min;\r\n\t\t}\r\n\r\n\t\t// enforce portal and portfolio-level min payment on total payment. If multiple portfolios selected, it should use\r\n\t\t// the max of the min (most restrictive). If portal min is greater than portfolio min, use portal min, and vice versa.\r\n\t\tlet totalAmount: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tif (i.paymentLimitSettings.minimumPaymentAmount != null &&\r\n\t\t\t\t\ti.paymentLimitSettings.minimumPaymentAmount !== 0 &&\r\n\t\t\t\t\ti.paymentLimitSettings.minimumPaymentAmount > porfolioMinimumPaymentAmount) {\r\n\t\t\t\t\tporfolioMinimumPaymentAmount = i.paymentLimitSettings.minimumPaymentAmount;\r\n\t\t\t\t}\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotalAmount += parsedAmount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// use the maximum of portal and portfolio minimums\r\n\t\tmin = (this.portalMinimumPaymentAmount > porfolioMinimumPaymentAmount) ? this.portalMinimumPaymentAmount : porfolioMinimumPaymentAmount;\r\n\t\tresult.isValid = (totalAmount >= min);\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('totalPaymentDoesNotMeetMinLimits', {\r\n\t\t\t\tdefaultValue: 'Total payment must be at least ' + StringHelper.formatCurrency(min) + '.',\r\n\t\t\t\tminPayment: StringHelper.formatCurrency(min)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from '../../../../helpers/string-helper';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsPortalMaxAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[], private portalMaximumPaymentAmount: number) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\tif (!this.items || !this.portalMaximumPaymentAmount) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlet totalAmount: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotalAmount += parsedAmount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.isValid = (totalAmount <= this.portalMaximumPaymentAmount);\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('totalPaymentDoesNotMeetMaxLimits', {\r\n\t\t\t\tdefaultValue: 'Total payment cannot exceed ' + StringHelper.formatCurrency(this.portalMaximumPaymentAmount) + '.',\r\n\t\t\t\tmaxPayment: StringHelper.formatCurrency(this.portalMaximumPaymentAmount),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from '../../../../helpers/string-helper';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsPortalMinAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[], private portalMinimumPaymentAmount: number) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\tif (!this.items || !this.portalMinimumPaymentAmount) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tlet totalAmount: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotalAmount += parsedAmount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.isValid = (totalAmount >= this.portalMinimumPaymentAmount);\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('totalPaymentDoesNotMeetMinLimits', {\r\n\t\t\t\tdefaultValue: 'Total payment must be at least ' + StringHelper.formatCurrency(this.portalMinimumPaymentAmount) + '.',\r\n\t\t\t\tminPayment: StringHelper.formatCurrency(this.portalMinimumPaymentAmount),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from '../../../../helpers/string-helper';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsPortfolioMaxAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[]) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\t// enforce portfolio-level max payment on total payment. If multiple portfolios selected, it should use the min of the max (most restrictive).\r\n\t\tlet max: number = 9999999999;\r\n\r\n\t\tlet totalAmount: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tif (i.paymentLimitSettings.maximumPaymentAmount != null &&\r\n\t\t\t\t\ti.paymentLimitSettings.maximumPaymentAmount !== 0 &&\r\n\t\t\t\t\ti.paymentLimitSettings.maximumPaymentAmount < max) {\r\n\t\t\t\t\tmax = i.paymentLimitSettings.maximumPaymentAmount;\r\n\t\t\t\t}\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotalAmount += parsedAmount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.isValid = (totalAmount <= max);\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('totalPaymentDoesNotMeetMaxLimits', {\r\n\t\t\t\tdefaultValue: 'Total payment cannot exceed ' + StringHelper.formatCurrency(max) + '.',\r\n\t\t\t\tmaxPayment: StringHelper.formatCurrency(max),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { StringHelper } from '../../../../helpers/string-helper';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class MeetsPortfolioMinAmountRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[]) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\t// enforce portfolio-level min payment on total payment. If multiple portfolios selected, it should use the max of the min (most restrictive).\r\n\t\tlet min: number = -1;\r\n\r\n\t\tlet totalAmount: number = 0;\r\n\r\n\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\tif (i.isSelected) {\r\n\t\t\t\tif (i.paymentLimitSettings.minimumPaymentAmount != null &&\r\n\t\t\t\t\ti.paymentLimitSettings.minimumPaymentAmount !== 0 &&\r\n\t\t\t\t\ti.paymentLimitSettings.minimumPaymentAmount > min) {\r\n\t\t\t\t\tmin = i.paymentLimitSettings.minimumPaymentAmount;\r\n\t\t\t\t}\r\n\t\t\t\tlet parsedAmount: number = parseFloat(i.enteredAmount);\r\n\t\t\t\tif (!isNaN(parsedAmount)) {\r\n\t\t\t\t\ttotalAmount += parsedAmount;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.isValid = (totalAmount >= min);\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('totalPaymentDoesNotMeetMinLimits', {\r\n\t\t\t\tdefaultValue: 'Total payment must be at least ' + StringHelper.formatCurrency(min) + '.',\r\n\t\t\t\tminPayment: StringHelper.formatCurrency(min),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class SelectAtLeastOneItemRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[]) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\ttry {\r\n\t\t\tlet atLeastOneSelected: boolean = false;\r\n\r\n\t\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\t\t\t\tif (atLeastOneSelected) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (i.isSelected) {\r\n\t\t\t\t\tatLeastOneSelected = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tresult.isValid = atLeastOneSelected;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('selectOneAccount', 'You must select at least 1 account before continuing.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class ValidDateRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private date: string) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\ttry {\r\n\t\t\t// parse the date parts to integers\r\n\t\t\tlet parts = this.date.split('/');\r\n\t\t\tlet day = parseInt(parts[1], 10);\r\n\t\t\tlet month = parseInt(parts[0], 10);\r\n\t\t\tlet year = parseInt(parts[2], 10);\r\n\r\n\t\t\t// check the ranges of month and year\r\n\t\t\tif (year < 1900 || year > 3000 || month === 0 || month > 12) {\r\n\t\t\t\tresult.isValid = false;\r\n\t\t\t} else {\r\n\t\t\t\tlet monthLength: number[] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n\t\t\t\t// adjust for leap years\r\n\t\t\t\tif (year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0)) {\r\n\t\t\t\t\tmonthLength[1] = 29;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// check the range of the day\r\n\t\t\t\tresult.isValid = (day > 0 && day <= monthLength[month - 1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('invalidDate', 'Date must be a valid date.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { TransactionBalancePaymentType } from '../../../../models/enums/transaction-balance-payment-type';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class VerifyOverPaymentsAllowedRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[]) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\t\tlet isWarning: boolean = false;\r\n\r\n\t\ttry {\r\n\t\t\tlet isValid: boolean = true;\r\n\t\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\r\n\t\t\t\tif ((parseFloat(i.enteredAmount) || 0) > i.initialAmount) {\r\n\t\t\t\t\ti.paymentBalanceType = TransactionBalancePaymentType.OverPayment;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isValid &&\r\n\t\t\t\t\ti.isSelected &&\r\n\t\t\t\t\ti.paymentBalanceType === TransactionBalancePaymentType.OverPayment &&\r\n\t\t\t\t\t!i.paymentLimitSettings.allowOverPay) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t} else if (isValid &&\r\n\t\t\t\t\ti.isSelected &&\r\n\t\t\t\t\ti.paymentBalanceType === TransactionBalancePaymentType.OverPayment &&\r\n\t\t\t\t\ti.paymentLimitSettings.allowOverPay &&\r\n\t\t\t\t\ti.paymentLimitSettings.enableOverPayWarningMessage) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t\tisWarning = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tresult.isValid = isValid;\r\n\t\t\tresult.confirm = isWarning;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tif (isWarning) {\r\n\t\t\t\tresult.errorMessage = this.i18n.i18next.t('overPaymentsWarning',\r\n\t\t\t\t\t'Account is being overpaid! Do you wish to continue?');\r\n\t\t\t} else {\r\n\t\t\t\tresult.errorMessage = this.i18n.i18next.t('overPaymentsNotAllowed',\r\n\t\t\t\t\t'Payment Amount cannot be greater than the account balance.');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { TransactionBalancePaymentType } from '../../../../models/enums/transaction-balance-payment-type';\r\nimport { PaymentItemTableConfiguration } from '../../../../models/payment-item-table-configuration';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class VerifyShortPayReasonCommentRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[], private paymentConfiguration: PaymentItemTableConfiguration) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\t// enforce customer account minimum payment due if necessary\r\n\t\ttry {\r\n\t\t\tlet isValid: boolean = true;\r\n\t\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\r\n\t\t\t\tif (((parseInt(i.enteredAmount, 10) || 0) < i.initialAmount)\r\n\t\t\t\t\t&& !this.paymentConfiguration.isPayInFull) {\r\n\t\t\t\t\ti.paymentBalanceType = TransactionBalancePaymentType.ShortPayment;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isValid &&\r\n\t\t\t\t\ti.isSelected &&\r\n\t\t\t\t\ti.paymentLimitSettings.requireShortPayReason &&\r\n\t\t\t\t\ti.paymentBalanceType === TransactionBalancePaymentType.ShortPayment &&\r\n\t\t\t\t\ti.paymentLimitSettings.enableShortPayUserComment &&\r\n\t\t\t\t\ti.paymentLimitSettings.selectedShortPayReason === -1 &&\r\n\t\t\t\t\ti.paymentLimitSettings.shortPayComment.trim() === '' &&\r\n\t\t\t\t\t!this.paymentConfiguration.isPayInFull) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tresult.isValid = isValid;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('shortPaymentCommentRequired',\r\n\t\t\t\t'Short pay comment required when selecting \"Other\" as a reason.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { I18N } from 'aurelia-i18n';\r\nimport { AccountPaymentItem } from '../../../../models/account-payment-item';\r\nimport { TransactionBalancePaymentType } from '../../../../models/enums/transaction-balance-payment-type';\r\nimport { PaymentItemTableConfiguration } from '../../../../models/payment-item-table-configuration';\r\nimport { IValidationRule } from '../i-validation-rule';\r\nimport { RuleValidationResult } from '../rule-validation-result';\r\n\r\nexport class VerifyShortPaymentsAllowedRule implements IValidationRule {\r\n\tconstructor(private i18n: I18N, private items: AccountPaymentItem[], private paymentConfiguration: PaymentItemTableConfiguration) { }\r\n\r\n\tvalidate(): RuleValidationResult {\r\n\t\tlet result: RuleValidationResult = new RuleValidationResult();\r\n\r\n\t\t// enforce customer account minimum payment due if necessary\r\n\t\ttry {\r\n\t\t\tlet isValid: boolean = true;\r\n\t\t\tthis.items.forEach((i: AccountPaymentItem) => {\r\n\r\n\t\t\t\tif (((parseFloat(i.enteredAmount) || 0) < i.initialAmount)\r\n\t\t\t\t\t&& !this.paymentConfiguration.isPayInFull) {\r\n\t\t\t\t\ti.paymentBalanceType = TransactionBalancePaymentType.ShortPayment;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isValid &&\r\n\t\t\t\t\ti.isSelected &&\r\n\t\t\t\t\ti.paymentBalanceType === TransactionBalancePaymentType.ShortPayment &&\r\n\t\t\t\t\t!i.paymentLimitSettings.allowShortPay) {\r\n\t\t\t\t\tisValid = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tresult.isValid = isValid;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tresult.isValid = false;\r\n\t\t}\r\n\r\n\t\tif (!result.isValid) {\r\n\t\t\tresult.errorMessage = this.i18n.i18next.t('shortPaymentsNotAllowed',\r\n\t\t\t\t'Payment amount cannot be less than the account balance.');\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import { bindable, bindingMode, computedFrom } from 'aurelia-framework';\r\nimport { PaymentLimitSettings } from '../../models/payment-limit-settings';\r\nimport { Uuid } from '../../../helpers/uuid';\r\n\r\nexport class ShortPayReason {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) paymentLimitSettings: PaymentLimitSettings = new PaymentLimitSettings();\r\n\r\n\tshortPayReasonOptions: IShortPayReasonOption[] = [];\r\n\treadonly uuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.uuid = Uuid.next();\r\n\r\n\t}\r\n\r\n\tpaymentLimitSettingsChanged(newValue: PaymentLimitSettings, oldValue: PaymentLimitSettings) {\r\n\t\tif (newValue && newValue.shortPayReasons) {\r\n\t\t\tfor (let i = 0; i < newValue.shortPayReasons.length; i++) {\r\n\t\t\t\tthis.shortPayReasonOptions.push( { id: i, value: newValue.shortPayReasons[i] } as IShortPayReasonOption);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('paymentLimitSettings.selectedShortPayReason')\r\n\tget showCommentBox(): boolean {\r\n\t\tif (this.paymentLimitSettings && this.paymentLimitSettings.selectedShortPayReason === -1) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (this.paymentLimitSettings) {\r\n\t\t\tthis.paymentLimitSettings.shortPayComment = '';\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@computedFrom('shortPayReasonOptions')\r\n\tget shortPayListboxOptions() {\r\n\t\tif (this.paymentLimitSettings.enableShortPayUserComment) {\r\n\t\t\treturn [...this.shortPayReasonOptions.map(opt => opt.id), -1];\r\n\t\t} else {\r\n\t\t\treturn this.shortPayReasonOptions.map(opt => opt.id);\r\n\t\t}\r\n\t}\r\n\r\n\t@computedFrom('shortPayReasonOptions')\r\n\tget shortPayListboxDescriptions() {\r\n\t\tif (this.paymentLimitSettings.enableShortPayUserComment) {\r\n\t\t\treturn [...this.shortPayReasonOptions.map(opt => opt.value), 'Other'];\r\n\t\t} else {\r\n\t\t\treturn this.shortPayReasonOptions.map(opt => opt.value);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport interface IShortPayReasonOption {\r\n\tid: number;\r\n\tvalue: string;\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"textarea {\\r\\n\\tresize: none;\\r\\n}\\r\\n\\r\\n.short-pay-div {\\r\\n display: block;\\r\\n padding: .5em;\\r\\n}\", \"\"]);\n\n// exports\n","module.exports = \"\";","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { bindable, bindingMode } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport config from '../../../config/config'; // todo change to local resource\r\nimport { State } from '../../../services/global-state'; // todo change to local resource\r\nimport { PayrazrService } from '../../../services/payrazr'; // todo change to local resource\r\n\r\n// -----------------------------------------------------------------------------------------\r\n// The initial intention of having this in its own control is to re-use portal-specific\r\n// stuff without dirtying up this new standalone area. We should later copy over the\r\n// functionality and decouple it from portal.\r\n// -----------------------------------------------------------------------------------------\r\n@autoinject\r\nexport class StatementDownloadLink {\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) customerAccountId: string;\r\n\t@bindable({ defaultBindingMode: bindingMode.twoWay }) documentKey: number;\r\n\ttooltipText: string;\r\n\r\n\tconstructor(private state: State, private payrazrService: PayrazrService, private i18n: I18N) {\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis.tooltipText = this.i18n.i18next.t('viewLatestStatementDocument', 'View latest statement document');\r\n\t}\r\n\r\n\tdownloadStatement() {\r\n\t\tif (this.documentKey) {\r\n\t\t\tlet downloadUrl = `${config.serviceUrl}/portal/${this.state.business.portalId}` +\r\n\t\t\t\t`/account/${this.customerAccountId}/document/${this.documentKey}`;\r\n\t\t\tthis.payrazrService.downloadFile(downloadUrl, 'statement.pdf');\r\n\t\t}\r\n\t}\r\n}\r\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\r\\n.statement-mobile {\\r\\n\\tfont-size: 1.5em !important;\\r\\n}\\r\\n\", \"\"]);\n\n// exports\n","module.exports = \"\\r\\n\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class HeaderControls {\r\n\t@bindable({ defaultBindingMode: bindingMode.oneTime }) selectAllClick: any;\r\n\t@bindable({ defaultBindingMode: bindingMode.oneTime }) clearAllClick: any;\r\n}","module.exports = \"\\r\\n\";","import { deserialize } from 'class-transformer';\r\n\r\nexport class JsonSerializer {\r\n\tserialize(value: any): any {\r\n\t\treturn JSON.stringify(value);\r\n\t}\r\n\r\n\tdeserialize(type: any, value: any): T {\r\n\t\treturn deserialize(type, value);\r\n\t}\r\n}","export class NumberHelper {\r\n static parseCurrency(text: string): number {\r\n return parseFloat(text.replace(/,/g, ''));\r\n }\r\n}","export class ObjectHelper {\r\n\tstatic deepCopyObject(obj: any) {\r\n\t\treturn JSON.parse(JSON.stringify(obj));\r\n\t}\r\n}","const numeral: any = require('numeral');\r\n\r\nexport class StringHelper {\r\n\tstatic padLeft(text: string, padChar: string, size: number): string {\r\n\t\treturn (String(padChar).repeat(size) + text).substr((size * -1), size);\r\n\t}\r\n\r\n\tstatic formatCurrency(amount: number): string {\r\n\t\treturn numeral(amount).format('($0,0.00)');\r\n\t}\r\n}\r\n","import { PaymentItemType } from './enums/payment-item-type';\r\nimport { PaymentItem } from './payment-item';\r\nimport { PaymentItemDiscountBalanceRange } from './payment-item-discount-balance-range';\r\n\r\nexport class AccountPaymentItem extends PaymentItem {\r\n\tminPaymentDue: number;\r\n\taccountDescription: string;\r\n\tlatestStatementDocumentKey: number | null;\r\n\tdiscountBalanceRanges: Array = [];\r\n\tdiscount: number | null;\r\n\tadjustedBalances: AdjustedBalances;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.itemType = PaymentItemType.Account;\r\n\t}\r\n\r\n\tgetDiscount() {\r\n\t\tthis.discount = null;\r\n\t\tthis.discountBalanceRanges.forEach((range) => {\r\n\t\t\tif (this.initialAmount >= range.min && range.max >= this.initialAmount) {\r\n\t\t\t\tthis.discount = range.payInFullDiscount;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nclass AdjustedBalances {\r\n\ttotalBalance: number | null;\r\n\tpendingBalance: number | null;\r\n}\r\n","export class ApiResponse implements IApiResponse {\r\n isSuccessful: boolean = false;\r\n resultCode?: string = '';\r\n value?: any = null;\r\n logMessages?: string[] = [];\r\n errors?: string[] = [];\r\n\r\n constructor(config: IApiResponse) {\r\n this.isSuccessful = config.isSuccessful;\r\n if (config.resultCode != undefined)\r\n this.resultCode = config.resultCode;\r\n if (config.value != undefined)\r\n this.value = config.value;\r\n if (config.logMessages != undefined)\r\n this.logMessages = config.logMessages;\r\n if (config.errors != undefined)\r\n this.errors = config.errors;\r\n }\r\n\r\n // at this point we're not taking advantage of multiple error messages, so this is a helper method to get\r\n // the only error message. If we support multiple errors in the future, we should do this differently\r\n // (at the very least rename this to getFirstErrorMessage() or something like that).\r\n getErrorMessage(): string {\r\n if (!this.isSuccessful)\r\n return (this.errors.length > 0) ? this.errors[0] : this.resultCode;\r\n return '';\r\n }\r\n}\r\n\r\nexport interface IApiResponse {\r\n isSuccessful: boolean;\r\n resultCode?: string | '';\r\n value?: any;\r\n logMessages?: string[];\r\n errors?: string[];\r\n}\r\n","export { PaymentItemInitialEnteredAmount } from './payment-item-initial-amount';\r\nexport { PaymentItemType } from './payment-item-type';\r\nexport { TransactionBalancePaymentType } from './transaction-balance-payment-type';\r\n","export enum PaymentItemInitialEnteredAmount {\r\n\taccountBalance,\r\n\tpendingBalance\r\n}\r\n","export enum PaymentItemType {\r\n NotSet = 0,\r\n Invoice = 1,\r\n Account = 2\r\n}\r\n","export enum TransactionBalancePaymentType {\r\n\tNotSet = 0,\r\n\tFullPayment = 1,\r\n\tShortPayment = 2, \r\n\tOverPayment = 3\r\n}\r\n","import { PaymentItemType } from \"./enums/payment-item-type\";\r\nimport { PaymentItem } from \"./payment-item\";\r\n\r\nexport class InvoicePaymentItem extends PaymentItem {\r\n invoiceNumber: string;\r\n invoiceDate: string;\r\n\r\n constructor() {\r\n super();\r\n this.itemType = PaymentItemType.Invoice;\r\n }\r\n}","import { PaymentItemType } from './enums/payment-item-type';\r\nimport { TransactionBalancePaymentType } from './enums/transaction-balance-payment-type';\r\nimport { PaymentLimitSettings } from './payment-limit-settings';\r\n\r\nexport class PaymentItem {\r\n\titemType: PaymentItemType = PaymentItemType.NotSet;\r\n\titemKey: number;\r\n\tpaymentItemId: string;\r\n\tisSelected: boolean;\r\n\tmerchantKey: number;\r\n\tinitialAmount: number;\r\n\tenteredAmount: string;\r\n\tpaymentBalanceType: TransactionBalancePaymentType = TransactionBalancePaymentType.NotSet;\r\n\tcustomerAccountReferenceId: string;\r\n\tcustomerAccountName: string;\r\n\tcontactName: string;\r\n\tdueDate: string;\r\n\tpaymentLimitSettings: PaymentLimitSettings = new PaymentLimitSettings();\r\n\tbucketDisplayName: string;\r\n\tportfolioKey: number;\r\n\tdisabled: boolean;\r\n\tareFeesEnabled: boolean;\r\n}","export class PaymentItemDiscountBalanceRange {\r\n\tmin: number;\r\n\tmax: number;\r\n\tpayInFullDiscount: number | null;\r\n}","import { PaymentItemType, PaymentItemInitialEnteredAmount } from './enums';\r\n\r\nexport class PaymentItemTableConfiguration {\r\n\titemType: PaymentItemType = PaymentItemType.NotSet;\r\n\tinitialAmountType: PaymentItemInitialEnteredAmount = PaymentItemInitialEnteredAmount.accountBalance;\r\n\tenableItemSelection: boolean = true;\r\n\tselectFirstItemUponLoad: boolean = false;\r\n\tisPaymentAmountEditable: boolean = false;\r\n\tisPayInFull: boolean;\r\n\tisPayOffEarly: boolean;\r\n\tuseMultiselect: boolean = false;\r\n\tshowSubtotal: boolean = false;\r\n\tshowShortPayReason: object = {};\r\n\r\n\t// properties for hiding/showing columns\r\n\tonlyShowSelected: boolean = false;\r\n\tshowDueDate: boolean = true;\r\n\tshowStatementLink: boolean = true;\r\n\tshowPaymentAmount: boolean = false;\r\n\tshowInitialAmount: boolean = true;\r\n\tshowBucket: boolean = false;\r\n\r\n\t// custom label text\r\n\tpaymentAmountLabel: string;\r\n\r\n\tisGuarantorBillingEnabled: boolean;\r\n\r\n}\r\n","export class PaymentLimitSettings {\r\n\tportfolioKey: number = -1;\r\n\tallowShortPay: boolean = true;\r\n\trequireShortPayReason: boolean = false;\r\n\tenableShortPayUserComment: boolean = false;\r\n\tallowOverPay: boolean = false;\r\n\tenableOverPayWarningMessage: boolean = false;\r\n\tshortPayReasons: string[] = [];\r\n\tselectedShortPayReason: number = -1;\r\n shortPayComment: string = '';\r\n minimumPaymentAmount: number = 0 || null;\r\n maximumPaymentAmount: number = 0 || null;\r\n enableMinimumPaymentDueOnAccount: boolean = false;\r\n}","export class ServiceResponse implements IServiceResponse {\r\n isSuccessful: boolean;\r\n resultMessage: string;\r\n value: any;\r\n\r\n constructor(config: IServiceResponse) {\r\n this.isSuccessful = config.isSuccessful;\r\n this.resultMessage = config.resultMessage;\r\n this.value = config.value;\r\n }\r\n}\r\n\r\nexport interface IServiceResponse {\r\n isSuccessful: boolean;\r\n resultMessage: string | '';\r\n value: any;\r\n}\r\n","//\r\n// ***** DO NOT INSTANTIATE THIS CLASS DIRECTLY *****\r\n//\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { ServiceResponse } from '../models/service-response';\r\nimport { Logger } from './logger';\r\nimport { JsonSerializer } from '../helpers/json-serializer';\r\n\r\n@autoinject\r\nexport class BaseService {\r\n\tconstructor(protected logger: Logger, protected serializer: JsonSerializer) {\r\n\t}\r\n\r\n\tprotected success(successMessage: string = '', value: any = null): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tresolve(new ServiceResponse({ isSuccessful: true, resultMessage: successMessage, value: value }));\r\n\t\t});\r\n\t}\r\n\r\n\tprotected error(errorMessage: string = ''): Promise {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tresolve(new ServiceResponse({ isSuccessful: false, resultMessage: errorMessage, value: null }));\r\n\t\t});\r\n\t}\r\n\r\n\tprotected setInStorage(key: string, value: any): void {\r\n\t\tlet storageKey: string = this.serviceName + key;\r\n\t\tsessionStorage.setItem(storageKey, this.serializer.serialize(value));\r\n\t}\r\n\r\n\tprotected getFromStorage(key: string, type: any): T {\r\n\t\tlet storageKey: string = this.serviceName + key;\r\n\t\tlet state = sessionStorage.getItem(storageKey);\r\n\t\tif (state) {\r\n\t\t\treturn this.serializer.deserialize(type, sessionStorage.getItem(storageKey));\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// prefix the key with the service name when persisting data so if multiple services want\r\n\t// to store a variable with the same key, there won't be any collisions\r\n\tprivate get serviceName(): string {\r\n\t\treturn this.constructor.name;\r\n\t}\r\n}\r\n","export class Logger {\r\n public logLevel: LogLevel;\r\n\r\n constructor() {\r\n this.logLevel = LogLevel.Info;\r\n }\r\n\r\n info(message: string, exception: Error = null) {\r\n if (this.logLevel != LogLevel.Info)\r\n return;\r\n \r\n if (exception) {\r\n console.log(`Info: ${message}. ${exception.message}`);\r\n } else {\r\n console.log(`Info: ${message}.`);\r\n }\r\n }\r\n \r\n warn(message: string, exception: Error = null) {\r\n if (this.logLevel != LogLevel.Warn && this.logLevel != LogLevel.Info)\r\n return;\r\n\r\n if (exception) {\r\n console.log(`Warning: ${message}. ${exception.message}`);\r\n } else {\r\n console.log(`Warning: ${message}.`);\r\n }\r\n }\r\n\r\n error(message: string, exception: Error = null) {\r\n if (this.logLevel != LogLevel.Error && this.logLevel != LogLevel.Warn && this.logLevel != LogLevel.Info)\r\n return;\r\n\r\n if (exception) {\r\n console.log(`Error: ${message}. ${exception.message}`);\r\n } else {\r\n console.log(`Error: ${message}.`);\r\n }\r\n }\r\n}\r\n\r\nexport enum LogLevel {\r\n Info = 0,\r\n Warn = 1,\r\n Error = 2\r\n}\r\n","import { HttpClient } from \"aurelia-fetch-client\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { ApiResponse } from \"../models/api-response\";\r\nimport { Logger } from \"../services/logger\";\r\n\r\n@autoinject\r\nexport class RestServiceClient {\r\n private apiUrl: string;\r\n jwtToken: string;\r\n\r\n constructor(private httpClient: HttpClient, private logger: Logger) {\r\n const self = this;\r\n this.logger = logger;\r\n this.httpClient = httpClient;\r\n this.apiUrl = this.getApiAddress();\r\n\r\n httpClient.configure(config => config\r\n .withBaseUrl(this.apiUrl)\r\n .withDefaults({\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n })\r\n .withInterceptor({\r\n request(request) {\r\n console.log(`Requesting ${request.method} ${request.url}`);\r\n\r\n // add jwt bearer token in request if it exists locally\r\n if (self.jwtToken) {\r\n if (request.headers.has('Authorization'))\r\n request.headers.delete('Authorization');\r\n\r\n request.headers.append('Authorization', `Bearer ${self.jwtToken}`);\r\n }\r\n\r\n return request;\r\n },\r\n response(response) {\r\n console.log(`Received ${response.status} ${response.url}`);\r\n return response;\r\n }\r\n })\r\n );\r\n }\r\n\r\n getApiAddress() {\r\n return `${window.location.protocol}//${window.location.hostname}/HostedPaymentFormApi/`;\r\n }\r\n \r\n get(url: string): Promise {\r\n this.logger.info(`[RestServiceClient] GET. Url: ${url}`);\r\n\r\n return new Promise((resolve) => {\r\n return this.httpClient\r\n .fetch(url)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n\t\t\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\t\t\terrors: ['API Get Failed.']\r\n\t\t\t\t\t\t\t}));\r\n });\r\n })\r\n .catch(error => {\r\n\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\terrors: ['API Get Failed.']\r\n\t\t\t\t\t}));\r\n });\r\n });\r\n }\r\n\r\n post(url: string, content: any): Promise {\r\n let request = JSON.stringify(content);\r\n\r\n let init = {\r\n method: 'post',\r\n body: request\r\n };\r\n\r\n this.logger.info(`[RestServiceClient] POST. Url: ${url}. Body: ${request}`);\r\n\r\n return new Promise((resolve) => {\r\n return this.httpClient\r\n .fetch(url, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n\t\t\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\t\t\terrors: ['API Post Failed.']\r\n\t\t\t\t\t\t\t}));\r\n });\r\n })\r\n .catch(error => {\r\n\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\terrors: ['API Post Failed.']\r\n\t\t\t\t\t}));\r\n });\r\n });\r\n }\r\n\r\n put(url: string, content: any): Promise {\r\n let request = JSON.stringify(content);\r\n\r\n let init = {\r\n method: 'put',\r\n body: request\r\n };\r\n \r\n this.logger.info(`[RestServiceClient] PUT. Url: ${url}. Body: ${request}`);\r\n\r\n return new Promise((resolve) => {\r\n this.httpClient\r\n .fetch(url, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n\t\t\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\t\t\terrors: ['API Put Failed.']\r\n\t\t\t\t\t\t\t}));\r\n });\r\n })\r\n .catch(error => {\r\n\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\terrors: ['API Put Failed.']\r\n\t\t\t\t\t}));\r\n });\r\n }); \r\n }\r\n\r\n delete(url: string, content: any): Promise {\r\n let request = JSON.stringify(content);\r\n\r\n let init = {\r\n method: 'delete',\r\n body: request\r\n };\r\n\r\n this.logger.info(`[RestServiceClient] DELETE. Url: ${url}. Body: ${request}`);\r\n\r\n return new Promise((resolve) => {\r\n return this.httpClient\r\n .fetch(url, init)\r\n .then(response => {\r\n response.json()\r\n .then((responseJson: ApiResponse) => {\r\n resolve(this.createApiResponseFromHttpResponse(responseJson));\r\n })\r\n .catch(error => {\r\n\t\t\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\t\t\terrors: ['API Delete Failed.']\r\n\t\t\t\t\t\t\t}));\r\n });\r\n })\r\n .catch(error => {\r\n\t\t\t\t\tthis.logger.error(error.Message, error);\r\n\t\t\t\t\tresolve(new ApiResponse({\r\n\t\t\t\t\t\tisSuccessful: false,\r\n\t\t\t\t\t\terrors: ['API Delete Failed.']\r\n\t\t\t\t\t}));\r\n });\r\n });\r\n }\r\n\r\n // explicitly map the http json response into an api response in order to overcome \r\n // serialization issues that come with implicit serialization (e.g. methods undefined)\r\n createApiResponseFromHttpResponse(responseJson: ApiResponse): ApiResponse {\r\n return new ApiResponse({\r\n isSuccessful: responseJson.isSuccessful,\r\n resultCode: responseJson.resultCode,\r\n value: responseJson.value,\r\n logMessages: responseJson.logMessages,\r\n errors: responseJson.errors\r\n });\r\n }\r\n}","const numeral: any = require('numeral');\r\n\r\nexport class CurrencyFormatValueConverter {\r\n\ttoView(value: any) {\r\n\t\treturn numeral(value).format('($0,0.00)');\r\n\t}\r\n}\r\n","import * as moment from 'moment';\r\n\r\nexport class DateFormatValueConverter {\r\n\ttoView(value: any) {\r\n\t\tlet date: string = '';\r\n\t\tdate = moment(value).format('MM/DD/YYYY');\r\n\r\n\t\tif (date === 'Invalid date')\r\n\t\t\treturn '';\r\n\r\n\t\treturn date;\r\n\t}\r\n}\r\n","import 'aurelia-polyfills';\r\n\r\nconst cache = {};\r\n\r\nfunction importAll (r) {\r\n r.keys().forEach(key => cache[key] = r(key));\r\n}\r\n\r\n//importAll(require.context('.', true, /spec\\.ts$/));\r\nimportAll(require.context('.', true, /\\.ts$/));\r\n// At build-time cache will be populated with all required modules.\r\n"],"sourceRoot":""}