text changes to registration mail content
[namibia] / public / js / app / portal-workspace / membershipview.js
1 ;(function(){
2
3         window._w.membershipview = {
4
5                 itemId : null,
6                 itemData : null,
7                 formMeta : null,
8                 ti : null,
9                 limited : false,
10                 newItem : false,
11                 ownAccount : true,
12
13                 onViewTemplateReady : function( template, event, eventData )
14                 {
15                         _w.membershipview.ti = _t[template];
16                         _w.membershipview.limited = ('limitedmembershipview' == template)
17                                 ? true
18                                 : false;
19
20                         App.DataStore.loadSelectListData('years', true, 'Stock', 'Year.SelectList');
21                         App.DataStore.loadSelectListData('makes', true, 'Stock', 'Make.SelectList');
22
23                         _w.membershipview.setMembershipViewFormMeta();
24                         _w.membershipview.ti.hydrate(_w.membershipview.formMeta);
25
26                         // Retrieve initial view data.
27                         _w.membershipview.itemId = App.Util.getUrlParam('id');
28                         _w.membershipview.newItem = false;
29                         App.API.getTask(
30                                 'updateMembership:' + _w.membershipview.itemId, 'PriceGuide', 'Member.Update', null,
31                                 {'id':_w.membershipview.itemId},
32                                 $.proxy( _w.membershipview._onMembershipViewDataReceived, this ),
33                                 _w.taskContractError
34                         );
35
36                 },
37
38                 onViewPublished : function( template, event, eventData )
39                 {
40                         if (null != _w.membershipview.itemData)
41                         {
42                                 _w.membershipview._onDataAndTemplate();
43                         }
44                 },
45
46                 setMembershipViewFormMeta : function( data )
47                 {
48                         if (!data)
49                         {
50                                 data = {};
51                         }
52                         _w.membershipview.formMeta = {
53                                 'fromKm' : {
54                                         type  : 'input',
55                                         id    : 'fromKm',
56                                         title : 'Minimum km',
57                                         value : data.fromKm ? data.fromKm : ''
58                                 },
59                                 'toKm' : {
60                                         type  : 'input',
61                                         id    : 'toKm',
62                                         title : 'Maximum km',
63                                         value : data.toKm ? data.toKm : ''
64                                 },
65                                 'fromYear' : {
66                                         type  : 'select',
67                                         id    : 'fromYear',
68                                         title : 'From year',
69                                         dataStoreId : 'years',
70                                         value : data.fromYear ? data.fromYear : ''
71                                 },
72                                 'toYear' : {
73                                         type  : 'select',
74                                         id    : 'toYear',
75                                         title : 'To year',
76                                         dataStoreId : 'years',
77                                         value : data.toYear ? data.toYear : ''
78                                 },
79                                 'emailNotification' : {
80                                         type  : 'checkbox',
81                                         id    : 'emailNotification',
82                                         title : 'Receive email notifications',
83                                         value : data.emailNotification
84                                 },
85                                 'smsNotification' : {
86                                         type  : 'checkbox',
87                                         id    : 'smsNotification',
88                                         title : 'Receive sms notifications',
89                                         value : data.smsNotification
90                                 },
91                                 'allMakes' : {
92                                         type  : 'checkbox',
93                                         id    : 'allMakes',
94                                         title : 'All makes',
95                                         value : data.allMakes ? data.allMakes : false,
96                                         onChange : function() {
97                                                 $(this).prop('checked')
98                                                         ? $('#makes-section').hide()
99                                                         : $('#makes-section').show();
100                                         }
101                                 },
102                                 'applyToAll' : {
103                                         type  : 'checkbox',
104                                         id    : 'applyToAll',
105                                         title : 'Apply changes to all clubs',
106                                         value : false
107                                 },
108                                 'makes' : {
109                                         type        : 'checkGroup',
110                                         id          : 'makes',
111                                         dataStoreId : 'makes',
112                                         itemName    : 'makes',
113                                         split       : 4,
114                                         data        : data.makes ? data.makes : {}
115                                 }
116                         };
117                 },
118
119                 _onDataAndTemplate : function ()
120                 {
121                         if (!_w.membershipview.itemData.allMakes)
122                         {
123                                 $('#makes-section').show();
124                         }
125                         if ('Invited' == _w.membershipview.itemData.status)
126                         {
127                                 $('#btnUpdate').hide();
128                                 $('#btnAccept').show();
129                                 $('#btnDecline').show();
130                                 $('#btnAccept').click(function() {
131                                         App.API.getTask(
132                                                         'acceptMembership:' + _w.membershipview.itemId, 'PriceGuide', 'Member.Accept', null,
133                                                         {'id':_w.membershipview.itemId}, function() {
134                                                                 App.API.execTask(
135                                                                                 'acceptMembership:' + _w.membershipview.itemId, {}, {},
136                                                                                 _w.membershipview._onMembershipUpdated, _w.taskExecError
137                                                                         );
138                                                         }, _w.taskContractError
139                                                 );
140                                 });
141                                 $('#btnDecline').click(function() {
142                                         App.API.getTask(
143                                                         'declineMembership:' + _w.membershipview.itemId, 'PriceGuide', 'Member.Decline', null,
144                                                         {'id':_w.membershipview.itemId}, function() {
145                                                                 App.API.execTask(
146                                                                                 'declineMembership:' + _w.membershipview.itemId, {}, {},
147                                                                                 _w.membershipview._onMembershipUpdated, _w.taskExecError
148                                                                         );
149                                                         }, _w.taskContractError
150                                                 );
151                                 });
152                         }
153                         if ('Active' != _w.membershipview.itemData.status)
154                         {
155                                 $('#btnUpdate').hide();
156                         }
157                         if ('Active' == _w.membershipview.itemData.status)
158                         {
159                                 $('#btnDeactivate').show();
160                                 $('#btnDeactivate').click(function() {
161                                         App.API.getTask(
162                                                         'deactivateMembership:' + _w.membershipview.itemId, 'PriceGuide', 'Member.Deactivate', null,
163                                                         {'id':_w.membershipview.itemId}, function() {
164                                                                 App.API.execTask(
165                                                                                 'deactivateMembership:' + _w.membershipview.itemId, {}, {},
166                                                                                 _w.membershipview._onMembershipUpdated, _w.taskExecError
167                                                                         );
168                                                         }, _w.taskContractError
169                                                 );
170                                 });
171                         }
172                         if ('Inactive' == _w.membershipview.itemData.status || 'Declined' == _w.membershipview.itemData.status)
173                         {
174                                 $('#btnActivate').show();
175                                 $('#btnActivate').click(function() {
176                                         App.API.getTask(
177                                                         'activateMembership:' + _w.membershipview.itemId, 'PriceGuide', 'Member.Activate', null,
178                                                         {'id':_w.membershipview.itemId}, function() {
179                                                                 App.API.execTask(
180                                                                                 'activateMembership:' + _w.membershipview.itemId, {}, {},
181                                                                                 _w.membershipview._onMembershipUpdated, _w.taskExecError
182                                                                         );
183                                                         }, _w.taskContractError
184                                                 );
185                                 });
186                         }
187                         _w.membershipview._setupValidation();
188                 },
189
190                 _onMembershipViewDataReceived : function( response )
191                 {
192                         _w.membershipview.itemId = response.Data.id;
193                         _w.membershipview.itemData = response.Data;
194                         _w.membershipview.setMembershipViewFormMeta(response.Data);
195                         _w.membershipview.ti.hydrate(_w.membershipview.formMeta);
196                         if (_w.membershipview.ti.published)
197                         {
198                                 _w.membershipview._onDataAndTemplate();
199                         }
200                 },
201
202                 _setupValidation : function ()
203                 {
204                         $('#frmMembershipView').validate({
205                                 "rules": {
206                                         fromKm: {digits: true},
207                                         toKm: {digits: true}
208                                 },
209                                 submitHandler: function( form ) {
210                                         $('#btnUpdate').prop('disabled', true);
211                                         var data = _w.membershipview._prepMembershipUpdateData();
212                                         App.API.execTask(
213                                                         'updateMembership:' + _w.membershipview.itemId, data, {},
214                                                         _w.membershipview._onMembershipUpdated, _w.taskExecError
215                                                 );
216                                 }
217                         });
218                         $('#btnUpdate').prop('disabled', false);
219                 },
220
221                 _prepMembershipUpdateData : function()
222                 {
223                         var data = _w.membershipview.ti.harvest();
224                         if ('' == data.fromKm)
225                         {
226                                 data.fromKm = null;
227                         }
228                         if ('' == data.toKm)
229                         {
230                                 data.toKm = null;
231                         }
232                         return {Member:data};
233                 },
234
235                 _onMembershipUpdated : function( response )
236                 {
237                         window.location.hash = '/settings';
238                 }
239
240         };
241
242 })();