コード例 #1
0
        private Player CollectPlayerData(DataManager dataManager, OpenDotaClient openDota, long playerId)
        {
            var info = openDota.Player(playerId);

            if (info == null)
            {
                return(null);
            }

            var player = dataManager.Players
                         .Add(new Player {
                Id = playerId
            })
                         .Entity;

            // основное инфо
            player.Name      = info.profile.personaname;
            player.SteamId   = info.profile.steamid;
            player.SoloRank  = info.solo_competitive_rank;
            player.PartyRank = info.competitive_rank;
            player.RankTier  = info.rank_tier;

            // матчи
            var matches = GetMatches(openDota, player);

            if (matches.Count > 0)
            {
                dataManager.Matches.AddRange(matches);

                var latest = matches.OrderByDescending(x => x.MatchId).First();

                player.LastMatchId   = latest.MatchId;
                player.LastMatchDate = latest.DateStart + latest.Duration;
            }

            player.WinCount  = matches.Count(x => x.Won);
            player.LoseCount = matches.Count(x => !x.Won);

            // рейтинги
            var ratings = GetRatings(openDota, player);

            if (ratings.Count > 0)
            {
                dataManager.Ratings.AddRange(ratings);

                player.LastRatingDate = ratings.Max(x => x.Date);
            }

            return(player);
        }
コード例 #2
0
        private void InfoThreadFunc(object state)
        {
            using var scope = serviceScopeFactory.CreateScope();
            var dataManager = scope.ServiceProvider.GetRequiredService <DataManager>();

            var players = dataManager.Players.ToList();

            foreach (var player in players)
            {
                var info = openDota.Player(player.Id);
                if (info != null)
                {
                    player.Name      = info.profile.personaname;
                    player.SteamId   = info.profile.steamid;
                    player.SoloRank  = info.solo_competitive_rank;
                    player.PartyRank = info.competitive_rank;
                    player.RankTier  = info.rank_tier;

                    dataManager.SaveChanges();
                }
            }
        }