Esempio n. 1
0
        private void PopulateLeague(
            List <PlayerGameModeStatPerGateway> player,
            List <LeagueConstellation> allLeagues,
            Rank rank)
        {
            try
            {
                if (rank.RankNumber == 0)
                {
                    return;
                }
                var leagueConstellation = allLeagues.Single(l => l.Gateway == rank.Gateway && l.Season == rank.Season && l.GameMode == rank.GameMode);
                var league = leagueConstellation.Leagues.Single(l => l.Id == rank.League);

                var gameModeStat = player.SingleOrDefault(g => g.Id == rank.Id);

                if (gameModeStat == null)
                {
                    return;
                }

                gameModeStat.Division    = league.Division;
                gameModeStat.LeagueOrder = league.Order;

                gameModeStat.RankingPoints = rank.RankingPoints;
                gameModeStat.LeagueId      = rank.League;
                gameModeStat.Rank          = rank.RankNumber;
            }
            catch (Exception e)
            {
                _trackingService.TrackException(e, $"A League was not found for {rank.Id} RN: {rank.RankNumber} LE:{rank.League}");
            }
        }
        private void PopulateLeague(
            List <Rank> ranks,
            List <LeagueConstellation> allLeagues)
        {
            foreach (var rank in ranks)
            {
                try
                {
                    var leagueConstellation = allLeagues.Single(l => l.Gateway == rank.Gateway && l.Season == rank.Season && l.GameMode == rank.GameMode);
                    var league = leagueConstellation.Leagues.Single(l => l.Id == rank.League);

                    var rankOfPlayer = ranks.SingleOrDefault(g => g.Id == rank.Id);
                    if (rankOfPlayer == null)
                    {
                        return;
                    }

                    rankOfPlayer.LeagueName     = league.Name;
                    rankOfPlayer.LeagueDivision = league.Division;
                    rankOfPlayer.LeagueOrder    = league.Order;

                    rankOfPlayer.RankingPoints = rankOfPlayer.RankingPoints;
                    rankOfPlayer.League        = rankOfPlayer.League;
                    rankOfPlayer.RankNumber    = rankOfPlayer.RankNumber;
                }
                catch (Exception e)
                {
                    _trackingService.TrackException(e, $"A League was not found for {rank.Id} RN: {rank.RankNumber} LE:{rank.League}");
                }
            }
        }
Esempio n. 3
0
        private void PopulateLeague(
            List <PlayerGameModeStatPerGateway> player,
            List <LeagueConstellation> allLeagues,
            Rank rank)
        {
            try
            {
                if (rank.RankNumber == 0)
                {
                    return;
                }
                var leagueConstellation = allLeagues.Single(l => l.Gateway == rank.Gateway && l.Season == rank.Season && l.GameMode == rank.GameMode);

                // There are some Ranks with Leagues that do not exist in
                // Season 0 LeagueConstellations, which we should ignore.
                // (Data integrity issue)
                var league = leagueConstellation.Season == 0
                    ? leagueConstellation.Leagues.SingleOrDefault(l => l.Id == rank.League)
                    : leagueConstellation.Leagues.Single(l => l.Id == rank.League);

                if (league == null)
                {
                    return;
                }


                var gameModeStat = player.SingleOrDefault(g => g.Id == rank.Id);

                if (gameModeStat == null)
                {
                    return;
                }


                gameModeStat.Division    = league.Division;
                gameModeStat.LeagueOrder = league.Order;

                gameModeStat.RankingPoints = rank.RankingPoints;
                gameModeStat.LeagueId      = rank.League;
                gameModeStat.Rank          = rank.RankNumber;
            }
            catch (Exception e)
            {
                _trackingService.TrackException(e, $"A League was not found for {rank.Id} RN: {rank.RankNumber} LE:{rank.League}");
            }
        }
        public async Task Update()
        {
            var lastVersion = await _versionRepository.GetLastVersion <T>();

            var nextEvents = await _eventRepository.Load(lastVersion.Version, 1000);

            while (nextEvents.Any())
            {
                foreach (var nextEvent in nextEvents)
                {
                    try
                    {
                        if (lastVersion.IsStopped)
                        {
                            return;
                        }

                        if (nextEvent.match.season > lastVersion.Season)
                        {
                            await _versionRepository.SaveLastVersion <T>(lastVersion.Version, nextEvent.match.season);

                            lastVersion = await _versionRepository.GetLastVersion <T>();
                        }

                        // Skip the cancel events for now
                        if (nextEvent.match.state != 3 && nextEvent.match.season == lastVersion.Season)
                        {
                            await _innerHandler.Update(nextEvent);
                        }

                        await _versionRepository.SaveLastVersion <T>(nextEvent.Id.ToString(), lastVersion.Season);
                    }
                    catch (Exception e)
                    {
                        _trackingService.TrackException(e, $"ReadmodelHandler: {typeof(T).Name} died on event{nextEvent.Id}");
                        throw;
                    }
                }

                nextEvents = await _eventRepository.Load(nextEvents.Last().Id.ToString());
            }
        }