예제 #1
0
 public void SaveApTimeline(Match m, string patch)
 {
     foreach (var t in m.Teams)
     {
         foreach (var p in t.Players)
         {
             IList <ApTimeLine> timelines = ApTimeLine.GetPlayerApTimeline(p, m.Patch, m.Id, t.TeamId);
             foreach (var time in timelines)
             {
                 MySqlCommand cmd = new MySqlCommand("insert_timeline", connection);
                 cmd.CommandType = CommandType.StoredProcedure;
                 cmd.Parameters.Add(new MySqlParameter("pMatchId", time.MatchId));
                 cmd.Parameters.Add(new MySqlParameter("pParticipantId", time.PlayerId));
                 cmd.Parameters.Add(new MySqlParameter("pRank", p.Rank));
                 cmd.Parameters.Add(new MySqlParameter("pChampionId", p.SelectedChampion.Id));
                 cmd.Parameters.Add(new MySqlParameter("pRole", p.Role.ToString()));
                 cmd.Parameters.Add(new MySqlParameter("pLane", p.Lane.ToString()));
                 cmd.Parameters.Add(new MySqlParameter("pTeamId", time.TeamId));
                 cmd.Parameters.Add(new MySqlParameter("pTotalAP", time.TotalAp));
                 cmd.Parameters.Add(new MySqlParameter("pTotalMR", time.TotalMr));
                 cmd.Parameters.Add(new MySqlParameter("pMinute", time.Minute));
                 cmd.Parameters.Add(new MySqlParameter("pWinner", t.Winner));
                 cmd.Parameters.Add(new MySqlParameter("pCurrentGold", time.CurrentGold));
                 cmd.Parameters.Add(new MySqlParameter("pGoldSpent", time.GoldSpent));
                 cmd.Parameters.Add(new MySqlParameter("pItemsIds", string.Join("|", time.Items.Select(i => i.Id))));
                 cmd.Parameters.Add(new MySqlParameter("pPatch", patch));
                 cmd.ExecuteNonQuery();
             }
         }
     }
 }
예제 #2
0
        public void EditTimeline(ApTimeLine time)
        {
            MySqlCommand cmd = new MySqlCommand("edit_timeline", connection);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new MySqlParameter("pMatchId", time.MatchId));
            cmd.Parameters.Add(new MySqlParameter("pParticipantId", time.PlayerId));
            cmd.Parameters.Add(new MySqlParameter("pTotalAP", time.TotalAp));
            cmd.Parameters.Add(new MySqlParameter("pMinute", time.Minute));
            var reader = cmd.ExecuteReader();
        }
예제 #3
0
        public IList <ApTimeLine> GetTimelines()
        {
            MySqlCommand cmd = new MySqlCommand("get_timelines", connection);

            cmd.CommandType = CommandType.StoredProcedure;
            var reader = cmd.ExecuteReader();
            IList <ApTimeLine> timeline = new List <ApTimeLine>();

            while (reader.Read())
            {
                ApTimeLine t = ApTimeLine.Mapper(reader);
                timeline.Add(t);
            }
            return(timeline);
        }
예제 #4
0
        public IList <ApTimeLine> GetTimelines(int idchamp)
        {
            MySqlCommand cmd = new MySqlCommand("get_timelines_pChampion", connection);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new MySqlParameter("pIdChampion", idchamp));
            var reader = cmd.ExecuteReader();
            IList <ApTimeLine> timeline = new List <ApTimeLine>();

            while (reader.Read())
            {
                ApTimeLine t = ApTimeLine.Mapper(reader);
                timeline.Add(t);
            }
            return(timeline);
        }
예제 #5
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }