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);
        }
Exemple #2
0
 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);
             }
         }
     }
 }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }