예제 #1
0
        public async Task <ActionResult <BaseResponse> > GetProjectsByParentIdAsync(string GroupId, int Id, [FromQuery] ProjectPageRequest req)
        {
            var    GId     = User.Claims.FirstOrDefault(a => a.Type == "GroupId").Value;
            var    isAdmin = User.Claims.FirstOrDefault(a => a.Type == "IsAdmin").Value.ToLower() == "true" ? true : false;
            string Code    = User.Claims.FirstOrDefault(a => a.Type == "Code").Value;
            //string Account = User.Claims.FirstOrDefault(a => a.Type == "Account").Value;
            string Roles = User.Claims.FirstOrDefault(a => a.Type == "Role").Value;


            string pathId;
            string groupId;
            //检查数据的项目或者场站编号是否存在
            bool bRet = _ps.IsExist(Id, out pathId, out groupId);

            if (!bRet)
            {
                return(new BaseResponse {
                    Success = false, Message = "输入的项目或者场站编号不存在"
                });
            }
            //检查是否有权限(获取项目的路径,如果是顶级项目,则传入当前项目编号)
            if (pathId == null)   //如果是顶级项目,则把当前Id赋值给项目路径
            {
                pathId = Id.ToString();
            }
            else
            {
                pathId += "/" + Id;
            }
            if (GroupId != groupId)
            {
                if (!(isAdmin && Code == _config["Group"]))//非超级管理员
                {
                    return(new BaseResponse {
                        Success = false, Message = "用户没有权限"
                    });
                }
            }
            else
            {
                if (!isAdmin) //非管理员
                {
                    bRet = await _rp.IsAuth(Roles, pathId, 0);

                    if (!bRet)
                    {
                        return(new BaseResponse {
                            Success = false, Message = "用户没有权限"
                        });
                    }
                }
            }

            var rm = await _ps.GetChildProjectByIdAsync(Id, req);

            return(rm);
        }
예제 #2
0
        //根据项目标示获取项目下的子项目(不含嵌套数据,不包含项目下设备的数量)
        public async Task <BaseResponse> GetChildProjectByIdAsync(int Id, ProjectPageRequest req)
        {
            var data = _pr.FindWithImageAndChildAsync(a => a.ParentId == Id);

            if (req.ProjectType == 1)  //项目
            {
                data = data.Where(a => a.ProjectType == ProjectType.Project);
            }
            else if (req.ProjectType == 2)//场站
            {
                data = data.Where(a => a.ProjectType == ProjectType.Site);
            }
            if (!string.IsNullOrWhiteSpace(req.Search))
            {
                data = data.Where(a => a.Name.Contains(req.Search));
            }
            int    count           = data.Count();
            string OrderExpression = "";

            if (string.IsNullOrEmpty(req.OrderBy))
            {
                OrderExpression = "Id Asc";
            }
            else
            {
                OrderExpression = string.Format("{0} {1}", req.OrderBy, req.OrderType);
            }
            var list = await data.OrderBy(OrderExpression).Skip((req.PageNo - 1) * req.PageSize).Take(req.PageSize).ToListAsync();

            var dtos = _mapper.Map <List <ProjectDto> >(list);

            //获取项目的区域名称
            foreach (var item in dtos)
            {
                //获取项目或者场站下设备的数量
                if (item.ProjectType == (int)ProjectType.Project)
                {
                    var sites = await GetProjectSitesIdAsync(item.Id);

                    int num = await _dr.Find(a => sites.Contains(a.ProjectId.Value)).CountAsync();

                    item.DeviceCount = num;
                }
                else
                {
                    int num = await _dr.Find(a => a.ProjectId == item.Id).CountAsync();

                    item.DeviceCount = num;
                }
                //获取区域名称
                if (item.RegionId != null && "" != item.RegionId)
                {
                    var r = await _rr.FindAsync(item.RegionId, item.GroupId);

                    if (r != null)
                    {
                        item.RegionName = r.Name;
                    }
                }
            }
            var br = new BasePageResponse <List <ProjectDto> >();

            br.Success     = true;
            br.Message     = "获取数据成功";
            br.PageSize    = req.PageSize;
            br.CurrentPage = req.PageNo;
            br.Count       = count;
            br.TotalPage   = (int)Math.Ceiling((decimal)count / req.PageSize);
            br.Data        = dtos;
            return(br);
        }