56ec715b5ed9d54d53e55cf97156e98e5847b52e
[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") ) {\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                     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             parameterList = parameterList.concat([ getProjectParameter() ]);\r
243             parameterList = parameterList.concat([ getOwningEntityParameter() ]);\r
244             //if service model has a pnf, add a PNF ID parameter\r
245             if (DataService.getPnf()) {\r
246                 parameterList = parameterList.concat([ FIELD.PARAMETER.PNF_ID ]);\r
247             }\r
248         }\r
249         else {\r
250             parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
251             switch (_this.componentId) {\r
252                 case COMPONENT.NETWORK:\r
253                 case COMPONENT.VNF:\r
254                     parameterList = parameterList.concat([ getServiceId(),\r
255                         getLcpRegionParameter(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
256                         FIELD.PARAMETER.TENANT_DISABLED ]);\r
257                     parameterList = parameterList.concat([ getLineOfBusinessParameter() ]);\r
258                     parameterList = parameterList.concat([ getPlatformParameter() ]);\r
259 \r
260                     break;\r
261                 case COMPONENT.VF_MODULE:\r
262                     parameterList = parameterList.concat([\r
263                         getLcpRegionParameter(),\r
264                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
265                         FIELD.PARAMETER.TENANT_DISABLED\r
266                     ]);\r
267 \r
268                     var availableVolumeGroupList = DataService.getAvailableVolumeGroupList();\r
269 \r
270                     if (availableVolumeGroupList && availableVolumeGroupList.length > 0) {\r
271                         var availableVolumeGroupNames = [FIELD.STATUS.NONE];\r
272 \r
273                         for (var i = 0; i < availableVolumeGroupList.length; i++) {\r
274                             availableVolumeGroupNames.push(availableVolumeGroupList[i].instance.name);\r
275                         }\r
276 \r
277                         parameterList.push(addOptionList(\r
278                             FIELD.PARAMETER.AVAILABLE_VOLUME_GROUP,\r
279                             availableVolumeGroupNames));\r
280                     }\r
281                     break;\r
282                 case COMPONENT.VOLUME_GROUP:\r
283                     parameterList = parameterList.concat([ getLcpRegionParameter(),\r
284                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
285                         FIELD.PARAMETER.TENANT_DISABLED ]);\r
286             }\r
287         }\r
288         parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);\r
289         if(_this.componentId === COMPONENT.VF_MODULE ){\r
290             parameterList.push({name: FIELD.NAME.SDN_C_PRELOAD,\r
291                     id: FIELD.ID.SDN_C_PRELOAD,\r
292                     type: "checkbox",\r
293                     isEnabled: true,\r
294                     isRequired: false,\r
295                     hideFieldAndLabel: true\r
296                 }\r
297             );\r
298             parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
299                     id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
300                     type: "checkbox",\r
301                     isEnabled: true,\r
302                     isRequired: false,\r
303                     value:false\r
304                 }\r
305             );\r
306 \r
307             parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,\r
308                     id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,\r
309                     type: "file",\r
310                     isRequired: false,\r
311                     isVisiblity: false\r
312                 }\r
313             );\r
314         }\r
315 \r
316         if( VIDCONFIGURATION.UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED  && _this.componentId === COMPONENT.VOLUME_GROUP){\r
317             parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
318                     id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
319                     type: "checkbox",\r
320                     isEnabled: true,\r
321                     isRequired: false\r
322                 }\r
323             );\r
324 \r
325             parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,\r
326                     id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,\r
327                     type: "file",\r
328                     isRequired: false,\r
329                     isVisiblity: false\r
330                 }\r
331             );\r
332         }\r
333 \r
334         addArbitraryParameters(parameterList);\r
335 \r
336         return parameterList;\r
337     };\r
338 \r
339     var addArbitraryParameters = function(parameterList) {\r
340         if ( DataService.getModelInfo(_this.componentId).displayInputs != null ) {\r
341             var inputs = DataService.getModelInfo(_this.componentId).displayInputs;\r
342             for ( var key in inputs) {\r
343                 var parameter = {\r
344                     id : key,\r
345                     type : PARAMETER.STRING,\r
346                     name : ComponentService.getFieldDisplayName(key),\r
347                     value : inputs[key][PARAMETER.DEFAULT],\r
348                     isRequired : inputs[key][PARAMETER.REQUIRED],\r
349                     description : inputs[key][PARAMETER.DESCRIPTION]\r
350                 };\r
351                 if ( DataService.getALaCarte() ) {\r
352                     parameter.name = ComponentService.getFieldDisplayName(inputs[key][PARAMETER.DISPLAY_NAME]);\r
353                 }\r
354                 switch (inputs[key][PARAMETER.TYPE]) {\r
355                     case PARAMETER.INTEGER:\r
356                         parameter.type = PARAMETER.NUMBER;\r
357                         break;\r
358                     case PARAMETER.BOOLEAN:\r
359                         parameter.type = PARAMETER.BOOLEAN;\r
360                         break;\r
361                     case PARAMETER.RANGE:\r
362                         break;\r
363                     case PARAMETER.LIST:\r
364                         parameter.type = PARAMETER.LIST;\r
365                         break;\r
366                     case PARAMETER.MAP:\r
367                         parameter.type = PARAMETER.MAP;\r
368                         break;\r
369                 }\r
370 \r
371                 if ( UtilityService.hasContents(inputs[key][PARAMETER.CONSTRAINTS])\r
372                     && ( inputs[key][PARAMETER.CONSTRAINTS].length > 0 ) ) {\r
373                     var constraintsArray = inputs[key][PARAMETER.CONSTRAINTS];\r
374                     //console.log ("Calling addConstraintParameters for input name=" + key);\r
375                     addConstraintParameters (parameterList, constraintsArray, key, inputs, parameter);\r
376                 }\r
377                 else {\r
378 \r
379                     parameterList.push(parameter);\r
380                 }\r
381             }\r
382             DataService.setArbitraryParameters (parameterList);\r
383         }\r
384     };\r
385 \r
386         var addConstraintParameters = function(parameterList, constraintsArray, key, inputs, parameter) {\r
387                 // If there are constraints and the operator is "valid_values",\r
388                 // use a select parameter type. \r
389                 var i = constraintsArray.length;\r
390                 var parameterPushed = false;\r
391                 if ( i > 0 ) {\r
392                         while ( (i--) && (!parameterPushed) ) {\r
393                                 var keys = Object.keys(constraintsArray[i]);\r
394                                 //var keys_len = keys.length;\r
395                                 for ( var operator in keys ) {\r
396                                         //console.log ("keys[operator]=" + keys[operator]);\r
397                                         switch (keys[operator]) {\r
398                                         case PARAMETER.VALID_VALUES:\r
399                                                 var j = constraintsArray[i][PARAMETER.VALID_VALUES].length;\r
400                                                 if ( j > 0 ) {\r
401                                                         var oList = [];\r
402                                                         var option;\r
403                                                         while (j--) {\r
404                                                                 option = {\r
405                                                                                 name: constraintsArray[i][PARAMETER.VALID_VALUES][j],\r
406                                                                                 isDefault: false\r
407                                                                 } \r
408                                                                 if ( ( UtilityService.hasContents (inputs[key][PARAMETER.DEFAULT]) ) \r
409                                                                                 && (inputs[key][PARAMETER.DEFAULT] === constraintsArray[i][PARAMETER.VALID_VALUES][j] ) ) {\r
410                                                                         option = {\r
411                                                                                         name: constraintsArray[i][PARAMETER.VALID_VALUES][j],\r
412                                                                                         isDefault: true\r
413                                                                         } \r
414                                                                 }\r
415                                                                 oList.push(option);\r
416                                                         }\r
417                                                         parameter.type = PARAMETER.SELECT;\r
418                                                         parameter.optionList = oList;\r
419                                                         parameterList.push(parameter);\r
420                                                         parameterPushed = true;\r
421                                                         //console.log ("pushed param for valid values");\r
422                                                 }\r
423                                         break; \r
424                                         \r
425                                         case PARAMETER.EQUAL: \r
426                                                 if ( constraintsArray[i][PARAMETER.EQUAL] != null ) {\r
427                                                         //override parameter type\r
428                                                         parameter.type = PARAMETER.STRING;\r
429                                                         parameter.isReadOnly = true;\r
430                                                         parameter.value = constraintsArray[i][PARAMETER.EQUAL];\r
431                                                         parameterList.push(parameter);\r
432                                                         parameterPushed = true;\r
433                                                         //console.log ("pushed param for equal");\r
434                                                 }\r
435                                         break;\r
436                                                 \r
437                                         case PARAMETER.LENGTH: \r
438                                                 if ( constraintsArray[i][PARAMETER.LENGTH] != null ) {\r
439                                                         parameter.minLength = constraintsArray[i][PARAMETER.LENGTH];\r
440                                                         parameter.maxLength = constraintsArray[i][PARAMETER.LENGTH];\r
441                                                         parameterList.push(parameter);\r
442                                                         parameterPushed = true;\r
443                                                         //console.log ("pushed param for length: ");\r
444                                                         //console.log (JSON.stringify (parameter, null, 4));\r
445                                                 }\r
446                                         break;\r
447                                         case PARAMETER.MAX_LENGTH: \r
448                                                 if ( constraintsArray[i][PARAMETER.MAX_LENGTH] != null ) {\r
449                                                         parameter.maxLength = constraintsArray[i][PARAMETER.MAX_LENGTH];\r
450                                                         parameterList.push(parameter);\r
451                                                         parameterPushed = true;\r
452                                                         //console.log ("pushed param for max length: ");\r
453                                                         //console.log (JSON.stringify (parameter, null, 4));\r
454                                                 }\r
455                                         break;\r
456                                         case PARAMETER.MIN_LENGTH: \r
457                                                 if ( constraintsArray[i][PARAMETER.MIN_LENGTH] != null ) {\r
458                                                         parameter.minLength = constraintsArray[i][PARAMETER.MIN_LENGTH];\r
459                                                         parameterList.push(parameter);\r
460                                                         parameterPushed = true;\r
461                                                         //console.log ("pushed param for min length: ");\r
462                                                         //console.log (JSON.stringify (parameter, null, 4));\r
463                                                 }\r
464                                         break;\r
465                                         case PARAMETER.IN_RANGE:\r
466                                                 if ( constraintsArray[i][PARAMETER.IN_RANGE] != null ) {\r
467                                                         if (constraintsArray[i][PARAMETER.IN_RANGE].length > 1 ) {\r
468                                                                 parameter.min = constraintsArray[i][PARAMETER.IN_RANGE][0];\r
469                                                                 parameter.max = constraintsArray[i][PARAMETER.IN_RANGE][1];\r
470                                                                 parameter.type = PARAMETER.NUMBER;\r
471                                                                 parameter.value = inputs[key][PARAMETER.DEFAULT]\r
472                                                                 parameterList.push(parameter);\r
473                                                                 parameterPushed = true;\r
474                                                                 //console.log ("pushed param for in_range");\r
475                                                         }\r
476                                                 }\r
477                                         break; \r
478                                         case PARAMETER.GREATER_THAN:\r
479                                                 if ( constraintsArray[i][PARAMETER.GREATER_THAN] != null ) {\r
480                                                                 parameter.type = PARAMETER.NUMBER;\r
481                                                                 parameter.min = constraintsArray[i][PARAMETER.GREATER_THAN];\r
482                                                                 parameter.value = inputs[key][PARAMETER.DEFAULT]\r
483                                                                 parameterList.push(parameter);\r
484                                                                 parameterPushed = true;\r
485                                                                 //console.log ("pushed param for greater_than");\r
486                                                         \r
487                                                 }\r
488                                         break;\r
489                                         }//switch\r
490                                 }//for\r
491                                 \r
492                         }//while\r
493                 }//if\r
494         };\r
495         var addToList = function(name, value) {\r
496                 _this.parameterList.push({\r
497                         name : name,\r
498                         value : value\r
499                 });\r
500         };\r
501         var setInventoryInfo = function(){\r
502         var inventoryItem = DataService.getInventoryItem();\r
503         var inventoryInfo = ComponentService.getInventoryInfo(\r
504             _this.componentId, inventoryItem);\r
505         }\r
506 \r
507     /*\r
508      * The "*Mso*" functions return URL and request details that can be passed\r
509      * to the MSO controller. The request details defines the info passed as\r
510      * part of the POST body.\r
511      */\r
512 \r
513     var getMsoUrl = function() {\r
514         switch (_this.componentId) {\r
515             case COMPONENT.NETWORK:\r
516                 return "mso_create_nw_instance/"\r
517                     + DataService.getServiceInstanceId();\r
518             case COMPONENT.SERVICE:\r
519                 return "mso_create_svc_instance";\r
520             case COMPONENT.VNF:\r
521                 return "mso_create_vnf_instance/"\r
522                     + DataService.getServiceInstanceId();\r
523             case COMPONENT.VF_MODULE:\r
524                 return "mso_create_vfmodule_instance/"\r
525                     + DataService.getServiceInstanceId() + "/vnfs/"\r
526                     + DataService.getVnfInstanceId();\r
527             case COMPONENT.VOLUME_GROUP:\r
528                 return "mso_create_volumegroup_instance/"\r
529                     + DataService.getServiceInstanceId() + "/vnfs/"\r
530                     + DataService.getVnfInstanceId();\r
531         }\r
532     };\r
533 \r
534     var getMsoRequestDetails = function(parameterList) {\r
535         console.log("getMsoRequestDetails invoked, parameterList="); console.log(JSON.stringify(parameterList,null,4));\r
536         //console.log("getMsoRequestDetails invoked, DataService.getArbitraryParameters()=");\r
537         //console.log(JSON.stringify(DataService.getArbitraryParameters(),null,4));\r
538 \r
539         var modelInfo = DataService.getModelInfo(_this.componentId);\r
540         var requestorloggedInId = DataService.getLoggedInUserId();\r
541         var owningEntityId = getValueFromList(FIELD.ID.OWNING_ENTITY, parameterList);\r
542         if (requestorloggedInId ==  null)\r
543             requestorloggedInId = "";\r
544         var isSupRollback = false;\r
545         if (getValueFromList(FIELD.ID.SUPPRESS_ROLLBACK,parameterList) === "true") {\r
546             isSupRollback = true;\r
547         }\r
548         var requestDetails = {\r
549             requestInfo : {\r
550                 instanceName : getValueFromList(FIELD.ID.INSTANCE_NAME,\r
551                     parameterList) || DataService.getVfModuleInstanceName(),\r
552                 source : FIELD.ID.VID,\r
553                 suppressRollback : isSupRollback,\r
554                 requestorId: requestorloggedInId\r
555             },\r
556             modelInfo : {\r
557                 modelType : _this.componentId,\r
558                 modelInvariantId : modelInfo.modelInvariantId,\r
559                 modelVersionId : modelInfo.modelNameVersionId,\r
560                 modelName : modelInfo.modelName,\r
561                 modelVersion : modelInfo.modelVersion,\r
562                 modelCustomizationId: modelInfo.customizationUuid,\r
563                 modelCustomizationName : modelInfo.modelCustomizationName\r
564             },\r
565             requestParameters : {\r
566                 userParams : getArbitraryParameters(parameterList)\r
567             }\r
568         };\r
569         if ( (_this.componentId != COMPONENT.SERVICE) || ( !DataService.getALaCarte() ) ) {\r
570             // include cloud region for everything but service create alacarte\r
571             var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);\r
572             if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {\r
573                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,\r
574                     parameterList);\r
575             }\r
576             requestDetails.cloudConfiguration = {\r
577                 lcpCloudRegionId : lcpRegion,\r
578                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)\r
579             };\r
580         }\r
581         switch (_this.componentId) {\r
582             case COMPONENT.SERVICE:\r
583                 requestDetails.subscriberInfo = {\r
584                     globalSubscriberId : DataService.getGlobalCustomerId(),\r
585                     subscriberName : DataService.getSubscriberName()\r
586                 };\r
587                 var isInTop = DataService.getHideServiceFields() || false;\r
588                 if(isInTop){\r
589                     requestDetails.requestParameters.subscriptionServiceType = DataService.getModelInfo(_this.componentId)["serviceTypeName"];\r
590                 }else{\r
591                     requestDetails.requestParameters.subscriptionServiceType = getValueFromList(\r
592                         FIELD.ID.SERVICE_TYPE, parameterList);\r
593                 }\r
594                 requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();\r
595                 if ( !DataService.getALaCarte() ) {\r
596                     requestDetails.requestInfo.productFamilyId = getValueFromList(\r
597                         FIELD.ID.PRODUCT_FAMILY, parameterList);\r
598                 }\r
599                 var svcModelInfo = {\r
600                     modelType : _this.componentId,\r
601                     modelInvariantId : modelInfo.modelInvariantId,\r
602                     modelVersionId : modelInfo.modelNameVersionId,\r
603                     modelName : modelInfo.modelName,\r
604                     modelVersion : modelInfo.modelVersion\r
605                 };\r
606                 requestDetails.modelInfo = svcModelInfo;\r
607 \r
608                 var selectedProject = getValueFromList(FIELD.ID.PROJECT, parameterList);\r
609 \r
610                 if (selectedProject) {\r
611                     requestDetails.project = {\r
612                         projectName: getValueFromList(FIELD.ID.PROJECT, parameterList)\r
613                     };\r
614                 }\r
615 \r
616                 requestDetails.owningEntity = {\r
617                     owningEntityId: owningEntityId,\r
618                     owningEntityName: getOwningEntityNameById(owningEntityId)\r
619                 };\r
620 \r
621                 break;\r
622             case COMPONENT.VNF:\r
623 \r
624                 requestDetails.requestInfo.productFamilyId = getValueFromList(\r
625                     FIELD.ID.PRODUCT_FAMILY, parameterList);\r
626 \r
627                 var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
628 \r
629                 if(lineOfBusiness) {\r
630                     var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
631 \r
632                     requestDetails.lineOfBusiness = {\r
633                         lineOfBusinessName: lineOfBusinessNamesString\r
634                     }\r
635                 }\r
636 \r
637                 requestDetails.platform = {\r
638                     platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\r
639                 };\r
640 \r
641                 break;\r
642             case COMPONENT.NETWORK:\r
643                 requestDetails.requestInfo.productFamilyId = getValueFromList(\r
644                     FIELD.ID.PRODUCT_FAMILY, parameterList);\r
645                 var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
646 \r
647                 if(lineOfBusiness) {\r
648                     var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
649 \r
650                     requestDetails.lineOfBusiness = {\r
651                         lineOfBusinessName: lineOfBusinessNamesString\r
652                     }\r
653                 }\r
654 \r
655                 requestDetails.platform = {\r
656                     platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\r
657                 };\r
658                 break;\r
659             case COMPONENT.VF_MODULE:\r
660                 requestDetails.requestParameters.usePreload = getValueFromList(\r
661                     FIELD.ID.SDN_C_PRELOAD, parameterList);\r
662                 if(_this.componentId == COMPONENT.VF_MODULE &&(requestDetails.requestParameters.usePreload== null || requestDetails.requestParameters.usePreload === '')){\r
663                     requestDetails.requestParameters.usePreload = false;\r
664                 }\r
665                 break;\r
666             case COMPONENT.VOLUME_GROUP:\r
667                 break;\r
668         }\r
669 \r
670         var relatedInstanceList = getRelatedInstanceList(parameterList);\r
671 \r
672         if (relatedInstanceList !== undefined) {\r
673             requestDetails.relatedInstanceList = relatedInstanceList;\r
674         }\r
675 \r
676         return requestDetails;\r
677     };\r
678 \r
679     var getRelatedInstanceList = function(parameterList) {\r
680         var relatedInstanceList = new Array();\r
681         switch (_this.componentId) {\r
682             case COMPONENT.SERVICE:\r
683                 return undefined;\r
684             case COMPONENT.NETWORK:\r
685             case COMPONENT.VNF:\r
686                 addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
687                     DataService.getServiceInstanceId());\r
688                 break;\r
689             case COMPONENT.VF_MODULE:\r
690                 addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
691                     DataService.getServiceInstanceId());\r
692                 addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
693                     .getVnfInstanceId());\r
694 \r
695                 var availableVolumeGroup = getValueFromList(\r
696                     FIELD.ID.AVAILABLE_VOLUME_GROUP, parameterList);\r
697 \r
698                 if (UtilityService.hasContents(availableVolumeGroup) && availableVolumeGroup !== "None") {\r
699                     var availableVolumeGroups = DataService.getAvailableVolumeGroupList();\r
700 \r
701                     for (var i = 0; i < availableVolumeGroups.length; i++) {\r
702                         if (availableVolumeGroups[i].instance.name == availableVolumeGroup) {\r
703                             DataService.setModelInfo(COMPONENT.VOLUME_GROUP, DataService.getModelInfo(COMPONENT.VF_MODULE));\r
704                             DataService.setVolumeGroupInstanceId(availableVolumeGroups[i].instance.object["volume-group-id"]);\r
705                             break;\r
706                         }\r
707                     }\r
708 \r
709                     addRelatedInstance(relatedInstanceList, COMPONENT.VOLUME_GROUP,\r
710                         DataService.getVolumeGroupInstanceId());\r
711                 }\r
712                 break;\r
713             case COMPONENT.VOLUME_GROUP:\r
714                 addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
715                     DataService.getServiceInstanceId());\r
716                 addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
717                     .getVnfInstanceId());\r
718                 break;\r
719         }\r
720 \r
721         return relatedInstanceList;\r
722     };\r
723 \r
724     var addRelatedInstance = function(relatedInstanceList, componentId,\r
725                                       instanceId) {\r
726         var modelInfo = DataService.getModelInfo(componentId);\r
727         var relatedInstance;\r
728         if (modelInfo !== undefined) {\r
729             if (componentId === COMPONENT.SERVICE) {\r
730                 relatedInstance = {\r
731                     "instanceId" : instanceId,\r
732                     "modelInfo" : {\r
733                         "modelType" : componentId,\r
734                         "modelName" : modelInfo.modelName,\r
735                         "modelInvariantId" : modelInfo.modelInvariantId,\r
736                         "modelVersion" : modelInfo.modelVersion,\r
737                         "modelVersionId" : modelInfo.modelNameVersionId,\r
738 \r
739                     }\r
740                 };\r
741             }\r
742             else {\r
743                 relatedInstance = {\r
744                     "instanceId" : instanceId,\r
745                     "modelInfo" : {\r
746                         "modelType" : componentId,\r
747                         "modelName" : modelInfo.modelName,\r
748                         "modelInvariantId" : modelInfo.modelInvariantId,\r
749                         "modelVersion" : modelInfo.modelVersion,\r
750                         "modelVersionId" : modelInfo.modelNameVersionId,\r
751                         "modelCustomizationId": modelInfo.customizationUuid,\r
752                         "modelCustomizationName": modelInfo.modelCustomizationName\r
753                     }\r
754                 }\r
755             }\r
756             relatedInstanceList.push({\r
757                 relatedInstance : relatedInstance\r
758             });\r
759         }\r
760     };\r
761 \r
762     /*\r
763      * var getArbitraryParameters = function(parameterList) { var\r
764      * arbitraryParameters = new Object(); for (var i = 0; i <\r
765      * parameterList.length; i++) { var parameter = parameterList[i]; switch\r
766      * (parameter.id) { case FIELD.ID.INSTANCE_NAME: case\r
767      * FIELD.ID.PRODUCT_FAMILY: case FIELD.ID.LCP_REGION: case\r
768      * FIELD.ID.LCP_REGION_TEXT: case FIELD.ID.SERVICE_TYPE: case\r
769      * FIELD.ID.TENANT: case FIELD.ID.SUPPRESS_ROLLBACK: break; default:\r
770      * arbitraryParameters[parameter.id] = parameter.value; } } return\r
771      * arbitraryParameters; }\r
772      */\r
773     var getArbitraryParameters = function(parameterList) {\r
774         var arbitraryParameters = new Object();\r
775         var arbitraryArray = new Array();\r
776         for (var i = 0; i < parameterList.length; i++) {\r
777             var parameter = parameterList[i];\r
778             switch (parameter.id) {\r
779                 case FIELD.ID.AVAILABLE_VOLUME_GROUP:\r
780                 case FIELD.ID.INSTANCE_NAME:\r
781                 case FIELD.ID.PRODUCT_FAMILY:\r
782                 case FIELD.ID.LCP_REGION:\r
783                 case FIELD.ID.LCP_REGION_TEXT:\r
784                 case FIELD.ID.SERVICE_TYPE:\r
785                 case FIELD.ID.TENANT:\r
786                 case FIELD.ID.SUPPRESS_ROLLBACK:\r
787                 case FIELD.ID.SUBSCRIBER_NAME:\r
788                 case FIELD.ID.SDN_C_PRELOAD:\r
789                 case FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE:\r
790                 case FIELD.ID.OWNING_ENTITY:\r
791                 case FIELD.ID.PLATFORM:\r
792                 case FIELD.ID.LINE_OF_BUSINESS:\r
793                 case FIELD.ID.PROJECT:\r
794                     break;\r
795                 case FIELD.ID.SUPPLEMENTORY_DATA_FILE:\r
796                     arbitraryParameters =  FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'];\r
797                     arbitraryArray=arbitraryParameters;\r
798                     FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value']=[];\r
799                     break;\r
800 \r
801                 default:\r
802                     if (parameter.value != '') {\r
803                         arbitraryParameters = {\r
804                             name: parameter.id,\r
805                             value: parameter.value\r
806                         }\r
807                         arbitraryArray.push(arbitraryParameters);\r
808                     }\r
809             }\r
810         }\r
811         return (arbitraryArray);\r
812     }\r
813 \r
814     var getModel = function() {\r
815         AsdcService.getModel(DataService.getModelId(), function(response) {\r
816             DataService.setModelInfo(_this.componentId, {\r
817                 modelInvariantId : response.data.invariantUUID,\r
818                 modelNameVersionId : response.data.uuid,\r
819                 modelName : response.data.name,\r
820                 modelVersion : response.data.version,\r
821                 inputs : response.data.inputs\r
822             });\r
823             UtilityService.startNextAsyncOperation();\r
824         });\r
825     };\r
826 \r
827     var getSubscriptionServiceTypeList = function() {\r
828         AaiService.getSubscriptionServiceTypeList(DataService\r
829             .getGlobalCustomerId(), function(response) {\r
830             DataService.setSubscriptionServiceTypeList(response);\r
831             UtilityService.startNextAsyncOperation();\r
832         });\r
833     };\r
834 \r
835     var getLoggedInUserID = function() {\r
836         AaiService.getLoggedInUserID(function(response) {\r
837             DataService.setLoggedInUserId(response.data);\r
838             UtilityService.startNextAsyncOperation();\r
839         });\r
840     };\r
841 \r
842     var getSubscribers = function() {\r
843         AaiService.getSubscribers(function(response) {\r
844             DataService.setSubscribers(response);\r
845             UtilityService.startNextAsyncOperation();\r
846         });\r
847     };\r
848     var getServices = function() {\r
849         AaiService.getServices(function(response) {\r
850             var serviceIdList = [];\r
851             angular.forEach(response.data, function(value, key) {\r
852                 angular.forEach(value, function(subVal, key) {\r
853                     var newVal = {\r
854                         "id" : subVal[FIELD.ID.SERVICE_ID],\r
855                         "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION],\r
856                         "isPermitted" : subVal[FIELD.ID.IS_PERMITTED],\r
857                     };\r
858                     serviceIdList.push(newVal);\r
859                     DataService.setServiceIdList(serviceIdList);\r
860                 });\r
861             });\r
862 \r
863             UtilityService.startNextAsyncOperation();\r
864         });\r
865     };\r
866     var getAicZones = function() {\r
867         AaiService.getAicZones(function(response) {\r
868             var serviceIdList = [];\r
869             angular.forEach(response.data, function(value, key) {\r
870                 angular.forEach(value, function(subVal, key) {\r
871                     var newVal = {\r
872                         "id" : subVal[FIELD.ID.ZONE_ID],\r
873                         "name" : subVal[FIELD.ID.ZONE_NAME],\r
874                     };\r
875                     serviceIdList.push(newVal);\r
876                     DataService.setAicZones(serviceIdList);\r
877                 });\r
878             });\r
879 \r
880             UtilityService.startNextAsyncOperation();\r
881         });\r
882     };\r
883 \r
884     var getOwningEntityProperties = function() {\r
885         OwningEntityService.getOwningEntityProperties(function(owningEntityProperties) {\r
886             DataService.setOwningEntityProperties(owningEntityProperties);\r
887             UtilityService.startNextAsyncOperation();\r
888         });\r
889 \r
890     };\r
891 \r
892     var getLcpCloudRegionTenantList = function() {\r
893         AaiService.getLcpCloudRegionTenantList(DataService\r
894             .getGlobalCustomerId(), DataService.getServiceType(), function(\r
895             response) {\r
896             DataService.setCloudRegionTenantList(response);\r
897             UtilityService.startNextAsyncOperation();\r
898         });\r
899     };\r
900 \r
901     var internalGetParametersHandler = function() {\r
902         if (angular.isFunction(_this.getParametersHandler)) {\r
903             _this.getParametersHandler({\r
904                 summaryList : getSummaryList(),\r
905                 userProvidedList : getUserProvidedList()\r
906             });\r
907         }\r
908     };\r
909 \r
910     var getSubscribersParameter = function() {\r
911         var subscribers = DataService.getSubscribers();\r
912         var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;\r
913         if ( UtilityService.hasContents(subscribers)) {\r
914             parameter.optionList = [];\r
915 \r
916             for (var i = 0; i < subscribers.length; i++) {\r
917                 parameter.optionList.push({\r
918                     id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],\r
919                     name : subscribers[i][FIELD.ID.SUBNAME],\r
920                     isPermitted : subscribers[i][FIELD.ID.IS_PERMITTED]\r
921                 })\r
922             }\r
923         }\r
924         return parameter;\r
925     };\r
926 \r
927     var getServiceId = function() {\r
928         var serviceIdList = DataService.getServiceIdList();\r
929         //var serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
930         var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;\r
931         parameter.optionList = new Array();\r
932         if ( UtilityService.hasContents(serviceIdList) ) {\r
933             // load them all\r
934             for (var i = 0; i < serviceIdList.length; i++) {\r
935                 parameter.optionList.push({\r
936                     id : serviceIdList[i].id,\r
937                     name : serviceIdList[i].description,\r
938                     isPermitted : serviceIdList[i].isPermitted\r
939                 });\r
940             }\r
941         }\r
942 \r
943         return parameter;\r
944     };\r
945 \r
946     var getAicZonesParameter = function() {\r
947         var aicList = DataService.getAicZones();\r
948         var parameter = FIELD.PARAMETER.AIC_ZONES;\r
949         parameter.optionList = new Array();\r
950         if ( UtilityService.hasContents(aicList) ) {\r
951             // load them all\r
952             for (var i = 0; i < aicList.length; i++) {\r
953                 parameter.optionList.push({\r
954                     id : aicList[i].id,\r
955                     name : aicList[i].name,\r
956                     isPermitted : true\r
957 \r
958                 });\r
959             }\r
960         }\r
961 \r
962         return parameter;\r
963     };\r
964 \r
965     var getProjectParameter = function() {\r
966         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PROJECT);\r
967     };\r
968 \r
969     var getOwningEntityParameter = function() {\r
970         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.OWNING_ENTITY);\r
971     };\r
972 \r
973     var getLineOfBusinessParameter = function() {\r
974         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.LINE_OF_BUSINESS);\r
975     };\r
976 \r
977     var getPlatformParameter = function() {\r
978         return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PLATFORM);\r
979     };\r
980 \r
981     var getOwningEntityNameById = function (id) {\r
982         var properties = DataService.getOwningEntityProperties();\r
983         var parameter = _.find(properties[FIELD.ID.OWNING_ENTITY], {"id": id});\r
984         return parameter && parameter.name;\r
985     };\r
986 \r
987     var getOwningEntityParameterWithOptions = function(parameter) {\r
988         var properties = DataService.getOwningEntityProperties();\r
989         if (properties && properties[parameter.id]) {\r
990             parameter.optionList = _.map(properties[parameter.id], function(parameter) {\r
991                 return {\r
992                     "id" : parameter.id,\r
993                     "name" : parameter.name,\r
994                     "isPermitted": true\r
995                 };\r
996             });\r
997         }\r
998 \r
999         return parameter;\r
1000     };\r
1001 \r
1002     var getLcpRegionParameter = function() {\r
1003         var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
1004         console.log ( "cloudRegionTenantList=");\r
1005         console.log ( JSON.stringify (cloudRegionTenantList, null, 4 ));\r
1006 \r
1007         var parameter = FIELD.PARAMETER.LCP_REGION;\r
1008         if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
1009             parameter.optionList = new Array();\r
1010             for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
1011                 for (var j = 0; j < parameter.optionList.length; j++) {\r
1012                     if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {\r
1013                         parameter.optionList[j].isPermitted =\r
1014                             parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;\r
1015                         break;\r
1016                     }\r
1017                 }\r
1018                 if (j < parameter.optionList.length) {\r
1019                     continue;\r
1020                 }\r
1021                 parameter.optionList.push({\r
1022                     id : cloudRegionTenantList[i].cloudRegionId,\r
1023                     isPermitted : cloudRegionTenantList[i].isPermitted\r
1024                 });\r
1025             }\r
1026         }\r
1027         return parameter;\r
1028     };\r
1029 \r
1030     var getTenantList = function(cloudRegionId) {\r
1031         var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
1032         var parameter = "";\r
1033         if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
1034             parameter = FIELD.PARAMETER.TENANT_ENABLED;\r
1035             parameter.optionList = new Array();\r
1036             for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
1037                 if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {\r
1038                     parameter.optionList.push({\r
1039                         id : cloudRegionTenantList[i].tenantId,\r
1040                         name : cloudRegionTenantList[i].tenantName,\r
1041                         isPermitted : cloudRegionTenantList[i].isPermitted\r
1042 \r
1043                     });\r
1044                 }\r
1045             }\r
1046         }\r
1047         return parameter;\r
1048 \r
1049     };\r
1050 \r
1051     var addOptionList = function(parameter, optionSimpleArray) {\r
1052         var optionList = new Array();\r
1053         if (!angular.isArray(optionSimpleArray)) {\r
1054             return optionList;\r
1055         }\r
1056         for (var i = 0; i < optionSimpleArray.length; i++) {\r
1057             optionList.push({\r
1058                 name : optionSimpleArray[i],\r
1059                 isPermitted :true,\r
1060             });\r
1061         }\r
1062         parameter.optionList = optionList;\r
1063         return parameter;\r
1064     };\r
1065 \r
1066     var getValueFromList = function(id, parameterList) {\r
1067         for (var i = 0; i < parameterList.length; i++) {\r
1068             if (parameterList[i].id === id) {\r
1069                 return parameterList[i].value;\r
1070             }\r
1071         }\r
1072     };\r
1073     var updateUserParameterList = function(updatedId, parameterListControl) {\r
1074         console.log ("updateUserParameterList() updatedId=" + updatedId);\r
1075         if (updatedId === FIELD.ID.PRODUCT_FAMILY && DataService.getHideServiceFields()) {\r
1076             var cloudRegionTenantList = new Array();\r
1077             AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
1078                 DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
1079                 parameterListControl.updateList([ getLcpRegionParameter() ]);\r
1080             });\r
1081         }else if (updatedId === FIELD.ID.SDN_C_PRELOAD) {\r
1082             var list = parameterListControl.getList(updatedId);\r
1083             if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
1084                 FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED.value=true;\r
1085                 parameterListControl\r
1086                     .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED ]);\r
1087             }else{\r
1088                 parameterListControl\r
1089                     .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_UNCHECKED ]);\r
1090             }\r
1091         }else if (updatedId === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE) {\r
1092             if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
1093                 $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').show();\r
1094                 FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=true;\r
1095                 parameterListControl\r
1096                     .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED ]);\r
1097             }else{\r
1098                 $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').hide();\r
1099                 FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=false;\r
1100                 parameterListControl\r
1101                     .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED ]);\r
1102             }\r
1103         } else if (updatedId === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {\r
1104             var filePath =  $('input[parameter-id="'+updatedId+'"]').val();\r
1105             var arr =filePath.split('.');\r
1106             var fileExt  = arr[arr.length-1];\r
1107             if(fileExt!='' && fileExt.toLowerCase()!='json'){\r
1108                 $('input[parameter-id="'+updatedId+'"]').val('');\r
1109                 alert("Invalid file format. Please select *.json format file.");\r
1110                 return false;\r
1111             }\r
1112         } else  if (updatedId === FIELD.ID.LCP_REGION) {\r
1113             var list = parameterListControl.getList(updatedId);\r
1114             if (list[0].selectedIndex >= 0) {\r
1115                 parameterListControl\r
1116                     .updateList([ getTenantList(list[0].value) ]);\r
1117             } else {\r
1118                 parameterListControl\r
1119                     .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);\r
1120             }\r
1121             if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {\r
1122                 parameterListControl\r
1123                     .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);\r
1124             } else {\r
1125                 parameterListControl\r
1126                     .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);\r
1127             }\r
1128         } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {\r
1129             var list = parameterListControl.getList(updatedId);\r
1130             if (list[0].selectedIndex >= 0) {\r
1131                 DataService.setGlobalCustomerId(list[0].value);\r
1132 \r
1133                 AaiService.getSubscriptionServiceTypeList(DataService\r
1134                     .getGlobalCustomerId(), function(response) {\r
1135                     DataService.setSubscriptionServiceTypeList(response);\r
1136                     var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;\r
1137                     serviceTypeParameters.optionList = [];\r
1138 \r
1139                     for (var i = 0; i < response.length; i++) {\r
1140                         serviceTypeParameters.optionList.push({\r
1141                             "id" : response[i].name,\r
1142                             "name" : response[i].name,\r
1143                             "isPermitted" :response[i].isPermitted\r
1144 \r
1145                         });\r
1146                     }\r
1147                     console.log ( "updateUserParameterList: service type parameters " );\r
1148                     console.log ( JSON.stringify (serviceTypeParameters, null, 4));\r
1149                     parameterListControl.updateList([ serviceTypeParameters ]);\r
1150                 });\r
1151 \r
1152             }\r
1153         } else if ( updatedId === FIELD.ID.SERVICE_TYPE ) {\r
1154             var list = parameterListControl.getList(updatedId);\r
1155             if (list[0].selectedIndex >= 0) {\r
1156 \r
1157                 DataService.setServiceType(list[0].value);\r
1158                 var cloudRegionTenantList = new Array();\r
1159                 AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
1160                     DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
1161                     parameterListControl.updateList([ getLcpRegionParameter() ]);\r
1162                 });\r
1163             } else {\r
1164                 parameterListControl\r
1165                     .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
1166             }\r
1167         }\r
1168 \r
1169     };\r
1170 \r
1171     return {\r
1172         initializeComponent : function(componentId) {\r
1173             _this.componentId = ComponentService.initialize(componentId);\r
1174         },\r
1175         setHttpErrorHandler : function(httpErrorHandler) {\r
1176             _this.httpErrorHandler = httpErrorHandler;\r
1177         },\r
1178         getComponentDisplayName : ComponentService.getComponentDisplayName,\r
1179         getParameters : function(getParametersHandler) {\r
1180             _this.getParametersHandler = getParametersHandler;\r
1181             UtilityService.setHttpErrorHandler(_this.httpErrorHandler);\r
1182             UtilityService.startAsyncOperations(getAsyncOperationList(),\r
1183                 internalGetParametersHandler);\r
1184         },\r
1185         updateUserParameterList : updateUserParameterList,\r
1186         getMsoRequestDetails : getMsoRequestDetails,\r
1187         getMsoUrl : getMsoUrl,\r
1188         setInventoryInfo: setInventoryInfo\r
1189     }\r
1190 }\r
1191 \r
1192 appDS2.factory("CreationService", [ "$log", "AaiService", "AsdcService",\r
1193     "DataService","VIDCONFIGURATION", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",\r
1194     "UtilityService", "OwningEntityService", CreationService ]);\r