Beispiel #1
0
        /// <summary>
        /// 加载用户一个节点下面的一个或全部Resources
        /// </summary>
        public dynamic Load(string username, Guid categoryId, int page, int rows)
        {
            var service = _factory.Create(username);

            if (!service.GetResourcesQuery().Any()) //用户没有任何资源
            {
                return(new
                {
                    total = 0,
                    page = 0,
                    records = 0
                });
            }
            var subIds = _categoryRepository.GetSubIds(categoryId);


            var query = service.GetResourcesQuery().Where(u => categoryId == Guid.Empty ||
                                                          (u.CategoryId != null && subIds.Contains(u.CategoryId.Value)));
            int total = query.Count();

            if (total <= 0)
            {
                return new
                       {
                           total   = 0,
                           page    = 0,
                           records = 0
                       }
            }
            ;

            var listVms   = new List <dynamic>();
            var resources = query.OrderBy(u => u.SortNo).Skip((page - 1) * rows).Take(rows);

            foreach (var element in resources)
            {
                var accessed = _categoryRepository.FindSingle(u => u.Id == element.CategoryId);

                listVms.Add(new
                {
                    element.Id,
                    element.Name,
                    element.Key,
                    element.SortNo,
                    element.CategoryId,
                    element.Status,
                    CategoryName = accessed != null ? accessed.Name : ""
                });
            }

            return(new
            {
                records = total,
                total = (int)Math.Ceiling((double)total / rows),
                rows = listVms,
                page = page
            });
        }
        public IEnumerable <ModuleElement> LoadByModuleId(string loginuser, Guid id)
        {
            var service = _factory.Create(loginuser);

            if (!service.GetModuleElementsQuery().Any()) //用户没有任何资源
            {
                return(new List <ModuleElement>());
            }

            var modules = service.GetModuleElementsQuery().Where(u => u.ModuleId == id).OrderBy(u => u.Sort);

            return(modules);
        }
Beispiel #3
0
        /// <summary>
        /// 加载一个节点下面的所有
        /// </summary>
        public dynamic Load(string loginuser, Guid parentId, int pageindex, int pagesize)
        {
            var service = _factory.Create(loginuser);

            if (!service.GetModulesQuery().Any()) //用户不能访问任何模块
            {
                return(new
                {
                    total = 0,
                    records = 0,
                    page = pageindex
                });
            }
            var ids   = GetSubIds(parentId);
            var query = service.GetModulesQuery().Where(u => parentId == Guid.Empty || (u.ParentId != null && ids.Contains(u.ParentId.Value)));

            int total   = query.Count();
            var modules = query.OrderBy(u => u.CascadeId).Skip((pageindex - 1) * pagesize).Take(pagesize);

            return(new
            {
                records = total,
                total = Math.Ceiling((double)total / pagesize),
                rows = modules,
                page = pageindex
            });
        }
Beispiel #4
0
        /// <summary>
        /// 根据部门ID得到进出库信息
        /// </summary>
        public dynamic Load(string username, Guid orgId, int pageindex, int pagesize)
        {
            var service = _factory.Create(username);

            if (service.Orgs.Count == 0) //用户没有任何可见机构
            {
                return(new
                {
                    total = 0,
                    records = 0,
                    page = pageindex
                });
            }

            var orgIds = service.Orgs.Select(u => u.Id).ToArray(); //用户可访问的机构ID

            var orgs = _orgRepository.GetSubOrgs(orgId)            //点击的节点与用户可访问的机构合并
                       .Where(u => orgIds.Contains(u.Id))
                       .Select(u => u.Id).ToArray();

            var keys = service.Resources.Select(r => r.Key);    //用户可访问的资源的KEY列表

            Expression <Func <Stock, bool> > exp = u => u.OrgId != null && orgs.Contains(u.OrgId.Value) && (u.Viewable == "" || keys.Contains(u.Viewable));
            var stocks = _repository.Find(pageindex, pagesize, "", exp);
            int total  = _repository.GetCount(exp);


            return(new
            {
                records = total,
                total = (int)Math.Ceiling((double)total / pagesize),
                rows = stocks,
                page = pageindex
            });
        }