Пример #1
0
        public Tuple <IQueryable <UserFileInfo>, int> FolderFiles(string filepath, QueryByPage pages)
        {
            var node = GetNode(filepath, false, null);
            var list = context.UserFileInfos.AsQueryable();

            if (node == null)
            {
                list = list.Where(f => f.Parent == null).Where(f => f.Path == filepath);
            }
            else
            {
                list = list.Where(f => f.Parent.Id == node.Id);
            }
            list = list.Where(f => f.Name != null).OrderByDescending(f => f.Create);
            return(list.SplitPage <UserFileInfo>(pages));
        }
Пример #2
0
        public Tuple <IEnumerable <string>, int> Folders(string filepath, QueryByPage pages)
        {
            var node = GetNode(filepath, false, null);
            var list = context.UserFileInfos.AsQueryable();

            if (node == null)
            {
                list = list.Where(f => f.Parent == null);
            }
            else
            {
                list = list.Where(f => f.Parent.Id == node.Id);
            }
            list = list.Where(f => f.Name == null).OrderByDescending(f => f.Create);
            var result = list.SplitPage(pages);

            return(new Tuple <IEnumerable <string>, int>(result.Item1.Select(c => c.Path), result.Item2));
        }
Пример #3
0
 private IEnumerable <GradePhySubject> GetSubjects(PhyGradeQueryDataModel subject, UserGradeBaseInfo baseUser, QueryByPage pages)
 => phyGradeServices.GetSubjectsByName(new QueryUserGradeViewModel()
 {
     Names = new QueryByString()
     {
         Arrays = subject.Subject?.Split("|")
     },
     Groups = new QueryByString()
     {
         Value = subject.Group
     }
 }, baseUser, pages);
        public IActionResult ListOfMyAudit(int pageIndex = 0, int pageSize = 20, string status = null, int?MainStatus = null, string actionStatus = null, string executeStatus = null, string entityType = null)
        {
            var pages = new QueryByPage()
            {
                PageIndex = pageIndex, PageSize = pageSize
            };
            var c    = currentUserService.CurrentUser;
            var item = new { pages, status, actionStatus, executeStatus };
            var ua   = userActionServices.Log(UserOperation.AuditApply, c.Id, $"本人审批:{JsonConvert.SerializeObject(item)}", true, ActionRank.Infomation);

            var statusArr             = status?.Split("##")?.Select(i => Convert.ToInt32(i));
            IQueryable <IAppliable> r = entityType == "vacation"? context.AppliesDb:context.AppliesIndayDb;         //.Where(a => a.NowAuditStep.MembersFitToAudit.Contains(c.Id));

            if (statusArr != null && statusArr.Any())
            {
                r = r.Where(a => statusArr.Contains((int)a.Status));                                                   // 查出所有状态符合的
            }
            if (MainStatus != null)
            {
                r = r.Where(a => (int)a.MainStatus == MainStatus);
            }
            r = r.Where(a => a.ApplyAllAuditStep.Any(s => s.MembersFitToAudit.Contains(c.Id)));            // 查出所有涉及本人的
            if (executeStatus != null)
            {
                _ = int.TryParse(executeStatus, out var executeStatusInt);
                r = r.Where(a => (int)a.ExecuteStatus == executeStatusInt);
            }
            if (actionStatus != null)
            {
                switch (actionStatus.ToLower())
                {
                case "accept":
                {
                    r = r.Where(a => a.Response.Any(res => res.AuditingBy.Id == c.Id && res.Status == Auditing.Accept));
                    break;
                }

                case "deny":
                {
                    r = r.Where(a => a.Response.Any(res => res.AuditingBy.Id == c.Id && res.Status == Auditing.Denied));
                    break;
                }

                case "unreceive":
                {
                    r = r.Where(a => a.Status == AuditStatus.AcceptAndWaitAdmin || a.Status == AuditStatus.Auditing);       // 当前处于审批中的
                    r = r.Where(a => a.Response.All(res => res.AuditingBy.Id != c.Id));                                     // 我没有进行审批的
                    r = r.Where(a => a.NowAuditStep != null).Where(a => !a.NowAuditStep.MembersFitToAudit.Contains(c.Id));  // 并且当前页不该我审批的
                    break;
                }

                case "received":
                {
                    r = r.Where(a => a.Status == AuditStatus.AcceptAndWaitAdmin || a.Status == AuditStatus.Auditing);          // 当前处于审批中的
                    r = r.Where(a => a.NowAuditStep != null).Where(a => a.NowAuditStep.MembersFitToAudit.Contains(c.Id));      // 并且当前页该我审批的
                    r = r.Where(a => !a.NowAuditStep.MembersAcceptToAudit.Contains(c.Id));                                     // 并且当前我没有审核的
                    break;
                }

                default: return(new JsonResult(ActionStatusMessage.ApplyMessage.Operation.Default));
                }
            }

            //r = r.Where(a => !a.NowAuditStep.MembersAcceptToAudit.Contains(c.Id));
            var list   = r.OrderByDescending(a => a.Create).ThenByDescending(a => a.Status);
            var result = list.SplitPage(pages);
            var ids    = result.Item1.Select(i => i.Id);

            if (entityType == "vacation")
            {
                var result_items = result.Item1.ToList()?.Select(a => a.ToSummaryDto(((DAL.Entities.ApplyInfo.Apply)a).RequestInfo));
                var f_result     = new EntitiesListDataModel <ApplySummaryDto <ApplyRequest> >(result_items, result.Item2);
                return(new JsonResult(f_result));
            }
            else
            {
                var result_items = result.Item1.ToList()?.Select(a => a.ToSummaryDto(((ApplyInday)a).RequestInfo));
                var f_result     = new EntitiesListDataModel <ApplySummaryDto <ApplyIndayRequest> >(result_items, result.Item2);
                return(new JsonResult(f_result));
            }
        }
        public IActionResult ListOfSelf(string id, int pageIndex = 0, int pageSize = 20, int?MainStatus = null, DateTime?start = null, DateTime?end = null, string entityType = null)
        {
            var pages = new QueryByPage()
            {
                PageIndex = pageIndex, PageSize = pageSize
            };

            if (start == null)
            {
                start = new DateTime(DateTime.Today.XjxtNow().Year, 1, 1);
            }
            if (end == null)
            {
                end = DateTime.Today.XjxtNow();
            }
            end = end.Value.AddDays(1);

            var currentUser = currentUserService.CurrentUser;
            var c           = id == null ? currentUser : usersService.GetById(id);

            if (c == null)
            {
                return(new JsonResult(c.NotExist()));
            }
            var item = new { pages, id, start, end };
            var ua   = userActionServices.Log(UserOperation.AuditApply, c.Id, $"{entityType}-本人申请:{JsonConvert.SerializeObject(item)}", false, ActionRank.Infomation);

            if (id != null && id != currentUser.Id)
            {
                if (!userActionServices.Permission(currentUser.Application.Permission, DictionaryAllPermission.Apply.Default, Operation.Query, currentUser.Id, c.CompanyInfo.CompanyCode, $"{c.Id}的申请"))
                {
                    return(new JsonResult(ActionStatusMessage.Account.Auth.Invalid.Default));
                }
            }
            if (entityType == "vacation")
            {
                var list = context.AppliesDb
                           .Where(a => a.BaseInfo.FromId == c.Id)
                           .Where(a => a.RequestInfo.StampLeave >= start)
                           .Where(a => a.RequestInfo.StampLeave <= end);
                if (MainStatus != null)
                {
                    list = list.Where(a => (int)a.MainStatus == MainStatus);
                }
                list = list.OrderByDescending(a => a.RequestInfo.StampLeave).ThenByDescending(a => a.Status);
                var result = list.SplitPage(pages);
                userActionServices.Status(ua, true);
                return(new JsonResult(new EntitiesListViewModel <ApplySummaryDto <ApplyRequest> >(result.Item1.ToList()?.Select(a => a.ToSummaryDto(a.RequestInfo)), result.Item2)));
            }
            else
            {
                var list = context.AppliesIndayDb
                           .Where(a => a.BaseInfo.FromId == c.Id)
                           .Where(a => a.RequestInfo.StampLeave >= start)
                           .Where(a => a.RequestInfo.StampLeave <= end);
                if (MainStatus != null)
                {
                    list = list.Where(a => (int)a.MainStatus == MainStatus);
                }
                list = list.OrderByDescending(a => a.RequestInfo.StampLeave).ThenByDescending(a => a.Status);
                var result = list.SplitPage(pages);
                userActionServices.Status(ua, true);
                return(new JsonResult(new EntitiesListViewModel <ApplySummaryDto <ApplyIndayRequest> >(result.Item1.ToList()?.Select(a => a.ToSummaryDto(a.RequestInfo)), result.Item2)));
            }
        }
