text changes to registration mail content
[namibia] / public / js / app / admin-workspace / systemdealerview.js
1 ;
2 (function () {
3
4   window._w.systemdealerview = {
5     itemId: null,
6     itemData: null,
7     formMeta: null,
8     ti: null,
9     limited: false,
10     newItem: false,
11     ownAccount: true,
12     onTemplateReady: function (template, event, eventData)
13     {
14       _w.systemdealerview.itemData = null;
15       _w.systemdealerview.ti = _t[template];
16       _w.systemdealerview.limited = ('limitedsystemdealerview' == template)
17               ? true
18               : false;
19
20       App.DataStore.setData('companytypes', [
21         {"value": "Limited", "label": "Limited"},
22         {"value": "PTY Limited", "label": "PTY Limited"},
23         {"value": "Closed Corporation", "label": "Closed Corporation"},
24         {"value": "Sole Proprietor", "label": "Sole Proprietor"}
25       ]);
26       App.DataStore.setData('dealertypes', [
27         {"value": "Dealer", "label": "Dealer"},
28         {"value": "Trader", "label": "Trader"},
29         {"value": "Trade Center", "label": "Trade Center"},
30         {"value": "Wholesale / Trader", "label": "Wholesale / Trader"}
31       ]);
32       App.DataStore.setData('automatefiles', [
33         {"value": "CJD", "label": "CJD"},
34         {"value": "LSaker", "label": "LSaker"},
35         {"value": "MultiFran", "label": "MultiFran"},
36         {"value": "Toyota", "label": "Toyota"}
37       ]);
38       App.DataStore.setData('autolinefiles', [
39         {"value": "Cargo", "label": "Cargo"},
40         {"value": "Ford", "label": "Ford"},
41         {"value": "GM", "label": "GM"},
42         {"value": "Honda", "label": "Honda"},
43         {"value": "Nissan", "label": "Nissan"}
44       ]);
45       App.DataStore.loadSelectListData('countries', true, 'Location', 'Country.SelectList');
46       App.DataStore.loadSelectListData('groups', true, 'Company', 'Group.SelectList');
47       App.DataStore.loadSelectListData('tradecenters', true, 'Company', 'Company.TradeCenterSelectList');
48
49
50
51       _w.systemdealerview.setCompanyViewFormMeta();
52       _w.systemdealerview.ti.hydrate(_w.systemdealerview.formMeta);
53
54       // Retrieve initial view data.
55       _w.systemdealerview.itemId = App.Util.getUrlParam('id');
56       _w.systemdealerview.newItem = false;
57       App.API.getTask(
58               'updateCompany:' + _w.systemdealerview.itemId, 'Company', 'Company.AdminUpdate', _w.systemdealerview.itemId,
59               {'id': _w.systemdealerview.itemId}, $.proxy(_w.systemdealerview._onCompanyViewDataReceived, this), _w.taskContractError
60               );
61
62     },
63     onTemplatePublished: function (template, event, eventData)
64     {
65       if (null != _w.systemdealerview.itemData)
66       {
67         _w.systemdealerview._setupValidation();
68       }
69     },
70     setCompanyViewFormMeta: function (data)
71     {
72       if (!data)
73       {
74         data = {};
75       }
76       _w.systemdealerview.formMeta = {
77         'firstName': {
78           type: 'input',
79           id: 'firstName',
80           title: 'Name',
81           value: data.contact ? data.contact.firstName : ''
82         },
83         'familyName': {
84           type: 'input',
85           id: 'familyName',
86           title: 'Surname',
87           value: data.contact ? data.contact.familyName : ''
88         },
89         'office': {
90           type: 'input',
91           id: 'office',
92           title: 'Landline',
93           value: data.contact ? data.contact.office : ''
94         },
95         'mobile': {
96           type: 'mobile',
97           id: 'mobile',
98           title: 'Mobile',
99           value: data.contact ? data.contact.mobile : ''
100         },
101         'email': {
102           type: 'input',
103           id: 'email',
104           title: 'Email',
105           value: data.contact ? data.contact.email : ''
106         },
107         'group': {
108           type: 'select',
109           id: 'group',
110           title: 'Group',
111           dataStoreId: 'groups',
112           value: data.group ? data.group.id : '',
113           onChange: function () {
114             if (!App.DataStore.getItem('BuildSelect:group', false))
115             {
116               App.DataStore.loadSelectListData(
117                       'divisions', false, 'Company', 'GroupDivision.SelectList', null, {
118                         Filter: {group: $(this).val()}
119                       });
120               App.DataStore.loadSelectListData('regionalManagers', false, 'AppConfig', 'RegionalManager.SelectList', null,
121                 {"Filter": {
122                     "group": response.Data.group.id,
123                   }});
124             }
125           }
126         },
127         'groupDivision': {
128           type: 'select',
129           id: 'groupDivision',
130           title: 'Group division',
131           dataStoreId: 'divisions',
132           value: data.groupDivision ? data.groupDivision.id : ''
133         },
134         'name': {
135           type: 'input',
136           id: 'name',
137           title: 'Name',
138           value: data.name ? data.name : ''
139         },
140         'businessName': {
141           type: 'input',
142           id: 'businessName',
143           title: 'Business name',
144           value: data.businessName ? data.businessName : ''
145         },
146         'companyRegistrationNumber': {
147           type: 'input',
148           id: 'companyRegistrationNumber',
149           title: 'Company Reg no',
150           value: data.companyRegistrationNumber ? data.companyRegistrationNumber : ''
151         },
152         'vatNumber': {
153           type: 'input',
154           id: 'vatNumber',
155           title: 'Vat no',
156           value: data.vatNumber ? data.vatNumber : ''
157         },
158         'dealerStockNumber': {
159           type: 'input',
160           id: 'dealerStockNumber',
161           title: 'Dealer stock no',
162           value: data.dealerStockNumber ? data.dealerStockNumber : ''
163         },
164         'companyType': {
165           type: 'select',
166           id: 'companyType',
167           title: 'Company type',
168           dataStoreId: 'companytypes',
169           value: data.companyType ? data.companyType : '',
170           onChange: function () {
171             if (!App.DataStore.getItem('BuildSelect:companyType', false))
172             {
173               if ('Sole Proprietor' == $(this).val())
174               {
175                 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').hide();
176                 $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').hide();
177                 $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').show();
178                 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').show();
179                 $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
180               }
181               else
182               {
183                 $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').hide();
184                 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').hide();
185                 $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
186                 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').show();
187                 $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').show();
188               }
189             }
190           }
191         },
192         'dealerType': {
193           type: 'select',
194           id: 'dealerType',
195           title: 'Dealer type',
196           dataStoreId: 'dealertypes',
197           value: data.dealerType ? data.dealerType : ''
198         },
199         'tradeCenter': {
200           type: 'select',
201           id: 'tradeCenter',
202           title: 'Trade center',
203           selectEmpty: 'Not assigned',
204           dataStoreId: 'tradecenters',
205           value: data.tradeCenter ? data.tradeCenter.id : ''
206         },
207         'publicCentre': {
208           type: 'checkbox',
209           id: 'publicCentre',
210           title: 'Public Centre',
211           value: data.publicCentre ? data.publicCentre : false
212         },
213         'priceGuide': {
214           type: 'checkbox',
215           id: 'priceGuide',
216           title: 'Available on Price Guide invite list',
217           value: data.priceGuide ? data.priceGuide : false
218         },
219         'regionalManager': {
220           type: 'select',
221           id: 'regionalManager',
222           title: 'Regional Manager',
223           dataStoreId: 'regionalManagers',
224           value: data.regionalManager ? data.regionalManager.id : '',
225         },
226         'country': {
227           type: 'select',
228           id: 'country',
229           title: 'Country',
230           dataStoreId: 'countries',
231           value: data.city ? data.city.region.country.id : '',
232           onChange: function () {
233             if (!App.DataStore.getItem('BuildSelect:country', false))
234             {
235               _w.systemdealerview.itemData.city.region.country.id = $('#country').val();
236               _w.systemdealerview._listRegionTown();
237             }
238           }
239         },
240         'region': {
241           type: 'select',
242           id: 'region',
243           title: 'Region',
244           dataStoreId: 'regions',
245           value: data.city ? data.city.region.id : '',
246           onChange: function () {
247             if (!App.DataStore.getItem('BuildSelect:region', false))
248             {
249               _w.systemdealerview.itemData.city.region.id = $('#region').val();
250               _w.systemdealerview._listRegionTown();
251
252             }
253           }
254         },
255         'city': {
256           type: 'select',
257           id: 'city',
258           title: 'Town',
259           dataStoreId: 'cities',
260           value: data.city ? data.city.id : ''
261         },
262         'street': {
263           type: 'input',
264           id: 'street',
265           title: 'Street',
266           value: data.street ? data.street : ''
267         },
268         'postalCode': {
269           type: 'input',
270           id: 'postalCode',
271           title: 'Code',
272           value: data.postalCode ? data.postalCode : ''
273         },
274         'docStockCertificate': {
275           type: 'document',
276           id: 'docStockCertificate',
277           title: 'Stock certificate',
278           value: data.docStockCertificate ? data.docStockCertificate : null
279         },
280         'docAddressProof': {
281           type: 'document',
282           id: 'docAddressProof',
283           title: 'Proof of business address',
284           value: data.docAddressProof ? data.docAddressProof : null
285         },
286         'docCopyOfId': {
287           type: 'document',
288           id: 'docCopyOfId',
289           title: 'Copy of ID document',
290           value: data.docCopyOfId ? data.docCopyOfId : null
291         },
292         'docCopyOfDirectorId': {
293           type: 'document',
294           id: 'docCopyOfDirectorId',
295           title: 'Copy of directors ID document',
296           value: data.docCopyOfDirectorId ? data.docCopyOfDirectorId : null
297         },
298         'docCompanyRegistration': {
299           type: 'document',
300           id: 'docCompanyRegistration',
301           title: 'Company registration document',
302           value: data.docCompanyRegistration ? data.docCompanyRegistration : null
303         },
304         'statusReason': {
305           type: 'textarea-small',
306           id: 'statusReason',
307           title: 'Status reason',
308           value: data.statusReason ? data.statusReason : ''
309         },
310         'automateFile': {
311           type: 'select',
312           id: 'automateFile',
313           title: 'Automate File',
314           dataStoreId: 'automatefiles',
315           value: data.automateFile
316         },
317         'automateDealerCode': {
318           type: 'input',
319           id: 'automateDealerCode',
320           title: 'Automate dealer code',
321           value: data.automateDealerCode
322         },
323         'autolineFile': {
324           type: 'select',
325           id: 'autolineFile',
326           title: 'Autoline file',
327           dataStoreId: 'autolinefiles',
328           value: data.autolineFile
329         },
330         'autolineDealerCode': {
331           type: 'input',
332           id: 'autolineDealerCode',
333           title: 'Autoline dealer code',
334           value: data.autolineDealerCode
335         }
336       };
337     },
338     _listRegionTown: function ()
339     {
340       App.DataStore.loadSelectListData(
341               'regions', false, 'Location', 'Region.SelectList', null,
342               {"Filter": {
343                   "country": _w.systemdealerview.itemData.city.region.country.id
344                 }}
345       );
346       App.DataStore.loadSelectListData(
347               'cities', false, 'Location', 'Town.SelectList', null,
348               {"Filter": {
349                   "region": _w.systemdealerview.itemData.city.region.id
350                 }}
351       );
352     },
353     _onCompanyViewDataReceived: function (response)
354     {
355
356
357       _w.systemdealerview.itemId = response.Data.id;
358       _w.systemdealerview.itemData = response.Data;
359       //_w.systemdealerview.itemData.jobState = response.jostate;
360       //console.log("testing",_w.systemdealerview.itemData.jobState );
361       if (response.Data.group)
362       {
363         App.DataStore.loadSelectListData(
364                 'divisions', false, 'Company', 'GroupDivision.SelectList', null, {
365                   Filter: {group: response.Data.group.id}
366                 });
367
368         App.DataStore.loadSelectListData('regionalManagers', false, 'AppConfig', 'RegionalManager.SelectList', null,
369                 {"Filter": {
370                     "group": response.Data.group.id,
371                   }});
372       }
373       _w.systemdealerview._listRegionTown();
374       _w.systemdealerview.setCompanyViewFormMeta(response.Data);
375       _w.systemdealerview.ti.hydrate(_w.systemdealerview.formMeta);
376       if (_w.systemdealerview.ti.published)
377       {
378         _w.systemdealerview._setupValidation();
379       }
380     },
381     _setupValidation: function ()
382     {
383       if ('Sole Proprietor' == $('#companyType').val())
384       {
385         $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').hide();
386         $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').hide();
387         $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').show();
388         $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').show();
389         $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
390       }
391       else
392       {
393         $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').hide();
394         $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').hide();
395         $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
396         $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').show();
397         $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').show();
398       }
399       $('#frmDealerView').validate({
400         rules: {
401           name: {required: true},
402           street: {required: true},
403           postalCode: {required: true, digits: true},
404           firstName: {required: true},
405           familyName: {required: true},
406           mobile: {required: true, mobile: true},
407           office: {required: true},
408           email: {required: true, email: true},
409           statusReason: {maxLength: 250},
410           country: "required",
411           region: "required",
412           city: "required"
413         },
414         messages: {
415           email: {
416             email: "Must be a valid email address."
417           },
418           country: "This field is required.",
419           region: "This field is required.",
420           city: "This field is required."
421         },
422         submitHandler: function (form) {
423           if ('' == $('#statusReason').val())
424           {
425             alert('Please specify a status reason.');
426             return;
427           }
428           $('#btnUpdate').prop('disabled', true);
429           $('.dbtn').prop('disabled', true);
430           var data = _w.systemdealerview._prepCompanyUpdateData();
431           App.API.execTask(
432                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
433                   _w.systemdealerview._onCompanyUpdated, _w.taskExecError
434                   );
435         }
436       });
437       $('#btnUpdate').prop('disabled', false);
438
439       switch (_w.systemdealerview.itemData.jobState)
440       {
441         case 'New':
442           $('#btnActivate').show();
443           $('#btnPending').show();
444           $('#btnSuspend').show();
445           $('#btnDecline').show();
446           $('#btnArchive').show();
447           break;
448         case 'Pending':
449           $('#btnActivate').show();
450           $('#btnSuspend').show();
451           $('#btnDecline').show();
452           $('#btnArchive').show();
453           break;
454         case 'Active':
455           $('#btnSuspend').show();
456           $('#btnArchive').show();
457           break;
458         case 'Suspended':
459           $('#btnActivate').show();
460           $('#btnArchive').show();
461           break;
462         case 'Declined':
463           $('#btnActivate').show();
464           $('#btnSuspend').show();
465           $('#btnArchive').show();
466           break;
467         case 'Archived':
468           $('#btnActivate').show();
469           break;
470       }
471       $('#btnActivate').click(function () {
472         if (!$('#frmDealerView').valid())
473         {
474           alert('Please fill in all required fields.');
475           return;
476         }
477         if ('' == $('#statusReason').val())
478         {
479           alert('Please specify a status reason.');
480           return;
481         }
482         $('#btnUpdate').prop('disabled', true);
483         $('.dbtn').prop('disabled', true);
484         var data = _w.systemdealerview._prepCompanyUpdateData();
485
486
487         if (_w.systemdealerview.itemData.jobState == "New" || _w.systemdealerview.itemData.jobState == "Pending")
488         {
489           App.API.execTask(
490                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
491                   function () {
492                     App.API.directRoute(
493                             'routeDealerActive:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToActive',
494                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
495                             );
496                   }, _w.taskExecError
497                   );
498
499         }
500         else
501         {
502           App.API.execTask(
503                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
504                   function () {
505                     App.API.directRoute(
506                             'routeDealerActive:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToActive',
507                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
508                             );
509                   }, _w.taskExecError
510                   );
511
512         }
513
514
515       });
516       $('#btnPending').click(function () {
517         if (!$('#frmDealerView').valid())
518         {
519           alert('Please fill in all required fields.');
520           return;
521         }
522         if ('' == $('#statusReason').val())
523         {
524           alert('Please specify a status reason.');
525           return;
526         }
527         $('#btnUpdate').prop('disabled', true);
528         var data = _w.systemdealerview._prepCompanyUpdateData();
529         //console.log("test pending", _w.systemdealerview.itemData.jobState);
530         if (_w.systemdealerview.itemData.jobState == "Pending" || _w.systemdealerview.itemData.jobState == "New")
531         {
532           App.API.execTask(
533                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
534                   function () {
535                     App.API.directRoute(
536                             'routeDealerPending:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToPending',
537                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
538                             );
539                   }, _w.taskExecError
540                   );
541         }
542         else
543         {
544           App.API.execTask(
545                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
546                   function () {
547                     App.API.directRoute(
548                             'routeDealerPending:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToPending',
549                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
550                             );
551                   }, _w.taskExecError
552                   );
553
554         }
555
556       });
557       $('#btnSuspend').click(function () {
558         if (!$('#frmDealerView').valid())
559         {
560           alert('Please fill in all required fields.');
561           return;
562         }
563         if ('' == $('#statusReason').val())
564         {
565           alert('Please specify a status reason.');
566           return;
567         }
568         $('#btnUpdate').prop('disabled', true);
569         var data = _w.systemdealerview._prepCompanyUpdateData();
570
571         //console.log("test Suspend", _w.systemdealerview.itemData.jobState);
572
573         if (_w.systemdealerview.itemData.jobState == "Pending")
574         {
575           App.API.execTask(
576                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
577                   function () {
578                     App.API.directRoute(
579                             'routeDealerSuspend:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToSuspended',
580                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
581                             );
582                   }, _w.taskExecError
583                   );
584         }
585
586
587         else
588         {
589           App.API.execTask(
590                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
591                   function () {
592                     App.API.directRoute(
593                             'routeDealerSuspend:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToSuspended',
594                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
595                             );
596                   }, _w.taskExecError
597                   );
598         }
599
600
601       });
602       $('#btnDecline').click(function () {
603         if (!$('#frmDealerView').valid())
604         {
605           alert('Please fill in all required fields.');
606           return;
607         }
608         if ('' == $('#statusReason').val())
609         {
610           alert('Please specify a status reason.');
611           return;
612         }
613         $('#btnUpdate').prop('disabled', true);
614
615         var data = _w.systemdealerview._prepCompanyUpdateData();
616
617         //console.log("test-declined: ", _w.systemdealerview.itemData.jobState);
618         if (_w.systemdealerview.itemData.jobState == "New" || _w.systemdealerview.itemData.jobState == "Pending")
619         {
620
621           App.API.execTask(
622                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
623                   function () {
624                     App.API.directRoute(
625                             'routeDealerDeclined:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToDeclined',
626                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
627                             );
628                   }, _w.taskExecError
629                   );
630         }
631         else
632         {
633           App.API.execTask(
634                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
635                   function () {
636                     App.API.directRoute(
637                             'routeDealerDeclined:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToDeclined',
638                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
639                             );
640                   }, _w.taskExecError
641                   );
642         }
643
644
645       });
646       $('#btnArchive').click(function () {
647         if (!$('#frmDealerView').valid())
648         {
649           alert('Please fill in all required fields.');
650           return;
651         }
652         if ('' == $('#statusReason').val())
653         {
654           alert('Please specify a status reason.');
655           return;
656         }
657         $('#btnUpdate').prop('disabled', true);
658         var data = _w.systemdealerview._prepCompanyUpdateData();
659
660         //console.log("test Archive", _w.systemdealerview.itemData.jobState);
661
662         if (_w.systemdealerview.itemData.jobState == "New"
663                 || _w.systemdealerview.itemData.jobState == "Suspended"
664                 || _w.systemdealerview.itemData.jobState == "Pending"
665                 || _w.systemdealerview.itemData.jobState == "Declined"
666                 || _w.systemdealerview.itemData.jobState == "Active")
667         {
668           App.API.execTask(
669                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
670                   function () {
671                     App.API.directRoute(
672                             'routeDealerArchived:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToArchive',
673                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
674                             );
675                   }, _w.taskExecError
676                   );
677         }
678         else
679         {
680           App.API.execTask(
681                   'updateCompany:' + _w.systemdealerview.itemId, data, {},
682                   function () {
683                     App.API.directRoute(
684                             'routeDealerArchived:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToArchive',
685                             _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
686                             );
687                   }, _w.taskExecError
688                   );
689         }
690
691
692       });
693
694     },
695     _prepCompanyUpdateData: function ()
696     {
697       var data = _w.systemdealerview.ti.harvest();
698       if ('' == data.docStockCertificate)
699       {
700         data.docStockCertificate = null;
701       }
702       if ('' == data.docAddressProof)
703       {
704         data.docAddressProof = null;
705       }
706       if ('' == data.docCopyOfId)
707       {
708         data.docCopyOfId = null;
709       }
710       if ('' == data.docCopyOfDirectorId)
711       {
712         data.docCopyOfDirectorId = null;
713       }
714       if ('' == data.docCompanyRegistration)
715       {
716         data.docCompanyRegistration = null;
717       }
718       var postData = {Company: {}, Contact: {}};
719       var contactFields = ["firstName", "familyName", "office", "mobile", "email"];
720       for (var field in data)
721       {
722         if (-1 == contactFields.indexOf(field))
723         {
724           postData.Company[field] = data[field];
725         }
726         else
727         {
728           postData.Contact[field] = data[field];
729         }
730       }
731
732       return postData;
733     },
734     _onCompanyUpdated: function (response)
735     {
736       window.location.hash = '/dealers';
737     }
738
739   };
740
741 })();