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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } } } }
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); }
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); }
public DataMethodSetting GetSetting(ApiCall call) { DataMethodSetting settings = GlobalDb.DataMethodSettings.Get(call.ObjectId); return(settings); }
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)); }