示例#1
0
        public List <VmTaskBaseGrade> GetStudentOtherTeamGradeReportList(string studentUserId, int teamId)
        {
            var viewTaskTeamRepository = UnitOfWork.GetRepository <ViewTaskTeamRepository>();

            IEnumerable <ViewTaskTeam> taskTeamRepositoryList;

            var blTeamMember = new BLTeamMember();
            var teamMember   = blTeamMember.GetTeamMemberByUserIdAndTeamId(studentUserId, teamId);
            var taskId       = teamMember.TaskId.Value;


            var blUserTask        = new BLUserTask();
            var judgeUserTaskList = blUserTask.GetUsersByTask(taskId);

            var bTeam      = new BLTeam();
            var teamIdList = bTeam.GetTeamIdsByTask(taskId);


            taskTeamRepositoryList = viewTaskTeamRepository.GetTaskTeamByJudgesAndteamIds(judgeUserTaskList.ToArray(), teamIdList.ToArray()).ToList();

            var viewTaskRepository = UnitOfWork.GetRepository <ViewTaskRepository>();

            var taskGradeList = viewTaskRepository.GetViewTaskByIds(new int[] { taskId }).ToList();

            var blTeamGradeDetail   = new BLTeamGradeDetail();
            var teamGradeDetailList = blTeamGradeDetail.GetAllTeamGradeDetailByTaskIds(taskTeamRepositoryList.Select(t => t.TaskId).Distinct().ToArray()).ToList();

            var taskBaseGradeList = (from task in taskTeamRepositoryList
                                     group task by new { task.TaskId, task.TaskName } into g
                                     select new VmTaskBaseGrade
            {
                TaskId = g.Key.TaskId,
                TaskName = g.Key.TaskName,

                GradeList = (from gt in taskGradeList
                             where gt.Id == g.Key.TaskId
                             select new VmGrade
                {
                    Id = gt.GradeId,
                    Name = gt.Grade
                }).ToList(),

                TeamGradeList = (from team in g.ToList()
                                 group team by new { team.TeamId, team.TeamName } into tg
                                 select new VmTeamGrade
                {
                    TeamId = tg.Key.TeamId,
                    TeamName = tg.Key.TeamName,
                }).ToList()
            }).ToList();


            foreach (var taskBaseGrade in taskBaseGradeList)
            {
                foreach (var team in taskBaseGrade.TeamGradeList)
                {
                    team.GradeReportList = new List <VmGradeReport>();

                    foreach (var grade in taskBaseGrade.GradeList)
                    {
                        team.GradeReportList.Add(new VmGradeReport
                        {
                            GradeId   = grade.Id,
                            GradeType = grade.Name,
                            Average   = GetAverageTotal(teamGradeDetailList, taskBaseGrade.TaskId, team.TeamId, grade.Id)
                        });
                    }
                }
            }

            return(taskBaseGradeList);
        }