initial commit
[namibia] / public / js / app / admin-workspace / systemdisputeview.js
1 ;(function(){
2
3         window._w.systemdisputeview = {
4
5                 itemId : null,
6                 itemData : null,
7                 formMeta : null,
8                 ti : null,
9
10                 onTemplateReady : function( template, event, eventData )
11                 {
12                         _w.systemdisputeview.ti = _t[template];
13                         _w.systemdisputeview.setDisputeViewFormMeta();
14                         _w.systemdisputeview.ti.hydrate(_w.systemdisputeview.formMeta);
15
16                         // Retrieve initial view data.
17                         _w.systemdisputeview.itemId = App.Util.getUrlParam('id');
18                         App.API.getTask(
19                                 'viewDispute:' + _w.systemdisputeview.itemId, 'Dispute', 'Dispute.View', _w.systemdisputeview.itemId,
20                                 {'id':_w.systemdisputeview.itemId}, $.proxy( _w.systemdisputeview._onDisputeViewDataReceived, this ), _w.taskContractError
21                         );
22                         App.API.getTask(
23                                 'updateDispute:' + _w.systemdisputeview.itemId, 'Dispute', 'Dispute.Update', _w.systemdisputeview.itemId,
24                                 {'id':_w.systemdisputeview.itemId}, function() {}, _w.taskContractError
25                         );
26                 },
27
28                 onTemplatePublished : function( template, event, eventData )
29                 {
30                         _w.systemdisputeview.ti = _t[template];
31                         $('#btnNew').click(_w.systemdisputeview._routeNew);
32                         $('#btnProgress').click(_w.systemdisputeview._routeInProgress);
33                         $('#btnResolve').click(_w.systemdisputeview._routeResolve);
34                 },
35
36                 _routeNew : function()
37                 {
38                         if ('' == $('#complaint').val())
39                         {
40                                 alert('Please specify the complaint.');
41                                 return;
42                         }
43                         $('#btnUpdate').prop('disabled', true);
44                         var data = _w.systemdisputeview._prepDisputeUpdateData();
45                         App.API.execTask(
46                                         'updateDispute:' + _w.systemdisputeview.itemId, data, {},
47                                         function() {
48                                                 App.API.directRoute(
49                                                                 'routeDisputeInProgress:' + _w.systemdisputeview.itemId, 'Dispute', 'Workflow.MoveToNew',
50                                                                 _w.systemdisputeview.itemId, {}, _w.systemdisputeview._onDisputeUpdated, _w.taskExecError
51                                                         );
52                                         }, _w.taskExecError
53                                 );
54                 },
55
56                 _routeInProgress : function()
57                 {
58                         if ('' == $('#complaint').val())
59                         {
60                                 alert('Please specify the complaint.');
61                                 return;
62                         }
63                         $('#btnUpdate').prop('disabled', true);
64                         var data = _w.systemdisputeview._prepDisputeUpdateData();
65                         App.API.execTask(
66                                         'updateDispute:' + _w.systemdisputeview.itemId, data, {},
67                                         function() {
68                                                 App.API.directRoute(
69                                                                 'routeDisputeInProgress:' + _w.systemdisputeview.itemId, 'Dispute', 'Workflow.MoveToInProgress',
70                                                                 _w.systemdisputeview.itemId, {}, _w.systemdisputeview._onDisputeUpdated, _w.taskExecError
71                                                         );
72                                         }, _w.taskExecError
73                                 );
74                 },
75
76                 _routeResolve: function()
77                 {
78                         if ('' == $('#complaint').val())
79                         {
80                                 alert('Please specify the complaint.');
81                                 return;
82                         }
83                         $('#btnUpdate').prop('disabled', true);
84                         var data = _w.systemdisputeview._prepDisputeUpdateData();
85                         App.API.execTask(
86                                         'updateDispute:' + _w.systemdisputeview.itemId, data, {},
87                                         function() {
88                                                 App.API.directRoute(
89                                                                 'routeDisputeResolve:' + _w.systemdisputeview.itemId, 'Dispute', 'Workflow.Resolve',
90                                                                 _w.systemdisputeview.itemId, {}, _w.systemdisputeview._onDisputeUpdated, _w.taskExecError
91                                                         );
92                                         }, _w.taskExecError
93                                 );
94                 },
95
96                 setDisputeViewFormMeta : function( data )
97                 {
98                         if (!data)
99                         {
100                                 data = {};
101                         }
102                         _w.systemdisputeview.formMeta = {
103                                         'jobState' : {
104                                                 title       : 'Status',
105                                                 value       : data.jobState
106                                         },
107                                         'created' : {
108                                                 title       : 'Created',
109                                                 value       : data.created ? ((data.created).split(' '))[0] : ''
110                                         },
111                                         'vehicle' : {
112                                                 title       : 'Vehicle',
113                                                 value       : data.auction ? data.auction.stock.type.model.make.name
114                                                                                         + ', ' + data.auction.stock.type.model.name
115                                                                                         + ', ' + data.auction.stock.type.name
116                                                                                         + ' (' + data.auction.stock.vehicleYear.name + ')'
117                                                                                 : ''
118                                         },
119                                         'plaintive' : {
120                                                 title       : 'Plaintiff',
121                                                 value       : data.fromCompany ? data.fromCompany.name : ''
122                                         },
123                                         'plaintiveContact' : {
124                                                 title       : 'Contact person',
125                                                 value       : data.fromCompany
126                                                                                 ? data.fromCompany.contact.firstName
127                                                                                                 + ' ' + data.fromCompany.contact.familyName
128                                                                                 : ''
129                                         },
130                                         'plaintiveOffice' : {
131                                                 title       : 'Office',
132                                                 value       : data.fromCompany ? data.fromCompany.contact.office : ''
133                                         },
134                                         'plaintiveMobile' : {
135                                                 title       : 'Mobile',
136                                                 value       : data.fromCompany ? data.fromCompany.contact.mobile : ''
137                                         },
138                                         'plaintiveEmail' : {
139                                                 title       : 'Email',
140                                                 value       : data.fromCompany ? data.fromCompany.contact.email : ''
141                                         },
142                                         'defendant' : {
143                                                 title       : 'Plaintiff',
144                                                 value       : data.againstCompany ? data.againstCompany.name : ''
145                                         },
146                                         'defendantContact' : {
147                                                 title       : 'Contact person',
148                                                 value       : data.againstCompany
149                                                 ? data.againstCompany.contact.firstName
150                                                                 + ' ' + data.againstCompany.contact.familyName
151                                                                 : ''
152                                         },
153                                         'defendantOffice' : {
154                                                 title       : 'Office',
155                                                 value       : data.againstCompany ? data.againstCompany.contact.office : ''
156                                         },
157                                         'defendantMobile' : {
158                                                 title       : 'Mobile',
159                                                 value       : data.againstCompany ? data.againstCompany.contact.mobile : ''
160                                         },
161                                         'defendantEmail' : {
162                                                 title       : 'Email',
163                                                 value       : data.againstCompany ? data.againstCompany.contact.email : ''
164                                         },
165                                         'complaint' : {
166                                                 type        : 'textarea-styled',
167                                                 id          : 'complaint',
168                                                 title       : 'Complaint',
169                                                 value       : data.complaint,
170                                                 areaStyle   : 'span12',
171                                                 style       : 'span10'
172                                         },
173                                         'resolution' : {
174                                                 type        : 'textarea-styled',
175                                                 id          : 'resolution',
176                                                 title       : 'Resolution',
177                                                 value       : data.resolution,
178                                                 areaStyle   : 'span12',
179                                                 style       : 'span10'
180                                         }
181                         };
182                 },
183
184                 _onDisputeViewDataReceived : function( response )
185                 {
186                         console.log(response.Data);
187                         if (response.Data.company)
188                         {
189                                 App.DataStore.loadSelectListData('managers', true, 'Dispute', 'Profile.ManagerList', null, {
190                                         Filter: {company: response.Data.company.id}
191                                 });
192                         }
193                         else
194                         {
195                                 App.DataStore.setData('managers', []);
196                         }
197                         _w.systemdisputeview.itemId = response.Data.id;
198                         _w.systemdisputeview.itemData = response.Data;
199                         _w.systemdisputeview.setDisputeViewFormMeta(response.Data);
200                         _w.systemdisputeview.ti.hydrate(_w.systemdisputeview.formMeta);
201                         switch (response.Data.jobState)
202                         {
203                         case 'Pending Payment':
204                                 $('#btnNew').show();
205                                 $('#btnProgress').show();
206                                 $('#btnResolve').show();
207                                 break;
208                         case 'New':
209                                 $('#btnProgress').show();
210                                 $('#btnResolve').show();
211                                 break;
212                         case 'In Progress':
213                                 $('#btnResolve').show();
214                                 break;
215                         }
216                         _w.systemdisputeview._setupValidation();
217                 },
218
219                 _setupValidation : function ()
220                 {
221                         $('#frmDisputeView').validate({
222                                 submitHandler: function( form ) {
223                                         if ('' == $('#complaint').val())
224                                         {
225                                                 alert('Please specify the complaint.');
226                                                 return;
227                                         }
228                                         $('#btnUpdate').prop('disabled', true);
229                                         var data = _w.systemdisputeview._prepDisputeUpdateData();
230                                         App.API.execTask(
231                                                         'updateDispute:' + _w.systemdisputeview.itemId, data, {},
232                                                         _w.systemdisputeview._onDisputeUpdated, _w.taskExecError
233                                                 );
234                                 }
235                         });
236                         $('#btnUpdate').prop('disabled', false);
237                 },
238
239                 _prepDisputeUpdateData : function()
240                 {
241                         var data = {
242                                         Dispute: {
243                                                 'complaint'  : $('#complaint').val(),
244                                                 'resolution' : $('#resolution').val()
245                                         }
246                                 };
247                         return data;
248                 },
249
250                 _onDisputeUpdated : function( response )
251                 {
252                         window.location.hash = '/systemdisputes';
253                 }
254
255         };
256
257 })();