示例#1
0
        public ActionResult Index(string ddlPlayer)
        {
            CapivaraModels Capivara = new CapivaraModels();
            int            id       = Convert.ToInt32(Request.Form[0]);

            long idGuilda = 0;

            long.TryParse(User.Identity.GetIdGuilda(), out idGuilda);

            //ObterPlayer
            Capivara = new Player().ObterPlayerCapivara(id, idGuilda);

            //Obter a segunda da semana passada
            DateTime segundaFeira = DateTime.Today.AddDays(((int)(DateTime.Today.DayOfWeek) * -1) + 1);

            //Defesas da Semana
            Capivara.DefesasConsolidado = new GPCLib.DataAccess.DefesaPlayer().ListarDefesaConsolidado(segundaFeira.AddDays(-7), segundaFeira.AddDays(-1), id, idGuilda);

            GPCLib.DataAccess.AtaquesPlayer daAtaquesPlayer = new AtaquesPlayer();
            //Ataques da Semana
            Capivara.AtaquesConsolidado = daAtaquesPlayer.ListarAtaqueConsolidado(segundaFeira, segundaFeira.AddDays(6), id, idGuilda);

            //Obter Time Defesa GVG (passar data de Domingo)
            Capivara.TimeGVG = new DefesaPlayer().ObterTimeDefesaGVG(id, segundaFeira.AddDays(-1), idGuilda);

            Capivara = CalcularStreak(new AtaquesPlayer().ListarAtaques(id, idGuilda), Capivara);

            return(View(Capivara));
        }
示例#2
0
        private CapivaraModels CalcularStreak(List <GPCLib.Models.LutasModels> Lutas, CapivaraModels capi)
        {
            List <LutasModels> LutasOrdenado = Lutas.OrderBy(o => o.DataHora).ToList();

            int countStreak     = 0;
            int vitoriaAnterior = 0;

            int      countMaiorStreak   = 0;
            DateTime dInicioMaiorStreak = DateTime.MinValue;
            DateTime dFimMaiorStreak    = DateTime.MinValue;

            DateTime dInicioStreak = DateTime.MinValue;
            DateTime dFimStreak    = DateTime.MinValue;

            if (Lutas.Count > 0)
            {
                //se o indice 2 já for uma vitoria, guarda a da inicio e a vitorianAnterir
                if (Lutas[0].Vitoria == 2)
                {
                    dInicioStreak   = Lutas[0].DataHora;
                    vitoriaAnterior = 2;
                }
            }


            foreach (LutasModels item in LutasOrdenado)
            {
                if (item.Vitoria == 2)
                {
                    //Se o loop anterior for diretente de vitoria tem que resetar a data inicio.
                    if (vitoriaAnterior != 2)
                    {
                        dInicioStreak = item.DataHora;
                    }
                    countStreak++;
                    dFimStreak = item.DataHora;
                }
                else
                {
                    //guardar o maior streak
                    if (countStreak >= countMaiorStreak && countStreak > 0)
                    {
                        dInicioMaiorStreak = dInicioStreak;
                        dFimMaiorStreak    = dFimStreak;
                        countMaiorStreak   = countStreak;
                    }


                    countStreak = 0;
                    dFimStreak  = DateTime.MinValue;
                }

                vitoriaAnterior = item.Vitoria;
            }

            //guardar o maior streak
            if (countStreak >= countMaiorStreak && countStreak > 0)
            {
                dInicioMaiorStreak = dInicioStreak;
                dFimMaiorStreak    = dFimStreak;
                countMaiorStreak   = countStreak;
            }

            capi.FimStreak     = dFimMaiorStreak;
            capi.InicioStreak  = dInicioMaiorStreak;
            capi.StreakVitoria = countMaiorStreak;

            return(capi);
        }