Пример #6
0
        public static Tuple <IQueryable <TSource>, int> SplitPage <TSource>(this IQueryable <TSource> model, QueryByPage pages)
        {
            if (model == null)
            {
                return(null);
            }
            pages = pages.ValidSplitPage();
            var totalCount = model.Count();
            var res        = pages.PageSize < 0 || pages.PageIndex < 0 ? model : model.Skip(pages.PageIndex * pages.PageSize).Take(pages.PageSize);

            return(new Tuple <IQueryable <TSource>, int>(res, totalCount));
        }
        public IEnumerable <GradePhySubject> GetSubjectsByName(QueryUserGradeViewModel model, UserGradeBaseInfo userBase, QueryByPage pages)
        {
            if (model == null)
            {
                model = new QueryUserGradeViewModel();
            }
            var has = model.Names?.Arrays?.Any() ?? false;

            if (!has)
            {
                model.Names = new QueryByString()
                {
                    Arrays = new List <string>()
                    {
                        "*"
                    }
                }
            }
            ;
            var group    = model.Groups?.Value;
            var subjectN = model.Names.Arrays;
            var result   = new List <GradePhySubject>();

            foreach (var sn in subjectN)
            {
                var list = _context.GradePhySubjects.AsQueryable();
                if (sn != "*")
                {
                    list = list.Where(s => s.Name == sn);
                }
                if (group != null)
                {
                    list = list.Where(s => s.Group == group);
                }
                var r = list.GetSubjectsByUser(userBase).SplitPage(pages);
                result.AddRange(r.Item1);
            }
            return(result);
        }