Example #1
0
        public DataMethodSetting UpdateToNewMethod(SiteDb sitedb, DataMethodSetting oldmethod)
        {
            DataMethodSetting newMethod = null;

            if (oldmethod.OriginalMethodName == "GetById")
            {
                newMethod = ConvertGetById(oldmethod);
            }
            else if (oldmethod.OriginalMethodName == "GetByUserKey")
            {
                newMethod = ConvertGetByUserKey(oldmethod);
            }
            else if (oldmethod.OriginalMethodName == "List")
            {
                newMethod = ConvertList(oldmethod);
            }
            else if (oldmethod.OriginalMethodName == "ListByCategoryId")
            {
                newMethod = ConvertListByCategoryId(oldmethod);
            }
            else if (oldmethod.OriginalMethodName == "ListByCategoryKey")
            {
                newMethod = ConvertListByCategoryKey(oldmethod);
            }

            return(newMethod);
        }
Example #2
0
        private DataMethodSetting ConvertContentListPara(DataMethodSetting oldmethod, DataMethodSetting newmethod)
        {
            var newMethodSetting = CreateNewSetting(oldmethod, newmethod);

            var bindingFolderid    = getbinding(oldmethod.ParameterBinding, "FolderId");
            var newbindingfolderid = getbinding(newMethodSetting.ParameterBinding, "FolderId");

            if (bindingFolderid != null && Lib.Helper.DataTypeHelper.IsGuid(bindingFolderid.Binding))
            {
                newbindingfolderid.Binding = bindingFolderid.Binding;
            }

            var filter    = getbinding(oldmethod.ParameterBinding, "Filter");
            var newFilter = getbinding(newMethodSetting.ParameterBinding, "Filters");

            if (filter != null && !string.IsNullOrEmpty(filter.Binding) && Lib.Helper.DataTypeHelper.IsJsonType(filter.Binding, typeof(List <FilterDefinition>)))
            {
                newFilter.Binding = filter.Binding;
            }

            var pagesize    = getbinding(oldmethod.ParameterBinding, "PageSize");
            var newPageSize = getbinding(newMethodSetting.ParameterBinding, "PageSize");

            if (pagesize != null && !string.IsNullOrEmpty(pagesize.Binding) && Lib.Helper.DataTypeHelper.IsInt(pagesize.Binding))
            {
                newPageSize.Binding = pagesize.Binding;
            }

            var pagenumber    = getbinding(oldmethod.ParameterBinding, "PageNumber");
            var newPageNumber = getbinding(newMethodSetting.ParameterBinding, "PageNumber");

            if (pagenumber != null && !string.IsNullOrEmpty(pagenumber.Binding) && Lib.Helper.DataTypeHelper.IsInt(pagenumber.Binding))
            {
                newPageNumber.Binding = pagenumber.Binding;
            }

            var SortField    = getbinding(oldmethod.ParameterBinding, "SortField");
            var newSortField = getbinding(newMethodSetting.ParameterBinding, "SortField");

            if (SortField != null && !string.IsNullOrEmpty(SortField.Binding) && !SortField.Binding.Contains("{"))
            {
                newSortField.Binding = SortField.Binding;
            }

            var Ascending    = getbinding(oldmethod.ParameterBinding, "IsAscending");
            var newAscending = getbinding(newMethodSetting.ParameterBinding, "IsAscending");

            if (Ascending != null && !string.IsNullOrEmpty(Ascending.Binding) && Lib.Helper.DataTypeHelper.IsBool(Ascending.Binding))
            {
                newAscending.Binding = Ascending.Binding;
            }

            return(newMethodSetting);
        }
Example #3
0
        public DataMethodSetting ConvertGetById(DataMethodSetting oldmethod)
        {
            var newmethod = Data.GlobalDb.DataMethodSettings.TableScan.Where(o => o.MethodName == "ById" && o.DeclareType.Contains("ContentItem")).FirstOrDefault();

            var newseting  = CreateNewSetting(oldmethod, newmethod);
            var binding    = getbinding(oldmethod.ParameterBinding, "id");
            var newbinding = getbinding(newseting.ParameterBinding, "Id");

            newbinding.Binding = binding.Binding;
            return(newseting);
        }
