コード例 #1
0
ファイル: Utility.cs プロジェクト: Mohammadjafariyan/Engine
        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);
        }
コード例 #2
0
ファイル: Utility.cs プロジェクト: Mohammadjafariyan/Engine
        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);
        }