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)); }
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); }