@hmcts/ccpay-web-component 5.2.13-beta01 → 6.0.0-beta-ccs10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/hmcts-ccpay-web-component.mjs +5 -0
- package/esm2022/lib/components/add-remission/add-remission.component.mjs +1189 -0
- package/esm2022/lib/components/allocate-payments/allocate-payments.component.mjs +407 -0
- package/esm2022/lib/components/card-details/card-details.component.mjs +32 -0
- package/esm2022/lib/components/case-transactions/case-transactions.component.mjs +798 -0
- package/esm2022/lib/components/contact-details/contact-details.component.mjs +338 -0
- package/esm2022/lib/components/error-banner/error-banner.component.mjs +18 -0
- package/esm2022/lib/components/fee-summary/fee-summary.component.mjs +247 -0
- package/esm2022/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.mjs +195 -0
- package/esm2022/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.mjs +255 -0
- package/esm2022/lib/components/notification-preview/notification-preview.component.mjs +79 -0
- package/esm2022/lib/components/page-not-found.component.mjs +17 -0
- package/esm2022/lib/components/payment-list/payment-list.component.mjs +36 -0
- package/esm2022/lib/components/payment-view/payment-view.component.mjs +416 -0
- package/esm2022/lib/components/pba-details/pba-details.component.mjs +18 -0
- package/esm2022/lib/components/pba-payment/pba-payment.component.mjs +151 -0
- package/esm2022/lib/components/process-refund/process-refund.component.mjs +417 -0
- package/esm2022/lib/components/processed-payments/processed-payments.component.mjs +37 -0
- package/esm2022/lib/components/refund-list/refund-list.component.mjs +73 -0
- package/esm2022/lib/components/refund-status/refund-status.component.mjs +453 -0
- package/esm2022/lib/components/reports/reports.component.mjs +291 -0
- package/esm2022/lib/components/service-request/service-request.component.mjs +456 -0
- package/esm2022/lib/components/status-history/status-history.component.mjs +33 -0
- package/esm2022/lib/components/table/table.component.mjs +128 -0
- package/esm2022/lib/components/unprocessed-payments/unprocessed-payments.component.mjs +236 -0
- package/esm2022/lib/interfaces/AddRemissionRequest.mjs +17 -0
- package/esm2022/lib/interfaces/AddRetroRemissionRequest.mjs +9 -0
- package/esm2022/lib/interfaces/AllocatePaymentRequest.mjs +41 -0
- package/esm2022/lib/interfaces/IAllocationPaymentsRequest.mjs +20 -0
- package/esm2022/lib/interfaces/IPaymentStatus.mjs +12 -0
- package/esm2022/lib/interfaces/IPutNotificationRequest.mjs +13 -0
- package/esm2022/lib/interfaces/IResubmitRefundRequest.mjs +13 -0
- package/esm2022/lib/interfaces/IserviceRequestCardPayment.mjs +11 -0
- package/esm2022/lib/interfaces/IserviceRequestPbaPayment.mjs +15 -0
- package/esm2022/lib/interfaces/IssueRefundRequest.mjs +11 -0
- package/esm2022/lib/interfaces/NotificationPreviewRequest.mjs +45 -0
- package/esm2022/lib/interfaces/PayhubAntennaRequest.mjs +12 -0
- package/esm2022/lib/interfaces/PaymentToPayhubRequest.mjs +15 -0
- package/esm2022/lib/interfaces/PostIssueRefundRetroRemission.mjs +9 -0
- package/esm2022/lib/interfaces/PostRefundRetroRemission.mjs +18 -0
- package/esm2022/lib/interfaces/RefundsRequest.mjs +9 -0
- package/esm2022/lib/interfaces/UnidentifiedPaymentsRequest.mjs +16 -0
- package/esm2022/lib/interfaces/UnsolicitedPaymentsRequest.mjs +22 -0
- package/esm2022/lib/payment-lib.component.mjs +288 -0
- package/esm2022/lib/payment-lib.module.mjs +187 -0
- package/esm2022/lib/payment-lib.service.mjs +49 -0
- package/esm2022/lib/pipes/capitalize.pipe.mjs +18 -0
- package/esm2022/lib/pipes/ccd-hyphens.pipe.mjs +22 -0
- package/esm2022/lib/pipes/key-value.pipe.mjs +23 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
- package/esm2022/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.mjs +87 -0
- package/esm2022/lib/services/card-details/card-details.service.mjs +39 -0
- package/esm2022/lib/services/case-transactions/case-transactions.service.mjs +39 -0
- package/esm2022/lib/services/notification/notification.service.mjs +70 -0
- package/esm2022/lib/services/orderslist.service.mjs +154 -0
- package/esm2022/lib/services/payment-list/payment-list.service.mjs +40 -0
- package/esm2022/lib/services/payment-view/payment-view.service.mjs +152 -0
- package/esm2022/lib/services/refunds/refunds.service.mjs +117 -0
- package/{esm2015/lib/services/shared/error-handler.service.js → esm2022/lib/services/shared/error-handler.service.mjs} +9 -8
- package/esm2022/lib/services/shared/httpclient/webcomponent.http.client.mjs +64 -0
- package/esm2022/lib/services/shared/logger/console-logger.service.mjs +43 -0
- package/esm2022/lib/services/shared/logger/logger.service.mjs +23 -0
- package/esm2022/lib/services/status-history/status-history.service.mjs +41 -0
- package/esm2022/lib/services/xl-file/xl-file.service.mjs +153 -0
- package/fesm2022/hmcts-ccpay-web-component.mjs +7874 -0
- package/fesm2022/hmcts-ccpay-web-component.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/add-remission/add-remission.component.d.ts +5 -3
- package/lib/components/allocate-payments/allocate-payments.component.d.ts +5 -7
- package/lib/components/card-details/card-details.component.d.ts +3 -1
- package/lib/components/case-transactions/case-transactions.component.d.ts +4 -2
- package/lib/components/contact-details/contact-details.component.d.ts +4 -2
- package/lib/components/error-banner/error-banner.component.d.ts +3 -1
- package/lib/components/fee-summary/fee-summary.component.d.ts +4 -2
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts +4 -2
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts +4 -2
- package/lib/components/notification-preview/notification-preview.component.d.ts +4 -6
- package/lib/components/page-not-found.component.d.ts +3 -1
- package/lib/components/payment-list/payment-list.component.d.ts +4 -2
- package/lib/components/payment-view/payment-view.component.d.ts +4 -2
- package/lib/components/pba-details/pba-details.component.d.ts +3 -1
- package/lib/components/pba-payment/pba-payment.component.d.ts +4 -2
- package/lib/components/process-refund/process-refund.component.d.ts +4 -2
- package/lib/components/processed-payments/processed-payments.component.d.ts +3 -1
- package/lib/components/refund-list/refund-list.component.d.ts +3 -1
- package/lib/components/refund-status/refund-status.component.d.ts +4 -2
- package/lib/components/reports/reports.component.d.ts +4 -6
- package/lib/components/service-request/service-request.component.d.ts +4 -2
- package/lib/components/status-history/status-history.component.d.ts +4 -2
- package/lib/components/table/table.component.d.ts +4 -2
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +4 -2
- package/lib/interfaces/AddRemissionRequest.d.ts +0 -1
- package/lib/interfaces/AddRetroRemissionRequest.d.ts +0 -1
- package/lib/interfaces/AllocatePaymentRequest.d.ts +0 -1
- package/lib/interfaces/IAllocationPaymentsRequest.d.ts +0 -1
- package/lib/interfaces/IBSPayments.d.ts +0 -1
- package/lib/interfaces/ICardDetails.d.ts +0 -1
- package/lib/interfaces/IFee.d.ts +0 -1
- package/lib/interfaces/INotificationPreview.d.ts +0 -1
- package/lib/interfaces/IOrderReferenceFee.d.ts +0 -1
- package/lib/interfaces/IPatchRefundAction.d.ts +0 -1
- package/lib/interfaces/IPayment.d.ts +0 -1
- package/lib/interfaces/IPaymentFailure.d.ts +0 -1
- package/lib/interfaces/IPaymentGroup.d.ts +0 -1
- package/lib/interfaces/IPaymentStatus.d.ts +0 -1
- package/lib/interfaces/IPaymentView.d.ts +0 -1
- package/lib/interfaces/IPayments.d.ts +0 -1
- package/lib/interfaces/IPutNotificationRequest.d.ts +0 -1
- package/lib/interfaces/IRefundAction.d.ts +0 -1
- package/lib/interfaces/IRefundContactDetails.d.ts +0 -1
- package/lib/interfaces/IRefundFee.d.ts +0 -1
- package/lib/interfaces/IRefundList.d.ts +0 -1
- package/lib/interfaces/IRefundReasons.d.ts +0 -1
- package/lib/interfaces/IRefundRejectReason.d.ts +0 -1
- package/lib/interfaces/IRefundStatus.d.ts +0 -1
- package/lib/interfaces/IRefundStatusHistory.d.ts +0 -1
- package/lib/interfaces/IRefundsNotifications.d.ts +0 -1
- package/lib/interfaces/IRemission.d.ts +0 -1
- package/lib/interfaces/IResubmitRefundRequest.d.ts +0 -1
- package/lib/interfaces/IStatusHistories.d.ts +0 -1
- package/lib/interfaces/IStatusHistory.d.ts +0 -1
- package/lib/interfaces/IserviceRequestCardPayment.d.ts +0 -1
- package/lib/interfaces/IserviceRequestPbaPayment.d.ts +0 -1
- package/lib/interfaces/IssueRefundRequest.d.ts +0 -1
- package/lib/interfaces/NotificationPreviewRequest.d.ts +0 -1
- package/lib/interfaces/PayhubAntennaRequest.d.ts +0 -1
- package/lib/interfaces/PaymentToPayhubRequest.d.ts +0 -1
- package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +0 -1
- package/lib/interfaces/PostRefundRetroRemission.d.ts +0 -1
- package/lib/interfaces/RefundsRequest.d.ts +0 -1
- package/lib/interfaces/UnidentifiedPaymentsRequest.d.ts +0 -1
- package/lib/interfaces/UnsolicitedPaymentsRequest.d.ts +0 -1
- package/lib/payment-lib.component.d.ts +3 -1
- package/lib/payment-lib.module.d.ts +40 -1
- package/lib/payment-lib.service.d.ts +3 -1
- package/lib/pipes/capitalize.pipe.d.ts +3 -1
- package/lib/pipes/ccd-hyphens.pipe.d.ts +3 -1
- package/lib/pipes/key-value.pipe.d.ts +3 -1
- package/lib/pipes/sanitize-html.pipe.d.ts +3 -1
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts +4 -2
- package/lib/services/card-details/card-details.service.d.ts +3 -1
- package/lib/services/case-transactions/case-transactions.service.d.ts +4 -2
- package/lib/services/notification/notification.service.d.ts +4 -2
- package/lib/services/orderslist.service.d.ts +3 -1
- package/lib/services/payment-list/payment-list.service.d.ts +3 -1
- package/lib/services/payment-view/payment-view.service.d.ts +3 -1
- package/lib/services/refunds/refunds.service.d.ts +4 -2
- package/lib/services/shared/error-handler.service.d.ts +3 -1
- package/lib/services/shared/httpclient/webcomponent.http.client.d.ts +3 -1
- package/lib/services/shared/logger/console-logger.service.d.ts +3 -1
- package/lib/services/shared/logger/logger.service.d.ts +3 -1
- package/lib/services/status-history/status-history.service.d.ts +3 -1
- package/lib/services/xl-file/xl-file.service.d.ts +3 -1
- package/package.json +17 -11
- package/public_api.d.ts +0 -1
- package/bundles/hmcts-ccpay-web-component.umd.js +0 -7550
- package/bundles/hmcts-ccpay-web-component.umd.js.map +0 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js +0 -2
- package/bundles/hmcts-ccpay-web-component.umd.min.js.map +0 -1
- package/esm2015/hmcts-ccpay-web-component.js +0 -47
- package/esm2015/lib/components/add-remission/add-remission.component.js +0 -1045
- package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +0 -381
- package/esm2015/lib/components/card-details/card-details.component.js +0 -28
- package/esm2015/lib/components/case-transactions/case-transactions.component.js +0 -735
- package/esm2015/lib/components/contact-details/contact-details.component.js +0 -315
- package/esm2015/lib/components/error-banner/error-banner.component.js +0 -18
- package/esm2015/lib/components/fee-summary/fee-summary.component.js +0 -223
- package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +0 -184
- package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +0 -238
- package/esm2015/lib/components/notification-preview/notification-preview.component.js +0 -59
- package/esm2015/lib/components/page-not-found.component.js +0 -11
- package/esm2015/lib/components/payment-list/payment-list.component.js +0 -31
- package/esm2015/lib/components/payment-view/payment-view.component.js +0 -335
- package/esm2015/lib/components/pba-details/pba-details.component.js +0 -18
- package/esm2015/lib/components/pba-payment/pba-payment.component.js +0 -144
- package/esm2015/lib/components/process-refund/process-refund.component.js +0 -398
- package/esm2015/lib/components/processed-payments/processed-payments.component.js +0 -34
- package/esm2015/lib/components/refund-list/refund-list.component.js +0 -59
- package/esm2015/lib/components/refund-status/refund-status.component.js +0 -399
- package/esm2015/lib/components/reports/reports.component.js +0 -280
- package/esm2015/lib/components/service-request/service-request.component.js +0 -345
- package/esm2015/lib/components/status-history/status-history.component.js +0 -28
- package/esm2015/lib/components/table/table.component.js +0 -99
- package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +0 -199
- package/esm2015/lib/interfaces/AddRemissionRequest.js +0 -10
- package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +0 -7
- package/esm2015/lib/interfaces/AllocatePaymentRequest.js +0 -27
- package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +0 -14
- package/esm2015/lib/interfaces/IPaymentStatus.js +0 -3
- package/esm2015/lib/interfaces/IPutNotificationRequest.js +0 -11
- package/esm2015/lib/interfaces/IResubmitRefundRequest.js +0 -9
- package/esm2015/lib/interfaces/IserviceRequestCardPayment.js +0 -8
- package/esm2015/lib/interfaces/IserviceRequestPbaPayment.js +0 -10
- package/esm2015/lib/interfaces/IssueRefundRequest.js +0 -8
- package/esm2015/lib/interfaces/NotificationPreviewRequest.js +0 -37
- package/esm2015/lib/interfaces/PayhubAntennaRequest.js +0 -9
- package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +0 -12
- package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +0 -7
- package/esm2015/lib/interfaces/PostRefundRetroRemission.js +0 -11
- package/esm2015/lib/interfaces/RefundsRequest.js +0 -7
- package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +0 -12
- package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +0 -15
- package/esm2015/lib/payment-lib.component.js +0 -132
- package/esm2015/lib/payment-lib.module.js +0 -99
- package/esm2015/lib/payment-lib.service.js +0 -43
- package/esm2015/lib/pipes/capitalize.pipe.js +0 -14
- package/esm2015/lib/pipes/ccd-hyphens.pipe.js +0 -18
- package/esm2015/lib/pipes/key-value.pipe.js +0 -20
- package/esm2015/lib/pipes/sanitize-html.pipe.js +0 -17
- package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +0 -87
- package/esm2015/lib/services/card-details/card-details.service.js +0 -39
- package/esm2015/lib/services/case-transactions/case-transactions.service.js +0 -39
- package/esm2015/lib/services/notification/notification.service.js +0 -70
- package/esm2015/lib/services/orderslist.service.js +0 -154
- package/esm2015/lib/services/payment-list/payment-list.service.js +0 -39
- package/esm2015/lib/services/payment-view/payment-view.service.js +0 -150
- package/esm2015/lib/services/refunds/refunds.service.js +0 -117
- package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +0 -61
- package/esm2015/lib/services/shared/logger/console-logger.service.js +0 -43
- package/esm2015/lib/services/shared/logger/logger.service.js +0 -17
- package/esm2015/lib/services/status-history/status-history.service.js +0 -41
- package/esm2015/lib/services/xl-file/xl-file.service.js +0 -151
- package/fesm2015/hmcts-ccpay-web-component.js +0 -6980
- package/fesm2015/hmcts-ccpay-web-component.js.map +0 -1
- package/hmcts-ccpay-web-component.d.ts +0 -47
- package/hmcts-ccpay-web-component.d.ts.map +0 -1
- package/hmcts-ccpay-web-component.metadata.json +0 -1
- package/lib/components/add-remission/add-remission.component.d.ts.map +0 -1
- package/lib/components/add-remission/add-remission.component.ngfactory.d.ts.map +0 -1
- package/lib/components/add-remission/add-remission.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/allocate-payments/allocate-payments.component.d.ts.map +0 -1
- package/lib/components/allocate-payments/allocate-payments.component.ngfactory.d.ts.map +0 -1
- package/lib/components/allocate-payments/allocate-payments.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/card-details/card-details.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/card-details/card-details.component.d.ts.map +0 -1
- package/lib/components/card-details/card-details.component.ngfactory.d.ts.map +0 -1
- package/lib/components/case-transactions/case-transactions.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/case-transactions/case-transactions.component.d.ts.map +0 -1
- package/lib/components/case-transactions/case-transactions.component.ngfactory.d.ts.map +0 -1
- package/lib/components/contact-details/contact-details.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/contact-details/contact-details.component.d.ts.map +0 -1
- package/lib/components/contact-details/contact-details.component.ngfactory.d.ts.map +0 -1
- package/lib/components/error-banner/error-banner.component.d.ts.map +0 -1
- package/lib/components/error-banner/error-banner.component.ngfactory.d.ts.map +0 -1
- package/lib/components/error-banner/error-banner.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/fee-summary/fee-summary.component.d.ts.map +0 -1
- package/lib/components/fee-summary/fee-summary.component.ngfactory.d.ts.map +0 -1
- package/lib/components/fee-summary/fee-summary.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts.map +0 -1
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.ngfactory.d.ts.map +0 -1
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts.map +0 -1
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.ngfactory.d.ts.map +0 -1
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/notification-preview/notification-preview.component.d.ts.map +0 -1
- package/lib/components/notification-preview/notification-preview.component.ngfactory.d.ts.map +0 -1
- package/lib/components/notification-preview/notification-preview.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/page-not-found.component.d.ts.map +0 -1
- package/lib/components/page-not-found.component.ngfactory.d.ts.map +0 -1
- package/lib/components/payment-list/payment-list.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/payment-list/payment-list.component.d.ts.map +0 -1
- package/lib/components/payment-list/payment-list.component.ngfactory.d.ts.map +0 -1
- package/lib/components/payment-view/payment-view.component.d.ts.map +0 -1
- package/lib/components/payment-view/payment-view.component.ngfactory.d.ts.map +0 -1
- package/lib/components/payment-view/payment-view.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/pba-details/pba-details.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/pba-details/pba-details.component.d.ts.map +0 -1
- package/lib/components/pba-details/pba-details.component.ngfactory.d.ts.map +0 -1
- package/lib/components/pba-payment/pba-payment.component.d.ts.map +0 -1
- package/lib/components/pba-payment/pba-payment.component.ngfactory.d.ts.map +0 -1
- package/lib/components/pba-payment/pba-payment.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/process-refund/process-refund.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/process-refund/process-refund.component.d.ts.map +0 -1
- package/lib/components/process-refund/process-refund.component.ngfactory.d.ts.map +0 -1
- package/lib/components/processed-payments/processed-payments.component.d.ts.map +0 -1
- package/lib/components/processed-payments/processed-payments.component.ngfactory.d.ts.map +0 -1
- package/lib/components/processed-payments/processed-payments.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/refund-list/refund-list.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/refund-list/refund-list.component.d.ts.map +0 -1
- package/lib/components/refund-list/refund-list.component.ngfactory.d.ts.map +0 -1
- package/lib/components/refund-status/refund-status.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/refund-status/refund-status.component.d.ts.map +0 -1
- package/lib/components/refund-status/refund-status.component.ngfactory.d.ts.map +0 -1
- package/lib/components/reports/reports.component.d.ts.map +0 -1
- package/lib/components/reports/reports.component.ngfactory.d.ts.map +0 -1
- package/lib/components/reports/reports.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/service-request/service-request.component.d.ts.map +0 -1
- package/lib/components/service-request/service-request.component.ngfactory.d.ts.map +0 -1
- package/lib/components/service-request/service-request.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/status-history/status-history.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/status-history/status-history.component.d.ts.map +0 -1
- package/lib/components/status-history/status-history.component.ngfactory.d.ts.map +0 -1
- package/lib/components/table/table.component.css.shim.ngstyle.d.ts.map +0 -1
- package/lib/components/table/table.component.d.ts.map +0 -1
- package/lib/components/table/table.component.ngfactory.d.ts.map +0 -1
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts.map +0 -1
- package/lib/components/unprocessed-payments/unprocessed-payments.component.ngfactory.d.ts.map +0 -1
- package/lib/components/unprocessed-payments/unprocessed-payments.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/lib/interfaces/AddRemissionRequest.d.ts.map +0 -1
- package/lib/interfaces/AddRetroRemissionRequest.d.ts.map +0 -1
- package/lib/interfaces/AllocatePaymentRequest.d.ts.map +0 -1
- package/lib/interfaces/IAllocationPaymentsRequest.d.ts.map +0 -1
- package/lib/interfaces/IBSPayments.d.ts.map +0 -1
- package/lib/interfaces/ICardDetails.d.ts.map +0 -1
- package/lib/interfaces/IFee.d.ts.map +0 -1
- package/lib/interfaces/INotificationPreview.d.ts.map +0 -1
- package/lib/interfaces/IOrderReferenceFee.d.ts.map +0 -1
- package/lib/interfaces/IPatchRefundAction.d.ts.map +0 -1
- package/lib/interfaces/IPayment.d.ts.map +0 -1
- package/lib/interfaces/IPaymentFailure.d.ts.map +0 -1
- package/lib/interfaces/IPaymentGroup.d.ts.map +0 -1
- package/lib/interfaces/IPaymentStatus.d.ts.map +0 -1
- package/lib/interfaces/IPaymentView.d.ts.map +0 -1
- package/lib/interfaces/IPayments.d.ts.map +0 -1
- package/lib/interfaces/IPutNotificationRequest.d.ts.map +0 -1
- package/lib/interfaces/IRefundAction.d.ts.map +0 -1
- package/lib/interfaces/IRefundContactDetails.d.ts.map +0 -1
- package/lib/interfaces/IRefundFee.d.ts.map +0 -1
- package/lib/interfaces/IRefundList.d.ts.map +0 -1
- package/lib/interfaces/IRefundReasons.d.ts.map +0 -1
- package/lib/interfaces/IRefundRejectReason.d.ts.map +0 -1
- package/lib/interfaces/IRefundStatus.d.ts.map +0 -1
- package/lib/interfaces/IRefundStatusHistory.d.ts.map +0 -1
- package/lib/interfaces/IRefundsNotifications.d.ts.map +0 -1
- package/lib/interfaces/IRemission.d.ts.map +0 -1
- package/lib/interfaces/IResubmitRefundRequest.d.ts.map +0 -1
- package/lib/interfaces/IStatusHistories.d.ts.map +0 -1
- package/lib/interfaces/IStatusHistory.d.ts.map +0 -1
- package/lib/interfaces/IserviceRequestCardPayment.d.ts.map +0 -1
- package/lib/interfaces/IserviceRequestPbaPayment.d.ts.map +0 -1
- package/lib/interfaces/IssueRefundRequest.d.ts.map +0 -1
- package/lib/interfaces/NotificationPreviewRequest.d.ts.map +0 -1
- package/lib/interfaces/PayhubAntennaRequest.d.ts.map +0 -1
- package/lib/interfaces/PaymentToPayhubRequest.d.ts.map +0 -1
- package/lib/interfaces/PostIssueRefundRetroRemission.d.ts.map +0 -1
- package/lib/interfaces/PostRefundRetroRemission.d.ts.map +0 -1
- package/lib/interfaces/RefundsRequest.d.ts.map +0 -1
- package/lib/interfaces/UnidentifiedPaymentsRequest.d.ts.map +0 -1
- package/lib/interfaces/UnsolicitedPaymentsRequest.d.ts.map +0 -1
- package/lib/payment-lib.component.d.ts.map +0 -1
- package/lib/payment-lib.component.ngfactory.d.ts.map +0 -1
- package/lib/payment-lib.module.d.ts.map +0 -1
- package/lib/payment-lib.module.ngfactory.d.ts.map +0 -1
- package/lib/payment-lib.service.d.ts.map +0 -1
- package/lib/payment-lib.service.ngfactory.d.ts.map +0 -1
- package/lib/pipes/capitalize.pipe.d.ts.map +0 -1
- package/lib/pipes/capitalize.pipe.ngfactory.d.ts.map +0 -1
- package/lib/pipes/ccd-hyphens.pipe.d.ts.map +0 -1
- package/lib/pipes/ccd-hyphens.pipe.ngfactory.d.ts.map +0 -1
- package/lib/pipes/key-value.pipe.d.ts.map +0 -1
- package/lib/pipes/key-value.pipe.ngfactory.d.ts.map +0 -1
- package/lib/pipes/sanitize-html.pipe.d.ts.map +0 -1
- package/lib/pipes/sanitize-html.pipe.ngfactory.d.ts.map +0 -1
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts.map +0 -1
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.ngfactory.d.ts.map +0 -1
- package/lib/services/card-details/card-details.service.d.ts.map +0 -1
- package/lib/services/card-details/card-details.service.ngfactory.d.ts.map +0 -1
- package/lib/services/case-transactions/case-transactions.service.d.ts.map +0 -1
- package/lib/services/case-transactions/case-transactions.service.ngfactory.d.ts.map +0 -1
- package/lib/services/notification/notification.service.d.ts.map +0 -1
- package/lib/services/notification/notification.service.ngfactory.d.ts.map +0 -1
- package/lib/services/orderslist.service.d.ts.map +0 -1
- package/lib/services/orderslist.service.ngfactory.d.ts.map +0 -1
- package/lib/services/payment-list/payment-list.service.d.ts.map +0 -1
- package/lib/services/payment-list/payment-list.service.ngfactory.d.ts.map +0 -1
- package/lib/services/payment-view/payment-view.service.d.ts.map +0 -1
- package/lib/services/payment-view/payment-view.service.ngfactory.d.ts.map +0 -1
- package/lib/services/refunds/refunds.service.d.ts.map +0 -1
- package/lib/services/refunds/refunds.service.ngfactory.d.ts.map +0 -1
- package/lib/services/shared/error-handler.service.d.ts.map +0 -1
- package/lib/services/shared/error-handler.service.ngfactory.d.ts.map +0 -1
- package/lib/services/shared/httpclient/webcomponent.http.client.d.ts.map +0 -1
- package/lib/services/shared/httpclient/webcomponent.http.client.ngfactory.d.ts.map +0 -1
- package/lib/services/shared/logger/console-logger.service.d.ts.map +0 -1
- package/lib/services/shared/logger/console-logger.service.ngfactory.d.ts.map +0 -1
- package/lib/services/shared/logger/logger.service.d.ts.map +0 -1
- package/lib/services/shared/logger/logger.service.ngfactory.d.ts.map +0 -1
- package/lib/services/status-history/status-history.service.d.ts.map +0 -1
- package/lib/services/status-history/status-history.service.ngfactory.d.ts.map +0 -1
- package/lib/services/xl-file/xl-file.service.d.ts.map +0 -1
- package/lib/services/xl-file/xl-file.service.ngfactory.d.ts.map +0 -1
- package/public_api.d.ts.map +0 -1
- /package/{esm2015/lib/interfaces/IBSPayments.js → esm2022/lib/interfaces/IBSPayments.mjs} +0 -0
- /package/{esm2015/lib/interfaces/ICardDetails.js → esm2022/lib/interfaces/ICardDetails.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IFee.js → esm2022/lib/interfaces/IFee.mjs} +0 -0
- /package/{esm2015/lib/interfaces/INotificationPreview.js → esm2022/lib/interfaces/INotificationPreview.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IOrderReferenceFee.js → esm2022/lib/interfaces/IOrderReferenceFee.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IPatchRefundAction.js → esm2022/lib/interfaces/IPatchRefundAction.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IPayment.js → esm2022/lib/interfaces/IPayment.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IPaymentFailure.js → esm2022/lib/interfaces/IPaymentFailure.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IPaymentGroup.js → esm2022/lib/interfaces/IPaymentGroup.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IPaymentView.js → esm2022/lib/interfaces/IPaymentView.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IPayments.js → esm2022/lib/interfaces/IPayments.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundAction.js → esm2022/lib/interfaces/IRefundAction.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundContactDetails.js → esm2022/lib/interfaces/IRefundContactDetails.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundFee.js → esm2022/lib/interfaces/IRefundFee.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundList.js → esm2022/lib/interfaces/IRefundList.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundReasons.js → esm2022/lib/interfaces/IRefundReasons.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundRejectReason.js → esm2022/lib/interfaces/IRefundRejectReason.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundStatus.js → esm2022/lib/interfaces/IRefundStatus.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundStatusHistory.js → esm2022/lib/interfaces/IRefundStatusHistory.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRefundsNotifications.js → esm2022/lib/interfaces/IRefundsNotifications.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IRemission.js → esm2022/lib/interfaces/IRemission.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IStatusHistories.js → esm2022/lib/interfaces/IStatusHistories.mjs} +0 -0
- /package/{esm2015/lib/interfaces/IStatusHistory.js → esm2022/lib/interfaces/IStatusHistory.mjs} +0 -0
- /package/{esm2015/public_api.js → esm2022/public_api.mjs} +0 -0
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { RefundsService } from '../../services/refunds/refunds.service';
|
|
3
|
-
import { NotificationService } from '../../services/notification/notification.service';
|
|
4
|
-
import { FormBuilder, Validators, FormControl } from '@angular/forms';
|
|
5
|
-
import { OrderslistService } from '../../services/orderslist.service';
|
|
6
|
-
import { IPutNotificationRequest } from '../../interfaces/IPutNotificationRequest';
|
|
7
|
-
import { IResubmitRefundRequest } from '../../interfaces/IResubmitRefundRequest';
|
|
8
|
-
import { PaymentLibComponent } from '../../payment-lib.component';
|
|
9
|
-
import { PaymentViewService } from '../../services/payment-view/payment-view.service';
|
|
10
|
-
export class RefundStatusComponent {
|
|
11
|
-
constructor(formBuilder, refundService, notificationService, paymentLibComponent, OrderslistService, paymentViewService) {
|
|
12
|
-
this.formBuilder = formBuilder;
|
|
13
|
-
this.refundService = refundService;
|
|
14
|
-
this.notificationService = notificationService;
|
|
15
|
-
this.paymentLibComponent = paymentLibComponent;
|
|
16
|
-
this.OrderslistService = OrderslistService;
|
|
17
|
-
this.paymentViewService = paymentViewService;
|
|
18
|
-
this.LOGGEDINUSERROLES = [];
|
|
19
|
-
this.rejectedRefundList = [];
|
|
20
|
-
this.approvalStatus = 'Sent for approval';
|
|
21
|
-
this.rejectStatus = 'Update required';
|
|
22
|
-
this.errorMessage = null;
|
|
23
|
-
this.refundButtonState = '';
|
|
24
|
-
this.isAmountEmpty = false;
|
|
25
|
-
this.isReasonEmpty = false;
|
|
26
|
-
this.amountHasError = false;
|
|
27
|
-
this.isRemissionLessThanFeeError = false;
|
|
28
|
-
this.refundHasError = false;
|
|
29
|
-
this.refundReasons = [];
|
|
30
|
-
this.isResendOperationSuccess = false;
|
|
31
|
-
this.isEditDetailsClicked = false;
|
|
32
|
-
this.isEditAddressDeatilsClicked = false;
|
|
33
|
-
this.isRefundBtnDisabled = true;
|
|
34
|
-
this.isFromPayBubble = false;
|
|
35
|
-
this.isLastUpdatedByCurrentUser = true;
|
|
36
|
-
this.isProcessRefund = false;
|
|
37
|
-
this.notificationSentViewIndex = -1;
|
|
38
|
-
this.notificationPreview = false;
|
|
39
|
-
this.notificationSentView = false;
|
|
40
|
-
this.allowedRolesToAccessRefund = ['payments-refund-approver', 'payments-refund', 'payments'];
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
this.resetRemissionForm([false, false, false, false], 'All');
|
|
44
|
-
this.bsPaymentDcnNumber = this.paymentLibComponent.bspaymentdcn;
|
|
45
|
-
this.isCallFromRefundList = this.paymentLibComponent.isCallFromRefundList;
|
|
46
|
-
if (this.API_ROOT == 'api/payment-history') {
|
|
47
|
-
this.isFromPayBubble = true;
|
|
48
|
-
}
|
|
49
|
-
if (this.paymentLibComponent.isRefundStatusView) {
|
|
50
|
-
this.viewName = 'refundview';
|
|
51
|
-
this.OrderslistService.getRefundView().subscribe((data) => this.refundlist = data);
|
|
52
|
-
this.OrderslistService.getCCDCaseNumberforRefund.subscribe((data) => this.ccdCaseNumber = data);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.viewName = 'refundstatuslist';
|
|
56
|
-
this.refundService.getRefundStatusList(this.ccdCaseNumber).subscribe(refundList => {
|
|
57
|
-
this.rejectedRefundList = refundList['refund_list'];
|
|
58
|
-
}),
|
|
59
|
-
(error) => {
|
|
60
|
-
this.errorMessage = error.replace(/"/g, "");
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
this.refundStatusForm = this.formBuilder.group({
|
|
64
|
-
amount: new FormControl('', Validators.compose([
|
|
65
|
-
Validators.required,
|
|
66
|
-
Validators.pattern('^[0-9]+(\.[0-9]{1,2})?$')
|
|
67
|
-
])),
|
|
68
|
-
refundReason: new FormControl('', Validators.compose([Validators.required])),
|
|
69
|
-
reason: new FormControl()
|
|
70
|
-
});
|
|
71
|
-
if (this.refundlist !== undefined) {
|
|
72
|
-
this.getRefundsNotification();
|
|
73
|
-
this.getRefundsStatusHistoryList();
|
|
74
|
-
if (this.LOGGEDINUSERROLES.some(i => i.includes('payments-refund-approver'))) {
|
|
75
|
-
this.isProcessRefund = true;
|
|
76
|
-
this.refundButtonState = this.refundlist.refund_status.name;
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
if (this.LOGGEDINUSERROLES.some(i => i.includes('payments-refund'))) {
|
|
80
|
-
this.isProcessRefund = false;
|
|
81
|
-
this.refundButtonState = this.refundlist.refund_status.name;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
getRefundsStatusHistoryList() {
|
|
86
|
-
if (this.refundlist !== undefined) {
|
|
87
|
-
this.refundService.getRefundStatusHistory(this.refundlist.refund_reference).subscribe(statusHistoryList => {
|
|
88
|
-
this.refundStatusHistories = statusHistoryList.status_history_dto_list;
|
|
89
|
-
this.isLastUpdatedByCurrentUser = statusHistoryList.last_updated_by_current_user;
|
|
90
|
-
}),
|
|
91
|
-
(error) => {
|
|
92
|
-
this.errorMessage = error.replace(/"/g, "");
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
getRefundsNotification() {
|
|
97
|
-
this.notificationService.getRefundNotification(this.refundlist.refund_reference).subscribe(refundsNotification => {
|
|
98
|
-
this.notificationList = refundsNotification['notifications'];
|
|
99
|
-
}),
|
|
100
|
-
(error) => {
|
|
101
|
-
this.errorMessage = error.replace(/"/g, "");
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
goToRefundView(refundlist, navigationpage) {
|
|
105
|
-
this.OrderslistService.setRefundView(refundlist);
|
|
106
|
-
this.OrderslistService.setCCDCaseNumber(this.ccdCaseNumber);
|
|
107
|
-
this.paymentLibComponent.viewName = 'refundstatuslist';
|
|
108
|
-
this.paymentLibComponent.isRefundStatusView = true;
|
|
109
|
-
this.refundlist = refundlist;
|
|
110
|
-
this.OrderslistService.setnavigationPage(navigationpage);
|
|
111
|
-
}
|
|
112
|
-
loadCaseTransactionPage() {
|
|
113
|
-
this.OrderslistService.setnavigationPage('casetransactions');
|
|
114
|
-
this.OrderslistService.setisFromServiceRequestPage(false);
|
|
115
|
-
this.paymentLibComponent.viewName = 'case-transactions';
|
|
116
|
-
this.paymentLibComponent.ISBSENABLE = true;
|
|
117
|
-
this.paymentLibComponent.isRefundStatusView = false;
|
|
118
|
-
}
|
|
119
|
-
loadRefundListPage() {
|
|
120
|
-
this.OrderslistService.getnavigationPageValue().subscribe((data) => this.navigationpage = data);
|
|
121
|
-
if (this.navigationpage === 'casetransactions') {
|
|
122
|
-
this.loadCaseTransactionPage();
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
this.paymentLibComponent.viewName = 'refund-list';
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
gotoReviewDetailsPage(event) {
|
|
129
|
-
// event.preventDefault();
|
|
130
|
-
this.errorMessage = false;
|
|
131
|
-
this.paymentLibComponent.isRefundStatusView = true;
|
|
132
|
-
this.ngOnInit();
|
|
133
|
-
}
|
|
134
|
-
gotoReviewAndReSubmitPage() {
|
|
135
|
-
this.viewName = 'reviewandsubmitview';
|
|
136
|
-
this.getTemplateInstructionType(this.paymentObj, this.refundlist.payment_reference);
|
|
137
|
-
this.oldRefundReason = this.refundlist.reason;
|
|
138
|
-
this.changedAmount = this.refundlist.amount;
|
|
139
|
-
this.refundreason = this.refundStatusHistories.filter(data => data.status.toLowerCase() === 'update required')[0].notes;
|
|
140
|
-
this.refundService.getRefundReasons().subscribe(refundReasons => {
|
|
141
|
-
this.refundReasons = refundReasons;
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
gotoRefundReasonPage(refundReason) {
|
|
145
|
-
this.isRefundBtnDisabled = false;
|
|
146
|
-
this.paymentLibComponent.REFUNDLIST = "true";
|
|
147
|
-
this.paymentLibComponent.isFromRefundStatusPage = true;
|
|
148
|
-
this.ccdCaseNumber = this.paymentLibComponent.CCD_CASE_NUMBER;
|
|
149
|
-
this.errorMessage = false;
|
|
150
|
-
this.changeRefundReason = refundReason;
|
|
151
|
-
this.viewName = 'issuerefundpage1';
|
|
152
|
-
}
|
|
153
|
-
gotoAmountPage() {
|
|
154
|
-
this.errorMessage = false;
|
|
155
|
-
this.paymentLibComponent.REFUNDLIST = "true";
|
|
156
|
-
this.isRefundBtnDisabled = false;
|
|
157
|
-
this.ccdCaseNumber = this.paymentLibComponent.CCD_CASE_NUMBER;
|
|
158
|
-
this.paymentLibComponent.isFromRefundStatusPage = true;
|
|
159
|
-
if (this.refundlist.reason == 'Retrospective remission') {
|
|
160
|
-
this.viewName = 'processretroremissonpage';
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
this.viewName = 'issuerefund';
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
goToReviewAndSubmitView() {
|
|
167
|
-
const remissionctrls = this.refundStatusForm.controls;
|
|
168
|
-
if (this.refundStatusForm.dirty) {
|
|
169
|
-
if (remissionctrls['amount'].value == '') {
|
|
170
|
-
this.resetRemissionForm([true, false, false, false], 'amount');
|
|
171
|
-
}
|
|
172
|
-
else if (remissionctrls['amount'].value != '' && remissionctrls['amount'].invalid) {
|
|
173
|
-
this.resetRemissionForm([false, true, false, false], 'amount');
|
|
174
|
-
}
|
|
175
|
-
else if (remissionctrls['reason'].value == '') {
|
|
176
|
-
this.resetRemissionForm([false, false, false, true], 'reason');
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
this.refundlist.reason = remissionctrls['reason'].value;
|
|
180
|
-
this.viewName = 'reviewandsubmitview';
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
resetRemissionForm(val, field) {
|
|
185
|
-
if (field === 'All') {
|
|
186
|
-
this.isAmountEmpty = val[0];
|
|
187
|
-
this.amountHasError = val[1];
|
|
188
|
-
this.isRemissionLessThanFeeError = val[2];
|
|
189
|
-
this.isReasonEmpty = val[3];
|
|
190
|
-
}
|
|
191
|
-
else if (field === 'amount' || field === 'All') {
|
|
192
|
-
this.isAmountEmpty = val[0];
|
|
193
|
-
this.amountHasError = val[1];
|
|
194
|
-
this.isRemissionLessThanFeeError = val[2];
|
|
195
|
-
}
|
|
196
|
-
else if (field === 'reason' || field === 'All') {
|
|
197
|
-
this.isReasonEmpty = val[3];
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
selectRadioButton(key, value) {
|
|
201
|
-
this.refundHasError = false;
|
|
202
|
-
this.selectedRefundReason = key;
|
|
203
|
-
if (key === 'Other') {
|
|
204
|
-
this.refundHasError = false;
|
|
205
|
-
this.refundReason = key;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
getRefundListReason(refundListReason) {
|
|
209
|
-
if (this.paymentLibComponent.isFromRefundStatusPage && !this.paymentLibComponent.iscancelClicked) {
|
|
210
|
-
if (refundListReason.reason != undefined && refundListReason.reason != null && refundListReason.reason != this.refundlist.reason) {
|
|
211
|
-
this.refundlist.reason = refundListReason.reason;
|
|
212
|
-
this.refundlist.reason_code = refundListReason.code.split('-')[0].trim();
|
|
213
|
-
this.refundlist.code = refundListReason.code;
|
|
214
|
-
this.refundCode = refundListReason.code;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.isRefundBtnDisabled = true;
|
|
219
|
-
}
|
|
220
|
-
this.notificationPreview = false;
|
|
221
|
-
this.viewName = 'reviewandsubmitview';
|
|
222
|
-
this.paymentLibComponent.CCD_CASE_NUMBER = this.ccdCaseNumber;
|
|
223
|
-
}
|
|
224
|
-
getRefundAmount(amount) {
|
|
225
|
-
if (this.paymentLibComponent.isFromRefundStatusPage && !this.paymentLibComponent.iscancelClicked) {
|
|
226
|
-
if (amount > 0) {
|
|
227
|
-
this.changedAmount = amount;
|
|
228
|
-
// this.refundlist.amount = amount;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
this.isRefundBtnDisabled = true;
|
|
233
|
-
}
|
|
234
|
-
this.notificationPreview = false;
|
|
235
|
-
this.viewName = 'reviewandsubmitview';
|
|
236
|
-
this.paymentLibComponent.CCD_CASE_NUMBER = this.ccdCaseNumber;
|
|
237
|
-
}
|
|
238
|
-
getRefundFees(fees) {
|
|
239
|
-
this.fees = fees;
|
|
240
|
-
this.refundFees = this.fees.map(obj => ({
|
|
241
|
-
fee_id: obj.id,
|
|
242
|
-
code: obj.code,
|
|
243
|
-
version: obj.version,
|
|
244
|
-
volume: obj.updated_volume ? obj.updated_volume : obj.volume,
|
|
245
|
-
refund_amount: obj.refund_amount
|
|
246
|
-
}));
|
|
247
|
-
}
|
|
248
|
-
gotoReviewRefundConfirmationPage() {
|
|
249
|
-
// if (this.oldRefundReason === this.refundlist.reason) {
|
|
250
|
-
// this.refundCode = '';
|
|
251
|
-
// }
|
|
252
|
-
if (this.refundFees === undefined) {
|
|
253
|
-
this.refundFees = this.refundlist['refund_fees'];
|
|
254
|
-
}
|
|
255
|
-
if (this.refundlist.reason == 'Retrospective remission') {
|
|
256
|
-
this.refundFees[0].refund_amount = this.changedAmount;
|
|
257
|
-
}
|
|
258
|
-
this.refundCode = this.refundlist.code;
|
|
259
|
-
const resubmitRequest = new IResubmitRefundRequest(this.refundCode, this.changedAmount, this.refundlist.contact_details, this.refundFees);
|
|
260
|
-
this.refundService.patchResubmitRefund(resubmitRequest, this.refundlist.refund_reference).subscribe(response => {
|
|
261
|
-
if (JSON.parse(response)) {
|
|
262
|
-
this.refundReference = JSON.parse(response).refund_reference;
|
|
263
|
-
this.refundAmount = JSON.parse(response).refund_amount;
|
|
264
|
-
this.viewName = 'reviewrefundconfirmationpage';
|
|
265
|
-
}
|
|
266
|
-
}, (error) => {
|
|
267
|
-
this.errorMessage = error.replace(/"/g, "");
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
gotoEditAddressDetails(note) {
|
|
271
|
-
this.notification = note;
|
|
272
|
-
this.isEditDetailsClicked = true;
|
|
273
|
-
this.viewName = 'refundEditView';
|
|
274
|
-
}
|
|
275
|
-
getContactDetails(obj) {
|
|
276
|
-
this.addressDetails = obj;
|
|
277
|
-
this.getTemplateInstructionType(this.paymentObj, this.refundlist.payment_reference);
|
|
278
|
-
this.notificationPreview = false;
|
|
279
|
-
this.viewName = 'revieweditdetailsconfirmationpage';
|
|
280
|
-
}
|
|
281
|
-
getContactDetailsForRefundList(obj) {
|
|
282
|
-
this.refundlist.contact_details = obj;
|
|
283
|
-
this.getTemplateInstructionType(this.paymentObj, this.refundlist.payment_reference);
|
|
284
|
-
this.notificationPreview = false;
|
|
285
|
-
this.isEditDetailsClicked = false;
|
|
286
|
-
this.isRefundBtnDisabled = false;
|
|
287
|
-
this.viewName = 'reviewandsubmitview';
|
|
288
|
-
}
|
|
289
|
-
gotoEditDetailsPage(note, view) {
|
|
290
|
-
if (note) {
|
|
291
|
-
this.notification = { contact_details: note, notification_type: note.notification_type };
|
|
292
|
-
}
|
|
293
|
-
this.isEditDetailsClicked = true;
|
|
294
|
-
this.viewName = view;
|
|
295
|
-
}
|
|
296
|
-
submitEditDetail() {
|
|
297
|
-
this.isResendOperationSuccess = false;
|
|
298
|
-
const contactDetails = this.addressDetails.notification_type === 'EMAIL' ? this.addressDetails.email :
|
|
299
|
-
{
|
|
300
|
-
address_line: this.addressDetails.address_line,
|
|
301
|
-
city: this.addressDetails.city,
|
|
302
|
-
county: this.addressDetails.county,
|
|
303
|
-
country: this.addressDetails.country,
|
|
304
|
-
postal_code: this.addressDetails.postal_code,
|
|
305
|
-
};
|
|
306
|
-
const resendRequest = new IPutNotificationRequest(contactDetails, this.addressDetails.notification_type);
|
|
307
|
-
this.refundService.putResendOrEdit(resendRequest, this.refundlist.refund_reference, this.addressDetails.notification_type).subscribe((response) => {
|
|
308
|
-
this.isResendOperationSuccess = response;
|
|
309
|
-
}, (error) => {
|
|
310
|
-
this.isResendOperationSuccess = false;
|
|
311
|
-
this.errorMessage = error.replace(/"/g, "");
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
putResend(notification) {
|
|
315
|
-
this.isResendOperationSuccess = false;
|
|
316
|
-
const contactDetails = notification.notification_type === 'EMAIL' ? notification.contact_details.email :
|
|
317
|
-
{
|
|
318
|
-
address_line: notification.contact_details.address_line,
|
|
319
|
-
city: notification.contact_details.city,
|
|
320
|
-
county: notification.contact_details.county,
|
|
321
|
-
country: notification.contact_details.country,
|
|
322
|
-
postal_code: notification.contact_details.postal_code,
|
|
323
|
-
};
|
|
324
|
-
const resendRequest = new IPutNotificationRequest(contactDetails, notification.notification_type);
|
|
325
|
-
this.refundService.putResendOrEdit(resendRequest, this.refundlist.refund_reference, notification.notification_type).subscribe((response) => {
|
|
326
|
-
this.isResendOperationSuccess = response;
|
|
327
|
-
}, (error) => {
|
|
328
|
-
this.isResendOperationSuccess = false;
|
|
329
|
-
this.errorMessage = error.replace(/"/g, "");
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
gotoRefundViewPageCancelBtnClicked(event) {
|
|
333
|
-
event.preventDefault();
|
|
334
|
-
this.isEditDetailsClicked = false;
|
|
335
|
-
this.viewName = 'refundview';
|
|
336
|
-
}
|
|
337
|
-
gotoRefundReviewAndSubmitViewPageCancelBtnClicked(event) {
|
|
338
|
-
event.preventDefault();
|
|
339
|
-
this.isEditDetailsClicked = false;
|
|
340
|
-
this.viewName = 'reviewandsubmitview';
|
|
341
|
-
}
|
|
342
|
-
goToRefundProcessComponent(refundReference, refundList) {
|
|
343
|
-
this.paymentLibComponent.refundlistsource = refundList;
|
|
344
|
-
this.paymentLibComponent.refundReference = refundReference;
|
|
345
|
-
this.paymentLibComponent.isFromPayBubble = true;
|
|
346
|
-
this.paymentLibComponent.viewName = 'process-refund';
|
|
347
|
-
}
|
|
348
|
-
getTemplateInstructionType(payment, paymentReference) {
|
|
349
|
-
if (payment == undefined || payment == null || payment.reference != paymentReference) {
|
|
350
|
-
this.paymentViewService.getPaymentDetails(paymentReference).subscribe(payment => {
|
|
351
|
-
this.paymentObj = payment;
|
|
352
|
-
this.paymentObj.reference = paymentReference;
|
|
353
|
-
this.templateInstructionType = this.notificationService.getNotificationInstructionType(this.paymentObj.channel, this.paymentObj.method);
|
|
354
|
-
}, (error) => {
|
|
355
|
-
this.templateInstructionType = 'Template';
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
this.templateInstructionType = this.notificationService.getNotificationInstructionType(payment.channel, payment.method);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
showNotificationPreview() {
|
|
363
|
-
this.notificationPreview = true;
|
|
364
|
-
}
|
|
365
|
-
hideNotificationPreview() {
|
|
366
|
-
this.notificationPreview = false;
|
|
367
|
-
}
|
|
368
|
-
showNotificationSentView(index) {
|
|
369
|
-
this.notificationSentViewIndex = index;
|
|
370
|
-
this.notificationSentView = true;
|
|
371
|
-
}
|
|
372
|
-
hideNotificationSentView() {
|
|
373
|
-
this.notificationSentViewIndex = -1;
|
|
374
|
-
this.notificationSentView = false;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
RefundStatusComponent.decorators = [
|
|
378
|
-
{ type: Component, args: [{
|
|
379
|
-
selector: 'ccpay-refund-status',
|
|
380
|
-
template: "\n<div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"viewName==='refundstatuslist' && rejectedRefundList && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- payments -->\n\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-16\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-11\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header col-18\" scope=\"col\">Date</td>\n <td class=\"govuk-table__header col-25\" scope=\"col\">Refund reference</td>\n <td class=\"govuk-table__header col-24 \" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let refundList of rejectedRefundList\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_status['name'] }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">\u00A3{{ refundList?.amount | number:'.2' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.date_updated | date:'dd MMM yyyy'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{refundList?.reason}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToRefundView(refundList,'casetransactions')\">Review</a>\n </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No refunds recorded</td>\n </tbody>\n </table>\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='refundview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div>\n <h2 class=\"govuk-heading-l\">Refund details</h2>\n <table>\n \n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Refund reference</td>\n <td>{{ refundlist?.refund_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td>{{refundlist?.payment_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td>{{ refundlist?.reason }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount refunded</td>\n <td>\u00A3{{refundlist?.amount | number:'.2' }}</td>\n </tr>\n\n </tbody>\n </table>\n\n\n <!-- Notification sent details -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Notifications sent</h2>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Sent to</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Sent via</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Actions</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"notificationList\">\n <ng-container *ngFor=\"let notification of notificationList; let i = index;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{notification.date_created | date:'dd MMMM yyyy HH:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{orderParty}}</td>\n <td class=\"govuk-table__cell whitespace-inherit col-40\">\n <div *ngIf=\"notification?.notification_type === 'EMAIL'\">\n <strong>Email</strong><br>\n {{notification?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"notification?.notification_type === 'LETTER'\">\n <strong>Post</strong><br>\n {{notification?.contact_details?.address_line?.trim()}} {{notification?.contact_details?.city?.trim()}} {{notification?.contact_details?.county?.trim()}} {{notification?.contact_details?.country?.trim()}} {{notification?.contact_details?.postal_code?.trim()}}\n </div>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i === 0\"><a href=\"Javascript:void(0);\" (click)=\"putResend(notification)\">Resend</a> | <a href=\"Javascript:void(0);\" (click)=\"gotoEditAddressDetails(notification)\">Edit details</a> | <a *ngIf=\"!notificationSentView || i != notificationSentViewIndex\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i > 0\"><a *ngIf=\"!notificationSentView || i != notificationSentViewIndex\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n </tr>\n <tr *ngIf=\"i === notificationSentViewIndex && notificationSentView\">\n <td class=\"govuk-table__cell\" colspan=\"4\">\n <app-notification-preview\n [previewJourney]=\"'Notifications sent'\" [notificationSent]=\"notification?.sent_notification\">\n </app-notification-preview>\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"!notificationList\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\" colspan=\"4\">No record found ... </td>\n </tr>\n </tbody>\n </table> \n </div>\n <!-- Status history -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Refund status history</h2>\n <div *ngIf=\"refundStatusHistories\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Users</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Notes</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let refundStatusHistory of refundStatusHistories;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.status}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n {{refundStatusHistory.date_created | date:'dd MMMM yyyy HH:mm:ss'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.created_by}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.notes}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n\n <ng-container *ngIf=\"viewName==='refundview' && !isFromPayBubble && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div *ngIf=\"refundButtonState==='Update required'\" >\n <!-- <div *ngIf=\"refundButtonState==='sent back'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary btnmargin\"\n (click)=\"gotoReviewAndReSubmitPage()\">Change refund details</button>\n </div>\n <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='Sent for approval'\" >\n <!-- <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='sent for approval'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary\"\n (click)=\"goToRefundProcessComponent(refundlist.refund_reference,refundlist)\">Process refund</button>\n </div>\n </ng-container>\n\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='reviewandsubmitview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div> -->\n <div class=\"govuk-warning-text\">\n <h1 class=\"heading-large\">Check your answers</h1>\n </div>\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.payment_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for return</td>\n <td class=\"govuk-table__cell\">{{refundreason}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.refund_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for refund</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.reason?.trim()}}\n <a (click)=\"gotoRefundReasonPage(refundlist?.reason)\" *ngIf=\"refundlist?.reason !== 'Retrospective remission' && refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n <!-- <td class=\"govuk-table__cell\">{{ refundlist?.reason }}</td>\n <a (click)=\"gotoRefundReasonPage()\" class=\"govuk-link right\">Change</a> -->\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td class=\"govuk-table__cell\">\u00A3{{ changedAmount ? changedAmount : refundlist?.amount | number:'.2' }}\n <a (click)=\"gotoAmountPage()\" *ngIf=\"refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlist?.contact_details?.email?.trim()}}\n </div>\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlist?.contact_details?.address_line?.trim()}} {{refundlist?.contact_details?.city?.trim()}} {{refundlist?.contact_details?.county?.trim()}} {{refundlist?.contact_details?.country?.trim()}} {{refundlist?.contact_details?.postal_code?.trim()}}\n </div> \n <a class=\"govuk-link\" href=\"Javascript:void(0)\" *ngIf=\"refundlist?.contact_details !=null\" class=\"govuk-link right\" (click)=\"gotoEditDetailsPage(refundlist?.contact_details, 'reviewandsubmitEditview')\">\n Change\n </a>\n </td>\n </tr> \n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">{{templateInstructionType}} \n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n <app-notification-preview *ngIf=\"notificationPreview\" \n [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\" \n [contactDetails]=\"refundlist?.contact_details\"\n [refundReason]=\"refundlist?.reason_code\"\n [refundAmount]=\"changedAmount ? changedAmount : refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\"></app-notification-preview>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n</div>\n<p><a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">Cancel</a></p>\n <!-- <div class=\"govuk-button-group\">\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n </div> -->\n <!-- <p>\n <a (click)=\"loadRefundListPage()\" href=\"\" class=\"cancelbtn\">Cancel</a>\n </p> -->\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewandsubmitEditview' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetailsForRefundList($event)\"\n (redirectToIssueRefund)=\"gotoRefundReviewAndSubmitViewPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefundpage1' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromRefundStatusPage] = \"true\"\n [changeRefundReason]= \"changeRefundReason\" [ccdCaseNumber]=\"ccdCaseNumber\" (refundListReason)=\"getRefundListReason($event)\" [refundPaymentReference]= \"refundlist?.payment_reference\" ></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'processretroremissonpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" (refundListAmount)=\"getRefundAmount($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefund' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromServiceRequestPage] = \"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" [isFromRefundStatusPage]=\"true\" (refundListAmount)=\"getRefundAmount($event)\" (refundFees)=\"getRefundFees($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewrefundconfirmationpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-grid-row pagesize\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Refund submitted\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference:{{refundReference}} </strong></p>\n </div>\n\n </div>\n\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount| currency:'GBP':'symbol-narrow':'1.2-2'}} has been created and will be passed to a team leader to approve.\n </p>\n\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isResendOperationSuccess\">\n <div class=\"govuk-grid-row pagesize\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Notification sent\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference: {{ refundlist?.refund_reference}} </strong></p>\n </div>\n\n </div>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewName === 'refundEditView' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoRefundViewPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n<ng-container *ngIf=\"viewName === 'revieweditdetailsconfirmationpage' && !isResendOperationSuccess && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSCHECKANDANSWERPAGE'> \n <h1 class=\"govuk-heading-l\">Check your answers</h1>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Refund reference\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ refundlist?.refund_reference}}\n </dd>\n <span class=\"govuk-summary-list__actions\"></span> \n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Send via\n <br/>\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <div *ngIf=\"addressDetails?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{addressDetails?.email?.trim()}}\n </div>\n <div *ngIf=\"addressDetails?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{addressDetails?.address_line?.trim()}} {{addressDetails?.city?.trim()}} {{addressDetails?.county?.trim()}} {{addressDetails?.country?.trim()}} {{addressDetails?.postal_code?.trim()}}\n </div> \n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a class=\"govuk-link\" href=\"Javascript:void(0)\" (click)=\"gotoEditDetailsPage(addressDetails, 'refundEditView')\">\n Change\n </a>\n </dd>\n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Notification\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{templateInstructionType}} \n </dd>\n <span class=\"govuk-summary-list__actions\">\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </span> \n </div>\n </dl>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"addressDetails\"\n [refundReason]=\"refundlist?.reason_code\"\n [refundAmount]=\"refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\">\n </app-notification-preview>\n\n\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoEditDetailsPage(addressDetails, 'refundEditView')\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button (click)=\"submitEditDetail()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Send notification\n </button>\n </div>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n",
|
|
381
|
-
styles: [".right{float:right!important}.button{margin-bottom:3em;font-size:19px}.cancelbtn{font-size:19px;font-weight:400}.btnmargin{margin-bottom:2em}.govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px 0 #858688;color:#0b0c0c;margin-right:.5em}.govuk-label--s,.govuk-warning-text__text,.hmcts-currency-input__symbol{font-size:19px;font-weight:400}.inline-error-class{outline:3px solid #a71414;outline-offset:0}.inline-error-message{color:#a71414;font-weight:700;margin-top:10px;font-size:20px}.govuk-button,.govuk-link{margin-right:1em;font-size:19px;font-weight:200}.govuk-button-group{padding-top:2em}.heading-medium{margin-top:.875em}.heading-large{margin-top:.25em}.govuk-panel--confirmation{color:#fff;background:#00703c}.govuk-heading-l{font-size:36px}.govuk-heading-m{font-size:24px}.govuk-panel__title{font-size:5rem}.govuk-body,.govuk-body-m{font-size:2.1875rem}.govuk-input--width-10{max-width:36ex}.col-14{width:14%!important}.col-10{width:10%!important}.col-11{width:11%!important}.col-18{width:18%!important}.col-21{width:21%!important}.col-9{width:9%!important}.col-40{width:40%!important}.col-15{width:15%!important}.col-16{width:16%!important}.col-25{width:25%!important}.col-24{width:24%!important}.govuk-error-summary__title{font-size:24px!important}.govuk-error-summary__body{font-size:19px!important}.font-size-19px{font-size:19px}.white{color:#fff}.pagesize{margin:2em;width:97%}.govuk-link{cursor:pointer}.contactDetails-width{width:70%}.whitespace-inherit{white-space:inherit!important}"]
|
|
382
|
-
},] }
|
|
383
|
-
];
|
|
384
|
-
RefundStatusComponent.ctorParameters = () => [
|
|
385
|
-
{ type: FormBuilder },
|
|
386
|
-
{ type: RefundsService },
|
|
387
|
-
{ type: NotificationService },
|
|
388
|
-
{ type: PaymentLibComponent },
|
|
389
|
-
{ type: OrderslistService },
|
|
390
|
-
{ type: PaymentViewService }
|
|
391
|
-
];
|
|
392
|
-
RefundStatusComponent.propDecorators = {
|
|
393
|
-
LOGGEDINUSERROLES: [{ type: Input, args: ['LOGGEDINUSERROLES',] }],
|
|
394
|
-
API_ROOT: [{ type: Input, args: ['API_ROOT',] }],
|
|
395
|
-
ccdCaseNumber: [{ type: Input }],
|
|
396
|
-
isTurnOff: [{ type: Input }],
|
|
397
|
-
orderParty: [{ type: Input }]
|
|
398
|
-
};
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXltZW50LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVmdW5kLXN0YXR1cy9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFVdEYsTUFBTSxPQUFPLHFCQUFxQjtJQXVEaEMsWUFBb0IsV0FBd0IsRUFDbEMsYUFBNkIsRUFDN0IsbUJBQXdDLEVBQ3hDLG1CQUF3QyxFQUN4QyxpQkFBb0MsRUFDcEMsa0JBQXNDO1FBTDVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx1QkFBa0IsR0FB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QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7OztZQS9iRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsODJzQkFBNkM7O2FBRTlDOzs7WUFsQlEsV0FBVztZQUZYLGNBQWM7WUFDZCxtQkFBbUI7WUFTbkIsbUJBQW1CO1lBTG5CLGlCQUFpQjtZQU1qQixrQkFBa0I7OztnQ0FXeEIsS0FBSyxTQUFDLG1CQUFtQjt1QkFDekIsS0FBSyxTQUFDLFVBQVU7NEJBQ2hCLEtBQUs7d0JBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWZ1bmRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlZnVuZHMvcmVmdW5kcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJUmVmdW5kTGlzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZExpc3QnO1xuaW1wb3J0IHsgSVJlZnVuZHNOb3RpZmljYXRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kc05vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgT3JkZXJzbGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQdXROb3RpZmljYXRpb25SZXF1ZXN0JztcbmltcG9ydCB7IElSZWZ1bmRDb250YWN0RGV0YWlscyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZENvbnRhY3REZXRhaWxzJztcbmltcG9ydCB7IElSZWZ1bmRTdGF0dXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRTdGF0dXMnO1xuaW1wb3J0IHsgSVJlc3VibWl0UmVmdW5kUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlc3VibWl0UmVmdW5kUmVxdWVzdCc7XG5pbXBvcnQgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7IFBheW1lbnRWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBJUGF5bWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHsgSUZlZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZlZSc7XG5pbXBvcnQgeyBJUmVmdW5kRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kRmVlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVmdW5kLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVmdW5kLXN0YXR1cy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVmdW5kU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdMT0dHRURJTlVTRVJST0xFUycpIExPR0dFRElOVVNFUlJPTEVTOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoJ0FQSV9ST09UJykgQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCkgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgcmVmdW5kU3RhdHVzRm9ybTogRm9ybUdyb3VwO1xuICBzZWxlY3RlZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWplY3RlZFJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0W10gPSBbXTtcbiAgbm90aWZpY2F0aW9uTGlzdDogYW55O1xuICBub3RpZmljYXRpb246YW55O1xuICBhcHByb3ZhbFN0YXR1cyA9ICdTZW50IGZvciBhcHByb3ZhbCc7XG4gIHJlamVjdFN0YXR1cyA9ICdVcGRhdGUgcmVxdWlyZWQnO1xuICBlcnJvck1lc3NhZ2UgPSBudWxsO1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICByZWZ1bmRSZWFzb246IHN0cmluZztcbiAgcmVmdW5kbGlzdDogSVJlZnVuZExpc3Q7XG4gIGJzUGF5bWVudERjbk51bWJlcjogc3RyaW5nO1xuICBpc0NhbGxGcm9tUmVmdW5kTGlzdDogYm9vbGVhbjtcbiAgcmVmdW5kQnV0dG9uU3RhdGU6IHN0cmluZyA9ICcnO1xuICBpc0Ftb3VudEVtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVhc29uRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYW1vdW50SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZEhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZFJlYXNvbnM6IGFueVtdID0gW107XG4gIHJlZnVuZFN0YXR1c0hpc3RvcmllczogSVJlZnVuZFN0YXR1c1tdO1xuICByZWZ1bmROb3RpZmljYXRpb25zOiBJUmVmdW5kU3RhdHVzW107XG4gIGlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0VkaXREZXRhaWxzQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0VkaXRBZGRyZXNzRGVhdGlsc0NsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkcmVzc0RldGFpbHM6IElSZWZ1bmRDb250YWN0RGV0YWlscztcbiAgcmVmdW5kUmVmZXJlbmNlOiBzdHJpbmc7XG4gIHJlZnVuZEFtb3VudDogc3RyaW5nO1xuICByZWZ1bmRDb2RlOiBzdHJpbmc7XG4gIGlzUmVmdW5kQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0Zyb21QYXlCdWJibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb2xkUmVmdW5kUmVhc29uOiBzdHJpbmc7XG4gIHJlZnVuZHJlYXNvbjogc3RyaW5nO1xuICBuYXZpZ2F0aW9ucGFnZTogc3RyaW5nO1xuICBpc0xhc3RVcGRhdGVkQnlDdXJyZW50VXNlcjogYm9vbGVhbiA9IHRydWU7XG4gIGlzUHJvY2Vzc1JlZnVuZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjaGFuZ2VkQW1vdW50OiBudW1iZXI7XG4gIGlzUmVtaXNzaW9uc01hdGNoOiBib29sZWFuO1xuICBwYXltZW50OiBJUGF5bWVudDtcbiAgY2hhbmdlUmVmdW5kUmVhc29uOiBzdHJpbmc7XG4gIGZlZXM6IElGZWUgW107XG4gIHJlZnVuZEZlZXM6IElSZWZ1bmRGZWVbXTtcbiAgcGF5bWVudE9iajogSVBheW1lbnQ7XG4gIHRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlOiBzdHJpbmc7XG4gIG5vdGlmaWNhdGlvblNlbnRWaWV3SW5kZXg6IG51bWJlciA9IC0xO1xuICBub3RpZmljYXRpb25QcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG4gIG5vdGlmaWNhdGlvblNlbnRWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIGFsbG93ZWRSb2xlc1RvQWNjZXNzUmVmdW5kID0gWydwYXltZW50cy1yZWZ1bmQtYXBwcm92ZXInLCAncGF5bWVudHMtcmVmdW5kJywgJ3BheW1lbnRzJ107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWZ1bmRTZXJ2aWNlOiBSZWZ1bmRzU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXltZW50TGliQ29tcG9uZW50OiBQYXltZW50TGliQ29tcG9uZW50LFxuICAgIHByaXZhdGUgT3JkZXJzbGlzdFNlcnZpY2U6IE9yZGVyc2xpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5yZXNldFJlbWlzc2lvbkZvcm0oW2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ0FsbCcpO1xuICAgIHRoaXMuYnNQYXltZW50RGNuTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLmlzQ2FsbEZyb21SZWZ1bmRMaXN0ID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzQ2FsbEZyb21SZWZ1bmRMaXN0O1xuICAgIGlmKHRoaXMuQVBJX1JPT1QgPT0gJ2FwaS9wYXltZW50LWhpc3RvcnknKSB7XG4gICAgICB0aGlzLmlzRnJvbVBheUJ1YmJsZSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3KSB7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gJ3JlZnVuZHZpZXcnO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRSZWZ1bmRWaWV3KCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLnJlZnVuZGxpc3QgPSBkYXRhKTtcbiAgICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0Q0NEQ2FzZU51bWJlcmZvclJlZnVuZC5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMuY2NkQ2FzZU51bWJlciA9IGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gJ3JlZnVuZHN0YXR1c2xpc3QnO1xuICAgICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFN0YXR1c0xpc3QodGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlZnVuZExpc3QgPT4ge1xuICAgICAgICAgIHRoaXMucmVqZWN0ZWRSZWZ1bmRMaXN0ID0gcmVmdW5kTGlzdFsncmVmdW5kX2xpc3QnXTtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csIFwiXCIpO1xuICAgICAgICB9O1xuICAgIH1cblxuXG4gICAgICB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgYW1vdW50OiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuWzAtOV17MSwyfSk/JCcpXG4gICAgICAgIF0pKSxcbiAgICAgICAgcmVmdW5kUmVhc29uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pKSxcbiAgICAgICAgcmVhc29uOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgICAgfSk7XG5cbiAgICAgIGlmKHRoaXMucmVmdW5kbGlzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuZ2V0UmVmdW5kc05vdGlmaWNhdGlvbigpO1xuICAgICAgICB0aGlzLmdldFJlZnVuZHNTdGF0dXNIaXN0b3J5TGlzdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLkxPR0dFRElOVVNFUlJPTEVTLnNvbWUoaSA9PiBpLmluY2x1ZGVzKCdwYXltZW50cy1yZWZ1bmQtYXBwcm92ZXInKSkpIHtcbiAgICAgICAgICB0aGlzLmlzUHJvY2Vzc1JlZnVuZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5yZWZ1bmRCdXR0b25TdGF0ZSA9IHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfc3RhdHVzLm5hbWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuTE9HR0VESU5VU0VSUk9MRVMuc29tZShpID0+IGkuaW5jbHVkZXMoJ3BheW1lbnRzLXJlZnVuZCcpKSkge1xuICAgICAgICAgIHRoaXMuaXNQcm9jZXNzUmVmdW5kID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZWZ1bmRCdXR0b25TdGF0ZSA9IHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfc3RhdHVzLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICB9XG5cbiAgZ2V0UmVmdW5kc1N0YXR1c0hpc3RvcnlMaXN0KCkge1xuICAgIGlmKHRoaXMucmVmdW5kbGlzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFN0YXR1c0hpc3RvcnkodGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHN0YXR1c0hpc3RvcnlMaXN0ID0+IHtcbiAgICAgICAgdGhpcy5yZWZ1bmRTdGF0dXNIaXN0b3JpZXMgPSBzdGF0dXNIaXN0b3J5TGlzdC5zdGF0dXNfaGlzdG9yeV9kdG9fbGlzdDtcbiAgICAgICAgdGhpcy5pc0xhc3RVcGRhdGVkQnlDdXJyZW50VXNlciA9IHN0YXR1c0hpc3RvcnlMaXN0Lmxhc3RfdXBkYXRlZF9ieV9jdXJyZW50X3VzZXI7XG4gICAgICB9XG4gICAgKSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmdW5kc05vdGlmaWNhdGlvbigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0UmVmdW5kTm90aWZpY2F0aW9uKHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICByZWZ1bmRzTm90aWZpY2F0aW9uID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25MaXN0ID0gcmVmdW5kc05vdGlmaWNhdGlvblsnbm90aWZpY2F0aW9ucyddO1xuICAgICAgfVxuICAgICksXG4gICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICB9OyBcbiAgfVxuXG4gIGdvVG9SZWZ1bmRWaWV3KHJlZnVuZGxpc3Q6IElSZWZ1bmRMaXN0LCBuYXZpZ2F0aW9ucGFnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRSZWZ1bmRWaWV3KHJlZnVuZGxpc3QpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0Q0NEQ2FzZU51bWJlcih0aGlzLmNjZENhc2VOdW1iZXIpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdyZWZ1bmRzdGF0dXNsaXN0JztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gdHJ1ZTtcbiAgICB0aGlzLnJlZnVuZGxpc3QgPSByZWZ1bmRsaXN0O1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UobmF2aWdhdGlvbnBhZ2UpO1xuICB9XG5cbiAgbG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKSB7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRuYXZpZ2F0aW9uUGFnZSgnY2FzZXRyYW5zYWN0aW9ucycpO1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0aXNGcm9tU2VydmljZVJlcXVlc3RQYWdlKGZhbHNlKTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAnY2FzZS10cmFuc2FjdGlvbnMnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gZmFsc2U7XG4gIH1cblxuICBsb2FkUmVmdW5kTGlzdFBhZ2UoKSB7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRuYXZpZ2F0aW9uUGFnZVZhbHVlKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB0aGlzLm5hdmlnYXRpb25wYWdlID0gZGF0YSk7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbnBhZ2UgPT09ICdjYXNldHJhbnNhY3Rpb25zJykge1xuICAgICAgdGhpcy5sb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kLWxpc3QnO1xuICAgIH1cbiAgfVxuXG4gIGdvdG9SZXZpZXdEZXRhaWxzUGFnZShldmVudDphbnkpIHtcbiAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNSZWZ1bmRTdGF0dXNWaWV3ID0gdHJ1ZTtcbiAgICB0aGlzLm5nT25Jbml0KCk7XG4gIH1cblxuICBnb3RvUmV2aWV3QW5kUmVTdWJtaXRQYWdlKCkge1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgdGhpcy5nZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmosIHRoaXMucmVmdW5kbGlzdC5wYXltZW50X3JlZmVyZW5jZSk7XG4gICAgdGhpcy5vbGRSZWZ1bmRSZWFzb24gPSB0aGlzLnJlZnVuZGxpc3QucmVhc29uO1xuICAgIHRoaXMuY2hhbmdlZEFtb3VudCA9IHRoaXMucmVmdW5kbGlzdC5hbW91bnQ7XG4gICAgdGhpcy5yZWZ1bmRyZWFzb24gPSB0aGlzLnJlZnVuZFN0YXR1c0hpc3Rvcmllcy5maWx0ZXIoZGF0YSA9PiBkYXRhLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndXBkYXRlIHJlcXVpcmVkJylbMF0ubm90ZXM7XG4gICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFJlYXNvbnMoKS5zdWJzY3JpYmUoXG4gICAgICByZWZ1bmRSZWFzb25zID0+IHtcbiAgICAgICAgdGhpcy5yZWZ1bmRSZWFzb25zID0gcmVmdW5kUmVhc29ucztcbiAgICAgIH0pO1xuICB9XG4gIGdvdG9SZWZ1bmRSZWFzb25QYWdlKHJlZnVuZFJlYXNvbjpzdHJpbmcpIHtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuUkVGVU5ETElTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21SZWZ1bmRTdGF0dXNQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VSZWZ1bmRSZWFzb24gPSByZWZ1bmRSZWFzb247XG4gICAgdGhpcy52aWV3TmFtZSA9ICdpc3N1ZXJlZnVuZHBhZ2UxJztcbiAgfVxuXG4gIGdvdG9BbW91bnRQYWdlKCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlJFRlVORExJU1QgPSBcInRydWVcIjtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21SZWZ1bmRTdGF0dXNQYWdlID0gdHJ1ZTtcbiAgICBpZih0aGlzLnJlZnVuZGxpc3QucmVhc29uID09ICdSZXRyb3NwZWN0aXZlIHJlbWlzc2lvbicpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Byb2Nlc3NyZXRyb3JlbWlzc29ucGFnZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAnaXNzdWVyZWZ1bmQnO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9SZXZpZXdBbmRTdWJtaXRWaWV3KCkge1xuICAgIGNvbnN0IHJlbWlzc2lvbmN0cmxzID0gdGhpcy5yZWZ1bmRTdGF0dXNGb3JtLmNvbnRyb2xzXG4gICAgaWYgKHRoaXMucmVmdW5kU3RhdHVzRm9ybS5kaXJ0eSkge1xuICAgICAgaWYgKHJlbWlzc2lvbmN0cmxzWydhbW91bnQnXS52YWx1ZSA9PSAnJykge1xuICAgICAgICB0aGlzLnJlc2V0UmVtaXNzaW9uRm9ybShbdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZV0sICdhbW91bnQnKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHJlbWlzc2lvbmN0cmxzWydhbW91bnQnXS52YWx1ZSAhPSAnJyAmJiByZW1pc3Npb25jdHJsc1snYW1vdW50J10uaW52YWxpZCkge1xuICAgICAgICB0aGlzLnJlc2V0UmVtaXNzaW9uRm9ybShbZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZV0sICdhbW91bnQnKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHJlbWlzc2lvbmN0cmxzWydyZWFzb24nXS52YWx1ZSA9PSAnJykge1xuICAgICAgICB0aGlzLnJlc2V0UmVtaXNzaW9uRm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZV0sICdyZWFzb24nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVmdW5kbGlzdC5yZWFzb24gPSByZW1pc3Npb25jdHJsc1sncmVhc29uJ10udmFsdWU7XG4gICAgICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICByZXNldFJlbWlzc2lvbkZvcm0odmFsLCBmaWVsZCkge1xuICAgIGlmIChmaWVsZCA9PT0gJ0FsbCcpIHtcbiAgICAgIHRoaXMuaXNBbW91bnRFbXB0eSA9IHZhbFswXTtcbiAgICAgIHRoaXMuYW1vdW50SGFzRXJyb3IgPSB2YWxbMV07XG4gICAgICB0aGlzLmlzUmVtaXNzaW9uTGVzc1RoYW5GZWVFcnJvciA9IHZhbFsyXTtcbiAgICAgIHRoaXMuaXNSZWFzb25FbXB0eSA9IHZhbFszXTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAnYW1vdW50JyB8fCBmaWVsZCA9PT0gJ0FsbCcpIHtcbiAgICAgIHRoaXMuaXNBbW91bnRFbXB0eSA9IHZhbFswXTtcbiAgICAgIHRoaXMuYW1vdW50SGFzRXJyb3IgPSB2YWxbMV07XG4gICAgICB0aGlzLmlzUmVtaXNzaW9uTGVzc1RoYW5GZWVFcnJvciA9IHZhbFsyXTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkID09PSAncmVhc29uJyB8fCBmaWVsZCA9PT0gJ0FsbCcpIHtcbiAgICAgIHRoaXMuaXNSZWFzb25FbXB0eSA9IHZhbFszXTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSYWRpb0J1dHRvbihrZXksIHZhbHVlKSB7XG4gICAgdGhpcy5yZWZ1bmRIYXNFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRSZWZ1bmRSZWFzb24gPSBrZXk7XG4gICAgaWYgKGtleSA9PT0gJ090aGVyJykge1xuICAgICAgdGhpcy5yZWZ1bmRIYXNFcnJvciA9IGZhbHNlO1xuICAgICAgdGhpcy5yZWZ1bmRSZWFzb24gPSBrZXk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmdW5kTGlzdFJlYXNvbihyZWZ1bmRMaXN0UmVhc29uOiBhbnkpIHtcbiAgICBpZiAodGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgJiYgIXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc2NhbmNlbENsaWNrZWQpIHtcbiAgICAgIGlmKHJlZnVuZExpc3RSZWFzb24ucmVhc29uICE9IHVuZGVmaW5lZCAmJiByZWZ1bmRMaXN0UmVhc29uLnJlYXNvbiAhPSBudWxsICYmIHJlZnVuZExpc3RSZWFzb24ucmVhc29uICE9IHRoaXMucmVmdW5kbGlzdC5yZWFzb24pe1xuICAgICAgICB0aGlzLnJlZnVuZGxpc3QucmVhc29uID0gcmVmdW5kTGlzdFJlYXNvbi5yZWFzb247XG4gICAgICAgIHRoaXMucmVmdW5kbGlzdC5yZWFzb25fY29kZSA9IHJlZnVuZExpc3RSZWFzb24uY29kZS5zcGxpdCgnLScpWzBdLnRyaW0oKTtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LmNvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgICAgIHRoaXMucmVmdW5kQ29kZSA9IHJlZnVuZExpc3RSZWFzb24uY29kZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1JlZnVuZEJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdhbmRzdWJtaXR2aWV3JztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSID0gdGhpcy5jY2RDYXNlTnVtYmVyO1xuICB9XG5cbiAgZ2V0UmVmdW5kQW1vdW50KGFtb3VudDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21SZWZ1bmRTdGF0dXNQYWdlICYmICF0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNjYW5jZWxDbGlja2VkKSB7XG4gICAgICBpZiAoYW1vdW50ID4gMCkge1xuICAgICAgICB0aGlzLmNoYW5nZWRBbW91bnQgPSBhbW91bnQ7XG4gICAgICAgIC8vIHRoaXMucmVmdW5kbGlzdC5hbW91bnQgPSBhbW91bnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHRoaXMuY2NkQ2FzZU51bWJlcjtcbiAgfVxuXG4gIGdldFJlZnVuZEZlZXMoZmVlczogSUZlZVtdKVxuICB7XG4gICAgdGhpcy5mZWVzID0gZmVlcztcbiAgICB0aGlzLnJlZnVuZEZlZXMgPSB0aGlzLmZlZXMubWFwKG9iaiA9PiAoe1xuICAgICAgZmVlX2lkOiBvYmouaWQsXG4gICAgICBjb2RlOiBvYmouY29kZSxcbiAgICAgIHZlcnNpb246IG9iai52ZXJzaW9uLFxuICAgICAgdm9sdW1lOiBvYmoudXBkYXRlZF92b2x1bWUgPyBvYmoudXBkYXRlZF92b2x1bWUgOiBvYmoudm9sdW1lLFxuICAgICAgcmVmdW5kX2Ftb3VudDogb2JqLnJlZnVuZF9hbW91bnRcbiAgICB9KSk7XG4gIH1cblxuICBnb3RvUmV2aWV3UmVmdW5kQ29uZmlybWF0aW9uUGFnZSgpIHtcbiAgICAvLyBpZiAodGhpcy5vbGRSZWZ1bmRSZWFzb24gPT09IHRoaXMucmVmdW5kbGlzdC5yZWFzb24pIHtcbiAgICAvLyAgIHRoaXMucmVmdW5kQ29kZSA9ICcnO1xuICAgIC8vIH1cbiAgICBpZiAodGhpcy5yZWZ1bmRGZWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucmVmdW5kRmVlcyA9IHRoaXMucmVmdW5kbGlzdFsncmVmdW5kX2ZlZXMnXTtcbiAgICB9XG4gICAgaWYodGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9PSAnUmV0cm9zcGVjdGl2ZSByZW1pc3Npb24nKSB7XG4gICAgICB0aGlzLnJlZnVuZEZlZXNbMF0ucmVmdW5kX2Ftb3VudCA9IHRoaXMuY2hhbmdlZEFtb3VudDtcbiAgICB9XG4gICAgdGhpcy5yZWZ1bmRDb2RlID0gdGhpcy5yZWZ1bmRsaXN0LmNvZGU7XG4gICAgY29uc3QgcmVzdWJtaXRSZXF1ZXN0ID0gbmV3IElSZXN1Ym1pdFJlZnVuZFJlcXVlc3QodGhpcy5yZWZ1bmRDb2RlLCAgdGhpcy5jaGFuZ2VkQW1vdW50LCB0aGlzLnJlZnVuZGxpc3QuY29udGFjdF9kZXRhaWxzLCB0aGlzLnJlZnVuZEZlZXMpO1xuICAgIHRoaXMucmVmdW5kU2VydmljZS5wYXRjaFJlc3VibWl0UmVmdW5kKHJlc3VibWl0UmVxdWVzdCwgdGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy5yZWZ1bmRSZWZlcmVuY2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKS5yZWZ1bmRfcmVmZXJlbmNlO1xuICAgICAgICAgIHRoaXMucmVmdW5kQW1vdW50ID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX2Ftb3VudDtcbiAgICAgICAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld3JlZnVuZGNvbmZpcm1hdGlvbnBhZ2UnO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLFwiXCIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnb3RvRWRpdEFkZHJlc3NEZXRhaWxzKG5vdGU6IElSZWZ1bmRzTm90aWZpY2F0aW9ucykge1xuICAgIHRoaXMubm90aWZpY2F0aW9uID0gbm90ZTtcbiAgICB0aGlzLmlzRWRpdERldGFpbHNDbGlja2VkID0gdHJ1ZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3JlZnVuZEVkaXRWaWV3J1xuICB9XG4gIGdldENvbnRhY3REZXRhaWxzKG9iajpJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLmFkZHJlc3NEZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLHRoaXMucmVmdW5kbGlzdC5wYXltZW50X3JlZmVyZW5jZSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25QcmV2aWV3ID0gZmFsc2U7XG4gICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdlZGl0ZGV0YWlsc2NvbmZpcm1hdGlvbnBhZ2UnO1xuICB9XG4gIGdldENvbnRhY3REZXRhaWxzRm9yUmVmdW5kTGlzdChvYmo6SVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgdGhpcy5yZWZ1bmRsaXN0LmNvbnRhY3RfZGV0YWlscyA9IG9iajtcbiAgICB0aGlzLmdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHRoaXMucGF5bWVudE9iaix0aGlzLnJlZnVuZGxpc3QucGF5bWVudF9yZWZlcmVuY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG4gIGdvdG9FZGl0RGV0YWlsc1BhZ2Uobm90ZT86IGFueSwgdmlldz86IHN0cmluZykge1xuICAgIGlmKG5vdGUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uID0geyBjb250YWN0X2RldGFpbHM6IG5vdGUsIG5vdGlmaWNhdGlvbl90eXBlOiBub3RlLm5vdGlmaWNhdGlvbl90eXBlIH07XG4gICAgfVxuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMudmlld05hbWUgPSB2aWV3O1xuICB9XG4gIHN1Ym1pdEVkaXREZXRhaWwoKSB7XG4gICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICBjb25zdCBjb250YWN0RGV0YWlscyA9IHRoaXMuYWRkcmVzc0RldGFpbHMubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCcgPyB0aGlzLmFkZHJlc3NEZXRhaWxzLmVtYWlsIDpcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzc19saW5lOiB0aGlzLmFkZHJlc3NEZXRhaWxzLmFkZHJlc3NfbGluZSxcbiAgICAgICAgY2l0eTogdGhpcy5hZGRyZXNzRGV0YWlscy5jaXR5LFxuICAgICAgICBjb3VudHk6IHRoaXMuYWRkcmVzc0RldGFpbHMuY291bnR5LFxuICAgICAgICBjb3VudHJ5OiB0aGlzLmFkZHJlc3NEZXRhaWxzLmNvdW50cnksXG4gICAgICAgIHBvc3RhbF9jb2RlOiB0aGlzLmFkZHJlc3NEZXRhaWxzLnBvc3RhbF9jb2RlLFxuICAgICAgfTtcbiAgICBjb25zdCByZXNlbmRSZXF1ZXN0ID0gbmV3IElQdXROb3RpZmljYXRpb25SZXF1ZXN0KGNvbnRhY3REZXRhaWxzLCB0aGlzLmFkZHJlc3NEZXRhaWxzLm5vdGlmaWNhdGlvbl90eXBlKTtcblxuICAgIHRoaXMucmVmdW5kU2VydmljZS5wdXRSZXNlbmRPckVkaXQocmVzZW5kUmVxdWVzdCwgdGhpcy5yZWZ1bmRsaXN0LnJlZnVuZF9yZWZlcmVuY2UsIHRoaXMuYWRkcmVzc0RldGFpbHMubm90aWZpY2F0aW9uX3R5cGUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHB1dFJlc2VuZChub3RpZmljYXRpb246IElSZWZ1bmRzTm90aWZpY2F0aW9ucykge1xuICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgY29uc3QgY29udGFjdERldGFpbHMgPSBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3R5cGUgPT09ICdFTUFJTCcgPyBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmVtYWlsIDpcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzc19saW5lIDpub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmFkZHJlc3NfbGluZSxcbiAgICAgICAgY2l0eTogbm90aWZpY2F0aW9uLmNvbnRhY3RfZGV0YWlscy5jaXR5LFxuICAgICAgICBjb3VudHk6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuY291bnR5LFxuICAgICAgICBjb3VudHJ5OiBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmNvdW50cnksXG4gICAgICAgIHBvc3RhbF9jb2RlOiBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLnBvc3RhbF9jb2RlLFxuICAgICAgfTtcbiAgICBjb25zdCByZXNlbmRSZXF1ZXN0ID0gbmV3IElQdXROb3RpZmljYXRpb25SZXF1ZXN0KGNvbnRhY3REZXRhaWxzLCBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3R5cGUpO1xuXG4gICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLnB1dFJlc2VuZE9yRWRpdChyZXNlbmRSZXF1ZXN0LCB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3JlZmVyZW5jZSwgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbl90eXBlKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSByZXNwb25zZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csXCJcIik7XG4gICAgICB9XG4gICAgKTtcblxuICB9XG5cbiAgZ290b1JlZnVuZFZpZXdQYWdlQ2FuY2VsQnRuQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lICA9ICdyZWZ1bmR2aWV3JztcbiAgfVxuXG4gIGdvdG9SZWZ1bmRSZXZpZXdBbmRTdWJtaXRWaWV3UGFnZUNhbmNlbEJ0bkNsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRWRpdERldGFpbHNDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy52aWV3TmFtZSAgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gIH1cblxuICBnb1RvUmVmdW5kUHJvY2Vzc0NvbXBvbmVudChyZWZ1bmRSZWZlcmVuY2U6IHN0cmluZywgcmVmdW5kTGlzdDogSVJlZnVuZExpc3QpIHtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kbGlzdHNvdXJjZSA9IHJlZnVuZExpc3Q7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZFJlZmVyZW5jZSA9IHJlZnVuZFJlZmVyZW5jZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUGF5QnViYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncHJvY2Vzcy1yZWZ1bmQnO1xuICB9XG5cbiAgZ2V0VGVtcGxhdGVJbnN0cnVjdGlvblR5cGUocGF5bWVudDogSVBheW1lbnQsIHBheW1lbnRSZWZlcmVuY2U6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgaWYgKHBheW1lbnQgPT0gdW5kZWZpbmVkIHx8IHBheW1lbnQgPT0gbnVsbCB8fCBwYXltZW50LnJlZmVyZW5jZSAhPSBwYXltZW50UmVmZXJlbmNlKSB7XG5cbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldFBheW1lbnREZXRhaWxzKHBheW1lbnRSZWZlcmVuY2UpLnN1YnNjcmliZShcbiAgICAgICAgcGF5bWVudCA9PiB7XG4gICAgICAgICAgdGhpcy5wYXltZW50T2JqID0gcGF5bWVudDtcbiAgICAgICAgICB0aGlzLnBheW1lbnRPYmoucmVmZXJlbmNlID0gcGF5bWVudFJlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldE5vdGlmaWNhdGlvbkluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmouY2hhbm5lbCwgdGhpcy5wYXltZW50T2JqLm1ldGhvZCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZUluc3RydWN0aW9uVHlwZSA9ICdUZW1wbGF0ZSc7XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQuY2hhbm5lbCwgcGF5bWVudC5tZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25TZW50VmlldyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50Vmlld0luZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50VmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uU2VudFZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50Vmlld0luZGV4ID0gLTE7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50VmlldyA9IGZhbHNlO1xuICB9XG5cbn1cbiJdfQ==
|