public async Task <IEnumerable <LeaderboardsDto> > GetLeaderboardsAsync() { var result = new List <LeaderboardsDto>(); var leagues = await _context.Leagues .Include(l => l.Seasons).ThenInclude(s => s.Matchdays).ThenInclude(md => md.Matches).ThenInclude(m => m.Predictions).ThenInclude(p => p.User) .ToListAsync(); foreach (var league in leagues) { foreach (var season in league.Seasons) { var leaderboardDto = new LeaderboardsDto { Title = $"{league.Title} {season.Title}" }; var seasonMatchIds = season.Matchdays.SelectMany(md => md.Matches).Select(m => m.Id); var predictions = await _context.Predictions.Where(p => seasonMatchIds.Contains(p.MatchId)).ToListAsync(); var orderedGroupedPredictions = predictions.GroupBy(p => p.User.Username); var ranks = new List <RankDto>(); foreach (var orderedGroupedPrediction in orderedGroupedPredictions) { var rank = new RankDto { User = orderedGroupedPrediction.Key, TotalPoint = orderedGroupedPrediction.Sum(grp => grp.Point.GetValueOrDefault()), TotalGame = orderedGroupedPrediction.Count(grp => grp.Point != null), TotalCorrectScore = orderedGroupedPrediction.Count(grp => grp.Point == 3), TotalCorrectResult = orderedGroupedPrediction.Count(grp => grp.Point == 1), TotalWrong = orderedGroupedPrediction.Count(grp => grp.Point == 0) }; ranks.Add(rank); } leaderboardDto.Ranks = ranks .OrderByDescending(r => r.TotalPoint) .ThenByDescending(r => r.WinningRate) .ThenByDescending(r => r.TotalCorrectScore) .ThenByDescending(r => r.TotalCorrectResult) .ThenBy(r => r.TotalGame) .ThenBy(r => r.User); var idx = 0; leaderboardDto.Ranks.ToList().ForEach(r => r.Sequence = ++idx); result.Add(leaderboardDto); } } return(result); }
public RankDto Create(RankDto data) { var rank = Mapper.Map <Rank>(data); var result = _repoRank.Create(rank); if (_repoRank.SaveChanges() > 0) { return(Mapper.Map <RankDto>(result)); } return(null); }
/// <inheritdoc/> public void CreateRank(IRank rank) { RankDto rankDto = RankDto.ToDto(rank); this.Context.Ranks.Add(rankDto); int count = this.Context.SaveChanges(); if (count != 1) { throw new ApplicationException($"Unexpectedly created {count} rows"); } }
public ActionResult CreateRank(CreateRankViewModel data) { var path = Server.MapPath("~/Images"); var rankdto = new RankDto() { CreatedDate = DateTime.Now, RankName = data.RankName, RankImage = "../Images/" + FileUlti.SaveFile(data.RankImage, path) }; _rankService.Create(rankdto); return(RedirectToAction("RankManagement")); }
public int Updated(RankDto data) { throw new NotImplementedException(); }