示例#3
0
        public CapivaraModels ObterPlayerCapivara(int idPlayer, long idGuilda)
        {
            SqlConnection conexao = new SqlConnection();
            SqlCommand    command = new SqlCommand();

            conexao.ConnectionString = ConfigurationManager.ConnectionStrings["DB_SW"].ToString();
            StringBuilder select = new StringBuilder();

            //multiguild
            select.AppendLine("SET DATEFORMAT dmy;");
            select.AppendLine("select a.Nome,a.Imagem,");
            select.AppendLine("(select count(vitoria) from dbo.Lutas b inner join dbo.Guilda_Player b1 on b1.idPlayer = b.CodPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where b.CodPlayer = a.id and  b.vitoria = 2) Vitorias,");
            select.AppendLine("(select count(vitoria) from dbo.Lutas c inner join dbo.Guilda_Player b1 on b1.idPlayer = c.CodPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where c.CodPlayer = a.id and  c.vitoria = 1) Empates,");
            select.AppendLine("(select count(vitoria) from dbo.Lutas d inner join dbo.Guilda_Player b1 on b1.idPlayer = d.CodPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where d.CodPlayer = a.id and  d.vitoria = 0) Derrotas,");
            select.AppendLine("(select count(d1.vitoria) from dbo.PlayerDefesas d1 inner join dbo.Guilda_Player b1 on b1.idPlayer = d1.IdPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where d1.vitoria = 2 and d1.IdPlayer = a.id) DefesaSucesso,");
            select.AppendLine("(select count(d2.vitoria) from dbo.PlayerDefesas d2 inner join dbo.Guilda_Player b1 on b1.idPlayer = d2.IdPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where d2.vitoria = 1 and d2.IdPlayer = a.id) DefesaEmpate,");
            select.AppendLine("(select count(d3.vitoria) from dbo.PlayerDefesas d3 inner join dbo.Guilda_Player b1 on b1.idPlayer = d3.IdPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where d3.vitoria = 0 and d3.IdPlayer = a.id ) DefesaDerrota,");
            select.AppendLine("(select count(1) from ");
            select.AppendLine("DB_SW.dbo.PlayerStatus e ");
            select.AppendLine("inner join DB_SW.dbo.Batalhas f on f.id = e.idBatalha and f.IdGuildaAtacante = @idGuilda");
            select.AppendLine("inner join dbo.Guilda_Player b1 on b1.idPlayer = e.IdPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda");
            select.AppendLine("where ");
            select.AppendLine("e.idPlayer = a.id and e.Status = 'S') Escalado,");
            select.AppendLine("(select count(1) from ");
            select.AppendLine("DB_SW.dbo.PlayerStatus g ");
            select.AppendLine("inner join DB_SW.dbo.Batalhas h on h.id = g.idBatalha and h.IdGuildaAtacante = @idGuilda");
            select.AppendLine("inner join dbo.Guilda_Player b1 on b1.idPlayer = g.IdPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda");
            select.AppendLine("where g.idPlayer = a.id and g.Status = 'S'");
            select.AppendLine("and not exists (select 0 from DB_SW.dbo.Lutas i inner join dbo.Guilda_Player b1 on b1.idPlayer = i.CodPlayer and b1.ativo = 1 and b1.idGuilda = @idGuilda where i.CodPlayer = g.IdPlayer and i.CodBatalhas = g.IdBatalha))NAtacou");
            select.AppendLine("from dbo.Player a");
            select.AppendLine("where ");
            select.AppendLine("a.id = @idPlayer");

            command.CommandText = select.ToString();
            command.CommandType = System.Data.CommandType.Text;

            command.Parameters.Add(new SqlParameter("@idPlayer", System.Data.SqlDbType.Int));
            command.Parameters["@idPlayer"].Value = idPlayer;

            command.Parameters.Add(new SqlParameter("@idGuilda", System.Data.SqlDbType.BigInt));
            command.Parameters["@idGuilda"].Value = idGuilda;

            CapivaraModels objRetorno = new CapivaraModels();

            conexao.Open();
            command.Connection = conexao;
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                objRetorno                        = new CapivaraModels();
                objRetorno.Player                 = new Player().ObterPlayer(idPlayer);
                objRetorno.PercentualDefesa       = 0;
                objRetorno.PercentualParticipacao = 0;
                objRetorno.PercentualVitoria      = 0;
                objRetorno.Vitorias               = Convert.ToInt32(reader["Vitorias"].ToString());
                objRetorno.Empates                = Convert.ToInt32(reader["Empates"].ToString());
                objRetorno.Derrotas               = Convert.ToInt32(reader["Derrotas"].ToString());
                objRetorno.Escalado               = Convert.ToInt32(reader["Escalado"].ToString());
                objRetorno.NAtacou                = Convert.ToInt32(reader["NAtacou"].ToString());
                objRetorno.DefesaVitorias         = Convert.ToInt32(reader["DefesaSucesso"].ToString());
                objRetorno.DefesaEmpates          = Convert.ToInt32(reader["DefesaEmpate"].ToString());
                objRetorno.DefesaDerrotas         = Convert.ToInt32(reader["DefesaDerrota"].ToString());
                objRetorno.Imagem                 = reader["Imagem"].ToString();
            }

            //Ataques
            if (objRetorno.Vitorias > 0 || objRetorno.Empates > 0 || objRetorno.Derrotas > 0)
            {
                objRetorno.PercentualVitoria = Math.Round((Convert.ToDouble(objRetorno.Vitorias) / (objRetorno.Vitorias + objRetorno.Empates + objRetorno.Derrotas) * 100));
            }

            //Defesas
            if (objRetorno.DefesaVitorias > 0 || objRetorno.DefesaEmpates > 0 || objRetorno.DefesaDerrotas > 0)
            {
                objRetorno.PercentualDefesa = Math.Round((Convert.ToDouble(objRetorno.DefesaVitorias) / (objRetorno.DefesaVitorias + objRetorno.DefesaEmpates + objRetorno.DefesaDerrotas) * 100));
            }

            //Escalado
            if (objRetorno.Escalado > 0)
            {
                objRetorno.PercentualParticipacao = Math.Round(((objRetorno.Escalado - objRetorno.NAtacou) / Convert.ToDouble(objRetorno.Escalado)) * 100);
            }

            return(objRetorno);
        }