public IList <AvgTimeLine> GetAvgTimelines() { MySqlCommand cmd = new MySqlCommand("get_avgtimeline", connection); cmd.CommandType = CommandType.StoredProcedure; var reader = cmd.ExecuteReader(); IList <AvgTimeLine> timeline = new List <AvgTimeLine>(); while (reader.Read()) { AvgTimeLine t = AvgTimeLine.Mapper(reader); timeline.Add(t); } return(timeline); }
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); } } } } } } }