示例#1
0
        public IActionResult ById(int id, ByIdViewModel viewModel)
        {
            viewModel ??= new ByIdViewModel();
            viewModel.Pager ??= new PagerViewModel();
            viewModel.Pager.CurrentPage = viewModel.Pager.CurrentPage <= 0 ? 1 : viewModel.Pager.CurrentPage;

            var contestantIds = this.contestService.GetContestParticipantsIdsInRange(id, viewModel.Pager.CurrentPage, PageSize);

            viewModel.Pager.PagesCount = (int)Math.Ceiling((double)this.contestService.GetContestParticipantsCount(id) / PageSize);
            var allContestants = new List <ContestantViewModel>();

            foreach (var contestant in this.usersService.GetUsersWithIds <ContestantViewModel>(contestantIds))
            {
                contestant.EssayName = this.essayService.GetEssayName(contestant.Id, id);
                if (!this.gradeService.EssayGradet(this.essayService.GetEssaysId(contestant.Id, id)))
                {
                    contestant.EssayPoints = -1;
                }
                else
                {
                    contestant.EssayPoints = this.gradeService.GetEssayPoints(this.essayService.GetEssaysId(contestant.Id, id));
                }

                allContestants.Add(contestant);
            }

            viewModel.Contestants = allContestants.OrderByDescending(x => x.EssayPoints);

            return(this.View(viewModel));
        }
示例#2
0
        public ByIdViewModel GetByRaceId(int id, string userId)
        {
            var race = this.racesRepository.All().Where(x => x.Id == id).FirstOrDefault();

            var result = new ByIdViewModel
            {
                Id            = race.Id,
                Name          = race.Name,
                OrganizerName = this.usersRepository
                                .All()
                                .FirstOrDefault(x => x.Id == race.OrganizerId)
                                .UserName,
                Distance        = race.Distance,
                Description     = race.Description,
                Results         = race.Results,
                IsParticipating = this.racersRaceRepository.All().Any(r => r.RaceId == id && r.RacerId == userId),
            };

            return(result);
        }