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 }))); }
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)); }
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 }))); }
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)); }