public static string sn;           //Variável para armazenar a contra senha e enviar para o menu de pesquisa quando der duplo clique em alguma linha do datagrid.

        public void PesquisarGeralPremium_Click(object sender, RoutedEventArgs e)
        {
            //Definindo o padrão de cultura pt-BR para que as datas fiquem no formato dia/mês/ano:
            CultureInfo.CurrentCulture = new CultureInfo("pt-BR", false);
            Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);

            try
            {
                SqlConnection sqlcon = ConexãoDB.obterConexão();

                string LikePesquisa = "%" + BoxPesquisaGeralPremium.Text.Trim() + "%";

                SqlCommand sqlcmd = new SqlCommand("SelGeralPremium", sqlcon);
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.Parameters.AddWithValue("@Pesquisa", LikePesquisa);

                SqlDataAdapter        dataAdp = new SqlDataAdapter(sqlcmd);
                System.Data.DataTable dt      = new System.Data.DataTable();
                dataAdp.Fill(dt);
                GridBuscaGeralPremium.ItemsSource = dt.DefaultView;
                dataAdp.Update(dt);

                ConexãoDB.fecharConexao(sqlcon);
            }
            catch (Exception erro)
            {
                new CaixaDeMensagem(erro.Message);
            }
        }
        private void Btn_Remover(object sender, RoutedEventArgs e)
        {
            try
            {
                SqlConnection sqlcon = ConexãoDB.obterConexão();

                List <DataRow> listaDelDevedores = new List <DataRow>();

                foreach (DataRowView drRow in GridPendencias.SelectedItems)
                {
                    listaDelDevedores.Add(drRow.Row);
                    string drSnR = drRow.Row.ItemArray[4].ToString();

                    SqlCommand sqlcmd = new SqlCommand("DelDevedor", sqlcon);
                    sqlcmd.CommandType = CommandType.StoredProcedure;
                    sqlcmd.Parameters.AddWithValue("@snR", drSnR);
                    sqlcmd.ExecuteNonQuery();
                }
            }
            catch (Exception erro)
            {
                new CaixaDeMensagem(erro.Message);
            }

            Listar();          //Atualiza a lista.
        }
        private void AddDevedor_Click(object sender, RoutedEventArgs e)
        {
            if (GridPesquisaNotas.SelectedItems.Count > 0)
            {
                SqlConnection sqlcon = ConexãoDB.obterConexão();

                List <DataRow> listaAddDevedores = new List <DataRow>();

                foreach (DataRowView drRow in GridPesquisaNotas.SelectedItems)
                {
                    listaAddDevedores.Add(drRow.Row);

                    string drCliente  = drRow.Row.ItemArray[0].ToString();
                    string drFantasia = drRow.Row.ItemArray[1].ToString();
                    string drCodigo   = drRow.Row.ItemArray[2].ToString();
                    string drNota     = drRow.Row.ItemArray[3].ToString();
                    string drSn       = drRow.Row.ItemArray[4].ToString();
                    string drProduto  = drRow.Row.ItemArray[5].ToString();
                    string data       = DateTime.Now.ToShortDateString();

                    try
                    {
                        SqlCommand sqlcmd = new SqlCommand("AddDevedor", sqlcon);
                        sqlcmd.CommandType = CommandType.StoredProcedure;
                        sqlcmd.Parameters.AddWithValue("@Cliente", drCliente);
                        sqlcmd.Parameters.AddWithValue("@Fantasia", drFantasia);
                        sqlcmd.Parameters.AddWithValue("@Código", drCodigo);
                        sqlcmd.Parameters.AddWithValue("@Nota", drNota);
                        sqlcmd.Parameters.AddWithValue("@SN", drSn);
                        sqlcmd.Parameters.AddWithValue("@Produto", drProduto);
                        sqlcmd.Parameters.AddWithValue("@DataRegistro", data);
                        sqlcmd.ExecuteNonQuery();

                        new CaixaDeMensagem("Registrado com sucesso!");
                    }
                    catch (SqlException erro)
                    {
                        new CaixaDeMensagem(erro.Message);
                    }
                }
            }
            else
            {
                new CaixaDeMensagem("Nenhum cliente selecionado.");
            }
        }
        private void Btn_Excluir(object sender, RoutedEventArgs e)
        {
            try
            {
                SqlConnection sqlcon = ConexãoDB.obterConexão();

                DataGridRow dgr  = GridBuscaGeralPremium.ItemContainerGenerator.ContainerFromItem(GridBuscaGeralPremium.SelectedItem) as DataGridRow;
                DataRowView drv  = (DataRowView)dgr.Item;
                string      drID = drv[9].ToString();

                SqlCommand sqlcmd = new SqlCommand("DelPremium", sqlcon);
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.Parameters.AddWithValue("@drID", drID);
                sqlcmd.ExecuteNonQuery();
            }
            catch (Exception erro)
            {
                new CaixaDeMensagem(erro.Message);
            }

            PesquisarGeralPremium_Click(sender, e);         //Atualiza a lista.
        }
        public void PesquisarLicença_Click(object sender, RoutedEventArgs e)
        {
            //Definindo o padrão de cultura pt-BR para que as datas fiquem no formato dia/mês/ano:
            CultureInfo.CurrentCulture = new CultureInfo("pt-BR", false);
            Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);

            string LikeSN;
            string LikePesquisa = "%" + Box_PesquisarAlterar.Text.Trim() + "%";         //Adiciona os % para funcionar com o parâmetro like do sql.

            DataLicença.FontWeight = FontWeights.Regular;
            DataLicença.Foreground = Brushes.DimGray;

            try
            {
                SqlConnection sqlcon = ConexãoDB.obterConexão();
                SqlCommand    sqlcmd = new SqlCommand("SelLicença", sqlcon);
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.Parameters.AddWithValue("@Pesquisa", LikePesquisa);

                SqlDataReader dataReader = sqlcmd.ExecuteReader();

                if (dataReader.HasRows == true)
                {
                    dataReader.Read();
                    string drCliente = dataReader.GetString(0);
                    string drContato = dataReader.GetString(1);
                    string drEmail   = dataReader.GetString(2);
                    string drProduto = dataReader.GetString(3);
                    string drSN;
                    string drValorDongle  = dataReader.GetString(5);
                    string drContraSenha  = dataReader.GetString(6);
                    string drLicença      = dataReader.GetString(7);
                    string drTipo         = dataReader.GetString(8);
                    string drDataRegistro = dataReader.GetDateTime(9).ToShortDateString();
                    string drNomeComputador;
                    string drPlaca;
                    string drFloripaSec;
                    string drMacAddress;
                    string drFuncionário = dataReader.GetString(14);
                    string drObservações;
                    string drNegócio;
                    string drDataLicença;

                    //Verifica se o valor na tabela é nulo antes de atribuir à variável.
                    if (dataReader.IsDBNull(4))
                    {
                        drSN   = "Não Informado";
                        LikeSN = drSN;
                    }
                    else
                    {
                        drSN = dataReader.GetString(4);
                    }

                    if (dataReader.IsDBNull(10))
                    {
                        drNomeComputador = "Não Informado";
                    }
                    else
                    {
                        drNomeComputador = dataReader.GetString(10);
                    }

                    if (dataReader.IsDBNull(11))
                    {
                        drPlaca = "Não Informado";
                    }
                    else
                    {
                        drPlaca = dataReader.GetString(11);
                    }

                    if (dataReader.IsDBNull(12))
                    {
                        drFloripaSec = "Não Informado";
                    }
                    else
                    {
                        drFloripaSec = dataReader.GetString(12);
                    }

                    if (dataReader.IsDBNull(13))
                    {
                        drMacAddress = "Não Informado";
                    }
                    else
                    {
                        drMacAddress = dataReader.GetString(13);
                    }

                    if (dataReader.IsDBNull(15))
                    {
                        drObservações = " ";
                    }
                    else
                    {
                        drObservações = dataReader.GetString(15);
                    }

                    if (dataReader.IsDBNull(16))
                    {
                        drNegócio           = "Nulo";
                        Negócio             = "Nulo";
                        RadVenda.IsChecked  = false;
                        RadDemo.IsChecked   = false;
                        RadAlguel.IsChecked = false;
                        RadFeira.IsChecked  = false;
                    }
                    else
                    {
                        drNegócio = dataReader.GetString(16);
                        Negócio   = drNegócio;
                    }

                    if (dataReader.IsDBNull(17))
                    {
                        drDataLicença = drDataRegistro;
                    }
                    else
                    {
                        drDataLicença = dataReader.GetDateTime(17).ToShortDateString();
                    }

                    Cliente.Text     = drCliente;
                    Contato.Text     = drContato;
                    Email.Text       = drEmail;
                    Produto.Text     = drProduto;
                    SN.Text          = drSN;
                    LikeSN           = "%" + SN.Text + "%";
                    Dongle.Text      = drValorDongle;
                    Senha.Text       = drContraSenha;
                    Licença.Text     = drLicença;
                    Tipo.Text        = drTipo;
                    Data.Text        = drDataRegistro;
                    NomePc.Text      = drNomeComputador;
                    Placa.Text       = drPlaca;
                    FlopSec.Text     = drFloripaSec;
                    MacAdd.Text      = drMacAddress;
                    Func.Text        = drFuncionário;
                    Obs.Text         = drObservações;
                    DataLicença.Text = drDataLicença;

                    //Informando o tipo de negócio:
                    if (drNegócio == "Venda")
                    {
                        Block_Negócio.Text = "Venda";
                        RadVenda.IsChecked = true;
                    }
                    if (drNegócio == "Demo")
                    {
                        Block_Negócio.Text = "Equipamento Demo";
                        RadDemo.IsChecked  = true;
                    }
                    if (drNegócio == "Aluguel")
                    {
                        Block_Negócio.Text  = "Aluguel";
                        RadAlguel.IsChecked = true;
                    }
                    if (drNegócio == "Feira")
                    {
                        Block_Negócio.Text = "Feira";
                        RadFeira.IsChecked = true;
                    }
                    if (drNegócio == "Nulo")
                    {
                        Block_Negócio.Text = "Negócio não informado";
                    }

                    //Exibe os itens d apágina depois que o usuário pesquisar algo, evitando a tentativa de buscar pelos campos e não pela pesquisa.
                    StkPanelNegócio.Visibility = Visibility.Visible;
                    StkPanelColuna1.Visibility = Visibility.Visible;
                    StkPanelColuna2.Visibility = Visibility.Visible;
                    Btn_Salvar.Visibility      = Visibility.Visible;
                    ConexãoDB.fecharConexao(sqlcon);


                    //Verificando se o SN é de um produto com suporte Premium:
                    SqlConnection sqlcon2 = ConexãoDB.obterConexão();

                    string DataPremium;
                    string Ativo;
                    string Debitos;
                    string DataGar;
                    LikeSN = "%" + SN.Text + "%";

                    SqlCommand sqlcmd2 = new SqlCommand("VerFinanceiro", sqlcon2);
                    sqlcmd2.CommandType = CommandType.StoredProcedure;
                    sqlcmd2.Parameters.AddWithValue("@SN", LikeSN);                                              //Envia o %SN% como parâmetro para o procedimento VerGarantia do banco Protheus.
                    sqlcmd2.Parameters.Add("@ChkPremium", SqlDbType.VarChar, 10);
                    sqlcmd2.Parameters.Add("@Ativo", SqlDbType.Int);
                    sqlcmd2.Parameters.Add("@DBTOS", SqlDbType.VarChar, 10);
                    sqlcmd2.Parameters.Add("@DTGAR", SqlDbType.VarChar, 10);
                    sqlcmd2.Parameters["@ChkPremium"].Direction = ParameterDirection.Output;                          //Recebe o valor de saída do storedProcedure.
                    sqlcmd2.Parameters["@Ativo"].Direction      = ParameterDirection.Output;
                    sqlcmd2.Parameters["@DBTOS"].Direction      = ParameterDirection.Output;
                    sqlcmd2.Parameters["@DTGAR"].Direction      = ParameterDirection.Output;                     //Recebe o valor de saída do storedProcedure.
                    sqlcmd2.ExecuteNonQuery();

                    Debitos     = sqlcmd2.Parameters["@DBTOS"].Value.ToString();
                    DataPremium = sqlcmd2.Parameters["@ChkPremium"].Value.ToString();                            //Envia para a variável DataGar a saída do procedimento para fazer as manipulações.
                    Ativo       = sqlcmd2.Parameters["@Ativo"].Value.ToString();
                    DataGar     = sqlcmd2.Parameters["@DTGAR"].Value.ToString();                                 //Envia para a variável DataGar a saída do procedimento para fazer as manipulações.

                    if (SN.Text == "Não Informado")
                    {
                        Block_Premium.Foreground  = Brushes.Red;
                        Block_Premium.Text        = "Premium: Informe o SN";
                        Block_Garantia.Foreground = Brushes.Red;
                        Block_Garantia.Text       = "Garantia: Informe o SN";
                    }
                    else
                    {
                        if (Debitos == "1")
                        {
                            Block_Garantia.Foreground = Brushes.Red;
                            Block_Premium.Foreground  = Brushes.Red;
                            Block_Garantia.Text       = "Garantia e Suporte Suspensos";
                            Block_Premium.Text        = "Verificar com a Administração";
                        }
                        else
                        {
                            if (DataPremium == "0")                                                                       //Procedimento retorna 0 se o SN não existir na tabela AA3010.
                            {
                                Block_Premium.Foreground = Brushes.Red;
                                Block_Premium.Text       = "Não é Premium";
                            }
                            else
                            {
                                if (Ativo == "0")
                                {
                                    Block_Premium.Foreground = Brushes.Red;
                                    Block_Premium.Text       = "Suporte Premium Suspenso";
                                }
                                else                                                                                          //Se for diferente de 0 quer dizer que o SN existe na tabela Premium.
                                {
                                    string dataConvertida = Convert.ToDateTime(DataPremium).ToString("dd/MM/yyyy");           //Converte o formato de data americada para BR.
                                    int    tempoP         = (DateTime.Parse(dataConvertida) - DateTime.Now.Date).Days;        //Calcula a difença entre a data de vencimento da garantia e a data atual.

                                    if (tempoP >= 0)                                                                          //Se a quantidade de dias for positiva, está na garantia.
                                    {
                                        Block_Premium.Foreground = Brushes.Green;
                                        Block_Premium.Text       = "Suporte Premium até: " + dataConvertida;
                                    }
                                    else
                                    {
                                        Block_Premium.Foreground = Brushes.Red;
                                        Block_Premium.Text       = "Suporte Premium expirou em: " + dataConvertida;
                                    }
                                }
                            }

                            if (drNegócio == "Demo" || drNegócio == "Aluguel" || drNegócio == "Feira")
                            {
                                Block_Garantia.Foreground = Brushes.Green;
                                Block_Premium.Foreground  = Brushes.Green;
                                Block_Garantia.Text       = "Em Garantia";
                                Block_Premium.Text        = "Possui Suporte Premium";
                            }
                            else
                            {
                                if (DataGar == "0")                                                                          //Procedimento retorna 0 se o SN não existir na tabela AA3010.
                                {
                                    Block_Garantia.Foreground = Brushes.Red;
                                    Block_Garantia.Text       = "Garantia: SN não encontrado";
                                }
                                else                                                                                         //Se for diferente de 0 quer dizer que o SN existe na tabela AA3010 do Protheus11.
                                {
                                    string dataCorrigida  = DataGar.Insert(4, "-").Insert(7, "-");                           //Formata a data que está como string no sqlserver, separando com - ano e mês.
                                    string dataConvertida = Convert.ToDateTime(dataCorrigida).ToString("dd/MM/yyyy");        //Converte o formato de data americada para BR.
                                    int    tempog         = (DateTime.Parse(dataConvertida) - DateTime.Now.Date).Days;       //Calcula a difença entre a data de vencimento da garantia e a data atual.

                                    if (tempog >= 0)                                                                         //Se a quantidade de dias for positiva, está na garantia.
                                    {
                                        Block_Garantia.Foreground = Brushes.Green;
                                        Block_Premium.Foreground  = Brushes.Green;
                                        Block_Garantia.Text       = "Em garantia até: " + dataConvertida;
                                        Block_Premium.Text        = "Suporte Premium (Garantia)";
                                    }
                                    else
                                    {
                                        Block_Garantia.Foreground = Brushes.Red;
                                        Block_Garantia.Text       = "Garantia expirou em: " + dataConvertida;
                                    }
                                }
                            }
                        }

                        ConexãoDB.fecharConexao(sqlcon2);
                    }
                }
                else
                {
                    new CaixaDeMensagem("Nenhum registro encontrado");
                }
            }
            catch (Exception erro)
            {
                new CaixaDeMensagem(erro.Message);
            }
        }
        public void BuscaPremium_Click(object sender, RoutedEventArgs e)
        {
            //Definindo o padrão de cultura pt-BR para que as datas fiquem no formato dia/mês/ano:
            CultureInfo.CurrentCulture = new CultureInfo("pt-BR", false);
            Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);

            try
            {
                string LikePesquisa = "%" + Box_PesquisarPremium.Text.Trim() + "%";         //Adicionar os % para o parâmetro like do sql.

                SqlConnection sqlcon = ConexãoDB.obterConexão();
                SqlCommand    sqlcmd = new SqlCommand("SelPremium", sqlcon);
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.Parameters.AddWithValue("@Pesquisa", LikePesquisa);

                SqlDataReader dataReader = sqlcmd.ExecuteReader();

                if (dataReader.HasRows == true)
                {
                    dataReader.Read();
                    string drCliente     = dataReader.GetString(0);
                    string drCTO         = dataReader.GetString(1);
                    string drNFPS        = dataReader.GetString(2);
                    string drProduto     = dataReader.GetString(3);
                    string drSN          = dataReader.GetString(4);
                    string drObservações = dataReader.GetString(5);
                    string drData        = dataReader.GetDateTime(6).ToShortDateString();
                    string drVencCTO     = dataReader.GetDateTime(7).ToShortDateString();
                    string drProposta    = dataReader.GetString(8);
                    int    drID          = dataReader.GetInt32(10);
                    int    drAtivo       = dataReader.GetInt32(9);

                    Cliente.Text  = drCliente;
                    Produto.Text  = drProduto;
                    SN.Text       = drSN;
                    Data.Text     = drData;
                    CTO.Text      = drCTO;
                    VencCTO.Text  = drVencCTO;
                    NFPS.Text     = drNFPS;
                    Proposta.Text = drProposta;
                    Obs.Text      = drObservações;
                    ID            = drID;
                    Ativo         = drAtivo;

                    if (drAtivo == 0)
                    {
                        RadSuspenso.IsChecked = true;
                    }
                    else
                    {
                        RadAtivo.IsChecked = true;
                    }


                    //Exibe os itens da apágina depois que o usuário pesquisar algo, evitando a tentativa de buscar pelos campos e não pela caixa de pesquisa.
                    StkPanelColuna1.Visibility = Visibility.Visible;
                    StkPanelColuna2.Visibility = Visibility.Visible;
                    Btn_Salvar.Visibility      = Visibility.Visible;
                    ConexãoDB.fecharConexao(sqlcon);
                }

                else
                {
                    new CaixaDeMensagem("Nenhum registro encontrado");
                }
            }

            catch (Exception erro)
            {
                new CaixaDeMensagem(erro.Message);
            }
        }