Merge "replaced named func with anonymous func"
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / controller / change-management.controller.js
1 (function () {
2     'use strict';
3
4     appDS2.controller("changeManagementController", ["$uibModal", "changeManagementService", "_", "$log",  "SchedulerService", "$filter", "VIDCONFIGURATION", changeManagementController]);
5
6     function changeManagementController($uibModal, changeManagementService, _, $log, SchedulerService, $filter, VIDCONFIGURATION) {
7         var vm = this;
8
9         vm.lastTimeUpdated = "";
10         vm.hasScheduler = !!VIDCONFIGURATION.SCHEDULER_PORTAL_URL;
11         vm.currModal = null;
12
13         vm.init = function() {
14             vm.lastTimeUpdated = $filter('date')(new Date(), "MM/dd/yyyy | HH:mm:ss");
15             loadMSOChangeManagements();
16             loadSchedulerChangeManagements();
17         };
18
19         var fuseMsoAndSchedulerTaks = function() {
20             if (vm.changeManagements && vm.pendingChangeManagements) {
21                 var requestIdToVnfName = {}
22                 vm.pendingChangeManagements.forEach(function(schedulerItem) {
23                     if (schedulerItem.msoRequestId && schedulerItem.vnfName) {
24                         requestIdToVnfName[schedulerItem.msoRequestId] = schedulerItem.vnfName;
25                     }
26                 })
27                 $log.debug("requestIdToVnfName", requestIdToVnfName);
28
29                 vm.changeManagements = vm.changeManagements.map(function(msoItem) {
30                     msoItem['vnfNameFromScheduler'] = requestIdToVnfName[msoItem.requestId];
31                     return msoItem;
32                 })
33             }
34         };
35
36         var loadMSOChangeManagements = function() {
37             changeManagementService.getMSOChangeManagements()
38                 .then(function(response) {
39                     vm.changeManagements = response.data;
40                 })
41                 .then(function () {
42                     fuseMsoAndSchedulerTaks();
43                 })
44                 .catch(function (error) {
45                     $log.error(error);
46                 });
47         };
48
49         var loadSchedulerChangeManagements = function() {
50             changeManagementService.getSchedulerChangeManagements()
51                 .then(function(response) {
52                     vm.pendingChangeManagements = response.data;
53                     _.forEach(vm.pendingChangeManagements, function(changeManagement) {
54                         var callbackData = _.filter(changeManagement.scheduleRequest.domainData, {name: "WorkflowName"});
55                         if(callbackData) {
56                             var parsedModel = {};
57                             try {
58                                 parsedModel = callbackData[0].value;
59                             } catch(exception) {
60                                 $log.error(exception);
61                             }
62
63                             changeManagement.workflow = parsedModel;
64                         }
65                     });
66                 })
67                 .then(function () {
68                     fuseMsoAndSchedulerTaks();
69                 })
70                 .catch(function(error) {
71                     $log.error(error);
72                 });
73         };
74
75         vm.createNewChange = function() {
76             vm.closeCurrentModalIfOpen();
77             var modalInstance = $uibModal.open({
78                 templateUrl: 'app/vid/scripts/modals/new-change-management/new-change-management.html',
79                 controller: 'newChangeManagementModalController',
80                 controllerAs: 'vm',
81                 resolve: {}
82             });
83
84             vm.currModal = modalInstance;
85
86             modalInstance.result.then(function (result) {
87                 console.log("This is the result of the new change management modal.", result);
88             });
89         };
90
91         vm.searchChanges = function() {
92             console.log("function for searching changes: " + vm.searchChangesTerm)
93         };
94
95
96         vm.openManualTasksPopup = function($event, jobInfo, templateUrl, message) {
97
98             vm.closeCurrentModalIfOpen();
99
100             var modalInstance = $uibModal.open({
101                 templateUrl: templateUrl,
102                 controller: 'changeManagementManualTasksController',
103                 controllerAs: 'vm',
104                 backdrop: false,
105                 animation: true,
106                 appendTo: angular.element($event.currentTarget).parent(),
107                 resolve: {
108                     jobInfo: function () {
109                         return jobInfo;
110                     }
111                 }
112             });
113
114             modalInstance.result.then(function (result) {
115                 console.log(message, result);
116             });
117
118             vm.currModal = modalInstance;
119         };
120
121         vm.openFailedModal = function($event, jobInfo) {
122             vm.openManualTasksPopup($event, jobInfo,
123                 'app/vid/scripts/modals/failed-change-management/failed-change-management.html',
124                 "This is the result of the failed change management modal.")
125         };
126
127         vm.openInProgressModal = function($event, jobInfo) {
128             vm.openManualTasksPopup($event, jobInfo,
129                 'app/vid/scripts/modals/in-progress-modal-management/in-progress-change-management.html',
130                 "This is the result of the in progress change management modal.")
131         };
132
133         vm.openAlertModal = function($event, jobInfo) {
134             vm.openManualTasksPopup($event, jobInfo,
135                 'app/vid/scripts/modals/alert-change-management/alert-change-management.html',
136                 "This is the result of the alert change management modal.")
137         };
138
139         vm.openBasicAlertModal = function(jobInfo) {
140             vm.closeCurrentModalIfOpen();
141             var modalInstance = $uibModal.open({
142                 templateUrl: 'app/vid/scripts/modals/alert-modal/alert-modal.html',
143                 controller: 'alertModalController',
144                 controllerAs: 'vm',
145                 backdrop: false,
146                 animation: true,
147                 appendTo: angular.element(".jobs-table").eq(0),
148                 resolve: {
149                     jobInfo: function () {
150                         return jobInfo;
151                     }
152                 }
153             });
154             vm.currModal = modalInstance;
155
156             modalInstance.result.then(function (result) {
157                 console.log("This is the result of the alert change management modal.", result);
158             });
159         };
160         vm.openPendingModal = function($event, changeManagement) {
161
162             vm.closeCurrentModalIfOpen();
163
164             var modalInstance = $uibModal.open({
165                 templateUrl: 'app/vid/scripts/modals/cancel-pending-workflow/cancel-pending-workflow.html',
166                 controller: 'cancelPendingWorkflowController',
167                 controllerAs: 'vm',
168                 backdrop: false,
169                 animation: true,
170                 appendTo: angular.element($event.currentTarget).parent(),
171                 resolve: {
172                     changeManagement: function () {
173                         return changeManagement;
174                     }
175                 }
176             });
177
178             vm.currModal = modalInstance;
179
180             modalInstance.result.then(function (result) {
181                 // send to service
182              if(result){
183                     SchedulerService.cancelScheduleRequest(changeManagement.scheduleRequest.scheduleId,
184                         function(response) {
185
186                             //success popup
187                             var jobInfo= {
188                                 status:"success",
189                                 message: "Cancel workflow "+changeManagement.scheduleRequest.scheduleName+" succeeded."};
190                             vm.openBasicAlertModal(jobInfo);
191
192                             return response;
193                         }, function(error) {
194
195                             //failed popup
196                             var jobInfo = {
197                                 status:"failed",
198                                 message: "Cancel workflow "+changeManagement.scheduleRequest.scheduleName+" failed due to an unexpected error."};
199                             vm.openBasicAlertModal(jobInfo);
200
201                         });
202             }});
203
204         };
205         vm.isChangeManagementDeleted = function(changeManagement) {
206             return changeManagement.scheduleRequest.status!=='Deleted'
207         };
208
209         vm.closeCurrentModalIfOpen = function() {
210             if (vm.currModal != null) {
211                 vm.currModal.close();
212                 vm.currModal = null;
213             }
214         }
215
216
217         vm.init();
218     }
219 })();