Beispiel #1
0
        public ActionResult GetGroupHomeworks(string Token, int GroupID, int?Page)
        {
            var user = CheckUser(Token);

            if (user == null)
            {
                return(Json(new Base
                {
                    Code = 500,
                    IsSuccess = false,
                    Info = "AccessToken不正确"
                }));
            }
            var group       = DbContext.Groups.Find(GroupID);
            var groupmember = (from gm in @group.GroupMembers where gm.UserID == user.ID select gm).FirstOrDefault();

            if (groupmember == null)
            {
                return(Json(new Base
                {
                    Code = 808,
                    IsSuccess = false,
                    Info = "您不是该群的成员"
                }));
            }
            if (Page == null)
            {
                Page = 0;
            }
            var ret = new GroupHomeworks {
                Code = 0, Info = "", IsSuccess = true, List = new List <GroupHomework>(), PageCount = group.GroupHomeworks.Count / 10 + 1
            };
            var homeworks = group.GroupHomeworks.OrderByDescending(x => x.Begin).Skip(Page.Value * 10).Take(10).ToList();

            foreach (var h in homeworks)
            {
                var homework = new GroupHomework
                {
                    Begin       = h.Begin,
                    End         = h.End,
                    Description = h.Description,
                    Title       = h.Title,
                    GroupID     = h.GroupID,
                    Problems    = new List <GroupHomeworkProblem>()
                };
                var problems = h.GroupHomeworkProblems.OrderBy(x => x.Priority);
                foreach (var p in problems)
                {
                    var problem = new GroupHomeworkProblem
                    {
                        ProblemID = p.ID,
                        Title     = p.Problem.Title,
                        Code      = ""
                    };
                    var status = (from s in DbContext.Statuses
                                  where h.Begin <= s.Time &&
                                  s.Time < h.End &&
                                  s.UserID == user.ID
                                  orderby s.Time descending
                                  select s).FirstOrDefault();
                    if (status == null)
                    {
                        problem.Status = "未完成";
                    }
                    else
                    {
                        problem.Points = status.JudgeTasks.Where(x => x.Result == Entity.JudgeResult.Accepted).Count() * 100 / status.JudgeTasks.Count;
                        problem.Status = problem + "分";
                        problem.Code   = status.Code;
                    }
                    homework.Problems.Add(problem);
                }
                ret.List.Add(homework);
            }
            return(Json(ret));
        }
Beispiel #2
0
 public ActionResult GetGroupHomeworks(string Token, int GroupID, int? Page)
 {
     var user = CheckUser(Token);
     if (user == null)
         return Json(new Base
         {
             Code = 500,
             IsSuccess = false,
             Info = "AccessToken不正确"
         });
     var group = DbContext.Groups.Find(GroupID);
     var groupmember = (from gm in @group.GroupMembers where gm.UserID == user.ID select gm).FirstOrDefault();
     if (groupmember == null)
         return Json(new Base
         {
             Code = 808,
             IsSuccess = false,
             Info = "您不是该群的成员"
         });
     if (Page == null) Page = 0;
     var ret = new GroupHomeworks { Code = 0, Info = "", IsSuccess = true, List = new List<GroupHomework>(), PageCount = group.GroupHomeworks.Count / 10 + 1 };
     var homeworks = group.GroupHomeworks.OrderByDescending(x => x.Begin).Skip(Page.Value * 10).Take(10).ToList();
     foreach (var h in homeworks)
     {
         var homework = new GroupHomework
         {
             Begin = h.Begin,
             End = h.End,
             Description = h.Description,
             Title = h.Title,
             GroupID = h.GroupID,
             Problems = new List<GroupHomeworkProblem>()
         };
         var problems = h.GroupHomeworkProblems.OrderBy(x => x.Priority);
         foreach (var p in problems)
         {
             var problem = new GroupHomeworkProblem
             {
                 ProblemID = p.ID,
                 Title = p.Problem.Title,
                 Code = ""
             };
             var status = (from s in DbContext.Statuses
                           where h.Begin <= s.Time
                           && s.Time < h.End
                           && s.UserID == user.ID
                           orderby s.Time descending
                           select s).FirstOrDefault();
             if (status == null)
                 problem.Status = "未完成";
             else
             {
                 problem.Points = status.JudgeTasks.Where(x => x.Result == Entity.JudgeResult.Accepted).Count() * 100 / status.JudgeTasks.Count;
                 problem.Status = problem + "分";
                 problem.Code = status.Code;
             }
             homework.Problems.Add(problem);
         }
         ret.List.Add(homework);
     }
     return Json(ret);
 }