public MatchFighterRewardTrackProcessor(
     DatabaseContext databaseContext,
     IContributionPointCalculator contributionPointCalculator,
     IRewardTrackCalculator rewardTrackCalculator)
 {
     this.databaseContext             = databaseContext;
     this.contributionPointCalculator = contributionPointCalculator;
     this.rewardTrackCalculator       = rewardTrackCalculator;
 }
Exemplo n.º 2
0
        public async Task <ActionResult <IEnumerable <MatchScoreFighterDto> > > GetMatchFighterScores(Guid id, [FromServices] IContributionPointCalculator pointCalculator)
        {
            var scores = await Context.MatchScoreFighters
                         .Where(o => o.MatchId == id)
                         .ProjectTo <MatchScoreFighterDto>(Mapper.ConfigurationProvider)
                         .ToListAsync();

            foreach (var score in scores)
            {
                var contribution = await Context.MatchContributions
                                   .FirstOrDefaultAsync(o => o.MatchId == id && o.FighterId == score.FighterId);

                if (contribution == null)
                {
                    throw new NullReferenceException($"{nameof(contribution)} is null. MatchId {id}, FighterId {score.FighterId}");
                }

                score.Points = pointCalculator.Calculate(contribution);
            }

            return(Ok(scores.OrderByDescending(o => o.Points)));
        }