|  |  | @ -121,7 +121,7 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         actionName = (char.ToLower(actionName[0]) + actionName.Substring(1)).Replace("Async", "").Replace("Controller", ""); |  |  |  |                         actionName = (char.ToLower(actionName[0]) + actionName.Substring(1)).Replace("Async", "").Replace("Controller", ""); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         var returnValueType = (string)action["returnValue"]["type"]; |  |  |  |                         var returnValueType = (string)action["returnValue"]["type"];  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         var parameters = action["parameters"]; |  |  |  |                         var parameters = action["parameters"]; | 
			
		
	
		
		
			
				
					
					|  |  |  |                         var parametersText = new StringBuilder(); |  |  |  |                         var parametersText = new StringBuilder(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -136,10 +136,10 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                             var bindingSourceId = (string)parameter["bindingSourceId"]; |  |  |  |                             var bindingSourceId = (string)parameter["bindingSourceId"]; | 
			
		
	
		
		
			
				
					
					|  |  |  |                             bindingSourceId = char.ToLower(bindingSourceId[0]) + bindingSourceId.Substring(1); |  |  |  |                             bindingSourceId = char.ToLower(bindingSourceId[0]) + bindingSourceId.Substring(1); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                             var name = (string)parameter["name"]; |  |  |  |                             var name = (string)parameter["name"];  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             var typeSimple = (string)parameter["typeSimple"]; |  |  |  |                             var typeSimple = (string)parameter["typeSimple"]; | 
			
		
	
		
		
			
				
					
					|  |  |  |                             var typeArray = ((string)parameter["type"]).Split("."); |  |  |  |                             var typeArray = ((string)parameter["type"]).Split("."); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             var type = typeArray[typeArray.Length - 1]; |  |  |  |                             var type = (typeArray[typeArray.Length - 1]).TrimEnd('>'); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             var isOptional = (bool)parameter["isOptional"]; |  |  |  |                             var isOptional = (bool)parameter["isOptional"]; | 
			
		
	
		
		
			
				
					
					|  |  |  |                             var defaultValue = (string)parameter["defaultValue"]; |  |  |  |                             var defaultValue = (string)parameter["defaultValue"]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -209,6 +209,13 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                         { |  |  |  |                         { | 
			
		
	
		
		
			
				
					
					|  |  |  |                             foreach (var parameterItem in parameterModel.OrderBy(p => p.DisplayOrder)) |  |  |  |                             foreach (var parameterItem in parameterModel.OrderBy(p => p.DisplayOrder)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                             { |  |  |  |                             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 var parameterItemModelName = parameterItem.Type.PascalToKebabCase() + ".ts"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 var parameterItemModelPath = $"src/app/{rootPath}/shared/models/{parameterItemModelName}"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 if (parameterItem.BindingSourceId == "body" && !File.Exists(parameterItemModelPath)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                     parameterItem.Type = "any";  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 parametersIndex++; |  |  |  |                                 parametersIndex++; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 if (parametersIndex > 1) |  |  |  |                                 if (parametersIndex > 1) | 
			
		
	
	
		
		
			
				
					|  |  | @ -222,7 +229,7 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 { |  |  |  |                                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     modelBindingExtraList.Add(parameterItem.Name); |  |  |  |                                     modelBindingExtraList.Add(parameterItem.Name); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 } |  |  |  |                                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 else if (parameterItem.BindingSourceId == "body") |  |  |  |                                 else if (parameterItem.BindingSourceId == "body" && File.Exists(parameterItemModelPath)) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                                 { |  |  |  |                                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     secondTypeList.Add(parameterItem.Type); |  |  |  |                                     secondTypeList.Add(parameterItem.Type); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 } |  |  |  |                                 } | 
			
		
	
	
		
		
			
				
					|  |  | @ -237,7 +244,14 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 var firstType = firstTypeArray[firstTypeArray.Length - 1]; |  |  |  |                                 var firstType = firstTypeArray[firstTypeArray.Length - 1]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 var secondTypeArray = returnValueType.Split("<")[1].Split("."); |  |  |  |                                 var secondTypeArray = returnValueType.Split("<")[1].Split("."); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>'); |  |  |  |                                 var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>');  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 var secondTypeModelName = secondType.PascalToKebabCase() + ".ts"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 var secondTypeModelPath = $"src/app/{rootPath}/shared/models/{secondTypeModelName}"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 if (firstType == "List" && !File.Exists(secondTypeModelPath)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                     secondType = "any"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 serviceFileText.AppendLine( |  |  |  |                                 serviceFileText.AppendLine( | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     firstType == "List" |  |  |  |                                     firstType == "List" | 
			
		
	
	
		
		
			
				
					|  |  | @ -248,7 +262,11 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 { |  |  |  |                                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     firstTypeList.Add(firstType); |  |  |  |                                     firstTypeList.Add(firstType); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 } |  |  |  |                                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 secondTypeList.Add(secondType); |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 if (secondType != "any") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                     secondTypeList.Add(secondType); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |                             } |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |                             else |  |  |  |                             else | 
			
		
	
		
		
			
				
					
					|  |  |  |                             { |  |  |  |                             { | 
			
		
	
	
		
		
			
				
					|  |  | @ -286,7 +304,7 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                             modelBindingExtra = ", params: { " + string.Join(", ", modelBindingExtraList.ToArray()) + " }"; |  |  |  |                             modelBindingExtra = ", params: { " + string.Join(", ", modelBindingExtraList.ToArray()) + " }"; | 
			
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         var url = (((string)action["url"]).Replace("/{", "/${")).ToLower(); |  |  |  |                         var url = ((string)action["url"]).Replace("/{", "/${"); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         var httpMethod = (string)action["httpMethod"]; |  |  |  |                         var httpMethod = (string)action["httpMethod"]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         serviceFileText.AppendLine( |  |  |  |                         serviceFileText.AppendLine( | 
			
		
	
	
		
		
			
				
					|  |  | @ -347,6 +365,8 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 File.WriteAllText($"src/app/{rootPath}/shared/models/index.ts", modelIndexFileText.ToString()); |  |  |  |                 File.WriteAllText($"src/app/{rootPath}/shared/models/index.ts", modelIndexFileText.ToString()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             Logger.LogInformation("Completed!"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         private Dictionary<string, string> GetCombinedModules(JToken data, string module) |  |  |  |         private Dictionary<string, string> GetCombinedModules(JToken data, string module) | 
			
		
	
	
		
		
			
				
					|  |  | @ -378,7 +398,7 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         private static string CreateType(JObject data, string returnValueType, string rootPath, List<string> modelIndexList) |  |  |  |         private static string CreateType(JObject data, string returnValueType, string rootPath, List<string> modelIndexList) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         {  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             var type = data["types"][returnValueType]; |  |  |  |             var type = data["types"][returnValueType]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (type == null) |  |  |  |             if (type == null) | 
			
		
	
	
		
		
			
				
					|  |  | @ -390,6 +410,7 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                  || returnValueType.StartsWith("System.Collections") |  |  |  |                  || returnValueType.StartsWith("System.Collections") | 
			
		
	
		
		
			
				
					
					|  |  |  |                  || returnValueType == "System.String" |  |  |  |                  || returnValueType == "System.String" | 
			
		
	
		
		
			
				
					
					|  |  |  |                  || returnValueType == "System.Void" |  |  |  |                  || returnValueType == "System.Void" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                  || returnValueType.Contains("System.Net.HttpStatusCode?") | 
			
		
	
		
		
			
				
					
					|  |  |  |                  || returnValueType.Contains("IActionResult") |  |  |  |                  || returnValueType.Contains("IActionResult") | 
			
		
	
		
		
			
				
					
					|  |  |  |                  || returnValueType.Contains("ActionResult") |  |  |  |                  || returnValueType.Contains("ActionResult") | 
			
		
	
		
		
			
				
					
					|  |  |  |                  || returnValueType.Contains("IStringValueType") |  |  |  |                  || returnValueType.Contains("IStringValueType") | 
			
		
	
	
		
		
			
				
					|  |  | @ -402,7 +423,12 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |             var typeNameSplit = returnValueType.Split("."); |  |  |  |             var typeNameSplit = returnValueType.Split("."); | 
			
		
	
		
		
			
				
					
					|  |  |  |             var typeName = typeNameSplit[typeNameSplit.Length - 1]; |  |  |  |             var typeName = typeNameSplit[typeNameSplit.Length - 1]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             var typeModelName = typeName.Replace("<", "").Replace(">", "").PascalToKebabCase() + ".ts";  |  |  |  |             if (typeName.Contains("HttpStatusCode")) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             var typeModelName = typeName.Replace("<", "").Replace(">", "").Replace("?","").PascalToKebabCase() + ".ts";  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             var path = $"src/app/{rootPath}/shared/models/{typeModelName}";  |  |  |  |             var path = $"src/app/{rootPath}/shared/models/{typeModelName}";  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -503,7 +529,7 @@ namespace Volo.Abp.Cli.Commands | 
			
		
	
		
		
			
				
					
					|  |  |  |                       ) |  |  |  |                       ) | 
			
		
	
		
		
			
				
					
					|  |  |  |                     { |  |  |  |                     { | 
			
		
	
		
		
			
				
					
					|  |  |  |                         var typeSimpleModelName = typeSimple.PascalToKebabCase() + ".ts"; |  |  |  |                         var typeSimpleModelName = typeSimple.PascalToKebabCase() + ".ts"; | 
			
		
	
		
		
			
				
					
					|  |  |  |                         var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}"; |  |  |  |                         var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}";  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         if (!File.Exists(modelPath)) |  |  |  |                         if (!File.Exists(modelPath)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                         { |  |  |  |                         { | 
			
		
	
		
		
			
				
					
					|  |  |  |                             typeSimple = "any" + (typeSimple.Contains("[]") ? "[]" : ""); |  |  |  |                             typeSimple = "any" + (typeSimple.Contains("[]") ? "[]" : ""); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |