Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / deleteResumeService.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 "use strict";
22
23 var DeleteResumeService = function($log, AaiService, AsdcService, DataService,
24         ComponentService, COMPONENT, FIELD, UtilityService,featureFlags) {
25
26     var _this = this;
27
28     var getAsyncOperationList = function() {
29         if (DataService.getLoggedInUserId() == null)
30                         getLoggedInUserID();
31                 switch (_this.componentId) {
32                 case COMPONENT.SERVICE:
33                         return [ getSubscribers, getLcpCloudRegionTenantList ];
34                 case COMPONENT.NETWORK:
35                         return [ getLcpCloudRegionTenantList ];
36                 case COMPONENT.VNF:
37                         return [ getLcpCloudRegionTenantList ];
38                 case COMPONENT.VF_MODULE:
39                         return [ getLcpCloudRegionTenantList ];
40                 case COMPONENT.VOLUME_GROUP:
41                         return [ getLcpCloudRegionTenantList ];
42                 case COMPONENT.CONFIGURATION:
43                         return [ getLcpCloudRegionTenantList ];
44                 }
45         };
46         
47         var getLcpCloudRegionTenantList = function() {
48                 //console.log ( "global customer id: " ); 
49                 //console.log ( JSON.stringify (DataService.getGlobalCustomerId()) );
50                 
51                 //console.log ( "service type: " ); 
52                 //console.log ( JSON.stringify (DataService.getServiceType()) );
53                 
54                 AaiService.getLcpCloudRegionTenantList(DataService
55                                 .getGlobalCustomerId(), DataService.getServiceType(), function(
56                                 response) {
57                         DataService.setCloudRegionTenantList(response);
58                         UtilityService.startNextAsyncOperation();
59                 });
60         };
61         
62         var getLoggedInUserID = function() {
63                 AaiService.getLoggedInUserID(function(response) {
64                         DataService.setLoggedInUserId(response.data);
65                         UtilityService.startNextAsyncOperation();
66                 });
67         };
68         
69         var getSubscribers = function() {
70                 AaiService.getSubscribers(function(response) {
71                         DataService.setSubscribers(response);
72                         UtilityService.startNextAsyncOperation();
73                 });
74         };
75         
76         var internalGetParametersHandler = function() {
77                 if (angular.isFunction(_this.getParametersHandler)) {
78                                 if (_this.componentId == COMPONENT.SERVICE) {
79                                         if ( DataService.getALaCarte() ) {
80                                                 _this.getParametersHandler({
81                                                         summaryList : getSummaryList(),
82                                                         userProvidedList : getUserProvidedList()
83                                                 }, true);
84                                         }
85                                         else {
86                                                 _this.getParametersHandler({
87                                                         summaryList : getSummaryList(),
88                                                         userProvidedList : getUserProvidedList()
89                                                 }, false);
90                                         }
91                         }
92                         else {
93                                 _this.getParametersHandler({
94                                         summaryList : getSummaryList(),
95                                         userProvidedList : getUserProvidedList()
96                                 }, false);
97                         }
98                 }
99         };
100         
101         var getSubscribersParameter = function() {
102                 var subscribers = DataService.getSubscribers();
103                 var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;
104                 parameter.optionList = [];
105
106                 for (var i = 0; i < subscribers.length; i++) {
107                         parameter.optionList.push({
108                                 id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],
109                                 name : subscribers[i][FIELD.ID.SUBNAME]
110                         })
111                 }
112                 return parameter;
113         };
114         
115         var getServiceId = function() {
116                 var serviceIdList = DataService.getServiceIdList();
117                 var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;
118                 parameter.optionList = new Array();
119                 for (var i = 0; i < serviceIdList.length; i++) {
120                         parameter.optionList.push({
121                                 id : serviceIdList[i].id,
122                                 name : serviceIdList[i].description
123                         });
124                 }
125                 return parameter;
126         };
127         
128         var getUserProvidedList = function() {
129
130                 //var parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
131
132                 var parameterList = [];
133                 
134                 switch (_this.componentId) {
135                 case COMPONENT.SERVICE:
136                         if ( DataService.getALaCarte() ) {
137                                 parameterList = [];
138                         }
139                         else {
140                                 parameterList = parameterList.concat ([getLcpRegion(),
141                                     FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
142                                     FIELD.PARAMETER.TENANT_DISABLED ]);
143                         }
144                         break;
145                 case COMPONENT.NETWORK:
146                 case COMPONENT.CONFIGURATION:
147                 case COMPONENT.VNF:
148                         parameterList = parameterList.concat([ //getServiceId(),
149                                         getLcpRegion(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
150                                         FIELD.PARAMETER.TENANT_DISABLED ]);
151                         break;
152                 case COMPONENT.VF_MODULE:
153                         parameterList = parameterList.concat([
154                                 getLcpRegion(),
155                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
156                                         FIELD.PARAMETER.TENANT_DISABLED
157                         ]);
158                         
159                         break;
160                 case COMPONENT.VOLUME_GROUP:
161                         parameterList = parameterList.concat([ getLcpRegion(),
162                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
163                                         FIELD.PARAMETER.TENANT_DISABLED ]);
164                 }
165
166                 //parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);
167
168                 //addArbitraryParameters(parameterList);
169
170                 return parameterList;
171         };
172     var getSummaryList = function() {
173         switch (_this.componentId) {
174         case COMPONENT.CONFIGURATION:
175         case COMPONENT.NETWORK:
176         case COMPONENT.SERVICE:
177         case COMPONENT.VNF:
178         case COMPONENT.VF_MODULE:
179         case COMPONENT.VOLUME_GROUP:
180             var summaryList = [ {
181                 name : FIELD.NAME.SUBSCRIBER_NAME,
182                 value : DataService.getSubscriberName()
183             }, {
184                 name : FIELD.NAME.CUSTOMER_ID,
185                 value : DataService.getGlobalCustomerId()
186             }, {
187                 name : FIELD.NAME.SERVICE_UUID,
188                 value : DataService.getServiceUuid()
189             }, {
190                 name : FIELD.NAME.SERVICE_NAME,
191                 value : DataService.getServiceName()
192            /* }, {
193                 name : FIELD.NAME.USER_SERVICE_INSTANCE_NAME,
194                 value : DataService.getUserServiceInstanceName()*/
195             } ];
196
197                 _this.parameterList = new Array();
198                 
199                 addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());
200
201                 switch (_this.componentId) {
202                 case COMPONENT.SERVICE:
203                         addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService
204                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
205                         addToList(FIELD.NAME.SERVICE_VERSION, DataService
206                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
207                         addToList(FIELD.NAME.SERVICE_UUID, DataService
208                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
209                         addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService
210                                         .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);
211                         addToList(FIELD.NAME.SERVICE_CATEGORY, DataService
212                                         .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);
213                         break;
214                 case COMPONENT.VF_MODULE:
215                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
216                                         .getSubscriberName());
217                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
218                                         .getServiceInstanceName());
219                         addToList(FIELD.NAME.MODEL_NAME, DataService
220                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
221                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
222                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
223                         addToList(FIELD.NAME.MODEL_VERSION, DataService
224                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
225                         addToList(FIELD.NAME.MODEL_UUID, DataService
226                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
227                         break;
228                 case COMPONENT.CONFIGURATION:
229                 case COMPONENT.NETWORK:
230                 case COMPONENT.VNF:
231                 case COMPONENT.VOLUME_GROUP:
232                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
233                                         .getSubscriberName());
234                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
235                                         .getServiceInstanceName());
236                         addToList(FIELD.NAME.MODEL_NAME, DataService
237                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
238                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
239                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
240                         addToList(FIELD.NAME.MODEL_VERSION, DataService
241                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
242                         addToList(FIELD.NAME.MODEL_UUID, DataService
243                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
244                         break;
245                 }
246                 
247             /*var additionalList = ComponentService.getInventoryParameterList(
248                     _this.componentId, DataService.getInventoryItem());*/
249                 var additionalList = ComponentService.getDisplayNames(ComponentService
250                             .getInventoryParameterList(_this.componentId, DataService
251                                     .getInventoryItem(), true ));
252
253             return summaryList.concat(ComponentService
254                     .getDisplayNames(additionalList));
255         }
256     };
257
258     var getMsoUrl = function(serviceStatus) {
259                 switch (_this.componentId) {
260                         case COMPONENT.CONFIGURATION:
261                                 return "mso_delete_configuration/"
262                                         + DataService.getServiceInstanceId() + "/configurations/"
263                                         + DataService.getConfigurationInstanceId();
264                         case COMPONENT.NETWORK:
265                                 return "mso_delete_nw_instance/"
266                                         + DataService.getServiceInstanceId() + "/networks/"
267                                         + DataService.getNetworkInstanceId();
268                         case COMPONENT.SERVICE:
269                                 if(DataService.getE2EService() === true)
270                                         return "mso_delete_e2e_svc_instance/"+ DataService.getServiceInstanceId();
271                                 else
272                                         return "mso_delete_svc_instance" + "/" + DataService.getServiceInstanceId() + "?serviceStatus="  + serviceStatus;
273                         case COMPONENT.VNF:
274                                 return "mso_delete_vnf_instance/"
275                                         + DataService.getServiceInstanceId() + "/vnfs/"
276                                         + DataService.getVnfInstanceId();
277                         case COMPONENT.VF_MODULE:
278                                 return "mso_delete_vfmodule_instance/"
279                                         + DataService.getServiceInstanceId() + "/vnfs/"
280                                         + DataService.getVnfInstanceId() + "/vfModules/"
281                                         + DataService.getVfModuleInstanceId();
282                         case COMPONENT.VOLUME_GROUP:
283                                 return "mso_delete_volumegroup_instance/"
284                                         + DataService.getServiceInstanceId() + "/vnfs/"
285                                         + DataService.getVnfInstanceId() + "/volumeGroups/"
286                                         + DataService.getVolumeGroupInstanceId();
287                 }
288     };
289
290         var addToList = function(name, value) {
291                 _this.parameterList.push({
292                         name : name,
293                         value : value
294                 });
295         };
296
297         var getMsoE2ERequest = function(parameterList) {
298                 return {
299                         "globalSubscriberId": DataService.getSubscriberName(),
300                         "serviceType": DataService.getServiceType()
301                 };
302         };
303
304     var getMsoRequestDetails = function(parameterList) {
305         console.log("getMsoRequestDetails invoked");
306
307                 //VoLTE logic goes here
308                 if(DataService.getE2EService() === true) {
309                         return getMsoE2ERequest(parameterList);
310                 }
311
312                 var inventoryInfo = ComponentService.getInventoryInfo(
313                         _this.componentId, DataService.getInventoryItem());
314                 var modelInfo = DataService.getModelInfo(_this.componentId);
315                 var requestorloggedInId = DataService.getLoggedInUserId();
316                 if (requestorloggedInId ==  null)
317                         requestorloggedInId = "";
318                 var requestDetails = {
319                                 modelInfo : {
320                                         modelType : _this.componentId,
321                                         modelInvariantId : modelInfo.modelInvariantId,
322                                         modelVersionId : modelInfo.modelNameVersionId,
323                                         modelName : modelInfo.modelName,
324                                         modelCustomizationName : modelInfo.modelCustomizationName,
325                                         modelCustomizationId : modelInfo.customizationUuid,
326                                         modelVersion : modelInfo.modelVersion
327                                 },
328                                 requestInfo : {
329                                         source : FIELD.ID.VID,
330                                         requestorId: requestorloggedInId
331                                 }
332                 };
333         if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) {
334             if ((_this.componentId != COMPONENT.SERVICE) || ( DataService.getALaCarte() )) {
335                 // a-la-carte services AND *any* non-service
336                 requestDetails.requestParameters = {
337                     testApi : DataService.getMsoRequestParametersTestApi()
338                 };
339             }
340         }
341                 
342                 switch (_this.componentId) {
343                         case COMPONENT.SERVICE:
344                                 if (!requestDetails.requestParameters) {
345                     requestDetails.requestParameters = {};
346                 }
347                                 requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();
348                                 if ( !(DataService.getALaCarte()) ) {
349                                         // for macro delete include cloud config.
350                                         var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
351                                         if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
352                                                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
353                                                                 parameterList);
354                                         }
355                                         requestDetails.cloudConfiguration = {
356                                                 lcpCloudRegionId : lcpRegion,
357                                                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
358                                         };
359                                 }
360                             break;
361                         case COMPONENT.VNF:
362             case COMPONENT.CONFIGURATION:
363                             console.log("getMsoRequestDetails COMPONENT.VNF");
364                                 var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
365                                 if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
366                                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
367                                                         parameterList);
368                                 }
369                                 requestDetails.cloudConfiguration = {
370                                         lcpCloudRegionId : lcpRegion,
371                                         tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
372                                 };
373         
374                                 break;
375                         case COMPONENT.VF_MODULE:
376                         case COMPONENT.NETWORK:
377                                         var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
378                                         if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
379                                                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
380                                                                 parameterList);
381                                         }
382                                         requestDetails.cloudConfiguration = {
383                                                         lcpCloudRegionId : lcpRegion,
384                                                         tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
385                                         };      
386                                         break;
387                         case COMPONENT.VOLUME_GROUP:
388                                 var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
389                                 if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
390                                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
391                                                         parameterList);
392                                 }
393                                 requestDetails.cloudConfiguration = {
394                                                 lcpCloudRegionId : lcpRegion,
395                                                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
396                                 };      
397                                 
398                                 break;
399                         default:
400                                 requestDetails.cloudConfiguration = {
401                                         lcpCloudRegionId : DataService.getLcpRegion(),
402                                         tenantId : DataService.getTenant()
403                                 };
404                 }
405                 return requestDetails;
406     }
407     
408     var getLcpRegion = function() {
409                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
410                 var parameter = "";
411                 if ( UtilityService.hasContents (cloudRegionTenantList) ) {
412                         parameter = FIELD.PARAMETER.LCP_REGION;
413                         parameter.optionList = new Array();
414                         for (var i = 0; i < cloudRegionTenantList.length; i++) {
415                                 for (var j = 0; j < parameter.optionList.length; j++) {
416                                         if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {
417                         parameter.optionList[j].isPermitted =
418                             parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;
419                         break;
420                                         }
421                                 }
422                                 if (j < parameter.optionList.length) {
423                                         continue;
424                                 }
425
426                 var optionName = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) && cloudRegionTenantList[i].cloudOwner ?
427                     cloudRegionTenantList[i].cloudRegionId + " (" + cloudRegionTenantList[i].cloudOwner.trim().toLowerCase().replace(/^att-/, "").toUpperCase() + ")" :
428                     cloudRegionTenantList[i].cloudRegionId;
429
430                                 parameter.optionList.push({
431                                         id : cloudRegionTenantList[i].cloudRegionId,
432                                         name: optionName,
433           isPermitted : cloudRegionTenantList[i].isPermitted
434
435         });
436                         }
437                 }
438                 return parameter;
439         };
440         
441         var getTenantList = function(cloudRegionId) {
442                 var parameter = "";
443                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
444                 if ( UtilityService.hasContents (cloudRegionTenantList) ) {
445                         var parameter = FIELD.PARAMETER.TENANT_ENABLED;
446                         parameter.optionList = new Array();
447                         for (var i = 0; i < cloudRegionTenantList.length; i++) {
448                                 if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {
449                                         parameter.optionList.push({
450                                                 id : cloudRegionTenantList[i].tenantId,
451                                                 name : cloudRegionTenantList[i].tenantName,
452                         isPermitted : cloudRegionTenantList[i].isPermitted
453                     });
454                                 }
455                         }
456                 }
457                 return parameter;
458
459         };
460
461         var addOptionList = function(parameter, optionSimpleArray) {
462                 var optionList = new Array();
463                 if (!angular.isArray(optionSimpleArray)) {
464                         return optionList;
465                 }
466                 for (var i = 0; i < optionSimpleArray.length; i++) {
467                         optionList.push({
468                                 name : optionSimpleArray[i]
469                         });
470                 }
471                 parameter.optionList = optionList;
472                 return parameter;
473         };
474
475     var getValueFromList = function(id, parameterList) {
476                 for (var i = 0; i < parameterList.length; i++) {
477                         if (parameterList[i].id === id) {
478                                 return parameterList[i].value;
479                         }
480                 }
481         };
482
483         var updateUserParameterList = function(updatedId, parameterListControl) {
484                 if (updatedId === FIELD.ID.LCP_REGION) {
485                         var list = parameterListControl.getList(updatedId);
486                         if (list[0].selectedIndex >= 0) {
487                                 parameterListControl
488                                                 .updateList([ getTenantList(list[0].value) ]);
489                         } else {
490                                 parameterListControl
491                                                 .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);
492                         }
493                         if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {
494                                 parameterListControl
495                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);
496                         } else {
497                                 parameterListControl
498                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);
499                         }
500                 } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {
501                         var list = parameterListControl.getList(updatedId);
502                         if (list[0].selectedIndex >= 0) {
503                                 DataService.setGlobalCustomerId(list[0].value);
504
505                                 AaiService.getSubscriptionServiceTypeList(DataService
506                                                 .getGlobalCustomerId(), function(response) {
507                                         DataService.setSubscriptionServiceTypeList(response);
508                                         var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;
509                                         serviceTypeParameters.optionList = [];
510
511                                         for (var i = 0; i < response.length; i++) {
512                                                 serviceTypeParameters.optionList.push({
513                                                         "id" : response[i].name,
514                                                         "name" : response[i].name
515                                                 });
516                                         }
517                                         parameterListControl.updateList([ serviceTypeParameters ]);
518                                 });
519
520                         } else {
521                                 parameterListControl
522                                                 .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
523                         }
524                 }
525         };
526
527     return {
528                 initializeComponent : function(componentId) {
529                         _this.componentId = ComponentService.initialize(componentId);
530                 },
531                 getComponentDisplayName : ComponentService.getComponentDisplayName,
532                 getSummaryList : getSummaryList,
533                 getParameters : function(getParametersHandler) {
534                         _this.getParametersHandler = getParametersHandler;
535                         UtilityService.setHttpErrorHandler(_this.httpErrorHandler);
536                         UtilityService.startAsyncOperations(getAsyncOperationList(),
537                                         internalGetParametersHandler);
538                 },
539                 updateUserParameterList : updateUserParameterList,
540                 getMsoRequestDetails : getMsoRequestDetails,
541                 getMsoUrl : getMsoUrl,
542                 isMacro : DataService.getMacro()
543     }
544 }
545
546 appDS2.factory("DeleteResumeService", [ "$log", "AaiService", "AsdcService",
547         "DataService", "ComponentService", "COMPONENT", "FIELD",
548         "UtilityService","featureFlags", DeleteResumeService ]);