public void pesquisarEventos()
        {
            string cliente = txtCliente.Text;
            string aniversariante = txtAniverariante.Text;
            string cidade = txtCidade.Text;
            DateTime dataDe = dtpInicio.Value.Date;
            DateTime dataPara = dtpTermino.Value.Date;
            bool concluido = false;
            bool cancelado = false;
            bool aberto = false;

            if (cbConcluido.Checked == true)
                concluido = true;
            if (cbCancelado.Checked == true)
                cancelado = true;
            if (cbAberto.Checked == true)
                aberto = true;

            EventoNegocio eventoNegocio = new EventoNegocio();
            EventoColecao eventoColecao = new EventoColecao();

            eventoColecao = eventoNegocio.ConsultaAvancada(cliente, aniversariante, cidade, dataDe, dataPara, concluido, cancelado,aberto);

            dgvAgendaEventos.DataSource = null;
            dgvAgendaEventos.DataSource = eventoColecao;
            dgvAgendaEventos.Update();
            dgvAgendaEventos.Refresh();
        }
        public void atualizaGrid()
        {
            EventoColecao eventoColecao = new EventoColecao();
            EventoNegocio eventoNegocio = new EventoNegocio();

            //realizar consulta no banco de dados e nos trará todos os eventos cadastrados no sistema
            eventoColecao = eventoNegocio.ConsultaProximosEventos();
            //limpando grid
            dgvAgendaEventos.DataSource = null;
            //exibindo dados no grid
            dgvAgendaEventos.DataSource = eventoColecao;
            dgvAgendaEventos.Update();
            dgvAgendaEventos.Refresh();
        }
        //Evento independente onde será retornado todos os eventos a serem realizados.
        public EventoColecao ConsultaProximosEventos()
        {
            SqlConnection conexao = acessaDados.criarConexaoBanco();
            try
            {
                //Abrindo conexao com o banco de dados
                conexao.Open();

                EventoColecao eventoColecao = new EventoColecao();

                DateTime hoje = new DateTime();
                hoje = DateTime.Now;

                string script = "SELECT e.codEvento, e.nome, e.localEvento, e.data_evento, e.inicio, e.termino, e.tema, e.codCliente, e.observacao, e.concluido, e.cancelado, e.cidadeEvento, c.nome AS nomeCliente" +
                    " FROM tblEvento AS e" +
                    " INNER JOIN tblCliente AS c" +
                    " ON e.codCliente = c.codCliente" +
                    " WHERE data_evento >= '" + hoje +
                    "' AND concluido = 0" +
                    " AND cancelado = 0" +
                    " ORDER BY data_evento ASC";

                SqlCommand sql = new SqlCommand(script, conexao);
                //Irá retornar as informações do banco de dados
                SqlDataReader dataReader = sql.ExecuteReader();
                DataTable dataTable = new DataTable();
                //colocando os dados do dataReader dentro de um DataTable
                dataTable.Load(dataReader);

                foreach (DataRow linha in dataTable.Rows)
                {
                    Evento evento = new Evento();

                    evento.codEvento = Convert.ToInt32(linha["codEvento"]);
                    evento.nome = Convert.ToString(linha["nome"]);
                    evento.localEvento = Convert.ToString(linha["localEvento"]);
                    evento.data_evento = Convert.ToDateTime(linha["data_evento"]);
                    evento.inicio = (TimeSpan)linha["inicio"];
                    evento.termino = (TimeSpan)linha["termino"];
                    evento.tema = Convert.ToString(linha["tema"]);
                    evento.codCliente = Convert.ToInt32(linha["codCliente"]);
                    evento.observacao = Convert.ToString(linha["observacao"]);
                    evento.concluido = Convert.ToBoolean(linha["concluido"]);
                    evento.cancelado = Convert.ToBoolean(linha["cancelado"]);
                    evento.cidadeEvento = linha["cidadeEvento"].ToString();
                    evento.nomeCliente = linha["nomeCliente"].ToString();

                    eventoColecao.Add(evento);
                }

                return eventoColecao;
            }
            catch(Exception e)
            {
                throw new Exception("Não foi possível consultar dados. Detalhes: " + e.Message);
            }
            finally
            {
                conexao.Close();
            }
        }
        public EventoColecao ConsultarNomeEvento(string nomeEvento)
        {
            try
            {
                EventoColecao ec = new EventoColecao();

                acessaDados.limparParametro();
                acessaDados.adicionarParametro("@nome", nomeEvento);

                DataTable retornoBanco = acessaDados.executarConsulta(CommandType.StoredProcedure, "SP_CONSULTAR_NOME_EVENTO");

                foreach(DataRow linha in retornoBanco.Rows)
                {
                    Evento evento = new Evento();

                    evento.codEvento = Convert.ToInt32(linha["codEvento"]);
                    evento.nome = Convert.ToString(linha["nome"]);
                    evento.localEvento = Convert.ToString(linha["localEvento"]);
                    evento.data_evento = Convert.ToDateTime(linha["data_evento"]);
                    evento.inicio = (TimeSpan)linha["inicio"];
                    evento.termino = (TimeSpan)linha["termino"];
                    evento.tema = Convert.ToString(linha["tema"]);
                    evento.codCliente = Convert.ToInt32(linha["codCliente"]);
                    evento.observacao = Convert.ToString(linha["observacao"]);

                    ec.Add(evento);
                }

                return ec;
            }
            catch(Exception e)
            {
                throw new Exception("Não foi possível consultar dados. Detalhes: " + e.Message);
            }
        }
        //Evento independente onde será retornado todos os eventos a serem realizados de forma avançada.
        public EventoColecao ConsultaAvancada(string cliente, string aniversariante, string cidade, DateTime dataDe, DateTime dataPara, bool concluido, bool cancelado, bool aberto)
        {
            SqlConnection conexao = acessaDados.criarConexaoBanco();
            try
            {
                conexao.Open();
                EventoColecao eventoColecao = new EventoColecao();
                string script = null;
                //verificar se a data inicial é igual a data final, irá mudar o periodo da consulta
                if(dataDe.Date == dataPara.Date)
                {
                    script = "SELECT e.codEvento, e.nome, e.localEvento, e.data_evento, e.inicio, e.termino, e.tema, e.codCliente, e.observacao, e.concluido, e.cancelado, e.aberto, e.cidadeEvento, c.nome AS nomeCliente" +
                    " FROM tblEvento AS e" +
                    " INNER JOIN tblCliente AS c " +
                    " ON e.codCliente = c.codCliente " +
                    " WHERE c.nome LIKE '%" + cliente + "%' AND e.nome LIKE '%" + aniversariante + "%' AND e.cidadeEvento LIKE '%" + cidade + "%' AND e.data_evento = '" + dataDe + "' AND (e.concluido = '" + concluido + "' OR e.concluido = 'false') AND (e.cancelado =  '" + cancelado + "' OR e.cancelado = 'false' ) AND (e.aberto = '" + aberto + "' OR e.aberto = 'false') ORDER BY data_evento ASC";
                }
                else
                {
                    script = "SELECT e.codEvento, e.nome, e.localEvento, e.data_evento, e.inicio, e.termino, e.tema, e.codCliente, e.observacao, e.concluido, e.cancelado, e.aberto, e.cidadeEvento, c.nome AS nomeCliente" +
                    " FROM tblEvento AS e" +
                    " INNER JOIN tblCliente AS c " +
                    " ON e.codCliente = c.codCliente " +
                    " WHERE c.nome LIKE '%" + cliente + "%' AND e.nome LIKE '%" + aniversariante + "%' AND e.cidadeEvento LIKE '%" + cidade + "%' AND e.data_evento >= '" + dataDe + "' AND e.data_evento <= '" + dataPara + "' AND (e.concluido = '" + concluido + "' OR e.concluido = 'false') AND (e.cancelado =  '" + cancelado + "' OR e.cancelado = 'false' ) AND (e.aberto = '" + aberto + "' OR e.aberto = 'false') ORDER BY data_evento ASC";
                }

                SqlCommand sql = new SqlCommand(script, conexao);
                SqlDataReader dataReader = sql.ExecuteReader();

                DataTable dataTable = new DataTable();
                dataTable.Load(dataReader);

                foreach (DataRow linha in dataTable.Rows)
                {
                    Evento evento = new Evento();

                    evento.codEvento = Convert.ToInt32(linha["codEvento"]);
                    evento.nome = linha["nome"].ToString();
                    evento.localEvento = Convert.ToString(linha["localEvento"]);
                    evento.data_evento = Convert.ToDateTime(linha["data_evento"]);
                    evento.inicio = (TimeSpan)linha["inicio"];
                    evento.termino = (TimeSpan)linha["termino"];
                    evento.tema = Convert.ToString(linha["tema"]);
                    evento.codCliente = Convert.ToInt32(linha["codCliente"]);
                    evento.observacao = Convert.ToString(linha["observacao"]);
                    evento.concluido = Convert.ToBoolean(linha["concluido"]);
                    evento.cancelado = Convert.ToBoolean(linha["cancelado"]);
                    evento.aberto = Convert.ToBoolean(linha["aberto"]);
                    evento.cidadeEvento = linha["cidadeEvento"].ToString();
                    evento.nomeCliente = linha["nomeCliente"].ToString();

                    eventoColecao.Add(evento);
                }

                return eventoColecao;

            }
            catch(Exception e)
            {
                throw new Exception(e.Message);
            }
            finally
            {
                conexao.Close();
            }
        }