source: main/trunk/model-interfaces-dev/heritage-nz/iframe/heritage-nz-dl_files/formsController.js@ 32796

Last change on this file since 32796 was 32796, checked in by davidb, 5 years ago

Initial set of files to provide look and feel of Heritage NZ site, plus SVN clickable map in an iframe

  • Property svn:executable set to *
File size: 14.2 KB
Line 
1(function () {
2 angular.module('forms')
3 .controller('MembershipFormCtrl', ['$scope', '$document', '$window', function ($scope, $document, $window) {
4 // An object to hold all our form field values
5 $scope.frm = {};
6 $scope.frm.minimumDonationAmount = 100;
7 var nz = 'New Zealand';
8 $scope.frm.recaptcha = false; // THIS IS NEW
9
10 $scope.frm.ApplicationTypes = ["New Membership", "Renew a Membership", "Gift a Membership", "Renew a Gift Membership"];
11 $scope.frm.ApplicationType = $scope.frm.ApplicationTypes[0]; // default selected
12
13 $scope.$watch('beneficiaryCountryIsNZ()', function (isNz) {
14 if (isNz) {
15 $scope.frm.OverseasMagazinePostageIsRequired = false;
16 $scope.frm.OverseasMembershipCardIsRequired = false;
17 } else {
18 //after overseas price list introduced, the overseas postage is redundant
19 $scope.frm.OverseasMembershipCardIsRequired = false;
20 $scope.frm.ExpressServiceFeeIsRequired = false;
21 }
22 });
23
24 $scope.$watch('frm.Country', function (newValue, oldValue) {
25 if ($scope.frm.ApplicationType == 'New Membership' || $scope.frm.ApplicationType == 'Renew a Membership') {
26 validateAfterCountryChange(newValue, oldValue);
27 } else return;
28 });
29
30 $scope.$watch('frm.RecipientCountry', function (newValue, oldValue) {
31 if ($scope.frm.ApplicationType == 'Gift a Membership' || $scope.frm.ApplicationType == 'Renew a Gift Membership') {
32 validateAfterCountryChange(newValue, oldValue);
33 } else return;
34 });
35
36 function validateAfterCountryChange(newValue, oldValue) {
37 if (oldValue == null) return;
38 if (newValue == oldValue) return;
39 if (newValue != nz && oldValue != nz) return;
40 $scope.frm.MembershipType = null;
41 $scope.checkIndividual();
42 $scope.showAfterCountryChgange = true;
43 }
44
45 $scope.$watch('frm.MembershipType', function (newValue, oldValue) {
46 if (newValue == oldValue) return;
47 if (newValue != null && newValue != '')
48 $scope.showAfterCountryChgange = false;
49 $scope.checkIndividual();
50 });
51
52 // RecipientCountry takes precidence over BillingCountry for Gift a Membership as
53 // the recipients panel is only shown when Gift a Membership is the chosen application type
54 $scope.beneficiaryCountryIsNZ = function () {
55 return $scope.frm.IsGiftTransaction() ? $scope.frm.RecipientCountry == nz : $scope.frm.Country == nz;
56 };
57
58 // Gift or Gift renewals change validation logic so we need to be able to check what application type is currently active
59 $scope.frm.IsGiftTransaction = function () {
60 return $scope.frm.ApplicationType.toLowerCase().indexOf('gift') != -1;
61 };
62
63 $scope.frm.total = function () {
64 var membershipTypePrice = parseInt($scope.frm.MembershipTypePrice, 10) || 0,
65 donationAmount = parseInt($scope.frm.DonationAmount, 10) || 0,
66 overseasMagazinePostageValue = $scope.frm.OverseasMagazinePostageIsRequired ? (parseInt($scope.frm.OverseasMagazinePostageValue, 10) || 0) : 0,
67 //overseasMembershipCardValue = $scope.frm.OverseasMembershipCardIsRequired ? (parseInt($scope.frm.OverseasMembershipCardValue, 10) || 0) : 0,
68 additionalOrReplacementCardValue = $scope.frm.AdditionalOrReplacementCardIsRequired ? (parseInt($scope.frm.AdditionalOrReplacementCardValue, 10) || 0) : 0,
69 expressServiceFeeValue = $scope.frm.ExpressServiceFeeIsRequired ? (parseInt($scope.frm.ExpressServiceFeeValue, 10) || 0) : 0;
70
71 return membershipTypePrice + donationAmount + overseasMagazinePostageValue + additionalOrReplacementCardValue + expressServiceFeeValue;
72 };
73
74 $scope.uncheckIfLessThanMinAmount = function () {
75 if ($scope.frm.DonationAmount < $scope.frm.minimumDonationAmount) {
76 $scope.frm.ExcludeDonationFromMagazine = false;
77 }
78 };
79
80 $scope.formIsValid = function (form) {
81 return $scope.frm.recaptcha && form.$valid && $scope.frm.HasReadPolicy === true ? true : false;
82 };
83
84 $scope.showConditionsError = function (form) {
85 return form.$valid && !$scope.formIsValid(form) ? true : false;
86 };
87
88 $scope.displayTooltip = function (prop) {
89 $scope[prop] = !$scope[prop];
90
91 if ($scope[prop]) {
92 $window.onclick = function (event) {
93 if (event.target.id != prop) {
94 $scope.$apply(function () {
95 $scope[prop] = false;
96 });
97 }
98 };
99 }
100 };
101
102 $scope.checkIndividual = function() {
103 var result = $scope.frm.MembershipType != null && $scope.frm.MembershipType != '' && $scope.frm.JointMemberName != null && $scope.frm.JointMemberName != '' && $scope.frm.MembershipType.toLowerCase().indexOf('individual') != -1;
104 $scope.hptFrm.JointMemberName.$setValidity('individual', !result);
105 return result;
106 };
107
108 $scope.setResponse = function (response) {
109 console.log(response);
110 $.ajax({
111 type: 'POST',
112 url: "/api/Validation/ReCaptcha",
113 data: "=" + response,
114 success: function (data) {
115 var res = JSON.parse(data);
116 console.log(res);
117 console.log(res.success);
118 if (res.success === true) {
119 $scope.frm.recaptcha = true;
120 $('#submitContainer').toggle("fast");
121 }
122 }
123 });
124 };
125
126 $scope.onExpire = function () {
127 $scope.frm.recaptcha = false;
128 $('#submitContainer').toggle("fast");
129
130 }
131
132 }])
133 .controller('SubscriptionFormCtrl', ['$scope', '$window', function ($scope, $window) {
134 $scope.frm = {};
135 $scope.frm.minimumDonationAmount = 100;
136 $scope.frm.recaptcha = false; // THIS IS NEW
137
138 $scope.frm.SubscriptionTypes = ["New Subscription", "Renew a Subscription", "Gift a Subscription", "Renew a Gift Subscription"];
139 $scope.frm.SubscriptionType = $scope.frm.SubscriptionTypes[0]; // default selected
140
141 // RecipientCountry takes precidence over BillingCountry for Gift a Membership as
142 // the recipients panel is only shown when Gift a Membership is the chosen application type
143 $scope.beneficiaryCountryIsNZ = function () {
144 return $scope.frm.IsGiftTransaction() ? $scope.frm.RecipientCountry == 'New Zealand' : $scope.frm.Country == 'New Zealand';
145 };
146
147 // Gift or Gift renewals change validation logic so we need to be able to check what application type is currently active
148 $scope.frm.IsGiftTransaction = function () {
149 return $scope.frm.SubscriptionType.toLowerCase().indexOf('gift') != -1;
150 };
151
152 $scope.frm.total = function () {
153 var subscriptionAmount = parseInt($scope.frm.SubscriptionAmount, 10) || 0,
154 donationAmount = parseInt($scope.frm.DonationAmount, 10) || 0;
155
156 return subscriptionAmount + donationAmount;
157 };
158
159 $scope.uncheckIfLessThanMinAmount = function () {
160 if ($scope.frm.DonationAmount < $scope.frm.minimumDonationAmount) {
161 $scope.frm.ExcludeDonationFromMagazine = false;
162 }
163 };
164
165 $scope.formIsValid = function (form) {
166 return $scope.frm.recaptcha && form.$valid && $scope.frm.HasReadPolicy === true ? true : false;
167 };
168
169 $scope.showConditionsError = function (form) {
170 return form.$valid && !$scope.formIsValid(form) ? true : false;
171 };
172
173 $scope.displayTooltip = function (prop) {
174 $scope[prop] = !$scope[prop];
175
176 if ($scope[prop]) {
177 $window.onclick = function (event) {
178 if (event.target.id != prop) {
179 $scope.$apply(function () {
180 $scope[prop] = false;
181 });
182 }
183 };
184 }
185 };
186
187 $scope.setResponse = function (response) {
188 console.log(response);
189 $.ajax({
190 type: 'POST',
191 url: "/api/Validation/ReCaptcha",
192 data: "=" + response,
193 success: function (data) {
194 var res = JSON.parse(data);
195 console.log(res);
196 console.log(res.success);
197 if (res.success === true) {
198 $scope.frm.recaptcha = true;
199 $('#submitContainer').toggle("fast");
200 }
201 }
202 });
203 };
204
205 $scope.onExpire = function () {
206 $scope.frm.recaptcha = false;
207 $('#submitContainer').toggle("fast");
208
209 }
210
211 }])
212 .controller('DonationFormCtrl', ['$scope', '$timeout', '$window', 'vcRecaptchaService', function ($scope, $timeout, $window, recaptcha) {
213
214 $scope.frm = {};
215 $scope.frm.minimumDonationAmount = 100;
216 $scope.frm.recaptcha = false; // THIS IS NEW
217
218 $scope.initialCause = function (causes) {
219 var linkPara = getParameterByName('LinkParameter');
220 $scope.frm.items = [];
221 var indexPara = -1;
222 var showOption = "Yes";
223 if (linkPara != null && linkPara != '') {
224 indexPara = causes.indexOf(linkPara);
225 }
226 for (var i = 0; i < causes.length; i++) {
227 if (indexPara != -1 && i != indexPara)
228 showOption = "No";
229 else
230 showOption = "Yes";
231 $scope.frm.items.push({
232 showYN: showOption, Option: causes[i]
233 });
234 }
235
236 //$scope.frm.Causes = causes;
237 $scope.frm.Causes = $scope.frm.items
238 var cau = $scope.frm.items[0];
239
240 if (linkPara != null && linkPara != '') {
241 if (causes.indexOf(linkPara) == -1) {
242 $scope.frm.Cause = cau.Option;
243 }
244 else {
245 $scope.frm.Cause = linkPara;
246 }
247 }
248 else {
249
250 $scope.frm.Cause = cau.Option;
251 }
252
253 };
254
255
256
257 $scope.formIsValid = function (form) {
258 /*return form.$valid && $scope.frm.HasReadPolicy === true ? true : false; OLD ONE*/
259 return $scope.frm.recaptcha && form.$valid && $scope.frm.HasReadPolicy === true ? true : false;
260 };
261
262 $scope.showConditionsError = function (form) {
263 return form.$valid && !$scope.formIsValid(form) ? true : false;
264 };
265
266 $scope.uncheckIfLessThanMinAmount = function () {
267 if ($scope.frm.DonationAmount < $scope.frm.minimumDonationAmount) {
268 $scope.frm.ExcludeDonationFromMagazine = false;
269 }
270 };
271 $scope.displayTooltip = function (prop) {
272 $scope[prop] = !$scope[prop];
273
274 if ($scope[prop]) {
275 $window.onclick = function (event) {
276 if (event.target.id != prop) {
277 $scope.$apply(function () {
278 $scope[prop] = false;
279 });
280 }
281 };
282 }
283 };
284
285 $scope.setResponse = function (response) {
286 console.log(response);
287 $.ajax({
288 type: 'POST',
289 url: "/api/Validation/ReCaptcha",
290 data: "=" + response,
291 success: function (data) {
292 var res = JSON.parse(data);
293 console.log(res);
294 console.log(res.success);
295 if (res.success === true) {
296 $scope.frm.recaptcha = true;
297 $('#submitContainer').toggle("fast");
298 }
299 }
300 });
301 };
302
303 $scope.onExpire = function () {
304 $scope.frm.recaptcha = false;
305 $('#submitContainer').toggle("fast");
306
307 }
308 function getParameterByName(name) //courtesy Artem
309 {
310 name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
311 var regexS = "[\\?&]" + name + "=([^&#]*)";
312 var regex = new RegExp(regexS);
313 var results = regex.exec(window.location.href);
314 if (results == null)
315 return "";
316 else
317 return decodeURIComponent(results[1].replace(/\+/g, " "));
318 }
319 }]);
320}());
Note: See TracBrowser for help on using the repository browser.