text changes to registration mail content
[namibia] / public / js / app / admin-workspace / dealers.js
1 ;(function(){
2
3         window._w.dealers = {
4
5                 ti : null,
6
7                 onTemplateReady : function( template, event, eventData )
8                 {
9                         _w.dealers.ti = _t[template];
10
11                         _w.dealers.initGrids();
12
13                         // Dealer grid
14                         if (null == App.API.taskContract('gridSystemDealer'))
15                         {
16                                 App.API.getTask(
17                                                 'gridSystemDealer', 'Company', 'Company.Grid', null,
18                                                 {}, _w.dealers.loadDealerGrid, _w.taskContractError
19                                                 );
20                         }
21                         else
22                         {
23                                 _w.dealers.loadDealerGrid( null, {}, {} );
24                         }
25                 },
26
27                 onTemplatePublished : function( template, event, eventData )
28                 {
29                         $(".gridDealerFilter").keypress(function (evt) {
30                                 var charCode = evt.charCode || evt.keyCode;
31                                 if (charCode  == 13) { //Enter key's keycode
32                                         $('#btnDealerSearch').click();
33                                 }
34                         });
35                         
36                         _w.dealers.ti = _t[template];
37
38                         // Dealer grid
39                         $('#btnDealerAdd').click(function() {
40                                 window.location.hash = '/systemuserview?id=0';
41                         });
42             $('#btnDealerClearSearch').click(_w.dealers.clearDealerGridContext);
43             $('#btnDealerSearch').click(_w.dealers.searchDealerGrid);
44
45                 },
46
47                 exportDealerGrid : function()
48                 {
49                         App.API.execTask(
50                                         'gridSystemDealer', {}, {'ExportToExcel': true},
51                                         _w.dealers._onExportReceived, _w.taskExecError,
52                                         'EXPORT', true
53                                         );
54                 },
55
56                 initGrids : function()
57                 {
58
59                         _w.dealers.ti.hydrate({
60                                 // Dealer grid
61                                 'gridDealerTitle': 'Manage dealerships',
62                                 'gridTitleButtons': {
63                                         constructor: 'Button',
64                                         items: {
65                                                 Export: {
66                                                         preset: 'GridExport',
67                                                         id: 'exportAuctionGrid',
68                                                         handler: _w.dealers.exportDealerGrid
69                                                 }
70                                         }
71                                 },
72                                 'gridDealerColumnHeaders': {
73                                         constructor: 'GridColumnHeader',
74                                         items: {
75                                                 Group: {
76                                                         id: 'gridDealerColumn_Group',
77                                                         title: 'GROUP',
78                                                         orderAsc: {
79                                                                 id: 'gridDealerOrder_GroupAsc',
80                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'grp.name', 'ASC')
81                                                         },
82                                                         orderDesc: {
83                                                                 id: 'gridDealerOrder_GroupDesc',
84                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'grp.name', 'DESC')
85                                                         }
86                                                 },
87                                                 Division: {
88                                                         id: 'gridDealerColumn_Division',
89                                                         title: 'DIVISION',
90                                                         orderAsc: {
91                                                                 id: 'gridDealerOrder_DivisionAsc',
92                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'division.name', 'ASC')
93                                                         },
94                                                         orderDesc: {
95                                                                 id: 'gridDealerOrder_DivisionDesc',
96                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'division.name', 'DESC')
97                                                         }
98                                                 },
99                                                 Company: {
100                                                         id: 'gridDealerColumn_Company',
101                                                         title: 'DEALERSHIP',
102                                                         orderAsc: {
103                                                                 id: 'gridDealerOrder_CompanyAsc',
104                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'company.name', 'ASC')
105                                                         },
106                                                         orderDesc: {
107                                                                 id: 'gridDealerOrder_CompanyDesc',
108                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'company.name', 'DESC')
109                                                         }
110                                                 },
111                                                 Name: {
112                                                         id: 'gridDealerColumn_Name',
113                                                         title: 'CONTACT NAME',
114                                                         orderAsc: {
115                                                                 id: 'gridDealerOrder_NameAsc',
116                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'contact.firstName', 'ASC')
117                                                         },
118                                                         orderDesc: {
119                                                                 id: 'gridDealerOrder_NameDesc',
120                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'contact.firstName', 'DESC')
121                                                         }
122                                                 },
123                                                 Surname: {
124                                                         id: 'gridDealerColumn_Surname',
125                                                         title: 'CONTACT SURNAME',
126                                                         orderAsc: {
127                                                                 id: 'gridDealerOrder_SurnameAsc',
128                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'contact.familyName', 'ASC')
129                                                         },
130                                                         orderDesc: {
131                                                                 id: 'gridDealerOrder_SurnameDesc',
132                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'contact.familyName', 'DESC')
133                                                         }
134                                                 },
135                                                 Email: {
136                                                         id: 'gridDealerColumn_Email',
137                                                         title: 'CONTACT EMAIL',
138                                                         orderAsc: {
139                                                                 id: 'gridDealerOrder_EmailAsc',
140                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'contact.email', 'ASC')
141                                                         },
142                                                         orderDesc: {
143                                                                 id: 'gridDealerOrder_EmailDesc',
144                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'contact.email', 'DESC')
145                                                         }
146                                                 },
147                                                 Status: {
148                                                         id: 'gridDealerColumn_Status',
149                                                         title: 'STATUS',
150                                                         orderAsc: {
151                                                                 id: 'gridDealerOrder_StatusAsc',
152                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'company.jobState', 'ASC')
153                                                         },
154                                                         orderDesc: {
155                                                                 id: 'gridDealerOrder_StatusDesc',
156                                                                 bind: $.proxy(_w.dealers.orderDealerGrid, this, 'company.jobState', 'DESC')
157                                                         }
158                                                 }
159                                         }
160                                 },
161                                 'gridDealerColumnFilters': {
162                                         constructor: 'GridColumnFilter',
163                                         items: {
164                                                 Group : {
165                                                         id: 'gridDealerFilter_Group',
166                                                         context: 'gridDealerFilter'
167                                                 },
168                                                 Division : {
169                                                         id: 'gridDealerFilter_Division',
170                                                         context: 'gridDealerFilter'
171                                                 },
172                                                 Company : {
173                                                         id: 'gridDealerFilter_Company',
174                                                         context: 'gridDealerFilter'
175                                                 },
176                                                 Name: {
177                                                         id: 'gridDealerFilter_Name',
178                                                         context: 'gridDealerFilter'
179                                                 },
180                                                 Surname: {
181                                                         id: 'gridDealerFilter_Surname',
182                                                         context: 'gridDealerFilter'
183                                                 },
184                                                 Email: {
185                                                         id: 'gridDealerFilter_Email',
186                                                         context: 'gridDealerFilter'
187                                                 },
188                                                 Status: {
189                                                         id: 'gridDealerFilter_Status',
190                                                         context: 'gridDealerFilter'
191                                                 }
192                                         }
193                                 },
194                                 'gridDealerRowRepeater': {},
195                                 'gridDealerPager': {}
196                         });
197
198                 },
199
200                 loadDealerGrid : function( contract, data, options )
201                 {
202                         App.API.execTask(
203                                         'gridSystemDealer', data, options,
204                                         _w.dealers._onDealerGridDataReceived, _w.taskExecError
205                                         );
206                 },
207
208                 pageDealerGrid : function( page )
209                 {
210                         _w.dealers.loadDealerGrid( {}, {"Grid":{"Page":page}} );
211                 },
212
213                 clearDealerGridContext : function()
214                 {
215                         $('.gridDealerContext').val('');
216                         $('.gridDealerFilter').val('');
217                         _w.dealers.searchDealerGrid();
218                 },
219
220                 searchDealerGrid : function()
221                 {
222                         var filter = {
223                                         count: 0,
224                                         filters: {}
225                         };
226
227                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Group', 'grp.name');
228                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Division', 'division.name');
229                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Company', 'company.name');
230                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Name', 'contact.firstName');
231                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Surname', 'contact.familyName');
232                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Email', 'contact.email');
233                         filter = _w.filterIfnotEmpty(filter, 'gridDealerFilter_Status', 'company.jobState');
234                         var request = {"Grid":{
235                             "Page": 1,
236                             "Filter": filter.filters
237                           }};
238                         _w.dealers.loadDealerGrid( null, request, {} );
239                 },
240
241                 _onDealerGridDataReceived : function( response )
242                 {
243                         _w.dealers.ti.hydrateParam('gridDealerRowRepeater', {});
244                         _w.populateFilters(response.Data.Meta.Filters, {
245                                 'group.name'         : 'gridDealerFilter_Group',
246                                 'groupDivision.name' : 'gridDealerFilter_Division',
247                                 'company.name'       : 'gridDealerFilter_Company',
248                                 'profile.firstName'  : 'gridDealerFilter_Name',
249                                 'profile.familyName' : 'gridDealerFilter_Surname',
250                                 'profile.email'      : 'gridDealerFilter_Email',
251                                 'company.jobState'     : 'gridDealerFilter_Status'
252                         });
253                         var gridData = [];
254                         for (var i = 0; i < response.Data.DataSet.length; i++)
255                         {
256                                 var row = response.Data.DataSet[i];
257                                 gridData.push({
258                                         url: 'systemdealerview',
259                                         prepend: {},
260                                         style: {},
261                                         items: {
262                                                 'id'         : row.id,
263                                                 'Group'      : row.group ? row.group.name : '',
264                                                 'Division'   : row.groupDivision ? row.groupDivision.name : '',
265                                                 'Company'    : row.name,
266                                                 'Name'       : row.contact ? row.contact.firstName : '',
267                                                 'Surname'    : row.contact ? row.contact.familyName : '',
268                                                 'Email'      : row.contact ? row.contact.email : '',
269                                                 'Status'     : row.jobState
270                                 }
271                                 });
272                         }
273                         _w.dealers.ti.hydrateParam('gridDealerRowRepeater', {
274                                 constructor : 'GridDataRow',
275                                 items       : gridData
276                         });
277                         response.Data.Meta.itemName = 'userPager';
278                         response.Data.Meta.bind = _w.dealers.pageDealerGrid;
279                         _w.dealers.ti.hydrateParam('gridDealerPager', {
280                                 constructor : 'GridPager',
281                                 items       : [response.Data.Meta]
282                         });
283                 },
284
285                 orderDealerGrid : function(field, direction)
286                 {
287                         var order = {};
288                         order[field] = direction;
289                         _w.dealers.loadDealerGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );
290                 },
291
292                 _onExportReceived : function( response )
293                 {
294                         var win = window.open();
295                         win.document.write(response);
296                 }
297
298         };
299
300 })();