public override List <EntidadeDominio> Consultar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } Livro livro = (Livro)entidade; StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM livro JOIN livro_autor ON (livro.id_livro = livro_autor.id_livro) "); sql.Append(" JOIN autor ON (livro_autor.id_autor = autor.id_autor) "); sql.Append(" LEFT JOIN livro_cat ON (livro.id_livro = livro_cat.id_livro) "); sql.Append(" LEFT JOIN cat_livro ON (livro_cat.id_cat_livro = cat_livro.id_cat_livro) "); sql.Append(" JOIN cat_livro as categoria_principal ON (livro.categoria_principal_fk = categoria_principal.id_cat_livro) "); sql.Append(" JOIN editora ON (livro.editora_fk = editora.id_editora) "); sql.Append(" JOIN cidades ON (editora.cidade_fk = cidades.id_cidade) "); sql.Append(" JOIN estados ON (cidades.estado_id = estados.id_estado) "); sql.Append(" JOIN paises ON (estados.pais_id = paises.id_pais) "); sql.Append(" JOIN dimensoes ON (livro.dimensoes_fk = dimensoes.id_dimensoes) "); sql.Append(" JOIN grupo_preco ON (grupo_preco.id_grupo_preco = livro.grupo_preco_fk) "); sql.Append(" JOIN cat_motivo ON (cat_motivo.id_cat_motivo = livro.categoria_motivo_fk) "); // WHERE sem efeito, usado apenas para poder diminuir o número de ifs da construção da query sql.Append("WHERE 1 = 1 "); if (livro.ID != 0) { sql.Append("AND livro.id_livro = ?1 "); } if (livro.Autores.Count > 0) { if (livro.Autores.ElementAt(0).ID != 0) { sql.Append("AND autor.id_autor = ?2 "); } if (!String.IsNullOrEmpty(livro.Autores.ElementAt(0).Nome)) { sql.Append("AND nome_autor = ?3 "); } } // categoria principal if (livro.CategoriaPrincipal != null) { if (livro.CategoriaPrincipal.ID != 0) { sql.Append("AND livro.categoria_principal_fk = ?4 "); } } if (livro.Categorias.Count > 0) { if (livro.Categorias.ElementAt(0).ID != 0) { sql.Append("AND cat_livro.id_cat_livro = ?4 "); } if (!String.IsNullOrEmpty(livro.Categorias.ElementAt(0).Nome)) { sql.Append("AND nome_cat_livro = ?5 "); } if (!String.IsNullOrEmpty(livro.Categorias.ElementAt(0).Descricao)) { sql.Append("AND descricao_cat_livro = ?6 "); } } if (!String.IsNullOrEmpty(livro.Ano)) { sql.Append("AND ano_livro = ?7 "); } if (!String.IsNullOrEmpty(livro.Titulo)) { sql.Append("AND titulo_livro = ?8 "); } if (livro.Editora != null) { if (livro.Editora.ID != 0) { sql.Append("AND id_editora = ?9 "); } if (!String.IsNullOrEmpty(livro.Editora.Nome)) { sql.Append("AND nome_editora = ?10 "); } } if (!String.IsNullOrEmpty(livro.Edicao)) { sql.Append("AND edicao_livro = ?11 "); } if (!String.IsNullOrEmpty(livro.ISBN)) { sql.Append("AND isbn = ?12 "); } if (!String.IsNullOrEmpty(livro.NumeroPaginas)) { sql.Append("AND numero_paginas = ?13 "); } if (!String.IsNullOrEmpty(livro.Sinopse)) { sql.Append("AND sinopse = ?14 "); } if (livro.Dimensoes != null) { if (livro.Dimensoes.ID != 0) { sql.Append("AND id_dimensoes = ?15 "); } if (livro.Dimensoes.Altura != 0) { sql.Append("AND altura = ?16 "); } if (livro.Dimensoes.Largura != 0) { sql.Append("AND largura = ?17 "); } if (livro.Dimensoes.Profundidade != 0) { sql.Append("AND profundidade = ?18 "); } if (livro.Dimensoes.Peso != 0.0) { sql.Append("AND peso = ?19 "); } } if (livro.GrupoPrecificacao != null) { if (livro.GrupoPrecificacao.ID != 0) { sql.Append("AND id_grupo_preco = ?20 "); } if (!String.IsNullOrEmpty(livro.GrupoPrecificacao.Nome)) { sql.Append("AND nome_grupo_preco = ?21 "); } if (livro.GrupoPrecificacao.MargemLucro != 0.0) { sql.Append("AND margem_lucro = ?22 "); } } if (!String.IsNullOrEmpty(livro.CodigoBarras)) { sql.Append("AND codigo_barras_livro = ?23 "); } if (livro.CategoriaMotivo != null) { if (livro.CategoriaMotivo.ID != 0) { sql.Append("AND id_cat_motivo = ?24 "); } if (livro.CategoriaMotivo.Ativo != 'Z') { sql.Append("AND ativo = ?25 "); } } if (!String.IsNullOrEmpty(livro.Motivo)) { sql.Append("AND motivo = ?26 "); } if (livro.DataCadastro != null) { sql.Append("AND dt_cadastro_livro = ?27 "); } // categoria principal if (livro.CategoriaPrincipal != null) { if (livro.CategoriaPrincipal.ID != 0) { sql.Append("AND livro.categoria_principal_fk = ?28 "); } } sql.Append("ORDER BY livro.id_livro, autor.id_autor, cat_livro.id_cat_livro "); pst.CommandText = sql.ToString(); parameters = new MySqlParameter[] { new MySqlParameter("?1", livro.ID), new MySqlParameter("?7", livro.Ano), new MySqlParameter("?8", livro.Titulo), new MySqlParameter("?9", livro.Editora.ID), new MySqlParameter("?10", livro.Editora.Nome), new MySqlParameter("?11", livro.Edicao), new MySqlParameter("?12", livro.ISBN), new MySqlParameter("?13", livro.NumeroPaginas), new MySqlParameter("?14", livro.Sinopse), new MySqlParameter("?15", livro.Dimensoes.ID), new MySqlParameter("?16", livro.Dimensoes.Altura), new MySqlParameter("?17", livro.Dimensoes.Largura), new MySqlParameter("?18", livro.Dimensoes.Profundidade), new MySqlParameter("?19", livro.Dimensoes.Peso), new MySqlParameter("?20", livro.GrupoPrecificacao.ID), new MySqlParameter("?21", livro.GrupoPrecificacao.Nome), new MySqlParameter("?22", livro.GrupoPrecificacao.MargemLucro), new MySqlParameter("?23", livro.CodigoBarras), new MySqlParameter("?24", livro.CategoriaMotivo.ID), new MySqlParameter("?25", livro.CategoriaMotivo.Ativo), new MySqlParameter("?26", livro.Motivo), new MySqlParameter("?28", livro.CategoriaPrincipal.ID) }; if (livro.Autores.Count > 0) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?2", livro.Autores.ElementAt(0).ID), new MySqlParameter("?3", livro.Autores.ElementAt(0).Nome) }; parameters.Concat(parametersAux); } if (livro.Categorias.Count > 0) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?4", livro.Categorias.ElementAt(0).ID), new MySqlParameter("?5", livro.Categorias.ElementAt(0).Nome), new MySqlParameter("?6", livro.Categorias.ElementAt(0).Descricao) }; parameters.Concat(parametersAux); } if (livro.DataCadastro != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?27", livro.DataCadastro) }; parameters.Concat(parametersAux); } pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; reader = pst.ExecuteReader(); // Lista de retorno da consulta do banco de dados, que conterá os livros encontrados List <EntidadeDominio> livros = new List <EntidadeDominio>(); Livro livroAux = new Livro(); livroAux.ID = 0; Autor autor = new Autor(); Categoria categoria = new Categoria(); Autor autorAux = new Autor(); Categoria categoriaAux = new Categoria(); livro = new Livro(); while (reader.Read()) { // verifica se livro que está trazendo do BD é igual ao anterior if (Convert.ToInt32(reader["id_livro"]) != livroAux.ID) { livro = new Livro(); livro.ID = Convert.ToInt32(reader["id_livro"]); // passando id do livro que está vindo para o auxiliar livroAux.ID = livro.ID; //// -------------------- AUTOR - COMEÇO ---------------------------------- autor = new Autor(); autor.ID = Convert.ToInt32(reader["id_autor"]); autor.Nome = reader["nome_autor"].ToString(); livro.Autores.Add(autor); autorAux.ID = autor.ID; //// -------------------- AUTOR - FIM ---------------------------------- // -------------------- CATEGORIA LIVRO - COMEÇO ---------------------------------- categoria = new Categoria(); categoria.ID = Convert.ToInt32(reader["id_cat_livro"]); categoria.Nome = reader["nome_cat_livro"].ToString(); categoria.Descricao = reader["descricao_cat_livro"].ToString(); livro.Categorias.Add(categoria); categoriaAux.ID = categoria.ID; // -------------------- CATEGORIA LIVRO - FIM ---------------------------------- livro.Ano = reader["ano_livro"].ToString(); livro.Titulo = reader["titulo_livro"].ToString(); // -------------------- EDITORA - COMEÇO ---------------------------------- livro.Editora.ID = Convert.ToInt32(reader["id_editora"]); livro.Editora.Nome = reader["nome_editora"].ToString(); livro.Editora.Cidade.ID = Convert.ToInt32(reader["id_cidade"]); livro.Editora.Cidade.Nome = reader["nome_cidade"].ToString(); // -------------------- EDITORA - FIM ---------------------------------- livro.Edicao = reader["edicao_livro"].ToString(); livro.ISBN = reader["isbn"].ToString(); livro.NumeroPaginas = reader["numero_paginas"].ToString(); livro.Sinopse = reader["sinopse"].ToString(); // -------------------- DIMENSÕES - COMEÇO ---------------------------------- livro.Dimensoes.ID = Convert.ToInt32(reader["id_dimensoes"]); livro.Dimensoes.Altura = Convert.ToInt32(reader["altura"]); livro.Dimensoes.Largura = Convert.ToInt32(reader["largura"]); livro.Dimensoes.Profundidade = Convert.ToInt32(reader["profundidade"]); livro.Dimensoes.Peso = Convert.ToSingle(reader["peso"]); // -------------------- DIMENSÕES - FIM ---------------------------------- // -------------------- GRUPO PRECIFICAÇÃO - COMEÇO ---------------------------------- livro.GrupoPrecificacao.ID = Convert.ToInt32(reader["id_grupo_preco"]); livro.GrupoPrecificacao.Nome = reader["nome_grupo_preco"].ToString(); livro.GrupoPrecificacao.MargemLucro = Convert.ToSingle(reader["margem_lucro"]); // -------------------- GRUPO PRECIFICAÇÃO - FIM ---------------------------------- livro.CodigoBarras = reader["codigo_barras_livro"].ToString(); // -------------------- CATEGORIA MOTIVO - COMEÇO ---------------------------------- livro.CategoriaMotivo.ID = Convert.ToInt32(reader["id_cat_motivo"]); livro.CategoriaMotivo.Ativo = reader["ativo"].ToString().First(); livro.CategoriaMotivo.Nome = reader["nome_cat_motivo"].ToString(); livro.CategoriaMotivo.Descricao = reader["descricao_cat_motivo"].ToString(); // -------------------- CATEGORIA MOTIVO - FIM ---------------------------------- livro.Motivo = reader["motivo"].ToString(); livro.DataCadastro = Convert.ToDateTime(reader["dt_cadastro_livro"].ToString()); // -------------------- CATEGORIA PRINCIPAL - COMEÇO ---------------------------------- livro.CategoriaPrincipal.ID = Convert.ToInt32(reader["categoria_principal_fk"]); // -------------------- CATEGORIA PRINCIPAL - COMEÇO ---------------------------------- } else { //// -------------------- AUTOR - COMEÇO ---------------------------------- autor = new Autor(); autor.ID = Convert.ToInt32(reader["id_autor"]); if (autorAux.ID != autor.ID) { autor.Nome = reader["nome_autor"].ToString(); livro.Autores.Add(autor); autorAux.ID = autor.ID; } //// -------------------- AUTOR - FIM ---------------------------------- // -------------------- CATEGORIA LIVRO - COMEÇO ---------------------------------- categoria = new Categoria(); categoria.ID = Convert.ToInt32(reader["id_cat_livro"]); if (categoriaAux.ID != categoria.ID) { categoria.Nome = reader["nome_cat_livro"].ToString(); categoria.Descricao = reader["descricao_cat_livro"].ToString(); livro.Categorias.Add(categoria); categoriaAux.ID = categoria.ID; } // -------------------- CATEGORIA LIVRO - FIM ---------------------------------- } livros.Add(livro); } connection.Close(); return(livros); }
public override List <EntidadeDominio> Consultar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } Analise analise = (Analise)entidade; StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM pedido JOIN status_pedido ON (pedido.status_pedido_fk = status_pedido.id_status_pedido) "); // WHERE sem efeito, usado apenas para poder diminuir o número de ifs da construção da query sql.Append("WHERE 1 = 1 "); if (analise.DataCadastro != null) { sql.Append("AND dt_cadastro_pedido >= '"); sql.Append(analise.DataCadastro.Value.Year + "-" + analise.DataCadastro.Value.Month + "-" + analise.DataCadastro.Value.Day + " " + analise.DataCadastro.Value.Hour + ":" + analise.DataCadastro.Value.Minute + ":" + analise.DataCadastro.Value.Second); sql.Append("' "); } if (analise.DataFim != null) { sql.Append("AND dt_cadastro_pedido <= '"); sql.Append(analise.DataFim.Value.Year + "-" + analise.DataFim.Value.Month + "-" + analise.DataFim.Value.Day + " " + analise.DataFim.Value.Hour + ":" + analise.DataFim.Value.Minute + ":" + analise.DataFim.Value.Second); sql.Append("' "); } sql.Append("ORDER BY pedido.dt_cadastro_pedido "); pst.CommandText = sql.ToString(); parameters = new MySqlParameter[] { new MySqlParameter("0", analise.ID) }; if (analise.DataCadastro != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("1", analise.DataCadastro.Value.Year + "-" + analise.DataCadastro.Value.Month + "-" + analise.DataCadastro.Value.Day + " " + analise.DataCadastro.Value.Hour + ":" + analise.DataCadastro.Value.Minute + ":" + analise.DataCadastro.Value.Second) }; parameters.Concat(parametersAux); } if (analise.DataFim != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("2", analise.DataFim.Value.Year + "-" + analise.DataFim.Value.Month + "-" + analise.DataFim.Value.Day + " " + analise.DataFim.Value.Hour + ":" + analise.DataFim.Value.Minute + ":" + analise.DataFim.Value.Second) }; parameters.Concat(parametersAux); } pst.Parameters.Clear(); if (parameters != null) { pst.Parameters.AddRange(parameters); } pst.Connection = connection; pst.CommandType = CommandType.Text; reader = pst.ExecuteReader(); // Lista de retorno da consulta do banco de dados, que conterá os pedidos encontrados List <EntidadeDominio> pedidos = new List <EntidadeDominio>(); while (reader.Read()) { Pedido pedido = new Pedido(); pedido.ID = Convert.ToInt32(reader["id_pedido"]); pedido.Usuario = reader["username"].ToString(); pedido.Total = Convert.ToSingle(reader["total_pedido"]); pedido.Status.ID = Convert.ToInt32(reader["id_status_pedido"]); pedido.Status.Nome = reader["nome_status_pedido"].ToString(); pedido.EnderecoEntrega.ID = Convert.ToInt32(reader["end_entrega_fk"]); pedido.Frete = Convert.ToSingle(reader["frete"]); pedido.DataCadastro = Convert.ToDateTime(reader["dt_cadastro_pedido"].ToString()); pedidos.Add(pedido); } connection.Close(); return(pedidos); }
public override List <EntidadeDominio> Consultar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } Estoque estoque = (Estoque)entidade; StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM estoque_livro "); sql.Append("RIGHT JOIN livro ON (livro.id_livro = estoque_livro.id_estoque_livro) "); sql.Append("LEFT JOIN fornecedor ON (fornecedor.id_fornecedor = estoque_livro.fornecedor_livro_fk) "); sql.Append("LEFT JOIN cidades ON (fornecedor.cidade_fk = cidades.id_cidade) "); sql.Append("JOIN cat_motivo ON (cat_motivo.id_cat_motivo = livro.categoria_motivo_fk) "); // WHERE sem efeito, usado apenas para poder diminuir o número de ifs da construção da query sql.Append("WHERE 1 = 1 "); if (estoque.Livro.ID != 0) { sql.Append("AND id_estoque_livro = ?1 "); } if (estoque.Qtde != 0) { sql.Append("AND quantidade_livro = ?2 "); } if (estoque.ValorCusto != 0.0) { sql.Append("AND custo_unid = ?3 "); } if (estoque.ValorVenda != 0.0) { sql.Append("AND valor_unid = ?4 "); } if (estoque.Fornecedor.ID != 0) { sql.Append("AND fornecedor_livro_fk = ?5 "); } if (estoque.DataCadastro != null) { sql.Append("AND dt_entrada_estoque = ?6 "); } if (estoque.Livro.CategoriaMotivo.ID != 0) { sql.Append("AND id_cat_motivo = ?7 "); } if (estoque.Livro.CategoriaMotivo.Ativo != 'Z') { sql.Append("AND ativo = ?8 "); } sql.Append("ORDER BY livro.id_livro "); pst.CommandText = sql.ToString(); parameters = new MySqlParameter[] { new MySqlParameter("?1", estoque.Livro.ID), new MySqlParameter("?2", estoque.Qtde), new MySqlParameter("?3", estoque.ValorCusto), new MySqlParameter("?4", estoque.ValorVenda), new MySqlParameter("?5", estoque.Fornecedor.ID), new MySqlParameter("?7", estoque.Livro.CategoriaMotivo.ID), new MySqlParameter("?8", estoque.Livro.CategoriaMotivo.Ativo) }; if (estoque.DataCadastro != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?6", estoque.DataCadastro) }; parameters.Concat(parametersAux); } pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; reader = pst.ExecuteReader(); // Lista de retorno da consulta do banco de dados, que conterá os endereços encontrados List <EntidadeDominio> estoques = new List <EntidadeDominio>(); while (reader.Read()) { estoque = new Estoque(); estoque.Livro.ID = Convert.ToInt32(reader["id_livro"]); estoque.Livro.Titulo = reader["titulo_livro"].ToString(); if (!DBNull.Value.Equals(reader["quantidade_livro"])) { estoque.Qtde = Convert.ToInt32(reader["quantidade_livro"].ToString()); } if (!DBNull.Value.Equals(reader["custo_unid"])) { estoque.ValorCusto = Convert.ToSingle(reader["custo_unid"]); } if (!DBNull.Value.Equals(reader["valor_unid"])) { estoque.ValorVenda = Convert.ToSingle(reader["valor_unid"]); } if (!DBNull.Value.Equals(reader["id_fornecedor"])) { estoque.Fornecedor.ID = Convert.ToInt32(reader["id_fornecedor"]); } if (!DBNull.Value.Equals(reader["nome_fornecedor"])) { estoque.Fornecedor.Nome = reader["nome_fornecedor"].ToString(); } if (!DBNull.Value.Equals(reader["id_cidade"])) { estoque.Fornecedor.Cidade.ID = Convert.ToInt32(reader["id_cidade"]); } if (!DBNull.Value.Equals(reader["nome_cidade"])) { estoque.Fornecedor.Cidade.Nome = reader["nome_cidade"].ToString(); } if (!DBNull.Value.Equals(reader["dt_entrada_estoque"])) { estoque.DataCadastro = Convert.ToDateTime(reader["dt_entrada_estoque"].ToString()); } estoque.Livro.CategoriaMotivo.ID = Convert.ToInt32(reader["id_cat_motivo"]); estoque.Livro.CategoriaMotivo.Ativo = reader["ativo"].ToString().First(); estoque.Livro.CategoriaMotivo.Nome = reader["nome_cat_motivo"].ToString(); estoque.Livro.CategoriaMotivo.Descricao = reader["descricao_cat_motivo"].ToString(); estoques.Add(estoque); } connection.Close(); return(estoques); }
public override List <EntidadeDominio> Consultar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } Pedido pedido = (Pedido)entidade; StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM pedido JOIN status_pedido ON (pedido.status_pedido_fk = status_pedido.id_status_pedido) "); // WHERE sem efeito, usado apenas para poder diminuir o número de ifs da construção da query sql.Append("WHERE 1 = 1 "); if (pedido.ID != 0) { sql.Append("AND id_pedido = ?1 "); } if (!String.IsNullOrEmpty(pedido.Usuario)) { sql.Append("AND username = ?2 "); } if (pedido.Total != 0.0) { sql.Append("AND total_pedido = ?3 "); } if (pedido.Status.ID != 0) { sql.Append("AND status_pedido_fk = ?4 "); } if (pedido.EnderecoEntrega.ID != 0) { sql.Append("AND end_entrega_fk = ?5 "); } if (pedido.Frete != 0.0) { sql.Append("AND frete = ?6 "); } if (pedido.DataCadastro != null) { sql.Append("AND dt_cadastro_pedido = ?7 "); } sql.Append("ORDER BY pedido.id_pedido,pedido.status_pedido_fk "); pst.CommandText = sql.ToString(); parameters = new MySqlParameter[] { new MySqlParameter("?1", pedido.ID), new MySqlParameter("?2", pedido.Usuario), new MySqlParameter("?3", pedido.Total), new MySqlParameter("?4", pedido.Status.ID), new MySqlParameter("?5", pedido.EnderecoEntrega.ID), new MySqlParameter("?6", pedido.Frete), new MySqlParameter("?7", pedido.DataCadastro) }; if (pedido.DataCadastro != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?7", pedido.DataCadastro) }; parameters.Concat(parametersAux); } pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; reader = pst.ExecuteReader(); // Lista de retorno da consulta do banco de dados, que conterá os cartões do cliente encontrados List <EntidadeDominio> pedidos = new List <EntidadeDominio>(); while (reader.Read()) { pedido = new Pedido(); pedido.ID = Convert.ToInt32(reader["id_pedido"]); pedido.Usuario = reader["username"].ToString(); pedido.Total = Convert.ToSingle(reader["total_pedido"]); pedido.Status.ID = Convert.ToInt32(reader["id_status_pedido"]); pedido.Status.Nome = reader["nome_status_pedido"].ToString(); pedido.EnderecoEntrega.ID = Convert.ToInt32(reader["end_entrega_fk"]); pedido.Frete = Convert.ToSingle(reader["frete"]); pedido.DataCadastro = Convert.ToDateTime(reader["dt_cadastro_pedido"].ToString()); pedidos.Add(pedido); } connection.Close(); return(pedidos); }
public override List <EntidadeDominio> Consultar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } Cliente cliente = (Cliente)entidade; StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM cliente_pf JOIN telefone ON (cliente_pf.telefone_cli_fk = telefone.id_telefone) "); sql.Append(" JOIN tipo_telefone ON (telefone.tipo_telefone_fk = tipo_telefone.id_tipo_tel) "); // WHERE sem efeito, usado apenas para poder diminuir o número de ifs da construção da query sql.Append("WHERE 1 = 1 "); if (cliente.ID != 0) { sql.Append("AND id_cli_pf = ?1 "); } if (!String.IsNullOrEmpty(cliente.Nome)) { sql.Append("AND nome_cli_pf = ?2 "); } if (cliente.Telefone != null) { Telefone telefone = cliente.Telefone; if (telefone.ID != 0) { sql.Append("AND id_telefone = ?3 "); } if (telefone.TipoTelefone.ID != 0) { sql.Append("AND id_tipo_tel = ?4 "); } if (!String.IsNullOrEmpty(telefone.DDD)) { sql.Append("AND ddd_telefone = ?5 "); } if (!String.IsNullOrEmpty(telefone.NumeroTelefone)) { sql.Append("AND numero_telefone = ?6 "); } } if (!String.IsNullOrEmpty(cliente.Email)) { sql.Append("AND email_cli_pf = ?7 "); } if (!String.IsNullOrEmpty(cliente.CPF)) { sql.Append("AND cpf_cli_pf = ?8 "); } if (!cliente.Genero.Equals("") && !cliente.Genero.Equals(null) && !cliente.Genero.Equals('\0') && !cliente.Genero.Equals('0')) { sql.Append("AND genero_cli_pf = ?9 "); } if (cliente.DataNascimento != null && !cliente.DataNascimento.Equals(null)) { sql.Append("AND dt_nascimento_cli_pf = ?10 "); } if (cliente.DataCadastro != null) { sql.Append("AND dt_cadastro_cli_pf = ?11 "); } //sql.Append("ORDER BY id_cli_pf, endereco.id_endereco, cartao_credito.id_cc "); sql.Append("ORDER BY id_cli_pf "); pst.CommandText = sql.ToString(); parameters = new MySqlParameter[] { new MySqlParameter("?1", cliente.ID), new MySqlParameter("?2", cliente.Nome), new MySqlParameter("?3", cliente.Telefone.ID), new MySqlParameter("?4", cliente.Telefone.TipoTelefone.ID), new MySqlParameter("?5", cliente.Telefone.DDD), new MySqlParameter("?6", cliente.Telefone.NumeroTelefone), new MySqlParameter("?7", cliente.Email), new MySqlParameter("?8", cliente.CPF), new MySqlParameter("?9", cliente.Genero) }; if (cliente.DataNascimento != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?10", cliente.DataNascimento) }; parameters.Concat(parametersAux); } if (cliente.DataCadastro != null) { MySqlParameter[] parametersAux = new MySqlParameter[] { new MySqlParameter("?11", cliente.DataCadastro) }; parameters.Concat(parametersAux); } pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; reader = pst.ExecuteReader(); // Lista de retorno da consulta do banco de dados, que conterá os clientes encontrados List <EntidadeDominio> clientes = new List <EntidadeDominio>(); Cliente clienteAux = new Cliente(); clienteAux.ID = 0; cliente = new Cliente(); while (reader.Read()) { // verifica se cliente que está trazendo do BD é igual ao anterior if (Convert.ToInt32(reader["id_cli_pf"]) != clienteAux.ID) { cliente = new Cliente(); cliente.ID = Convert.ToInt32(reader["id_cli_pf"]); // passando id do cliente que está vindo para o auxiliar clienteAux.ID = cliente.ID; cliente.Nome = reader["nome_cli_pf"].ToString(); // -------------------- TELEFONE - COMEÇO ---------------------------------- cliente.Telefone.ID = Convert.ToInt32(reader["id_telefone"]); cliente.Telefone.TipoTelefone.ID = Convert.ToInt32(reader["id_tipo_tel"]); cliente.Telefone.TipoTelefone.Nome = reader["nome_tipo_tel"].ToString(); cliente.Telefone.DDD = reader["ddd_telefone"].ToString(); cliente.Telefone.NumeroTelefone = reader["numero_telefone"].ToString(); // -------------------- TELEFONE - FIM ---------------------------------- cliente.Email = reader["email_cli_pf"].ToString(); cliente.CPF = reader["cpf_cli_pf"].ToString(); cliente.Genero = reader["genero_cli_pf"].ToString().First(); cliente.DataNascimento = Convert.ToDateTime(reader["dt_nascimento_cli_pf"].ToString()); cliente.DataCadastro = Convert.ToDateTime(reader["dt_cadastro_cli_pf"].ToString()); } clientes.Add(cliente); } connection.Close(); return(clientes); }