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