Beispiel #1
0
 public List <CardBase> GetCards()
 {
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         return(client.GetCards().Items.OrderBy(p => p.MaxLevel).ToList());
     }
 }
Beispiel #2
0
 public IEnumerable <TournamentItem> GetTournaments()
 {
     try
     {
         var tags = new Dictionary <string, string>();
         using (var client = new CRClient(_uriBaseUrl, _credentials))
         {
             foreach (var car1 in Alphabet)
             {
                 if (DemandStopping)
                 {
                     break;
                 }
                 var tournament = client.SearchTournaments($"{car1}");
                 foreach (var item in tournament.Items)
                 {
                     if (TournamentIsFree(item))
                     {
                         if (!tags.ContainsKey(item.Tag))
                         {
                             tags.Add(item.Tag, null);
                             yield return(item);
                         }
                     }
                 }
             }
         }
     }
     finally
     {
         DemandStopping = false;
     }
 }
Beispiel #3
0
 public List <UpcomingChestsListItemsItem> GetChests()
 {
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         return(client.GetPlayerUpcomingChests(Config.PlayerTag).Items.ToList());
     }
 }
Beispiel #4
0
 public Location GetLocation(string countryName = null)
 {
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         var locations = client.GetLocations();
         return(locations.Items.FirstOrDefault(p => p.Name == countryName));
     }
 }
Beispiel #5
0
 public SearchResultClan GetDetailClan()
 {
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         var clans = client.SearchClans(Clan.Name);
         return(clans.Items.FirstOrDefault(p => p.Tag == Clan.Tag));
     }
 }
Beispiel #6
0
 public Clan GetClan(string tag = null)
 {
     tag = (tag == null) ? Config.ClanTag : (!tag.StartsWith("#")) ? $"#{tag}" : tag;
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         return(client.GetClan(tag));
     }
 }
Beispiel #7
0
 public PlayerDetail GetPlayer(string tag = null)
 {
     tag = (tag == null)?Config.PlayerTag: (!tag.StartsWith("#"))? $"#{tag}":tag;
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         return(client.GetPlayer(tag));
     }
 }
Beispiel #8
0
        public List <CardStat> GetCarsUsageTopRanking(int?idlocation = null, int nbcardAssociated = 8)
        {
            var playerCards = new List <PlayerDetail>();
            var cardsUsage  = new List <CardStat>();

            try
            {
                using (var client = new CRClient(_uriBaseUrl, _credentials))
                {
                    var players = client.GetPlayerRanking(idlocation?.ToString());
                    foreach (var player in players.Items)
                    {
                        if (DemandStopping)
                        {
                            break;
                        }
                        var playerDetail = client.GetPlayer(player.Tag);
                        if (playerDetail != null && playerDetail.CurrentCards != null)
                        {
                            playerCards.Add(playerDetail);
                        }
                    }
                }
                cardsUsage = playerCards.SelectMany(p => p.CurrentCards).GroupBy(p => p.Name).Select(p => new CardStat {
                    Name = p.First().Name, Count = p.Count(), Url = p.First().IconUrls.Medium
                }).OrderByDescending(p => p.Count).ToList();
                var posi      = 0;
                var lastusage = int.MaxValue;
                foreach (var card in cardsUsage)
                {
                    if (card.Count != lastusage)
                    {
                        posi++;
                        lastusage = card.Count;
                    }
                    card.Rank            = posi;
                    card.AssociatedCards = playerCards.Where(p => p.CurrentCards.Any(c => c.Name == card.Name)).SelectMany(p => p.CurrentCards).Where(p => p.Name != card.Name).GroupBy(p => p.Name).Select(p => new CardStat {
                        Name = p.First().Name, Count = p.Count(), Url = p.First().IconUrls.Medium
                    }).OrderByDescending(p => p.Count).Take(nbcardAssociated).ToList();
                }
            }
            catch (Exception ex)
            {
                Logger?.Error(ex);
            }
            finally
            {
                DemandStopping = false;
            }
            return(cardsUsage);
        }