Example #4
0
        private static SearchResult ConvertContentByKey(DataMethodSetting setting, string binding, string replacevalue, SiteDb sitedb, TextContent content, string culture = null)
        {
            if (binding == null)
            {
                return(null);
            }

            var viewmethods = sitedb.ViewDataMethods.Query.Where(o => o.MethodId == setting.Id).SelectAll();

            if (!viewmethods.Any())
            {
                return(null);
            }

            foreach (var item in viewmethods)
            {
                var page = GetViewPage(sitedb, item.ViewId);
                if (page != null)
                {
                    SearchResult result = new SearchResult();
                    result.Title = GetTitle(culture, page);

                    var route = sitedb.Routes.GetByObjectId(page.Id);

                    if (route.Name.Contains(binding))
                    {
                        result.Url = route.Name.Replace(binding, replacevalue);
                    }
                    else
                    {
                        Dictionary <string, string> query = new Dictionary <string, string>();

                        if (binding.Contains("{") && binding.Contains("}"))
                        {
                            binding = binding.Replace("{", "");
                            binding = binding.Replace("}", "");
                            query.Add(binding, replacevalue);
                        }

                        result.Url = Lib.Helper.UrlHelper.AppendQueryString(route.Name, query);
                    }

                    result.AddFound("TextContent", content.Id);
                    return(result);
                }
            }

            return(null);
        }
Example #5
0
        public DataMethodSetting ConvertListByCategoryKey(DataMethodSetting oldmethod)
        {
            var newmethod = Data.GlobalDb.DataMethodSettings.TableScan.Where(o => o.MethodName == "ByCategoryKey" && o.DeclareType.Contains("ContentList")).FirstOrDefault();

            var newsetting = ConvertContentListPara(oldmethod, newmethod);

            var key    = getbinding(oldmethod.ParameterBinding, "Userkey");
            var newkey = getbinding(newsetting.ParameterBinding, "UserKey");

            if (key != null && !string.IsNullOrEmpty(key.Binding))
            {
                newkey.Binding = key.Binding;
            }
            return(newsetting);
        }
Example #6
0
        public static List <DataMethodSetting> GetCodeMethods(SiteDb sitedb)
        {
            var type = typeof(Kooboo.Sites.DataSources.kScript);

            var allcodes = sitedb.Code.ListByCodeType(Sites.Models.CodeType.Datasource);

            List <DataMethodSetting> settings = new List <DataMethodSetting>();

            foreach (var item in allcodes)
            {
                DataMethodSetting setting = new DataMethodSetting();
                setting.DeclareType        = type.FullName;
                setting.OriginalMethodName = item.Name;
                setting.MethodName         = item.Name;
                setting.CodeId             = item.Id;
                setting.IsPublic           = true;

                setting.ReturnType = typeof(IJson).FullName;

                setting.MethodSignatureHash = methodSignatureHash(item.Id);

                var config = Kooboo.Sites.Scripting.Manager.GetSetting(sitedb.WebSite, item);
                if (config != null && config.Count > 0)
                {
                    foreach (var con in config)
                    {
                        setting.Parameters.Add(con.Name, typeof(string).FullName);

                        ParameterBinding binding = new ParameterBinding();
                        binding.DisplayName = con.Name;

                        setting.ParameterBinding.Add(con.Name, binding);
                    }
                }

                // add the samplecode.
                ParameterBinding samplecode = new ParameterBinding();
                samplecode.IsData      = true;
                samplecode.DisplayName = SampleResponseFieldName;
                setting.Parameters.Add(samplecode.DisplayName, typeof(string).FullName);
                setting.ParameterBinding.Add(SampleResponseFieldName, samplecode);


                settings.Add(setting);
            }
            return(settings);
        }
Example #7
0
        internal static List <DataMethodSetting> GetDefaultMethodSettings(Type type, bool isThirdPartyType = false)
        {
            var list = new List <DataMethodSetting>();

            var descriptionAttributeType = typeof(System.ComponentModel.DescriptionAttribute);

            foreach (var item in TypeHelper.GetPublicMethods(type))
            {
                var returntype = ReturnType(item);

                var globalmethod = new DataMethodSetting
                {
                    DeclareType         = type.FullName,
                    OriginalMethodName  = item.Name,
                    MethodName          = item.Name,
                    MethodSignatureHash = TypeHelper.GetMethodSignatureHash(item),
                    IsThirdPartyType    = isThirdPartyType,
                    IsStatic            = item.IsStatic,
                    IsVoid        = (returntype == typeof(void)),
                    Parameters    = GetMethodParametes(item),
                    ReturnType    = returntype.FullName,
                    IsPagedResult = IsPagedResult(item),
                    // set is pagedresult.
                    Description = (item.GetCustomAttribute(descriptionAttributeType) as System.ComponentModel.DescriptionAttribute)?.Description
                };

                if (globalmethod.Parameters.Count > 0)
                {
                    globalmethod.ParameterBinding = GetDefaultBinding(globalmethod.Parameters);

                    if (Attributes.AttributeHelper.RequireFolder(item))
                    {
                        AppendContentFolderParameter(globalmethod.ParameterBinding);
                    }

                    if (Attributes.AttributeHelper.RequireProductType(item))
                    {
                        AppendProductTypeParameter(globalmethod.ParameterBinding);
                    }
                }
                list.Add(globalmethod);
            }

            return(list);
        }
