text changes to registration mail content
[namibia] / public / js / app / admin-workspace / regionalmanager.js
1 ;
2 (function () {
3
4   window._w.regionalmanager = {
5     ti: null,
6     itemId: null,
7     onTemplateReady: function (template, event, eventData)
8     {
9       _w.regionalmanager.ti = _t[template];
10
11       _w.regionalmanager.initGrid();
12
13       App.DataStore.loadSelectListData('groups', true, 'Company', 'Group.SelectList');
14
15       // RegionalManager grid
16       if (null == App.API.taskContract('gridRegionalManager'))
17       {
18         App.API.getTask(
19                 'gridRegionalManager', 'AppConfig', 'RegionalManager.List', null,
20                 {}, _w.regionalmanager.loadRegionalManagerGrid, _w.taskContractError
21                 );
22       }
23       else
24       {
25         _w.regionalmanager.loadRegionalManagerGrid(null, {}, {});
26       }
27       if (null == App.API.taskContract('addRegionalManager'))
28       {
29         App.API.getTask(
30                 'addRegionalManager', 'AppConfig', 'RegionalManager.Create', null,
31                 {}, function () {
32         }, _w.taskContractError
33                 );
34       }
35     },
36     onTemplatePublished: function (template, event, eventData)
37     {
38       _w.regionalmanager.ti.hydrateParam('group', {
39         type: 'select',
40         id: 'group',
41         title: 'Group',
42         dataStoreId: 'groups',
43         value: '',
44       });
45       _w.regionalmanager.ti.hydrateParam('firstName', {
46         type: 'input',
47         id: 'firstName',
48         title: 'Name',
49         value: ''
50       });
51       _w.regionalmanager.ti.hydrateParam('familyName', {
52         type: 'input',
53         id: 'familyName',
54         title: 'Surame',
55         value: ''
56       });
57       _w.regionalmanager.ti.hydrateParam('email', {
58         type: 'input',
59         id: 'email',
60         title: 'Email',
61         value: ''
62       });
63       _w.regionalmanager.ti.hydrateParam('mobile', {
64         type: 'mobile',
65         id: 'mobile',
66         title: 'Mobile',
67         value: ''
68       });
69       _w.regionalmanager._setupValidation();
70       $('#btnNew').click(function () {
71         _w.regionalmanager.itemId = null;
72         $('#group').selectpicker('val', '');
73         $('#firstName').val('');
74         $('#familyName').val('');
75         $('#email').val('');
76         $('#mobile').val('');
77         $('#btnSave').html(' Add ');
78       });
79     },
80     initGrid: function ()
81     {
82
83       _w.regionalmanager.ti.hydrate({
84         // RegionalManager grid
85         'gridRegionalManagerTitle': 'Manage Regional Manager',
86         'gridRegionalManagerColumnHeaders': {
87           constructor: 'GridColumnHeader',
88           items: {
89             firstName: {
90               id: 'gridRegionalManagerColumn_firstName',
91               title: 'NAME'
92             },
93             familyName: {
94               id: 'gridRegionalManagerColumn_familyName',
95               title: 'SURNAME'
96             },
97             email: {
98               id: 'gridRegionalManagerColumn_email',
99               title: 'EMAIL'
100             },
101             mobile: {
102               id: 'gridRegionalManagerColumn_mobile',
103               title: 'MOBILE'
104             },
105             groupName: {
106               id: 'gridRegionalManagerColumn_groupName',
107               title: 'GROUP'
108             }
109           }
110         },
111         'gridRegionalManagerRowRepeater': {}
112       });
113
114     },
115     loadRegionalManagerGrid: function (contract, data, options)
116     {
117       App.API.execTask(
118               'gridRegionalManager', data, options,
119               _w.regionalmanager._onRegionalManagerGridDataReceived, _w.taskExecError
120               );
121     },
122     _onRegionalManagerGridDataReceived: function (response)
123     {
124       _w.regionalmanager.ti.hydrateParam('gridRegionalManagerRowRepeater', {});
125       var gridData = [];
126       for (var i = 0; i < response.Data.length; i++)
127       {
128         var row = response.Data[i];
129         gridData.push({
130           rowId: row.id,
131           group: row.group.id,
132           onClick: function (meta) {
133             _w.regionalmanager.itemId = meta.rowId;
134             $('#group').selectpicker('val', meta.group);
135             $('#firstName').val(meta.items.firstName);
136             $('#familyName').val(meta.items.familyName);
137             $('#email').val(meta.items.email);
138             $('#mobile').val(meta.items.mobile);
139             $('#btnSave').html(' Update ');
140           },
141           items: {
142             'id': row.id,
143             'firstName': row.firstName ? row.firstName : '',
144             'familyName': row.familyName ? row.familyName : '',
145             'email': row.email ? row.email : '',
146             'mobile': row.mobile ? row.mobile : '',
147             'groupName': row.group.name ? row.group.name : '',
148           }
149         });
150       }
151       _w.regionalmanager.ti.hydrateParam('gridRegionalManagerRowRepeater', {
152         constructor: 'GridDataRow',
153         items: gridData
154       });
155     },
156     _setupValidation: function ()
157     {
158       $('#frmRegionalManagerView').validate({
159         "rules": {
160           group: "required",
161           firstName: "required",
162           familyName: "required",
163           mobile: {required: true, mobile: true},
164           email: {required: true, email: true},
165         },
166         messages: {
167           group: "This field is required.",
168           firstName: "This field is required.",
169           familyName: "This field is required.",
170           mobile: "This field is required.",
171           email: {
172             email: "Must be a valid email address."
173           }
174         },
175         submitHandler: function (form) {
176           $('#btnSave').prop('disabled', true);
177           var data = {
178             RegionalManager: {
179               group: $('#group').val(),
180               firstName: $('#firstName').val(),
181               familyName: $('#familyName').val(),
182               email: $('#email').val(),
183               mobile: $('#mobile').val()
184             }
185           };
186           if (null == _w.regionalmanager.itemId)
187           {
188             App.API.execTask(
189                     'addRegionalManager', data, {},
190                     function () {
191                       $('#group').selectpicker('val', '');
192                       $('#firstName').val('');
193                       $('#familyName').val('');
194                       $('#email').val('');
195                       $('#mobile').val('');
196                       _w.regionalmanager.loadRegionalManagerGrid(null, {}, {});
197                       $('#btnSave').prop('disabled', false);
198                       $('#btnSave').html(' Add ');
199                     }, _w.taskExecError
200                     );
201           }
202           else
203           {
204             App.API.getTask(
205                     'updateRegionalManager' + _w.regionalmanager.itemId, 'AppConfig', 'RegionalManager.Update', null,
206                     {id: _w.regionalmanager.itemId}, function () {
207               App.API.execTask(
208                       'updateRegionalManager' + _w.regionalmanager.itemId, data, {},
209                       function () {
210                         $('#group').selectpicker('val', '');
211                         $('#firstName').val('');
212                         $('#familyName').val('');
213                         $('#email').val('');
214                         $('#mobile').val('');
215                         _w.regionalmanager.loadRegionalManagerGrid(null, {}, {});
216                         $('#btnSave').prop('disabled', false);
217                         $('#btnSave').html(' Add ');
218                       }, _w.taskExecError
219                       );
220             }, _w.taskContractError
221                     );
222           }
223         }
224       });
225       $('#btnSave').prop('disabled', false);
226     }
227
228   };
229
230 })();