Beispiel #9
0
        public List <CardStat> GetCardsWinByPlayerIntoClan(int startTrophes, int?locationId = null)
        {
            var result = new List <CardStat>();

            try
            {
                var cardwins = new List <CardStat>();
                var clans    = GetClansRank(startTrophes, locationId);
                using (var client = new CRClient(_uriBaseUrl, _credentials))
                {
                    foreach (var clan in clans)
                    {
                        if (DemandStopping)
                        {
                            break;
                        }
                        var clanDetail = client.GetClan(clan.Tag);
                        var cardwin    = InternalGetCardWin(clanDetail.MemberList.Cast <PlayerBase>().ToList());
                        cardwins.AddRange(cardwin);
                    }
                }

                result = cardwins.GroupBy(p => p.Name).Select(p => new CardStat {
                    Name = p.First().Name, Count = p.Sum(c => c.Count), Url = p.First().Url
                }).OrderByDescending(p => p.Count).ToList();

                var posi      = 0;
                var lastusage = int.MaxValue;
                foreach (var card in result)
                {
                    if (card.Count != lastusage)
                    {
                        posi++;
                        lastusage = card.Count;
                    }
                    card.Rank = posi;
                }
            }
            catch (Exception ex)
            {
                Logger?.Error(ex);
            }
            finally
            {
                DemandStopping = false;
            }
            return(result);
        }
Beispiel #10
0
 public int GetClanRank(bool local = true)
 {
     using (var client = new CRClient(_uriBaseUrl, _credentials))
     {
         var listClan = GetClansRank(Clan.ClanScore.Value - 50, local?Clan.Location.Id:null);
         var posi     = 0;
         foreach (var clantri in listClan)
         {
             posi++;
             if (clantri.Tag == Clan.Tag)
             {
                 break;
             }
         }
         return(posi);
     }
 }
Beispiel #11
0
        public List <SearchResultClan> GetClansRank(int startTrophes, int?locationId)
        {
            var result = new List <SearchResultClan>();

            try
            {
                using (var client = new CRClient(_uriBaseUrl, _credentials))
                {
                    var dico    = new Dictionary <string, SearchResultClan>();
                    var wait    = 2;
                    var waitEnd = wait;

                    while (waitEnd > 0)
                    {
                        if (DemandStopping)
                        {
                            break;
                        }
                        var clans = client.SearchClans(locationId: locationId, minScore: startTrophes);
                        foreach (var clanfind in clans.Items)
                        {
                            if (!dico.ContainsKey(clanfind.Tag))
                            {
                                dico.Add(clanfind.Tag, clanfind);
                            }
                        }
                        waitEnd       = clans.Items.Count < MaxItems ? waitEnd - 1 : wait;
                        startTrophes += 50;
                    }
                    result = dico.Select(p => p.Value).OrderByDescending(p => p.ClanScore).ToList();
                }
            }
            catch (Exception ex)
            {
                Logger?.Error(ex);
            }
            finally
            {
                DemandStopping = false;
            }
            return(result);
        }
Beispiel #12
0
        private List <CardStat> InternalGetCardWin(IList <PlayerBase> players)
        {
            var winners = new List <BattleLogItem>();

            using (var client = new CRClient(_uriBaseUrl, _credentials))
            {
                foreach (var player in players)
                {
                    if (DemandStopping)
                    {
                        break;
                    }
                    var battles = client.GetPlayerBattles(player.Tag).Where(p => p.Type == "PvP");
                    foreach (var battle in battles)
                    {
                        if (winners.All(p => !p.IsSame(battle)))
                        {
                            winners.Add(battle);
                        }
                    }
                }
                var cardsUsage = winners.SelectMany(p => p.Winners).SelectMany(p => p.Cards).GroupBy(p => p.Name).Select(p => new CardStat {
                    Name = p.First().Name, Count = p.Count(), Url = p.First().IconUrls.Medium
                }).OrderByDescending(p => p.Count).ToList();

                var posi      = 0;
                var lastusage = int.MaxValue;
                foreach (var card in cardsUsage)
                {
                    if (card.Count != lastusage)
                    {
                        posi++;
                        lastusage = card.Count;
                    }
                    card.Rank = posi;
                }
                return(cardsUsage);
            }
        }
Beispiel #13
0
        public List <CardStat> GetCardsWinTopPlayer(int?idlocation = null)
        {
            var result = new List <CardStat>();

            try
            {
                using (var client = new CRClient(_uriBaseUrl, _credentials))
                {
                    var players = client.GetPlayerRanking(idlocation?.ToString());
                    result = InternalGetCardWin(players.Items.Cast <PlayerBase>().ToList());
                }
            }
            catch (Exception ex)
            {
                Logger?.Error(ex);
            }
            finally
            {
                DemandStopping = false;
            }
            return(result);
        }