PageSourceSearch

https://myportal.smartstartinc.com/js/ViewModels/Payment/AutopaySe…6S0kRBoQr09EHn5eOBj_WBtV_yGa1mLm8JnjtMLlLjc

js smartstartinc.com collected 2026-10-01 12:35:46 UTC 9,458 bytes, 227 lines download raw bytes

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.