Exemplo n.º 1
0
        public FlowPageResult <dynamic> MyApprovePage(MyApprovePageInfo dto)
        {
            var user   = HttpContext.GetFlowLoginUserFromToken();
            var filter = bf.Eq(x => x.School, user.School);

            if (dto.Businesses != null && dto.Businesses.Length > 0)
            {
                filter &= bf.In(x => x.Business.K, dto.Businesses);
            }
            if (dto.ExceptDynamic)
            {
                filter &= bf.Ne(x => x.CommonInfo.FlowDef.ApproveType, ApproveType.Danymic);
            }
            if (dto.Org?.Rid is not null)
            {
                filter &= bf.Eq(x => x.CommonInfo.Creator.Org.Rid, dto.Org.Rid);
            }
            if (dto.IsApproved)
            {
                filter &= bf.ElemMatch(x => x.Process.Operators, o => o.Rid == user.Rid);
            }
            else
            {
                filter &= bf.ElemMatch(x => x.Process.OperatorsNow, o => o.Rid == user.Rid);
            }
            if (!string.IsNullOrWhiteSpace(dto.SearchKey))
            {
                filter &= bf.Where(x => x.CommonInfo.Creator.Name.Contains(dto.SearchKey) || x.CommonInfo.Title.Contains(dto.SearchKey));
            }
            var query = coll.Find(filter);
            var total = query.CountDocuments();
            var listT = query.Project(x => new
            {
                x.Id,
                x.Business,
                x.BusinessKeyId,
                x.CommonInfo,
                x.Process.OperatorsNow,
                x.Process.StepNow,
                x.Process.Steps,
                x.Status
            }).SortByDescending(x => x.CommonInfo.Creator.Time).Skip((dto.PageIndex - 1) * dto.PageSize).Limit(dto.PageSize).ToList();

            return(FlowPageResult.WrapDynamic(total, listT.Select(x => new
            {
                x.Id,
                x.Business,
                x.BusinessKeyId,
                x.CommonInfo,
                x.Status,
                x.OperatorsNow,
                StepCount = x.Steps.Count,
                StepNow = x.Steps.LastOrDefault(r => r.Operator != null),
                MyPreviousStep = x.Steps.LastOrDefault(s => s.Operator != null && s.Operator.Rid == user.Rid),
                IsMyOperate = x.OperatorsNow.FirstOrDefault(o => o.Rid == user.Rid) != null
            })));
        }
Exemplo n.º 2
0
        public FlowPageResult <FlowDef> Page(FlowKeywordPageInfo dto)
        {
            var user   = HttpContext.GetFlowLoginUserFromToken();
            var filter = bf.Eq(x => x.School, user.School) & bf.In(x => x.ApproveType, new[] { ApproveType.All, ApproveType.Continuous, ApproveType.Or });

            if (!string.IsNullOrWhiteSpace(dto.SearchKey))
            {
                filter &= bf.Where(x => x.Name.Contains(dto.SearchKey));
            }
            var query = coll.Find(filter);
            var total = query.CountDocuments();
            var list  = query.SortBy(x => x.Name).Skip((dto.PageIndex - 1) * dto.PageSize).Limit(dto.PageSize).ToList();

            return(FlowPageResult.Wrap(total, list));
        }
Exemplo n.º 3
0
        public FlowPageResult <dynamic> MyApplyPage(MyApplyPageInfo dto)
        {
            var user   = HttpContext.GetFlowLoginUserFromToken();
            var filter = bf.Eq(x => x.School, user.School) & bf.Eq(x => x.CommonInfo.Creator.Rid, user.Rid);

            if (dto.ExceptDynamic)
            {
                filter &= bf.Ne(x => x.CommonInfo.FlowDef.ApproveType, ApproveType.Danymic);
            }
            if (dto.Businesses != null && dto.Businesses.Length > 0)
            {
                filter &= bf.In(x => x.Business.K, dto.Businesses);
            }
            if (!string.IsNullOrWhiteSpace(dto.SearchKey))
            {
                filter &= bf.Where(x => x.CommonInfo.Title.Contains(dto.SearchKey));
            }
            var query = coll.Find(filter);
            var total = query.CountDocuments();
            var listT = query.Project(x => new
            {
                x.Id,
                x.Business,
                x.BusinessKeyId,
                x.CommonInfo,
                x.Process.OperatorsNow,
                x.Process.StepNow,
                x.Process.Steps,
                x.Status
            }).SortByDescending(x => x.CommonInfo.Creator.Time).Skip((dto.PageIndex - 1) * dto.PageSize).Limit(dto.PageSize).ToList();

            return(FlowPageResult.WrapDynamic(total, listT.Select(x => new
            {
                x.Id,
                x.Business,
                x.BusinessKeyId,
                x.CommonInfo,
                x.Status,
                x.OperatorsNow,
                StepNow = x.Steps[x.StepNow - 1],
                StepCount = x.Steps.Count
            })));
        }
Exemplo n.º 4
0
        public FlowPageResult <object> Page(FlowKeywordPageInfo dto)
        {
            var user   = HttpContext.GetFlowLoginUserFromToken();
            var filter = bf.Eq(x => x.School, user.School);

            if (!string.IsNullOrWhiteSpace(dto.SearchKey))
            {
                filter &= bf.Where(x => x.User.Name.Contains(dto.SearchKey));
            }
            var query = coll.Find(filter);
            var total = query.CountDocuments();
            var list  = query.Project(x => new
            {
                x.Id,
                x.User,
                DepartmentsStr = string.Join(',', x.Departments.Select(u => u.Name)),
            }).SortBy(x => x.User.Name).Skip((dto.PageIndex - 1) * dto.PageSize).Limit(dto.PageSize).ToList();

            return(FlowPageResult.WrapDynamic(total, list));
        }