public static List <ViewDataSourceViewModel> Create(ViewDataMethod dataSource) { List <ViewDataSourceViewModel> result = new List <ViewDataSourceViewModel>(); var model = new ViewDataSourceViewModel { Id = dataSource.Id, MethodId = dataSource.MethodId, AliasName = dataSource.AliasName, }; result.Add(model); if (dataSource.HasChildren) { foreach (var child in dataSource.Children) { var sublist = Create(child); foreach (var item in sublist) { if (item.ParentId == default(Guid)) { item.ParentId = dataSource.Id; } } result.AddRange(sublist); } } return(result); }
private static void AddToList(ViewDataMethod method, ref List <Guid> result) { if (method.MethodId != default(Guid)) { result.Add(method.MethodId); if (method.HasChildren) { foreach (var item in method.Children) { AddToList(item, ref result); } } } }
private bool HasMethod(ViewDataMethod datamethod, Guid methodid) { if (datamethod.MethodId == methodid) { return(true); } if (datamethod.HasChildren) { foreach (var item in datamethod.Children) { if (HasMethod(item, methodid)) { return(true); } } } return(false); }
public static ViewDataMethod AddGetContentListDataMethod(SiteDb SiteDb, Guid ViewId, Guid FolderId, string AliasName) { var contentdatasorcetype = typeof(Kooboo.Sites.DataSources.ContentList); var method = Kooboo.Data.GlobalDb.DataMethodSettings.TableScan.Where(o => o.DeclareType == contentdatasorcetype.FullName).SelectAll().Where(o => o.MethodName == "ByFolder").First(); var binding = method.ParameterBinding["FolderId"]; binding.Binding = FolderId.ToString(); method.MethodName = System.Guid.NewGuid().ToString(); method.Id = default(Guid); method.IsPublic = false; SiteDb.DataMethodSettings.AddOrUpdate(method); ViewDataMethod viewmethod = new ViewDataMethod(); viewmethod.AliasName = "List"; viewmethod.Name = "List"; viewmethod.MethodId = method.Id; viewmethod.ViewId = ViewId; SiteDb.ViewDataMethods.AddOrUpdate(viewmethod); return(viewmethod); }
public static object ExecuteViewDataMethod(Render.FrontContext context, ViewDataMethod ViewMethod, DataContext parentDataContext = null) { var CompiledMethod = CompileMethodCache.GetCompiledMethod(context.SiteDb, ViewMethod.MethodId); if (CompiledMethod == null) { return(null); } var ParameterBindings = CompiledMethod.ParameterBindings; DataContext dataContext = parentDataContext == null ? context.RenderContext.DataContext : parentDataContext; if (CompiledMethod.IsKScript) { var dictparas = ParameterBinder.BindKScript(CompiledMethod.Parameters, ParameterBindings, dataContext); return(Kooboo.Sites.Scripting.Manager.ExecuteDataSource(context.RenderContext, CompiledMethod.CodeId, dictparas)); } List <object> paras = ParameterBinder.Bind(CompiledMethod.Parameters, ParameterBindings, dataContext); CheckAndAssignDefaultValue(paras, CompiledMethod, context, ViewMethod.MethodId); var result = Execute(CompiledMethod, paras.ToArray(), context); if (result == null) { return(null); } if (ViewMethod.HasChildren) { var type = result.GetType(); if (Kooboo.Lib.Reflection.TypeHelper.IsGenericCollection(type)) { List <DataMethodResult> results = new List <DataMethodResult>(); var itemcollection = ((IEnumerable)result).Cast <object>().ToList(); foreach (var item in itemcollection) { var itemresult = ExecuteSubViewDataMethod(context, item, ViewMethod.Children); results.Add(itemresult); } return(results); } else if (result is PagedResult) { var pagedresult = result as PagedResult; List <DataMethodResult> results = new List <DataMethodResult>(); var itemcollection = ((IEnumerable)pagedresult.DataList).Cast <object>().ToList(); foreach (var item in itemcollection) { var itemresult = ExecuteSubViewDataMethod(context, item, ViewMethod.Children); results.Add(itemresult); } pagedresult.DataList = results.ToList <object>(); return(pagedresult); } else { return(ExecuteSubViewDataMethod(context, result, ViewMethod.Children)); } } else { return(result); } }