Example #8
0
        public void ThirdPartyUpdate(ApiCall call)
        {
            var model = call.Context.Request.Model as List <TypeModel>;

            foreach (var type in model)
            {
                Type ClrType      = TypeCache.GetType(type.FullName);
                bool IsThirdParty = !TypeHelper.HasInterface(ClrType, typeof(IDataSource));

                List <MethodInfo> TypeMethods = Lib.Reflection.TypeHelper.GetPublicMethods(ClrType).ToList();

                if (ClrType != null)
                {
                    foreach (var item in type.SelectedMethods)
                    {
                        DataMethodSetting MethodSetting = new DataMethodSetting();
                        MethodSetting.IsThirdPartyType    = IsThirdParty;
                        MethodSetting.MethodSignatureHash = item.MethodHash;
                        MethodSetting.IsGlobal            = true;
                        MethodSetting.DeclareType         = ClrType.FullName;
                        MethodSetting.MethodName          = item.Name;
                        MethodSetting.OriginalMethodName  = item.Name;

                        var methodinfo = TypeHelper.GetRightMethodInfo(TypeMethods, item.Name, item.MethodHash);
                        if (methodinfo == null)
                        {
                            continue;
                        }
                        MethodSetting.IsStatic   = methodinfo.IsStatic;
                        MethodSetting.IsVoid     = (methodinfo.ReturnType == typeof(void));
                        MethodSetting.Parameters = DataSourceHelper.GetMethodParametes(methodinfo);
                        MethodSetting.ReturnType = methodinfo.ReturnType.FullName;

                        if (MethodSetting.Parameters.Count > 0)
                        {
                            MethodSetting.ParameterBinding = DataSourceHelper.GetDefaultBinding(MethodSetting.Parameters);
                        }

                        GlobalDb.DataMethodSettings.AddOrUpdate(MethodSetting);
                    }
                }
            }
        }
Example #9
0
        public DataMethodSetting ConvertGetById(DataMethodSetting oldmethod)
        {
            var newmethod = Data.GlobalDb.DataMethodSettings.TableScan.Where(o => o.MethodName == "ById" && o.DeclareType.Contains("ContentItem")).FirstOrDefault();

            var newseting  = CreateNewSetting(oldmethod, newmethod);
            var binding    = getbinding(oldmethod.ParameterBinding, "id");
            var newbinding = getbinding(newseting.ParameterBinding, "Id");

            newbinding.Binding = binding.Binding;

            var bindingFolderid    = getbinding(oldmethod.ParameterBinding, "FolderId");
            var newbindingfolderid = getbinding(newseting.ParameterBinding, "FolderId");

            if (bindingFolderid != null && Lib.Helper.DataTypeHelper.IsGuid(bindingFolderid.Binding))
            {
                newbindingfolderid.Binding = bindingFolderid.Binding;
            }


            return(newseting);
        }
Example #10
0
        private DataMethodSetting CreateNewSetting(DataMethodSetting oldmethod, DataMethodSetting newmethod)
        {
            DataMethodSetting newMethodSetting = new DataMethodSetting();

            newMethodSetting.MethodName          = oldmethod.MethodName;
            newMethodSetting.Parameters          = newmethod.Parameters;
            newMethodSetting.ParameterBinding    = newmethod.ParameterBinding;
            newMethodSetting.Description         = oldmethod.Description;
            newMethodSetting.MethodSignatureHash = newmethod.MethodSignatureHash;
            newMethodSetting.OriginalMethodName  = newmethod.OriginalMethodName;
            newMethodSetting.DeclareType         = newmethod.DeclareType;
            newMethodSetting.DeclareTypeHash     = newmethod.DeclareTypeHash;
            newMethodSetting.IsPublic            = oldmethod.IsPublic;
            newMethodSetting.ReturnType          = newmethod.ReturnType;
            newMethodSetting.IsPagedResult       = newmethod.IsPagedResult;
            newMethodSetting.IsPost   = newmethod.IsPost;
            newMethodSetting.IsStatic = newmethod.IsStatic;
            newMethodSetting.IsTask   = newmethod.IsTask;
            newMethodSetting.IsVoid   = newmethod.IsVoid;

            return(newMethodSetting);
        }
Example #11
0
        public DataMethodSetting GetSetting(ApiCall call)
        {
            DataMethodSetting settings = GlobalDb.DataMethodSettings.Get(call.ObjectId);

            return(settings);
        }
Example #12
0
        public DataMethodSetting ConvertList(DataMethodSetting oldmethod)
        {
            var newmethod = Data.GlobalDb.DataMethodSettings.TableScan.Where(o => o.MethodName == "ByFolder" && o.DeclareType.Contains("ContentList")).FirstOrDefault();

            return(ConvertContentListPara(oldmethod, newmethod));
        }