1function AutopaySetupVm() { 2 var self = this; 3 self.spinnerContainer = ''; 4 self.AutopayEnrollmentViewModels = ko.observableArray(); 5 self.EnrollmentVm = ko.observable(""); 6 self.SelectedAccount = ko.observable(); 7 self.SelectedAccountId = ko.observable(""); 8 self.SubmitEnabled = ko.observable(true); 9 self.DisplaySwitchAccountErrorMessage = ko.observable(false); 10 self.showTokenError = ko.observable(false); 11 self.ShowAutopayActivatedSuccessMessage = ko.observable(false); 12 self.ShowAutopayDeactivatedSuccessMessage = ko.observable(false); 13 self.ShowAutopayUpdateSuccessMessage = ko.observable(false); 14 self.Error = ko.observable(); 15 self.AutopayCancelSuccess = ko.observable(); 16 self.AutopayCancelError = ko.observable(); 17 self.AreYouSureStopAutoPayLabel = ko.computed(function () { 18 if (self.SelectedAccount && self.SelectedAccount() && self.SelectedAccount().AdjustmentAmountWithCurrency()) 19 return localizationHelper.paymentMethod.areYouSureStopAutoPay.replace('{0}', self.SelectedAccount().AdjustmentAmountWithCurrency()); 20 }); 21 22 self.ShowSuccessMessages = ko.computed(function () { 23 return self.ShowAutopayActivatedSuccessMessage() || self.ShowAutopayDeactivatedSuccessMessage() || self.ShowAutopayUpdateSuccessMessage() 24 }); 25 26 self.HideAllMessages = function () { 27 self.DisplaySwitchAccountErrorMessage(false); 28 self.ShowAutopayActivatedSuccessMessage(false); 29 self.ShowAutopayDeactivatedSuccessMessage(false); 30 self.ShowAutopayUpdateSuccessMessage(false); 31 self.Error(null); 32 } 33 34 self.sendToken = function () { 35 self.SubmitEnabled(false); 36 37 if (VmStore.GlobalBlueSnapVm.SelectedPayment() === 'AddNewCard') { 38 var form = $("#AutopaySelectionForm"); 39 form.validate(); 40 if (form.valid()) { 41 VmStore.GlobalBlueSnapVm.ValidateCard(function (callback) { 42 if (callback.error == null && 43 VmStore.GlobalBlueSnapVm.pfToken()) { 44 $("#AutopaySelectionForm").validate().destroy(); 45 self.UpdateAutopayEnrollment(); 46 } 47 else { 48 self.showTokenError(true); 49 } 50 }); 51 } 52 } else { 53 self.UpdateAutopayEnrollment(); 54 } 55 self.SubmitEnabled(true); 56 }; 57 58 self.deactivateAutoPay = function () { 59 self.HideAllMessages(); 60 var options = {}; 61 options.url = window.location.origin + "/Autopay/DeactivateAutopayForAccount?vehicleProgramId=" + self.SelectedAccountId(); 62 options.type = "GET"; 63 options.dataType = "json"; 64 options.contentType = "application/json"; 65 options.success = function (result) { 66 if (result && result.isError) { 67 self.Error(result.message); 68 } 69 else { 70 self.showAutopayModal() 71 self.ShowAutopayDeactivatedSuccessMessage(true); 72 } 73 }; 74 options.error = function (err) { 75 self.Error(localizationHelper.error.genericError); 76 }; 77 options.complete = function () { 78 $('#stopModal').modal('hide'); 79 }; 80 81 ajaxHelper(options); 82 }; 83 84 self.showAutopayModal = function () { 85 $('#autoPaymentSuccesModal').modal('show'); 86 } 87 88 self.goToProgramDashboard = function () { 89 window.location.reload() 90 } 91 self.updateSelectedAccount = function () { 92 let accountId = self.SelectedAccountId(); 93 94 if (accountId !== null) { 95 for (var i = 0; i < self.AutopayEnrollmentViewModels().length; i++) { 96 if (self.AutopayEnrollmentViewModels()[i].VehicleProgramId() === accountId) { 97 self.EnrollmentVm(self.AutopayEnrollmentViewModels()[i]); 98 break; 99 } 100 } 101 } 102 103 VmStore.GlobalBlueSnapVm.InitPaymentFields(); 104 }; 105 106 self.AutopayActive = ko.observable(false); 107 108 self.ActivateAutopay = function () { 109 self.AutopayActive(!self.AutopayActive()); 110 } 111 112 self.SwitchAccount = function (container, hideMessages) { 113 var hideMessages = hideMessages || true; 114 if (container) { 115 self.spinnerContainer = '#' + container; 116 } 117 if (self.SelectedAccountId()) { 118 if (hideMessages === true) { 119 self.HideAllMessages();
120 } 121 var options = {}; 122 options.url = window.location.origin + "/Autopay/SwitchAccounts?vehicleProgramId=" + self.SelectedAccountId(); 123 options.type = "GET"; 124 options.dataType = "json"; 125 options.contentType = "application/json"; 126 options.success = function (result) { 127 if (result.ErrorMessage) { 128 self.Error(result.ErrorMessage); 129 } 130 else { 131 self.SelectedAccount(ko.mapping.fromJS(result)); 132 VmStore.GlobalBlueSnapVm.SelectedPayment(self.SelectedAccount().CardSelectionViewModel.SelectedPayment()); 133 VmStore.GlobalBlueSnapVm.InitPaymentFields(); 134 } 135 }; 136 options.error = function (err) { 137 self.DisplaySwitchAccountErrorMessage(true); 138 }; 139 if (self.spinnerContainer) { 140 options.spinner = true; 141 options.spinnerSelector = self.spinnerContainer; 142 } 143 144 ajaxHelper(options); 145 } 146 } 147 148 self.UpdateAutopayEnrollment = function () { 149 self.HideAllMessages(); 150 self.SelectedAccount().CardSelectionViewModel.AddPaymentMethodRequest.NameOnCard(VmStore.GlobalBlueSnapVm.nameOnCard()); 151 self.SelectedAccount().CardSelectionViewModel.AddPaymentMethodRequest.Token(VmStore.GlobalBlueSnapVm.pfToken()); 152 self.SelectedAccount().CardSelectionViewModel.AddPaymentMethodRequest.Type(VmStore.GlobalBlueSnapVm.paymentMethodType()); //for some reason this breaks the conversion to the server if sent as a string 153 self.SelectedAccount().CardSelectionViewModel.AddPaymentMethodRequest.ExpirationDate(CardExpirationToDateOnly(VmStore.GlobalBlueSnapVm.expirationMMYYYY())); 154 var options = {}; 155 options.url = window.location.origin + "/Autopay/UpdateAutopayEnrollment"; 156 options.data = ko.mapping.toJSON(self.SelectedAccount()); 157 options.type = "POST"; 158 options.dataType = "json"; 159 options.contentType = "application/json"; 160 options.success = function (result) { 161 if (result && result.isError) { 162 self.Error(result.message); 163 window.scrollTo(0, 0); 164 } 165 else { 166 self.ShowAutopayActivatedSuccessMessage(true) 167 if (self.SelectedAccount().Enrolled() === false) { 168 self.SelectedAccount().Enrolled(true); 169 self.showAutopayModal(); 170 } 171 else { 172 self.showAutopayModal(); 173 } 174 if (VmStore.PaymentMethodsVm.IsAddPayment() === true) { 175 //need to use timeout, otherwise spinnerContainer will not work 176 setTimeout(function () { self.SwitchAccount(null, false); }, 0); 177 } 178 } 179 }; 180 options.error = function () { 181 self.Error(localizationHelper.error.genericError); 182 }; 183 options.complete = function () { 184 self.SubmitEnabled(true); 185 VmStore.GlobalBlueSnapVm.ReValidateFields("#AutopaySelectionForm"); 186 }; 187 options.spinner = true; 188 options.spinnerSelector = self.spinnerContainer; 189 190 ajaxHelper(options); 191 } 192 193 self.CloseCancelAutopayModal = function () { 194 $('#stopModal').modal('hide'); 195 }; 196 197 self.CancelAutopay = function () { 198 $('#stopModal').modal('hide'); 199 200 var options = {}; 201 options.url = window.location.origin + "/Autopay/DeactivateAutopayForAccount?vehicleProgramId=" + self.SelectedAccountId(); 202 options.type = "GET"; 203 options.dataType = "json"; 204 options.contentType = "application/json"; 205 options.success = function (result) { 206 if (result.isError === false) { 207 self.AutopayCancelError(false); 208 self.AutopayCancelSuccess(true); 209 self.SelectedAccount().Enrolled(false); 210 self.SelectedAccount().StatusLabel(localizationHelper.error.inactive); 211 self.SelectedAccount().StatusIsNegative(true); 212 self.SelectedAccount().ActionLabel(localizationHelper.paymentMethod.activateAutopay); 213 } else { 214 self.AutopayCancelError(result.message); 215 self.AutopayCancelSuccess(false); 216 } 217 }; 218 options.error = function (err) { 219 }; 220 if (self.spinnerContainer) { 221 options.spinner = true; 222 options.spinnerSelector = self.spinnerContainer; 223 } 224 225 ajaxHelper(options); 226 }; 227}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.