Beispiel #1
0
        public async Task <SingleEventView> GetSingleEventAsync(string token, int eventId)
        {
            var result =
                await _retryPolicy.ExecuteAndCaptureAsync(() => _betsApiClient.GetSingleEventAsync(token, eventId));

            return(result.Result);
        }
        private async Task <List <Tuple <Score, Score> > > GetHistoryOfGamesAsync(int eventId)
        {
            var result      = new List <Tuple <Score, Score> >();
            var singleEvent = await _betsApiClient.GetSingleEventAsync(_configuration.BetsApiAccessToken, eventId);

            var name1 = singleEvent.Results[0].Home.Name;
            var name2 = singleEvent.Results[0].Away.Name;

            using (var db = _dbContextAccessor())
            {
                var games = await db.Games
                            .Include(g => g.Player1)
                            .Include(g => g.Player2)
                            .Include(g => g.Scores)
                            .ThenInclude(sc => sc.Score)
                            .AsNoTracking().Where(g =>
                                                  g.Player1.Name == name1 && g.Player2.Name == name2 ||
                                                  g.Player1.Name == name2 && g.Player2.Name == name1)
                            .OrderByDescending(g => g.Id)
                            .Take(_configuration.MaxGamesToRetrieve)
                            .ToListAsync();

                foreach (var gameScore in games.SelectMany(g => g.Scores))
                {
                    var score1 = new Score
                    {
                        ActualScore = gameScore.Score.Score1,
                        PlayerName  = name1
                    };

                    var score2 = new Score
                    {
                        ActualScore = gameScore.Score.Score2,
                        PlayerName  = name2
                    };

                    result.Add(new Tuple <Score, Score>(score1, score2));
                }
            }

            return(result.ToList());
        }