public static AvgTimeLine Mapper(MySqlDataReader reader) { var a = new AvgTimeLine(); a.ChampionId = reader.GetInt32("IdChamp"); a.Rank = reader.GetString("Rank"); a.Role = reader.GetString("Role"); a.AvgAp = reader.GetInt32("AvgAp"); a.AvgMr = reader.GetInt32("AvgMr"); a.AvgGoldSpent = reader.GetInt32("AvgGoldSpent"); a.Items = reader.GetString("MostFrequentItems"); a.Minute = reader.GetInt32("Minute"); a.TotalGames = reader.GetInt32("TotalGames"); a.Patch = reader.GetString("Patch"); //a.Items = new List<Item>(); //foreach (var itemId in itemsIds.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries)) //{ // if (a.Patch.Contains("5.11")) // a.Items.Add(ItemsCache.GetItemV511(int.Parse(itemId))); // else // a.Items.Add(ItemsCache.GetItemV514(int.Parse(itemId))); //} return(a); }
public static AvgTimeLine Mapper(MySqlDataReader reader) { var a = new AvgTimeLine(); a.ChampionId = reader.GetInt32("IdChamp"); a.Rank = reader.GetString("Rank"); a.Role = reader.GetString("Role"); a.AvgAp = reader.GetInt32("AvgAp"); a.AvgMr = reader.GetInt32("AvgMr"); a.AvgGoldSpent = reader.GetInt32("AvgGoldSpent"); a.Items = reader.GetString("MostFrequentItems"); a.Minute = reader.GetInt32("Minute"); a.TotalGames = reader.GetInt32("TotalGames"); a.Patch = reader.GetString("Patch"); //a.Items = new List<Item>(); //foreach (var itemId in itemsIds.Split(new []{'|'}, StringSplitOptions.RemoveEmptyEntries)) //{ // if (a.Patch.Contains("5.11")) // a.Items.Add(ItemsCache.GetItemV511(int.Parse(itemId))); // else // a.Items.Add(ItemsCache.GetItemV514(int.Parse(itemId))); //} return a; }
public void SaveAvgTimeLine(AvgTimeLine av) { MySqlCommand cmd = new MySqlCommand("insert_avg_timeline", connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("pIdChamp",av.ChampionId)); cmd.Parameters.Add(new MySqlParameter("pRank", av.Rank)); cmd.Parameters.Add(new MySqlParameter("pRole", av.Role)); cmd.Parameters.Add(new MySqlParameter("pAvgAp", av.AvgAp)); cmd.Parameters.Add(new MySqlParameter("pAvgMr", av.AvgMr)); cmd.Parameters.Add(new MySqlParameter("pAvgGoldSpent", av.AvgGoldSpent)); cmd.Parameters.Add(new MySqlParameter("pMostFrequentItems", av.Items)); cmd.Parameters.Add(new MySqlParameter("pMinute", av.Minute)); cmd.Parameters.Add(new MySqlParameter("pTotalGames", av.TotalGames)); cmd.Parameters.Add(new MySqlParameter("pPatch", av.Patch)); cmd.ExecuteNonQuery(); }
private static void ProcessAverages() { var champs = Data.Entidades.Caches.ChampionsCache.Get(); foreach (var champ in champs) { IList<ApTimeLine> timelines; using (var data = new Data.SqlData()) { timelines = data.GetTimelines(champ.Id); } var cleanTimelines = new List<ApTimeLine>(); var matchgroups = timelines.GroupBy(t => t.MatchId); int j = 0; foreach (var match in matchgroups) { var participantgroups = match.OrderBy(m => m.Minute).GroupBy(m => m.PlayerId); foreach (var player in participantgroups) { for (int i = 0; i < player.Count() - 1; i++) { cleanTimelines.Add(player.ElementAt(i)); while (player.ElementAt(i + 1).Minute > cleanTimelines.ElementAt(j).Minute + 1) { var newmin = new ApTimeLine(cleanTimelines.ElementAt(j)); newmin.Minute++; cleanTimelines.Add(newmin); j++; } j++; } } } var patchgroups = cleanTimelines.GroupBy(t => t.Patch); foreach (var patch in patchgroups) { var rankgroups = patch.GroupBy(p => p.Rank); foreach (var rank in rankgroups) { var rolegroups = rank.GroupBy(p => Data.Entidades.EnumHelpers.GetRealRoles(p.Role, p.Lane)); foreach (var role in rolegroups) { var minutegroups = role.OrderBy(m => m.Minute).GroupBy(t => t.Minute); foreach (var minute in minutegroups) { var items = new List<Item>(); foreach (var match in minute) { match.Items = Data.Entidades.Caches.ItemsCache.RemoveTrinkets(match.Items); foreach (var item in match.Items) { items.Add(item); } } var q = from x in items group x by x into g let count = g.Count() orderby count descending select new { Value = g.Key, Count = count }; var e = q.OrderByDescending(i => i.Count).Take(10); var avgt = new AvgTimeLine(); avgt.Minute = minute.Key; avgt.ChampionId = champ.Id; avgt.AvgAp = minute.Average(m => m.TotalAp); avgt.AvgMr = minute.Average(m => m.TotalMr); avgt.Patch = patch.Key; avgt.AvgGoldSpent = (int)minute.Average(m => m.GoldSpent); avgt.Rank = rank.Key; avgt.Role = role.Key.ToString(); avgt.TotalGames = minute.Count(); avgt.Items = string.Join("|", e.Select(i => string.Format("{0}:{1}", i.Value.Id, i.Count))); using (var data = new Data.SqlData()) { data.SaveAvgTimeLine(avgt); } } } } } } }