public ActionResult ApiIndex(string overrideAccept = null, string countryFilter = null, int minActiveSize = 0, int maxActiveSize = 200, int minWn8T15 = 0, int maxWn8T15 = 8000, string clanFilter = null) { var getter = HttpRuntime.Cache.Get("FileGetter", GlobalHelper.CacheMinutes, () => new FileGetter(GlobalHelper.DataFolder)); var clans = getter.GetAllRecent(true).ToArray(); var apiClansReturn = new ApiClansReturn(clans, countryFilter, minActiveSize, maxActiveSize, minWn8T15, maxWn8T15, clanFilter); if (Request.AcceptTypes != null && Request.AcceptTypes.Contains("application/text") || overrideAccept == "application/text") { var sb = new StringBuilder(); sb.AppendLine( "ClanTag;Name;Country;Moment;Actives;ActiveBattles;ActiveWinRate;WN8a;WN8t15;WN8t7;Members;Battles;WinRate;WN8;IsOldData;IsObsolete"); foreach (var c in clans) { sb.AppendFormat(CultureInfo.CurrentCulture, "{0};{1};{2};{3:o};{4};{5};{6:r};{7:r};{8:r};{9:r};{10};{11};{12:r};{13:r};{14};{15}", c.ClanTag, c.Name, c.Country, c.Moment, c.Active, c.ActiveBattles, c.ActiveWinRate, c.ActiveWn8, c.Top15Wn8, c.Top7Wn8, c.Count, c.TotalBattles, c.TotalWinRate, c.TotalWn8, c.IsOldData, c.IsObsolete); sb.AppendLine(); } return(Content(sb.ToString(), "text/plain", Encoding.UTF8)); } var json = JsonConvert.SerializeObject(apiClansReturn, Formatting.Indented); return(Content(json, "application/json", Encoding.UTF8)); }
// To grid dynamic return public ActionResult ClansGrid() { try { int draw = 0; var s = Request["draw"]; if (!string.IsNullOrWhiteSpace(s)) { draw = int.Parse(s); } // country filter and clan filter string countryFilter = null; string clanFilter = null; s = Request["columns[1][search][value]"]; if (!string.IsNullOrWhiteSpace(s)) { var a = s.Split(';'); if (a.Length >= 1) { clanFilter = a[0].Trim().ToUpperInvariant(); } if (a.Length >= 2) { countryFilter = a[1].Trim().ToUpperInvariant(); } } // Activity Filter var activesAndWn8Filter = false; var minActiveSize = 7; var maxActiveSize = 200; var minWn8T15 = 900; var maxWn8T15 = 10000; s = Request["columns[7][search][value]"]; if (!string.IsNullOrWhiteSpace(s)) { if (s == "all") { activesAndWn8Filter = true; minActiveSize = 0; maxActiveSize = 200; minWn8T15 = 0; maxWn8T15 = int.MaxValue; } else if (s == "big") { activesAndWn8Filter = true; minActiveSize = 15; maxActiveSize = 200; } else if (s == "small") { activesAndWn8Filter = true; minActiveSize = 0; maxActiveSize = 14; } else { var a = s.Split(';'); if (a.Length >= 1) { if (int.TryParse(a[0].Trim(), out var i)) { minActiveSize = i; } } if (a.Length >= 2) { if (int.TryParse(a[1].Trim(), out var i)) { maxActiveSize = i; } } } } // WN8t15 Filter if (!activesAndWn8Filter) { s = Request["columns[3][search][value]"]; if (!string.IsNullOrWhiteSpace(s)) { var a = s.Split(';'); if (a.Length >= 1) { if (int.TryParse(a[0].Trim(), out var i)) { minWn8T15 = i; } } if (a.Length >= 2) { if (int.TryParse(a[1].Trim(), out var i)) { maxWn8T15 = i; } } } } var getter = HttpRuntime.Cache.Get("FileGetter", GlobalHelper.CacheMinutes, () => new FileGetter(GlobalHelper.DataFolder)); var clans = getter.GetAllRecent(true).ToArray(); var apiClansReturn = new ApiClansReturn(clans, countryFilter, minActiveSize, maxActiveSize, minWn8T15, maxWn8T15, clanFilter); var data = apiClansReturn.Clans.ToArray().AsEnumerable(); for (var i = 0; i <= 12; ++i) { s = Request[$"order[{i}][column]"]; if (!string.IsNullOrWhiteSpace(s)) { var c = int.Parse(s); var dir = Request[$"order[{i}][dir]"]; if (!string.IsNullOrWhiteSpace(dir)) { switch (c) { case 0: data = data.OrderBy(t => t.Rank); break; case 1: data = data.OrderBy(t => t.ClanTag.TrimStart('_', '-').ToUpperInvariant()); break; case 2: data = data.OrderBy(t => t.ActiveWn8); break; case 3: data = data.OrderBy(t => t.Top15Wn8); break; case 4: data = data.OrderBy(t => t.Top7Wn8); break; case 5: data = data.OrderBy(t => t.ActiveWinRate); break; case 6: data = data.OrderBy(t => t.ActiveBattles); break; case 7: data = data.OrderBy(t => t.Active); break; case 8: data = data.OrderBy(t => t.TotalWn8); break; case 9: data = data.OrderBy(t => t.TotalWinRate); break; case 10: data = data.OrderBy(t => t.TotalBattles); break; case 11: data = data.OrderBy(t => t.Count); break; case 12: data = data.OrderBy(t => t.CompositionPs); break; } if (dir == "desc") { data = data.Reverse(); } data = data.ToArray().AsEnumerable(); } } } var start = int.Parse(Request["start"] ?? "0"); var length = int.Parse(Request["length"] ?? "25"); var enumerable = data as Clan[] ?? data.ToArray(); var filtered = enumerable.ToArray(); var paged = filtered.Skip(start).Take(length).ToArray(); var o = new { draw, recordsTotal = apiClansReturn.Count, recordsFiltered = filtered.Length, data = paged.Select(c => new { DT_RowId = $"id_{c.ClanId}", DT_RowClass = "text-nowrap", c.Rank, ClanTag = $"{c.ClanTag};{c.Country ?? string.Empty};{c.IsOldData};{c.Name.Replace(";","|ç|")}", Composition = $"{c.CompositionPs*100.0:N0};{c.CountPs};{c.CountXbox}", Active = c.Active.ToString("N0"), ActiveBattles = $"{c.ActiveBattles:N0};{c.Moment:O}", ActiveWinRate = c.ActiveWinRate.ToString("P1"), ActiveWn8 = $"{c.ActiveWn8:N0};{c.ActiveWn8.ToLabelClass()};{c.ActiveWn8.ToRatingString()};{c.ActiveWn8.ToWebColor()}", Top15Wn8 = $"{c.Top15Wn8:N0};{c.Top15Wn8.ToLabelClass()};{c.Top15Wn8.ToRatingString()};{c.Top15Wn8.ToWebColor()}", Top7Wn8 = $"{c.Top7Wn8:N0};{c.Top7Wn8.ToLabelClass()};{c.Top7Wn8.ToRatingString()};{c.Top7Wn8.ToWebColor()}", Count = c.Count.ToString("N0"), TotalBattles = c.TotalBattles.ToString("N0"), TotalWinRate = c.TotalWinRate.ToString("P1"), TotalWn8 = $"{c.TotalWn8:N0};{c.TotalWn8.ToLabelClass()};{c.TotalWn8.ToRatingString()};{c.TotalWn8.ToWebColor()}" }).ToArray() }; var json = JsonConvert.SerializeObject(o, Formatting.Indented); return(Content(json, "application/json", Encoding.UTF8)); } catch (Exception ex) { Log.Error("Grid Error", ex); var o = new { error = ex.ToString() }; var json = JsonConvert.SerializeObject(o, Formatting.Indented); return(Content(json, "application/json", Encoding.UTF8)); } }