Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / creationService.js
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * VID\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 "use strict";\r
22 \r
23 /*\r
24  * "CreationService" isolates the "component-specific" logic required by the\r
25  * "CreationDialog" controller.\r
26  *\r
27  * "Components" are defined as the 5 element types managed by the dialogs: A)\r
28  * Service B) VNF C) VF Module D) Volume Group and E) Network.\r
29  * \r
30  */\r
31 \r
32 var CreationService = function($log, AaiService, AsdcService, DataService,VIDCONFIGURATION,\r
33                                ComponentService, COMPONENT, FIELD, PARAMETER, UtilityService, OwningEntityService,featureFlags) {\r
34 \r
35     var _this = this;\r
36     var getAsyncOperationList = function() {\r
37         if (DataService.getLoggedInUserId() == null) {\r
38             getLoggedInUserID();\r
39         } else {\r
40             UtilityService.startNextAsyncOperation();\r
41         }\r
42         switch (_this.componentId) {\r
43             case COMPONENT.SERVICE:\r
44                 return [ getSubscribers, getServices, getAicZones, getOwningEntityProperties ];\r
45             case COMPONENT.NETWORK:\r
46                 return [ getLcpCloudRegionTenantList, getOwningEntityProperties ];\r
47             case COMPONENT.VNF:\r
48                 return [ getLcpCloudRegionTenantList, getOwningEntityProperties ];\r
49             case COMPONENT.VF_MODULE:\r
50                 return [ getLcpCloudRegionTenantList ];\r
51             case COMPONENT.VOLUME_GROUP:\r
52                 return [ getLcpCloudRegionTenantList ];\r
53         }\r
54     };\r
55 \r
56     /*\r
57      * "getSummaryList" and "getUserProvidedList" return parameters that should\r
58      * be displayed in the summary and user provided sections, respectively. The\r
59      * functions are expected to return lists that are in the format needed by\r
60      * the parameter-block directive.\r
61      */\r
62 \r
63     var getSummaryList = function() {\r
64 \r
65         /*\r
66          * These placeholders should be removed and their usage in\r
67          * "getSummaryList" should be replaced by appropriate code as the\r
68          * requirements and interfaces firm up.\r
69          */\r
70 \r
71         var PLACEHOLDER_RESOURCE_DESCRIPTION = "Resource Description (PLACEHOLDER)";\r
72         var PLACEHOLDER_SERVICE_CATEGORY = "Service Category (PLACEHOLDER)";\r
73         var PLACEHOLDER_VF_MODULE_DESCRIPTION = "VF Module Description (PLACEHOLDER)";\r
74         var PLACEHOLDER_VF_MODULE_LABEL = "VF Module Label (PLACEHOLDER)";\r
75         var PLACEHOLDER_VF_MODULE_TYPE = "VF Module Type (PLACEHOLDER)";\r
76 \r
77         _this.parameterList = new Array();\r
78 \r
79         /*\r
80          * Common fields displayed at the top of all create instance screens.\r
81          */\r
82         if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]==null\r
83             || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==undefined\r
84             || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==''){\r
85             addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
86         }\r
87 \r
88         switch (_this.componentId) {\r
89             case COMPONENT.SERVICE:\r
90                 if ( !DataService.getALaCarte() ) {\r
91                     // for macro instantiation need to add the resource names under the node template list\r
92                     // this field is called modelCustomizationName in the asdc client code\r
93                     var p;\r
94                     var rlist = DataService.getResources();\r
95                     var res;\r
96                     if ( rlist != null ) {\r
97                         for (var i = 0; i < rlist.length; i++) {\r
98                             res = rlist[i];\r
99 \r
100                             p = FIELD.NAME.RESOURCE_NAME.concat(" " + (i+1));\r
101                             addToList(p, res.name );\r
102                             p = FIELD.NAME.RESOURCE_DESCRIPTION.concat(" " + (i+1));\r
103                             addToList(p, res.description );\r
104                         }\r
105                     }\r
106                 }\r
107                 if(DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=null && DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=''){\r
108                     addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
109                         .getModelInfo(_this.componentId)["createSubscriberName"]);\r
110                 }\r
111                 if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=null && DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=''){\r
112                     addToList(FIELD.NAME.SERVICE_TYPE, DataService\r
113                         .getModelInfo(_this.componentId)["serviceTypeName"]);\r
114                     addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
115                 }\r
116                 addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService\r
117                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
118                 addToList(FIELD.NAME.SERVICE_VERSION, DataService\r
119                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
120                 addToList(FIELD.NAME.SERVICE_UUID, DataService\r
121                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
122                 addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService\r
123                     .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);\r
124                 addToList(FIELD.NAME.SERVICE_CATEGORY, DataService\r
125                     .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);\r
126                 if (DataService.getModelInfo(_this.componentId)[FIELD.ID.SERVICE_TYPE] != "null") {\r
127                     addToList(FIELD.NAME.SERVICE_TYPE, DataService\r
128                         .getModelInfo(_this.componentId)[FIELD.ID.SERVICE_TYPE]);\r
129                     addToList(FIELD.NAME.SERVICE_ROLE, DataService\r
130                         .getModelInfo(_this.componentId)[FIELD.ID.SERVICE_ROLE]);\r
131                 }\r
132 \r
133                 break;\r
134             case COMPONENT.VF_MODULE:\r
135                 addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
136                     .getSubscriberName());\r
137                 addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
138                     .getServiceInstanceName());\r
139                 addToList(FIELD.NAME.MODEL_NAME, DataService\r
140                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
141                 addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
142                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
143                 addToList(FIELD.NAME.MODEL_VERSION, DataService\r
144                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
145                 addToList(FIELD.NAME.MODEL_UUID, DataService\r
146                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
147                 addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
148                     .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
149                 break;\r
150             case COMPONENT.VNF:\r
151                 addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
152                     .getSubscriberName());\r
153                 addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
154                     .getServiceInstanceName());\r
155                 addToList(FIELD.NAME.MODEL_NAME, DataService\r
156                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
157                 addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
158                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
159                 addToList(FIELD.NAME.MODEL_VERSION, DataService\r
160                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
161                 addToList(FIELD.NAME.MODEL_UUID, DataService\r
162                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
163                 addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
164                     .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
165                 addToList(FIELD.NAME.MODEL_CUSTOMIZATION_NAME, DataService\r
166                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_CUSTOMIZATION_NAME]);\r
167                 addToList(FIELD.NAME.MODEL_VNF_TYPE, DataService\r
168                     .getModelInfo(_this.componentId)[COMPONENT.VNF_TYPE]);\r
169                 addToList(FIELD.NAME.MODEL_VNF_ROLE, DataService\r
170                     .getModelInfo(_this.componentId)[COMPONENT.VNF_ROLE]);\r
171                 addToList(FIELD.NAME.MODEL_VNF_FUNCTION, DataService\r
172                     .getModelInfo(_this.componentId)[COMPONENT.VNF_FUNCTION]);\r
173                 addToList(FIELD.NAME.MODEL_VNF_CODE, DataService\r
174                     .getModelInfo(_this.componentId)[COMPONENT.VNF_CODE]);\r
175                 break;\r
176             case COMPONENT.NETWORK:\r
177             case COMPONENT.VOLUME_GROUP:\r
178                 addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
179                     .getSubscriberName());\r
180                 addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
181                     .getServiceInstanceName());\r
182                 addToList(FIELD.NAME.MODEL_NAME, DataService\r
183                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
184                 addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
185                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
186                 addToList(FIELD.NAME.MODEL_VERSION, DataService\r
187                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
188                 addToList(FIELD.NAME.MODEL_UUID, DataService\r
189                     .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
190                 addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
191                     .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
192                 break;\r
193         }\r
194 \r
195         return _this.parameterList;\r
196     };\r
197 \r
198     var getUserProvidedList = function() {\r
199         var parameterList = [];\r
200         var isUserProvidedNaming = false;\r
201         if ( ((DataService.getModelInfo(_this.componentId).serviceEcompNaming != null)\r
202             && (DataService.getModelInfo(_this.componentId).serviceEcompNaming === "false")) || DataService.getE2EService() ) {\r
203             isUserProvidedNaming = true;\r
204         }\r
205 \r
206         var isInTop = DataService.getHideServiceFields() || false;\r
207         if (_this.componentId === COMPONENT.SERVICE) {\r
208             if ( DataService.getALaCarte() ) {\r
209                 parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
210                 if(!isInTop){\r
211                     parameterList = parameterList.concat([ getSubscribersParameter(),\r
212                         FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
213                 }\r
214             }\r
215             else {\r
216                 // macro\r
217 \r
218                 if(!isInTop){\r
219                     if (isUserProvidedNaming) {\r
220                         parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
221 \r
222                     }\r
223                     parameterList = parameterList.concat([ getSubscribersParameter() ]);\r
224                     parameterList = parameterList.concat([ getServiceId(),\r
225                         FIELD.PARAMETER.SERVICE_TYPE,\r
226                         FIELD.PARAMETER.LCP_REGION,\r
227                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
228                         FIELD.PARAMETER.TENANT_DISABLED\r
229                     ]);\r
230                     if(!DataService.getE2EService()) {\r
231                         parameterList = parameterList.concat([getAicZonesParameter()]);\r
232                     }\r
233 \r
234                 }else{\r
235                     parameterList = parameterList.concat([ getServiceId(),\r
236                         FIELD.PARAMETER.LCP_REGION,\r
237                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
238                         FIELD.PARAMETER.TENANT_DISABLED ]);\r
239                 }\r
240             }\r
241 \r
242             if(!DataService.getE2EService()) {\r
243                 parameterList = parameterList.concat([getProjectParameter()]);\r
244                 parameterList = parameterList.concat([getOwningEntityParameter()]);\r
245             }\r
246 \r
247             //if service model has a pnf, add a PNF ID parameter\r
248             if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PNP_INSTANTIATION) && DataService.getPnf()) {\r
249                 parameterList = parameterList.concat([ FIELD.PARAMETER.PNF_ID ]);\r
250             }\r
251         }\r
252         else {\r
253             parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
254             switch (_this.componentId) {\r
255                 case COMPONENT.NETWORK:\r
256                 case COMPONENT.VNF:\r
257                     parameterList = parameterList.concat([ getServiceId(),\r
258                         getLcpRegionParameter(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
259                         FIELD.PARAMETER.TENANT_DISABLED ]);\r
260                     parameterList = parameterList.concat([ getLineOfBusinessParameter() ]);\r
261                     parameterList = parameterList.concat([ getPlatformParameter() ]);\r
262 \r
263                     break;\r
264                 case COMPONENT.VF_MODULE:\r
265                     parameterList = parameterList.concat([\r
266                         getLcpRegionParameter(),\r
267                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
268                         FIELD.PARAMETER.TENANT_DISABLED\r
269                     ]);\r
270 \r
271                     var availableVolumeGroupList = DataService.getAvailableVolumeGroupList();\r
272 \r
273                     if (availableVolumeGroupList && availableVolumeGroupList.length > 0) {\r
274                         var availableVolumeGroupNames = [FIELD.STATUS.NONE];\r
275 \r
276                         for (var i = 0; i < availableVolumeGroupList.length; i++) {\r
277                             availableVolumeGroupNames.push(availableVolumeGroupList[i].instance.name);\r
278                         }\r
279 \r
280                         parameterList.push(addOptionList(\r
281                             FIELD.PARAMETER.AVAILABLE_VOLUME_GROUP,\r
282                             availableVolumeGroupNames));\r
283                     }\r
284                     break;\r
285                 case COMPONENT.VOLUME_GROUP:\r
286                     parameterList = parameterList.concat([ getLcpRegionParameter(),\r
287                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
288                         FIELD.PARAMETER.TENANT_DISABLED ]);\r
289             }\r
290         }\r
291         parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);\r
292         if(_this.componentId === COMPONENT.VF_MODULE ){\r
293             parameterList.push({name: FIELD.NAME.SDN_C_PRELOAD,\r
294                     id: FIELD.ID.SDN_C_PRELOAD,\r
295                     type: "checkbox",\r
296                     isEnabled: true,\r
297                     isRequired: false,\r
298                     hideFieldAndLabel: true\r
299                 }\r
300             );\r
301             parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
302                     id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
303                     type: "checkbox",\r
304                     isEnabled: true,\r
305                     isRequired: false,\r
306                     value:false\r
307                 }\r
308             );\r
309 \r
310             parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,\r
311                     id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,\r
312                     type: "file",\r
313                     isRequired: false,\r
314                     isVisiblity: false\r
315                 }\r
316             );\r
317         }\r
318 \r
319         if( VIDCONFIGURATION.UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED  && _this.componentId === COMPONENT.VOLUME_GROUP){\r
320             parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
321                     id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
322                     type: "checkbox",\r
323                     isEnabled: true,\r
324                     isRequired: false\r
325                 }\r
326             );\r
327 \r
328             parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,\r
329                     id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,\r
330                     type: "file",\r
331                     isRequired: false,\r
332                     isVisiblity: false\r
333                 }\r
334             );\r
335         }\r
336 \r
337         addArbitraryParameters(parameterList);\r
338 \r
339         return parameterList;\r
340     };\r
341 \r
342     var addArbitraryParameters = function(parameterList) {\r
343         if ( DataService.getModelInfo(_this.componentId).displayInputs != null ) {\r
344             var inputs = DataService.getModelInfo(_this.componentId).displayInputs;\r
345             for ( var key in inputs) {\r
346                 var parameter = {\r
347                     id : key,\r
348                     type : PARAMETER.STRING,\r
349                     name : ComponentService.getFieldDisplayName(key),\r
350                     value : inputs[key][PARAMETER.DEFAULT],\r
351                     isRequired : inputs[key][PARAMETER.REQUIRED],\r
352                     description : inputs[key][PARAMETER.DESCRIPTION]\r
353                 };\r
354                 if ( DataService.getALaCarte() ) {\r
355                     parameter.name = ComponentService.getFieldDisplayName(inputs[key][PARAMETER.DISPLAY_NAME]);\r
356                 }\r
357                 switch (inputs[key][PARAMETER.TYPE]) {\r
358                     case PARAMETER.INTEGER:\r
359                         parameter.type = PARAMETER.NUMBER;\r
360                         break;\r
361                     case PARAMETER.BOOLEAN:\r
362                         parameter.type = PARAMETER.BOOLEAN;\r
363                         break;\r
364                     case PARAMETER.RANGE:\r
365                         break;\r
366                     case PARAMETER.LIST:\r
367                         parameter.type = PARAMETER.LIST;\r
368                         break;\r
369                     case PARAMETER.MAP:\r
370                         parameter.type = PARAMETER.MAP;\r
371                         break;\r
372                 }\r
373 \r
374                 if ( UtilityService.hasContents(inputs[key][PARAMETER.CONSTRAINTS])\r
375                     && ( inputs[key][PARAMETER.CONSTRAINTS].length > 0 ) ) {\r
376                     var constraintsArray = inputs[key][PARAMETER.CONSTRAINTS];\r
377                     //console.log ("Calling addConstraintParameters for input name=" + key);\r
378                     addConstraintParameters (parameterList, constraintsArray, key, inputs, parameter);\r
379                 }\r
380                 else {\r
381 \r
382                     parameterList.push(parameter);\r
383                 }\r
384             }\r
385             DataService.setArbitraryParameters (parameterList);\r
386         }\r
387     };\r
388 \r
389         var addConstraintParameters = function(parameterList, constraintsArray, key, inputs, parameter) {\r
390                 // If there are constraints and the operator is "valid_values",\r
391                 // use a select parameter type. \r
392                 var i = constraintsArray.length;\r
393                 var parameterPushed = false;\r
394                 if ( i > 0 ) {\r
395                         while ( (i--) && (!parameterPushed) ) {\r
396                                 var keys = Object.keys(constraintsArray[i]);\r
397                                 //var keys_len = keys.length;\r
398                                 for ( var operator in keys ) {\r
399                                         //console.log ("keys[operator]=" + keys[operator]);\r
400                                         switch (keys[operator]) {\r
401                                         case PARAMETER.VALID_VALUES:\r
402                                                 var j = constraintsArray[i][PARAMETER.VALID_VALUES].length;\r
403                                                 if ( j > 0 ) {\r
404                                                         var oList = [];\r
405                                                         var option;\r
406                                                         while (j--) {\r
407                                                                 option = {\r
408                                                                                 name: constraintsArray[i][PARAMETER.VALID_VALUES][j],\r
409                                                                                 isDefault: false\r
410                                                                 } \r
411                                                                 if ( ( UtilityService.hasContents (inputs[key][PARAMETER.DEFAULT]) ) \r
412                                                                                 && (inputs[key][PARAMETER.DEFAULT] === constraintsArray[i][PARAMETER.VALID_VALUES][j] ) ) {\r
413                                                                         option = {\r
414                                                                                         name: constraintsArray[i][PARAMETER.VALID_VALUES][j],\r
415                                                                                         isDefault: true\r
416                                                                         } \r
417                                                                 }\r
418                                                                 oList.push(option);\r
419                                                         }\r
420                                                         parameter.type = PARAMETER.SELECT;\r
421                                                         parameter.optionList = oList;\r
422                                                         parameterList.push(parameter);\r
423                                                         parameterPushed = true;\r
424                                                         //console.log ("pushed param for valid values");\r
425                                                 }\r
426                                         break; \r
427                                         \r
428                                         case PARAMETER.EQUAL: \r
429                                                 if ( constraintsArray[i][PARAMETER.EQUAL] != null ) {\r
430                                                         //override parameter type\r
431                                                         parameter.type = PARAMETER.STRING;\r
432                                                         parameter.isReadOnly = true;\r
433                                                         parameter.value = constraintsArray[i][PARAMETER.EQUAL];\r
434                                                         parameterList.push(parameter);\r
435                                                         parameterPushed = true;\r
436                                                         //console.log ("pushed param for equal");\r
437                                                 }\r
438                                         break;\r
439                                                 \r
440                                         case PARAMETER.LENGTH: \r
441                                                 if ( constraintsArray[i][PARAMETER.LENGTH] != null ) {\r
442                                                         parameter.minLength = constraintsArray[i][PARAMETER.LENGTH];\r
443                                                         parameter.maxLength = constraintsArray[i][PARAMETER.LENGTH];\r
444                                                         parameterList.push(parameter);\r
445                                                         parameterPushed = true;\r
446                                                         //console.log ("pushed param for length: ");\r
447                                                         //console.log (JSON.stringify (parameter, null, 4));\r
448                                                 }\r
449                                         break;\r
450                                         case PARAMETER.MAX_LENGTH: \r
451                                                 if ( constraintsArray[i][PARAMETER.MAX_LENGTH] != null ) {\r
452                                                         parameter.maxLength = constraintsArray[i][PARAMETER.MAX_LENGTH];\r
453                                                         parameterList.push(parameter);\r
454                                                         parameterPushed = true;\r
455                                                         //console.log ("pushed param for max length: ");\r
456                                                         //console.log (JSON.stringify (parameter, null, 4));\r
457                                                 }\r
458                                         break;\r
459                                         case PARAMETER.MIN_LENGTH: \r
460                                                 if ( constraintsArray[i][PARAMETER.MIN_LENGTH] != null ) {\r
461                                                         parameter.minLength = constraintsArray[i][PARAMETER.MIN_LENGTH];\r
462                                                         parameterList.push(parameter);\r
463                                                         parameterPushed = true;\r
464                                                         //console.log ("pushed param for min length: ");\r
465                                                         //console.log (JSON.stringify (parameter, null, 4));\r
466                                                 }\r
467                                         break;\r
468                                         case PARAMETER.IN_RANGE:\r
469                                                 if ( constraintsArray[i][PARAMETER.IN_RANGE] != null ) {\r
470                                                         if (constraintsArray[i][PARAMETER.IN_RANGE].length > 1 ) {\r
471                                                                 parameter.min = constraintsArray[i][PARAMETER.IN_RANGE][0];\r
472                                                                 parameter.max = constraintsArray[i][PARAMETER.IN_RANGE][1];\r
473                                                                 parameter.type = PARAMETER.NUMBER;\r
474                                                                 parameter.value = inputs[key][PARAMETER.DEFAULT]\r
475                                                                 parameterList.push(parameter);\r
476                                                                 parameterPushed = true;\r
477                                                                 //console.log ("pushed param for in_range");\r
478                                                         }\r
479                                                 }\r
480                                         break; \r
481                                         case PARAMETER.GREATER_THAN:\r
482                                                 if ( constraintsArray[i][PARAMETER.GREATER_THAN] != null ) {\r
483                                                                 parameter.type = PARAMETER.NUMBER;\r
484                                                                 parameter.min = constraintsArray[i][PARAMETER.GREATER_THAN];\r
485                                                                 parameter.value = inputs[key][PARAMETER.DEFAULT]\r
486                                                                 parameterList.push(parameter);\r
487                                                                 parameterPushed = true;\r
488                                                                 //console.log ("pushed param for greater_than");\r
489                                                         \r
490                                                 }\r
491                                         break;\r
492                                         }//switch\r
493                                 }//for\r
494                                 \r
495                         }//while\r
496                 }//if\r
497         };\r
498         var addToList = function(name, value) {\r
499                 _this.parameterList.push({\r
500                         name : name,\r
501                         value : value\r
502                 });\r
503         };\r
504         var setInventoryInfo = function(){\r
505         var inventoryItem = DataService.getInventoryItem();\r
506         var inventoryInfo = ComponentService.getInventoryInfo(\r
507             _this.componentId, inventoryItem);\r
508         }\r
509 \r
510     /*\r
511      * The "*Mso*" functions return URL and request details that can be passed\r
512      * to the MSO controller. The request details defines the info passed as\r
513      * part of the POST body.\r
514      */\r
515 \r
516     var getMsoUrl = function() {\r
517         switch (_this.componentId) {\r
518             case COMPONENT.NETWORK:\r
519                 return "mso_create_nw_instance/"\r
520                     + DataService.getServiceInstanceId();\r
521             case COMPONENT.SERVICE:\r
522                 if(DataService.getE2EService() === true)\r
523                     return "mso_create_e2e_svc_instance";\r
524                 else\r
525                     return "mso_create_svc_instance";\r
526             case COMPONENT.VNF:\r
527                 return "mso_create_vnf_instance/"\r
528                     + DataService.getServiceInstanceId();\r
529             case COMPONENT.VF_MODULE:\r
530                 return "mso_create_vfmodule_instance/"\r
531                     + DataService.getServiceInstanceId() + "/vnfs/"\r
532                     + DataService.getVnfInstanceId();\r
533             case COMPONENT.VOLUME_GROUP:\r
534                 return "mso_create_volumegroup_instance/"\r
535                     + DataService.getServiceInstanceId() + "/vnfs/"\r
536                     + DataService.getVnfInstanceId();\r
537         }\r
538     };\r
539 \r
540     var getMsoE2ERequest = function(parameterList) {\r
541         var modelInfo = DataService.getModelInfo(_this.componentId);\r
542 \r
543         //region id\r
544         var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);\r
545         if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {\r
546             lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,\r
547                 parameterList);\r
548         }\r
549         var cloudOwner = _.find(DataService.getCloudRegionTenantList(), function(region){\r
550             return region.cloudRegionId === lcpRegion;\r
551         }).cloudOwner;\r
552 \r
553         var params = [];\r
554         var displayInputs = modelInfo.displayInputs;\r
555         var groupBy = _.groupBy(displayInputs, "templateUUID");\r
556 \r
557         _.forEach(groupBy, function(nodeTemplateInputs, nodeTemplateUUID) {\r
558             var reqParas = {};\r
559             var vfLocations = [];\r
560 \r
561             nodeTemplateInputs.forEach(function(parameter){\r
562                 if(parameter.type === 'vf_location') {\r
563                     var loc = {\r
564                         vnfProfileId: parameter.displayName,\r
565                         locationConstraints : {\r
566                             vimId: cloudOwner + '_' + lcpRegion\r
567                         }\r
568                     };\r
569                     vfLocations.push(loc);\r
570                 } else if(parameter.type === 'sdn_controller') {\r
571                     if(parameter.value === undefined || parameter.value === null) {\r
572                         reqParas[parameter.name] = '';\r
573                     } else {\r
574                         reqParas[parameter.name] = parameter.value.value;\r
575                     }\r
576                 } else {\r
577                     var name;\r
578                     _.forEach(displayInputs, function(item, key){\r
579                         if(item === parameter) {\r
580                             name = key;\r
581                         }\r
582                     });\r
583                     var value = _.find(parameterList, function(item){\r
584                         return item.id === name;\r
585                     }).value;\r
586                     reqParas[parameter.displayName] = value;\r
587                 }\r
588             });\r
589 \r
590             params.push({\r
591                 resourceName: nodeTemplateInputs[0].templateName,\r
592                 resourceInvariantUuid: nodeTemplateInputs[0].templateInvariantUUID,\r
593                 resourceUuid: nodeTemplateInputs[0].templateUUID,\r
594                 resourceCustomizationUuid: nodeTemplateInputs[0].templateCustomizationUUID,\r
595                 parameters: {\r
596                     locationConstraints: vfLocations,\r
597                     //TODO resources: [],\r
598                     requestInputs: reqParas\r
599                 }\r
600             });\r
601         });\r
602 \r
603         var requestBody = {\r
604             service: {\r
605                 name: getValueFromList(FIELD.ID.INSTANCE_NAME, parameterList),\r
606                 description: modelInfo["description"],\r
607                 serviceInvariantUuid: modelInfo["modelInvariantId"],\r
608                 serviceUuid: modelInfo["modelNameVersionId"],\r
609                 globalSubscriberId: DataService.getGlobalCustomerId(),\r
610                 serviceType: getValueFromList(FIELD.ID.SERVICE_TYPE, parameterList) || modelInfo["serviceTypeName"],\r
611                 parameters: {\r
612                     locationConstraints: [],\r
613                     resources: params,\r
614                     requestInputs: {} //TODO\r
615                 }\r
616             }\r
617         };\r
618 \r
619         return requestBody;\r
620     };\r
621 \r
622     var getMsoRequestDetails = function(parameterList) {\r
623         console.log("getMsoRequestDetails invoked, parameterList="); console.log(JSON.stringify(parameterList,null,4));\r
624         //console.log("getMsoRequestDetails invoked, DataService.getArbitraryParameters()=");\r
625         //console.log(JSON.stringify(DataService.getArbitraryParameters(),null,4));\r
626 \r
627         //VoLTE logic goes here\r
628         if(DataService.getE2EService() === true) {\r
629             return getMsoE2ERequest(parameterList);\r
630         }\r
631 \r
632         var modelInfo = DataService.getModelInfo(_this.componentId);\r
633         var requestorloggedInId = DataService.getLoggedInUserId();\r
634         var owningEntityId = getValueFromList(FIELD.ID.OWNING_ENTITY, parameterList);\r
635         if (requestorloggedInId ==  null)\r
636             requestorloggedInId = "";\r
637         var isSupRollback = false;\r
638         if (getValueFromList(FIELD.ID.SUPPRESS_ROLLBACK,parameterList) === "true") {\r
639             isSupRollback = true;\r
640         }\r
641         var requestDetails = {\r
642             requestInfo : {\r
643                 instanceName : getValueFromList(FIELD.ID.INSTANCE_NAME,\r
644                     parameterList) || DataService.getVfModuleInstanceName(),\r
645                 source : FIELD.ID.VID,\r
646                 suppressRollback : isSupRollback,\r
647                 requestorId: requestorloggedInId\r
648             },\r
649             modelInfo : {\r
650                 modelType : _this.componentId,\r
651                 modelInvariantId : modelInfo.modelInvariantId,\r
652                 modelVersionId : modelInfo.modelNameVersionId,\r
653                 modelName : modelInfo.modelName,\r
654                 modelVersion : modelInfo.modelVersion,\r
655                 modelCustomizationId: modelInfo.customizationUuid,\r
656                 modelCustomizationName : modelInfo.modelCustomizationName\r
657             },\r
658             requestParameters : {\r
659                 userParams : getArbitraryParameters(parameterList)\r
660             }\r
661         };\r
662         if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) {\r
663             if ((_this.componentId != COMPONENT.SERVICE) || ( DataService.getALaCarte() )) {\r
664                 requestDetails.requestParameters.testApi = DataService.getMsoRequestParametersTestApi();\r
665             }\r
666         }\r
667         if ( (_this.componentId != COMPONENT.SERVICE) || ( !DataService.getALaCarte() ) ) {\r
668             // include cloud region for everything but service create alacarte\r
669             var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);\r
670             if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {\r
671                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,\r
672                     parameterList);\r
673             }\r
674             requestDetails.cloudConfiguration = {\r
675                 lcpCloudRegionId : lcpRegion,\r
676                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)\r
677             };\r
678         }\r
679         switch (_this.componentId) {\r
680 \r
681             case COMPONENT.SERVICE:\r
682                 requestDetails.subscriberInfo = {\r
683                     globalSubscriberId : DataService.getGlobalCustomerId(),\r
684                     subscriberName : DataService.getSubscriberName()\r
685                 };\r
686                 var isInTop = DataService.getHideServiceFields() || false;\r
687                 if(isInTop){\r
688                     requestDetails.requestParameters.subscriptionServiceType = DataService.getModelInfo(_this.componentId)["serviceTypeName"];\r
689                 }else{\r
690                     requestDetails.requestParameters.subscriptionServiceType = getValueFromList(\r
691                         FIELD.ID.SERVICE_TYPE, parameterList);\r
692                 }\r
693                 requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();\r
694                 if ( !DataService.getALaCarte() ) {\r
695                     requestDetails.requestInfo.productFamilyId = getValueFromList(\r
696                         FIELD.ID.PRODUCT_FAMILY, parameterList);\r
697                 }\r
698                 var svcModelInfo = {\r
699                     modelType : _this.componentId,\r
700                     modelInvariantId : modelInfo.modelInvariantId,\r
701                     modelVersionId : modelInfo.modelNameVersionId,\r
702                     modelName : modelInfo.modelName,\r
703                     modelVersion : modelInfo.modelVersion\r
704                 };\r
705                 requestDetails.modelInfo = svcModelInfo;\r
706 \r
707                 var selectedProject = getValueFromList(FIELD.ID.PROJECT, parameterList);\r
708 \r
709                 if (selectedProject) {\r
710                     requestDetails.project = {\r
711                         projectName: getValueFromList(FIELD.ID.PROJECT, parameterList)\r
712                     };\r
713                 }\r
714 \r
715                 requestDetails.owningEntity = {\r
716                     owningEntityId: owningEntityId,\r
717                     owningEntityName: getOwningEntityNameById(owningEntityId)\r
718                 };\r
719 \r
720                 break;\r
721             case COMPONENT.VNF:\r
722 \r
723                 requestDetails.requestInfo.productFamilyId = getValueFromList(\r
724                     FIELD.ID.PRODUCT_FAMILY, parameterList);\r
725 \r
726                 var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
727 \r
728                 if(lineOfBusiness) {\r
729                     var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
730 \r
731                     requestDetails.lineOfBusiness = {\r
732                         lineOfBusinessName: lineOfBusinessNamesString\r
733                     }\r
734                 }\r
735 \r
736                 requestDetails.platform = {\r
737                     platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\r
738                 };\r
739 \r
740                 break;\r
741             case COMPONENT.NETWORK:\r
742                 requestDetails.requestInfo.productFamilyId = getValueFromList(\r
743                     FIELD.ID.PRODUCT_FAMILY, parameterList);\r
744                 var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
745 \r
746                 if(lineOfBusiness) {\r
747                     var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
748 \r
749                     requestDetails.lineOfBusiness = {\r
750                         lineOfBusinessName: lineOfBusinessNamesString\r
751                     }\r
752                 }\r
753 \r
754                 requestDetails.platform = {\r
755                     platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\r
756                 };\r
757                 break;\r
758             case COMPONENT.VF_MODULE:\r
759                 requestDetails.requestParameters.usePreload = getValueFromList(\r
760                     FIELD.ID.SDN_C_PRELOAD, parameterList);\r
761                 if(_this.componentId == COMPONENT.VF_MODULE &&(requestDetails.requestParameters.usePreload== null || requestDetails.requestParameters.usePreload === '')){\r
762                     requestDetails.requestParameters.usePreload = false;\r
763                 }\r
764                 break;\r
765             case COMPONENT.VOLUME_GROUP:\r
766                 break;\r
767         }\r
768 \r
769         var relatedInstanceList = getRelatedInstanceList(parameterList);\r
770 \r
771         if (relatedInstanceList !== undefined) {\r
772             requestDetails.relatedInstanceList = relatedInstanceList;\r
773         }\r
774 \r
775         return requestDetails;\r
776     };\r
777 \r
778     var getRelatedInstanceList = function(parameterList) {\r
779         var relatedInstanceList = new Array();\r
780         switch (_this.componentId) {\r
781             case COMPONENT.SERVICE:\r
782                 return undefined;\r
783             case COMPONENT.NETWORK:\r
784             case COMPONENT.VNF:\r
785                 addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
786                     DataService.getServiceInstanceId());\r
787                 break;\r
788             case COMPONENT.VF_MODULE:\r
789                 addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
790                     DataService.getServiceInstanceId());\r
791                 addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
792                     .getVnfInstanceId());\r
793 \r
794                 var availableVolumeGroup = getValueFromList(\r
795                     FIELD.ID.AVAILABLE_VOLUME_GROUP, parameterList);\r
796 \r
797                 if (UtilityService.hasContents(availableVolumeGroup) && availableVolumeGroup !== "None") {\r
798                     var availableVolumeGroups = DataService.getAvailableVolumeGroupList();\r
799 \r
800                     for (var i = 0; i < availableVolumeGroups.length; i++) {\r
801                         if (availableVolumeGroups[i].instance.name == availableVolumeGroup) {\r
802                             DataService.setModelInfo(COMPONENT.VOLUME_GROUP, DataService.getModelInfo(COMPONENT.VF_MODULE));\r
803                             DataService.setVolumeGroupInstanceId(availableVolumeGroups[i].instance.object["volume-group-id"]);\r
804                             break;\r
805                         }\r
806                     }\r
807 \r
808                     addRelatedInstance(relatedInstanceList, COMPONENT.VOLUME_GROUP,\r
809                         DataService.getVolumeGroupInstanceId());\r
810                 }\r
811                 break;\r
812             case COMPONENT.VOLUME_GROUP:\r
813                 addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
814                     DataService.getServiceInstanceId());\r
815                 addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
816                     .getVnfInstanceId());\r
817                 break;\r
818         }\r
819 \r
820         return relatedInstanceList;\r
821     };\r
822 \r
823     var addRelatedInstance = function(relatedInstanceList, componentId,\r
824                                       instanceId) {\r
825         var modelInfo = DataService.getModelInfo(componentId);\r
826         var relatedInstance;\r
827         if (modelInfo !== undefined) {\r
828             if (componentId === COMPONENT.SERVICE) {\r
829                 relatedInstance = {\r
830                     "instanceId" : instanceId,\r
831                     "modelInfo" : {\r
832                         "modelType" : componentId,\r
833                         "modelName" : modelInfo.modelName,\r
834                         "modelInvariantId" : modelInfo.modelInvariantId,\r
835                         "modelVersion" : modelInfo.modelVersion,\r
836                         "modelVersionId" : modelInfo.modelNameVersionId,\r
837 \r
838                     }\r
839                 };\r
840             }\r
841             else {\r
842                 relatedInstance = {\r
843                     "instanceId" : instanceId,\r
844                     "modelInfo" : {\r
845                         "modelType" : componentId,\r
846                         "modelName" : modelInfo.modelName,\r
847                         "modelInvariantId" : modelInfo.modelInvariantId,\r
848                         "modelVersion" : modelInfo.modelVersion,\r
849                         "modelVersionId" : modelInfo.modelNameVersionId,\r
850                         "modelCustomizationId": modelInfo.customizationUuid,\r
851                         "modelCustomizationName": modelInfo.modelCustomizationName\r
852                     }\r
853                 }\r
854             }\r
855             relatedInstanceList.push({\r
856                 relatedInstance : relatedInstance\r
857             });\r
858         }\r
859     };\r
860 \r
861     /*\r
862      * var getArbitraryParameters = function(parameterList) { var\r
863      * arbitraryParameters = new Object(); for (var i = 0; i <\r
864      * parameterList.length; i++) { var parameter = parameterList[i]; switch\r
865      * (parameter.id) { case FIELD.ID.INSTANCE_NAME: case\r
866      * FIELD.ID.PRODUCT_FAMILY: case FIELD.ID.LCP_REGION: case\r
867      * FIELD.ID.LCP_REGION_TEXT: case FIELD.ID.SERVICE_TYPE: case\r
868      * FIELD.ID.TENANT: case FIELD.ID.SUPPRESS_ROLLBACK: break; default:\r
869      * arbitraryParameters[parameter.id] = parameter.value; } } return\r
870      * arbitraryParameters; }\r
871      */\r
872     var getArbitraryParameters = function(parameterList) {\r
873         var arbitraryParameters = new Object();\r
874         var arbitraryArray = new Array();\r
875         for (var i = 0; i < parameterList.length; i++) {\r
876             var parameter = parameterList[i];\r
877             switch (parameter.id) {\r
878                 case FIELD.ID.AVAILABLE_VOLUME_GROUP:\r
879                 case FIELD.ID.INSTANCE_NAME:\r
880                 case FIELD.ID.PRODUCT_FAMILY:\r
881                 case FIELD.ID.LCP_REGION:\r
882                 case FIELD.ID.LCP_REGION_TEXT:\r
883                 case FIELD.ID.SERVICE_TYPE:\r
884                 case FIELD.ID.TENANT:\r
885                 case FIELD.ID.SUPPRESS_ROLLBACK:\r
886                 case FIELD.ID.SUBSCRIBER_NAME:\r
887                 case FIELD.ID.SDN_C_PRELOAD:\r
888                 case FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE:\r
889                 case FIELD.ID.OWNING_ENTITY:\r
890                 case FIELD.ID.PLATFORM:\r
891                 case FIELD.ID.LINE_OF_BUSINESS:\r
892                 case FIELD.ID.PROJECT:\r
893                     break;\r
894                 case FIELD.ID.SUPPLEMENTORY_DATA_FILE:\r
895                     arbitraryParameters =  FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'];\r
896                     arbitraryArray=arbitraryParameters;\r
897                     FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value']=[];\r
898                     break;\r
899 \r
900                 default:\r
901                     if (parameter.value != '') {\r
902                         arbitraryParameters = {\r
903                             name: parameter.id,\r
904                             value: parameter.value\r
905                         }\r
906                         arbitraryArray.push(arbitraryParameters);\r
907                     }\r
908             }\r
909         }\r
910         return (arbitraryArray);\r
911     }\r
912 \r
913     var getModel = function() {\r
914         AsdcService.getModel(DataService.getModelId(), function(response) {\r
915             DataService.setModelInfo(_this.componentId, {\r
916                 modelInvariantId : response.data.invariantUUID,\r
917                 modelNameVersionId : response.data.uuid,\r
918                 modelName : response.data.name,\r
919                 modelVersion : response.data.version,\r
920                 inputs : response.data.inputs\r
921             });\r
922             UtilityService.startNextAsyncOperation();\r
923         });\r
924     };\r
925 \r
926     var getSubscriptionServiceTypeList = function() {\r
927         AaiService.getSubscriptionServiceTypeList(DataService\r
928             .getGlobalCustomerId(), function(response) {\r
929             DataService.setSubscriptionServiceTypeList(response);\r
930             UtilityService.startNextAsyncOperation();\r
931         });\r
932     };\r
933 \r
934     var getLoggedInUserID = function() {\r
935         AaiService.getLoggedInUserID(function(response) {\r
936             DataService.setLoggedInUserId(response.data);\r
937             UtilityService.startNextAsyncOperation();\r
938         });\r
939     };\r
940 \r
941     var getSubscribers = function() {\r
942         AaiService.getSubscribers(function(response) {\r
943             DataService.setSubscribers(response);\r
944             UtilityService.startNextAsyncOperation();\r
945         });\r
946     };\r
947     var getServices = function() {\r
948         AaiService.getServices(function(response) {\r
949             var serviceIdList = [];\r
950             angular.forEach(response.data, function(value, key) {\r
951                 angular.forEach(value, function(subVal, key) {\r
952                     var newVal = {\r
953                         "id" : subVal[FIELD.ID.SERVICE_ID],\r
954                         "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION],\r
955                         "isPermitted" : subVal[FIELD.ID.IS_PERMITTED],\r
956                     };\r
957                     serviceIdList.push(newVal);\r
958                     DataService.setServiceIdList(serviceIdList);\r
959                 });\r
960             });\r
961 \r
962             UtilityService.startNextAsyncOperation();\r
963         });\r
964     };\r
965     var getAicZones = function() {\r
966         AaiService.getAicZones(function(response) {\r
967             var serviceIdList = [];\r
968             angular.forEach(response.data, function(value, key) {\r
969                 angular.forEach(value, function(subVal, key) {\r
970                     var newVal = {\r
971                         "id" : subVal[FIELD.ID.ZONE_ID],\r
972                         "name" : subVal[FIELD.ID.ZONE_NAME],\r
973                     };\r
974                     serviceIdList.push(newVal);\r
975                     DataService.setAicZones(serviceIdList);\r
976                 });\r
977             });\r
978 \r
979             UtilityService.startNextAsyncOperation();\r
980         });\r
981     };\r
982 \r
983     var getOwningEntityProperties = function() {\r
984         OwningEntityService.getOwningEntityProperties(function(owningEntityProperties) {\r
985             DataService.setOwningEntityProperties(owningEntityProperties);\r
986             UtilityService.startNextAsyncOperation();\r
987         });\r
988 \r
989     };\r
990 \r
991     var getLcpCloudRegionTenantList = function() {\r
992         AaiService.getLcpCloudRegionTenantList(DataService\r
993             .getGlobalCustomerId(), DataService.getServiceType(), function(\r
994             response) {\r
995             DataService.setCloudRegionTenantList(response);\r
996             UtilityService.startNextAsyncOperation();\r
997         });\r
998     };\r
999 \r
1000     var internalGetParametersHandler = function() {\r
1001         if (angular.isFunction(_this.getParametersHandler)) {\r
1002             _this.getParametersHandler({\r
1003                 summaryList : getSummaryList(),\r
1004                 userProvidedList : getUserProvidedList()\r
1005             });\r
1006         }\r
1007     };\r
1008 \r
1009     var getSubscribersParameter = function() {\r
1010         var subscribers = DataService.getSubscribers();\r
1011         var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;\r
1012         if ( UtilityService.hasContents(subscribers)) {\r
1013             parameter.optionList = [];\r
1014 \r
1015             for (var i = 0; i < subscribers.length; i++) {\r
1016                 parameter.optionList.push({\r
1017                     id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],\r
1018                     name : subscribers[i][FIELD.ID.SUBNAME],\r
1019                     isPermitted : subscribers[i][FIELD.ID.IS_PERMITTED]\r
1020                 })\r
1021             }\r
1022         }\r
1023         return parameter;\r
1024     };\r
1025 \r
1026     var getServiceId = function() {\r
1027         var serviceIdList = DataService.getServiceIdList();\r
1028         //var serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
1029         var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;\r
1030         parameter.optionList = new Array();\r
1031         if ( UtilityService.hasContents(serviceIdList) ) {\r
1032             // load them all\r
1033             for (var i = 0; i < serviceIdList.length; i++) {\r
1034                 parameter.optionList.push({\r
1035                     id : serviceIdList[i].id,\r
1036                     name : serviceIdList[i].description,\r
1037                     isPermitted : serviceIdList[i].isPermitted\r
1038                 });\r
1039             }\r
1040         }\r
1041 \r
1042         return parameter;\r
1043     };\r
1044 \r
1045     var getAicZonesParameter = function() {\r
1046         var aicList = DataService.getAicZones();\r
1047         var parameter = FIELD.PARAMETER.AIC_ZONES;\r
1048         parameter.optionList = new Array();\r
1049         if ( UtilityService.hasContents(aicList) ) {\r
1050             // load them all\r
1051             for (var i = 0; i < aicList.length; i++) {\r
1052                 parameter.optionList.push({\r
1053                     id : aicList[i].id,\r
1054                     name : aicList[i].name,\r
1055                     isPermitted : true\r
1056 \r
1057                 });\r
1058             }\r
1059         }\r
1060 \r
1061         return parameter;\r
1062     };\r
1063 \r
1064     var getProjectParameter = function() {\r
1065         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PROJECT);\r
1066     };\r
1067 \r
1068     var getOwningEntityParameter = function() {\r
1069         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.OWNING_ENTITY);\r
1070     };\r
1071 \r
1072     var getLineOfBusinessParameter = function() {\r
1073         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.LINE_OF_BUSINESS);\r
1074     };\r
1075 \r
1076     var getPlatformParameter = function() {\r
1077         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PLATFORM);\r
1078     };\r
1079 \r
1080     var getOwningEntityNameById = function (id) {\r
1081         var properties = DataService.getOwningEntityProperties();\r
1082         var parameter = _.find(properties[FIELD.ID.OWNING_ENTITY], {"id": id});\r
1083         return parameter && parameter.name;\r
1084     };\r
1085 \r
1086     var getOwningEntityParameterWithOptions = function(parameter) {\r
1087         var properties = DataService.getOwningEntityProperties();\r
1088         if (properties && properties[parameter.id]) {\r
1089             parameter.optionList = _.map(properties[parameter.id], function(parameter) {\r
1090                 return {\r
1091                     "id" : parameter.id,\r
1092                     "name" : parameter.name,\r
1093                     "isPermitted": true\r
1094                 };\r
1095             });\r
1096         }\r
1097 \r
1098         return parameter;\r
1099     };\r
1100 \r
1101     var getLcpRegionParameter = function() {\r
1102         var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
1103         console.log ( "cloudRegionTenantList=");\r
1104         console.log ( JSON.stringify (cloudRegionTenantList, null, 4 ));\r
1105 \r
1106         var parameter = FIELD.PARAMETER.LCP_REGION;\r
1107         if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
1108             parameter.optionList = new Array();\r
1109             for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
1110                 for (var j = 0; j < parameter.optionList.length; j++) {\r
1111                     if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {\r
1112                         parameter.optionList[j].isPermitted =\r
1113                             parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;\r
1114                         break;\r
1115                     }\r
1116                 }\r
1117                 if (j < parameter.optionList.length) {\r
1118                     continue;\r
1119                 }\r
1120 \r
1121                 var optionName = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) && cloudRegionTenantList[i].cloudOwner ?\r
1122                     cloudRegionTenantList[i].cloudRegionId + " (" + cloudRegionTenantList[i].cloudOwner.trim().toLowerCase().replace(/^att-/, "").toUpperCase() + ")" :\r
1123                     cloudRegionTenantList[i].cloudRegionId;\r
1124 \r
1125                 parameter.optionList.push({\r
1126                     id : cloudRegionTenantList[i].cloudRegionId,\r
1127                     name: optionName,\r
1128                     isPermitted : cloudRegionTenantList[i].isPermitted\r
1129                 });\r
1130             }\r
1131         }\r
1132         return parameter;\r
1133     };\r
1134 \r
1135     var getTenantList = function(cloudRegionId) {\r
1136         var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
1137         var parameter = "";\r
1138         if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
1139             parameter = FIELD.PARAMETER.TENANT_ENABLED;\r
1140             parameter.optionList = new Array();\r
1141             for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
1142                 if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {\r
1143                     parameter.optionList.push({\r
1144                         id : cloudRegionTenantList[i].tenantId,\r
1145                         name : cloudRegionTenantList[i].tenantName,\r
1146                         isPermitted : cloudRegionTenantList[i].isPermitted\r
1147 \r
1148                     });\r
1149                 }\r
1150             }\r
1151         }\r
1152         return parameter;\r
1153 \r
1154     };\r
1155 \r
1156     var addOptionList = function(parameter, optionSimpleArray) {\r
1157         var optionList = new Array();\r
1158         if (!angular.isArray(optionSimpleArray)) {\r
1159             return optionList;\r
1160         }\r
1161         for (var i = 0; i < optionSimpleArray.length; i++) {\r
1162             optionList.push({\r
1163                 name : optionSimpleArray[i],\r
1164                 isPermitted :true,\r
1165             });\r
1166         }\r
1167         parameter.optionList = optionList;\r
1168         return parameter;\r
1169     };\r
1170 \r
1171     var getValueFromList = function(id, parameterList) {\r
1172         for (var i = 0; i < parameterList.length; i++) {\r
1173             if (parameterList[i].id === id) {\r
1174                 return parameterList[i].value;\r
1175             }\r
1176         }\r
1177     };\r
1178     var updateUserParameterList = function(updatedId, parameterListControl) {\r
1179         console.log ("updateUserParameterList() updatedId=" + updatedId);\r
1180         if (updatedId === FIELD.ID.PRODUCT_FAMILY && DataService.getHideServiceFields()) {\r
1181             var cloudRegionTenantList = new Array();\r
1182             AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
1183                 DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
1184                 parameterListControl.updateList([ getLcpRegionParameter() ]);\r
1185             });\r
1186         }else if (updatedId === FIELD.ID.SDN_C_PRELOAD) {\r
1187             var list = parameterListControl.getList(updatedId);\r
1188             if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
1189                 FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED.value=true;\r
1190                 parameterListControl\r
1191                     .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED ]);\r
1192             }else{\r
1193                 parameterListControl\r
1194                     .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_UNCHECKED ]);\r
1195             }\r
1196         }else if (updatedId === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE) {\r
1197             if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
1198                 $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').show();\r
1199                 FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=true;\r
1200                 parameterListControl\r
1201                     .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED ]);\r
1202             }else{\r
1203                 $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').hide();\r
1204                 FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=false;\r
1205                 parameterListControl\r
1206                     .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED ]);\r
1207             }\r
1208         } else if (updatedId === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {\r
1209             var filePath =  $('input[parameter-id="'+updatedId+'"]').val();\r
1210             var arr =filePath.split('.');\r
1211             var fileExt  = arr[arr.length-1];\r
1212             if(fileExt!='' && fileExt.toLowerCase()!='json'){\r
1213                 $('input[parameter-id="'+updatedId+'"]').val('');\r
1214                 alert("Invalid file format. Please select *.json format file.");\r
1215                 return false;\r
1216             }\r
1217         } else  if (updatedId === FIELD.ID.LCP_REGION) {\r
1218             var list = parameterListControl.getList(updatedId);\r
1219             if (list[0].selectedIndex >= 0) {\r
1220                 parameterListControl\r
1221                     .updateList([ getTenantList(list[0].value) ]);\r
1222             } else {\r
1223                 parameterListControl\r
1224                     .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);\r
1225             }\r
1226             if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {\r
1227                 parameterListControl\r
1228                     .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);\r
1229             } else {\r
1230                 parameterListControl\r
1231                     .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);\r
1232             }\r
1233         } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {\r
1234             var list = parameterListControl.getList(updatedId);\r
1235             if (list[0].selectedIndex >= 0) {\r
1236                 DataService.setGlobalCustomerId(list[0].value);\r
1237 \r
1238                 AaiService.getSubscriptionServiceTypeList(DataService\r
1239                     .getGlobalCustomerId(), function(response) {\r
1240                     DataService.setSubscriptionServiceTypeList(response);\r
1241                     var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;\r
1242                     serviceTypeParameters.optionList = [];\r
1243 \r
1244                     for (var i = 0; i < response.length; i++) {\r
1245                         serviceTypeParameters.optionList.push({\r
1246                             "id" : response[i].name,\r
1247                             "name" : response[i].name,\r
1248                             "isPermitted" :response[i].isPermitted\r
1249 \r
1250                         });\r
1251                     }\r
1252                     console.log ( "updateUserParameterList: service type parameters " );\r
1253                     console.log ( JSON.stringify (serviceTypeParameters, null, 4));\r
1254                     parameterListControl.updateList([ serviceTypeParameters ]);\r
1255                 });\r
1256 \r
1257             }\r
1258         } else if ( updatedId === FIELD.ID.SERVICE_TYPE ) {\r
1259             var list = parameterListControl.getList(updatedId);\r
1260             if (list[0].selectedIndex >= 0) {\r
1261 \r
1262                 DataService.setServiceType(list[0].value);\r
1263                 var cloudRegionTenantList = new Array();\r
1264                 AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
1265                     DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
1266                     parameterListControl.updateList([ getLcpRegionParameter() ]);\r
1267                 });\r
1268             } else {\r
1269                 parameterListControl\r
1270                     .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
1271             }\r
1272         }\r
1273 \r
1274     };\r
1275 \r
1276     return {\r
1277         initializeComponent : function(componentId) {\r
1278             _this.componentId = ComponentService.initialize(componentId);\r
1279         },\r
1280         setHttpErrorHandler : function(httpErrorHandler) {\r
1281             _this.httpErrorHandler = httpErrorHandler;\r
1282         },\r
1283         getComponentDisplayName : ComponentService.getComponentDisplayName,\r
1284         getParameters : function(getParametersHandler) {\r
1285             _this.getParametersHandler = getParametersHandler;\r
1286             UtilityService.setHttpErrorHandler(_this.httpErrorHandler);\r
1287             UtilityService.startAsyncOperations(getAsyncOperationList(),\r
1288                 internalGetParametersHandler);\r
1289         },\r
1290         updateUserParameterList : updateUserParameterList,\r
1291         getMsoRequestDetails : getMsoRequestDetails,\r
1292         getMsoUrl : getMsoUrl,\r
1293         setInventoryInfo: setInventoryInfo\r
1294     }\r
1295 }\r
1296 \r
1297 appDS2.factory("CreationService", [ "$log", "AaiService", "AsdcService",\r
1298     "DataService","VIDCONFIGURATION", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",\r
1299     "UtilityService", "OwningEntityService","featureFlags", CreationService ]);\r