private static string GetDetermineReturnType (ServiceReturnMethodType serviceMethodServiceReturnMethodType, ServiceItemReturnType serviceMethodServiceItemReturnType, Query serviceMethodQuery) { string returnType = ""; returnType = GetDetermineReturnItemType(serviceMethodServiceReturnMethodType, serviceMethodQuery); if (serviceMethodServiceItemReturnType == ServiceItemReturnType.List) { returnType = $@"List<{returnType}>"; } else if (serviceMethodServiceItemReturnType == ServiceItemReturnType.IQueryable) { returnType = $@"IQueryable<{returnType}>"; } return(returnType); }
public static string GetServiceMethod(string serviceMethodName, ServiceItemReturnType serviceMethodServiceItemReturnType , ServiceReturnMethodType serviceMethodServiceReturnMethodType , Query serviceMethodQuery, ServiceMethod serviceMethod, string context = "EngineContext") { string returnType = ""; string inputParameters = ""; inputParameters = getInputParameters(serviceMethodQuery); var SqlinputParameters = getSQLParameters(serviceMethodQuery); returnType = GetDetermineReturnType (serviceMethodServiceReturnMethodType, serviceMethodServiceItemReturnType, serviceMethodQuery); var itemType = GetDetermineReturnItemType(serviceMethodServiceReturnMethodType, serviceMethodQuery); if (serviceMethod.MethodType == MethodType.GetDataTable) { returnType = " IDataTable "; } List <string> parameters = new List <string>(); foreach (var parameterField in serviceMethodQuery.addParameterFields) { parameters.Add($@" new SqlParameter(""{parameterField.nameInSQL}"", {parameterField.nameInMethod})"); } string sqlQueryParamsInStr = ""; if (parameters.Count > 0) { sqlQueryParamsInStr = ","; sqlQueryParamsInStr += string.Join(",", parameters); } var s1 = $@"public {returnType} {serviceMethodName}({inputParameters}) " + "{" + $@"var dt={context}.Database.SqlQuery<{itemType}>( @"" {SqlinputParameters + "\n"} { serviceMethodQuery.SQL }"" {sqlQueryParamsInStr});"; switch (serviceMethodServiceItemReturnType) { case ServiceItemReturnType.List: s1 += $@"var res=dt.toList();"; break; case ServiceItemReturnType.IQueryable: s1 += $@"var res=dt.AsQueryable();"; break; case ServiceItemReturnType.First: s1 += $@"var res=dt.First();"; break; case ServiceItemReturnType.FirstOrDefault: s1 += $@"var res=dt.FirstOrDefault();"; break; case ServiceItemReturnType.Last: s1 += $@"var res=dt.Last();"; break; case ServiceItemReturnType.LastOrDefault: s1 += $@"var res=dt.LastOrDefault();"; break; default: s1 += $@"var res=dt"; break; } var headersType = ""; if (serviceMethodServiceReturnMethodType == ServiceReturnMethodType.ViewModel) { headersType = $@"GetPropertyNames<{returnType}>()"; } else { var names = serviceMethodQuery.selectedProperties .Select(s => $@"{{""{s.Property.NameInModel} "",""{s.NameInTableAsName} "" }}").ToArray(); var joined = string.Join(@",", names); s1 += $@"Dictionary<string,string> headers=new Dictionary<string,string>{{ {joined} }}; "; headersType = $@"headers"; } s1 += $@" var count = res.Count(); var l = res.ToList(); return new DynaDataTable {{ Total = count, Filtered = count, Headers = {headersType}, RecordsList = l.Cast<dynamic>().ToList() }}; "; s1 += "\n }"; string viewModel = ""; if (serviceMethodServiceReturnMethodType == ServiceReturnMethodType.ViewModel) { viewModel = CreateViewModelClass(returnType, serviceMethodQuery.selectedProperties); s1 += viewModel + "}"; } return(s1); }