public static bool TryParse(this string s, out PremiumSelection premiumSelection) { if (string.IsNullOrWhiteSpace(s)) { premiumSelection = PremiumSelection.OnlyRegular; return(true); } if (Enum.TryParse(s, true, out premiumSelection)) { return(true); } if (bool.TryParse(s.ToLowerInvariant(), out var b)) { premiumSelection = b ? PremiumSelection.RegularAndPremium : PremiumSelection.OnlyRegular; return(true); } switch (s.ToLowerInvariant()) { case "f": case "0": case "r": case "regular": case "tree": premiumSelection = PremiumSelection.OnlyRegular; break; case "p": case "premium": case "gold": premiumSelection = PremiumSelection.OnlyPremium; break; case "t": case "1": case "a": case "all": case "b": case "both": case "rp": case "regular,premium": // ReSharper disable once StringLiteralTypo case "regularpremium": case "any": premiumSelection = PremiumSelection.RegularAndPremium; break; default: return(false); } return(true); }
public static bool Filter(this PremiumSelection premiumSelection, bool isPremium) { switch (premiumSelection) { case PremiumSelection.OnlyRegular: return(!isPremium); case PremiumSelection.OnlyPremium: return(isPremium); case PremiumSelection.RegularAndPremium: return(true); default: throw new ArgumentOutOfRangeException(nameof(premiumSelection), premiumSelection, @"Not supported"); } }
/// <summary> /// Top tanks by WN8 /// </summary> public IEnumerable <TankPlayerStatistics> GetTopTanks(ReferencePeriod period = ReferencePeriod.All, int minNumberOfTanks = 5, int minTier = 1, int maxTier = 10, PremiumSelection includePremiums = PremiumSelection.OnlyRegular, int minBattles = 1, HashSet <Nation> nationsFilters = null, HashSet <TankType> typesFilter = null) { var all = GetTanks(period, minTier, maxTier, minBattles: minBattles).ToArray(); if (nationsFilters != null && nationsFilters.Count > 0) { all = all.Where(t => nationsFilters.Contains(t.Nation)).ToArray(); } if (typesFilter != null && typesFilter.Count > 0) { all = all.Where(t => typesFilter.Contains(t.Type)).ToArray(); } all = all.Where(t => includePremiums.Filter(t.IsPremium)).ToArray(); var top = FilterTopTanks(all, minNumberOfTanks, t => t.Wn8); return(top.Any() ? top : Array.Empty <TankPlayerStatistics>()); }