Пример #1
0
        private IEnumerable <ConcurentResultDTO> GetConcurents(ConcurentModel model, IEnumerable <UserProfile> allStudents, Func <int, int, int> GetTotalRatingFunc, int divisionId)
        {
            List <ConcurentResultDTO> concurents = new List <ConcurentResultDTO>();
            double total = GetTotalRatingFunc(model.StudentId, divisionId);

            if (model.SkipCount < 0)
            {
                foreach (var u in allStudents)
                {
                    concurents.Add(new ConcurentResultDTO {
                        UserProfile = u, RatingValue = GetTotalRatingFunc(u.Id, divisionId)
                    });
                }
                concurents = concurents.Where(c => c.RatingValue > total).OrderBy(c => c.RatingValue).Skip(Math.Abs(model.SkipCount + model.TakeCount)).Take(model.TakeCount).OrderByDescending(c => c.RatingValue).ToList();
            }
            else
            {
                foreach (var u in allStudents)
                {
                    concurents.Add(new ConcurentResultDTO {
                        UserProfile = u, RatingValue = GetTotalRatingFunc(u.Id, divisionId)
                    });
                }
                concurents = concurents.Where(c => c.RatingValue <= total).OrderByDescending(c => c.RatingValue).Skip(model.SkipCount).Take(model.TakeCount).ToList();
            }

            return(concurents.AsEnumerable());
        }
Пример #2
0
 public List <ConcurentResultDTO> SearchConcurents(ConcurentModel model)
 {
     if (model != null)
     {
         return(services.SearchService.SearchConcurents(model, services.StatisticService).ToList());
     }
     return(null);
 }
Пример #3
0
        public IEnumerable <ConcurentResultDTO> SearchConcurents(ConcurentModel model, IStatisticService statisticService)
        {
            IEnumerable <UserProfile> allStudents = Database.UserRepository.Find(u =>
                                                                                 u.UniversityId == model.UniversityId &&
                                                                                 (model.FacultyId != null ? u.FacultyId == model.FacultyId : true) &&
                                                                                 (model.CourseId != null ? u.CourseId == model.CourseId : true));

            if (model.DisciplineBranchId == null)
            {
                if (model.StudentRatingType == StudentRatingType.Average)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int, double>)statisticService.GetAverageRatingByDivision, 1));
                }
                else if (model.StudentRatingType == StudentRatingType.Overall)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int>)statisticService.GetTotalRating));
                }
                else if (model.StudentRatingType == StudentRatingType.Olympiads)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int, int>)statisticService.GetTotalRatingByDivision, 2));
                }
            }
            else if (model.DisciplineId == null)
            {
                if (model.StudentRatingType == StudentRatingType.Average)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int, int, double>)statisticService.GetAverageRatingByBranchDivision, 1));
                }
                else if (model.StudentRatingType == StudentRatingType.Overall)
                {
                    return(GetConcurents(model, allStudents, statisticService.GetTotalRatingByBranch));
                }
                else if (model.StudentRatingType == StudentRatingType.Olympiads)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int, int, int>)statisticService.GetTotalRatingByBranchDivision, 2));
                }
            }
            else
            {
                if (model.StudentRatingType == StudentRatingType.Average)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int, int, int, double>)statisticService.GetAverageRatingByBranchDisciplineDivision, 1));
                }
                else if (model.StudentRatingType == StudentRatingType.Overall)
                {
                    return(GetConcurents(model, allStudents, statisticService.GetTotalRatingByBranchDiscipline));
                }
                else if (model.StudentRatingType == StudentRatingType.Olympiads)
                {
                    return(GetConcurents(model, allStudents, (Func <int, int, int, int, int>)statisticService.GetTotalRatingByBranchDisciplineDivision, 2));
                }
            }
            return(null);
        }