internal Resultados <SolicitacaoListarResultados> Filtrar(Filtro <SolicitacaoListarFiltro> filtros, BancoDeDados banco = null) { Resultados <SolicitacaoListarResultados> retorno = new Resultados <SolicitacaoListarResultados>(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { string comandtxt = string.Empty; string esquemaBanco = string.IsNullOrEmpty(EsquemaBanco) ? "" : "."; Comando comando = bancoDeDados.CriarComando(""); #region Adicionando Filtros comandtxt += comando.FiltroAnd("l.solicitacao_numero", "solicitacao_numero", filtros.Dados.SolicitacaoNumero); comandtxt += comando.FiltroAnd("l.empreendimento_codigo", "empreendimento_codigo", filtros.Dados.EmpreendimentoCodigo); comandtxt += comando.FiltroAndLike("l.protocolo_numero_completo", "protocolo_numero_completo", filtros.Dados.Protocolo.NumeroTexto); comandtxt += comando.FiltroAndLike("l.declarante_nome_razao", "declarante_nome_razao", filtros.Dados.DeclaranteNomeRazao, true); comandtxt += comando.FiltroAnd("l.declarante_cpf_cnpj", "declarante_cpf_cnpj", filtros.Dados.DeclaranteCPFCNPJ); comandtxt += comando.FiltroAndLike("l.empreendimento_denominador", "empreendimento_denominador", filtros.Dados.EmpreendimentoDenominador, true); comandtxt += comando.FiltroAnd("l.municipio_id", "municipio_id", filtros.Dados.Municipio); comandtxt += comando.FiltroAnd("l.requerimento", "requerimento", filtros.Dados.Requerimento); comandtxt += comando.FiltroAnd("l.titulo_numero", "titulo_numero", filtros.Dados.Titulo.Inteiro); comandtxt += comando.FiltroAnd("l.titulo_ano", "titulo_ano", filtros.Dados.Titulo.Ano); comandtxt += comando.FiltroAnd("l.origem", "origem", filtros.Dados.Origem); comandtxt += comando.FiltroAnd("l.responsavel", "responsavel_cpf_cnpj", filtros.Dados.ResponsavelEmpreendimentoCPFCNPJ); if (!String.IsNullOrWhiteSpace(filtros.Dados.Situacao)) { comandtxt += comando.FiltroAnd("l.situacao_id", "situacao", filtros.Dados.Situacao); comandtxt += comando.FiltroAnd("l.tipo", "tipo", 1); //Solicitacao } if (filtros.Dados.Situacoes.Count > 0) { comandtxt += String.Format(" and l.situacao_texto in ({0})", String.Join(",", filtros.Dados.Situacoes)); } List <String> ordenar = new List <String>(); List <String> colunas = new List <String>() { "solicitacao_numero", "empreendimento_denominador", "municipio_texto", "situacao_texto" }; if (filtros.OdenarPor > 0) { ordenar.Add(colunas.ElementAtOrDefault(filtros.OdenarPor - 1)); } else { ordenar.Add("solicitacao_numero"); } #endregion #region Quantidade de registro do resultado comando.DbCommand.CommandText = String.Format(@" select count(1) from (select '' responsavel, s.id, s.solic_tit_id, s.solicitacao_numero, null titulo_numero, null titulo_ano, s.protocolo_id, s.protocolo_numero, s.protocolo_ano, s.protocolo_numero_completo, null projeto_digital, null credenciado, s.declarante_id, s.declarante_nome_razao, s.declarante_cpf_cnpj, s.empreendimento_id, s.empreendimento_codigo, s.empreendimento_denominador, s.municipio_id, s.municipio_texto, s.situacao_id, s.situacao_texto, s.requerimento, 1 origem, 1 tipo from lst_car_solic_tit s where s.tipo = 1 union all select nvl(hp.cpf, hp.cnpj) responsavel, s.id, s.solic_tit_id, null solicitacao_numero, s.titulo_numero, s.titulo_ano, s.protocolo_id, s.protocolo_numero, s.protocolo_ano, s.protocolo_numero_completo, null projeto_digital, null credenciado, s.declarante_id, s.declarante_nome_razao, s.declarante_cpf_cnpj, s.empreendimento_id, s.empreendimento_codigo, s.empreendimento_denominador, s.municipio_id, s.municipio_texto, null situacao_id, s.situacao_texto, s.requerimento, 1 origem, 2 tipo from lst_car_solic_tit s, hst_titulo ht, hst_empreendimento he, hst_empreendimento_responsavel her, hst_pessoa hp where ht.titulo_id = s.solic_tit_id and ht.situacao_id = 3/*Concluído*/ and he.empreendimento_id = ht.empreendimento_id and he.tid = ht.empreendimento_tid and her.id_hst = he.id and hp.pessoa_id = her.responsavel_id and hp.tid = her.responsavel_tid and s.tipo = 2 union all select '' responsavel, c.id, c.solicitacao_id solic_tit_id, c.numero solicitacao_numero, null titulo_numero, null titulo_ano, null protocolo_id, null protocolo_numero, null protocolo_ano, null protocolo_numero_completo, c.projeto_digital, c.credenciado, c.declarante_id, c.declarante_nome_razao, c.declarante_cpf_cnpj, c.empreendimento_id, c.empreendimento_codigo, c.empreendimento_denominador, c.municipio_id, c.municipio_texto, c.situacao_id, c.situacao_texto, c.requerimento, 2 origem, 1 tipo from lst_car_solicitacao_cred c) l where 1 = 1" + comandtxt, esquemaBanco); retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando)); comando.AdicionarParametroEntrada("menor", filtros.Menor); comando.AdicionarParametroEntrada("maior", filtros.Maior); comandtxt = @"select l.solic_tit_id, l.responsavel ,nvl(l.solicitacao_numero, l.titulo_numero) numero, l.titulo_ano ano, l.empreendimento_denominador, l.municipio_texto, l.situacao_texto, l.credenciado, l.origem, l.tipo from (select '' responsavel, s.id, s.solic_tit_id, s.solicitacao_numero, null titulo_numero, null titulo_ano, s.protocolo_id, s.protocolo_numero, s.protocolo_ano, s.protocolo_numero_completo, null projeto_digital, null credenciado, s.declarante_id, s.declarante_nome_razao, s.declarante_cpf_cnpj, s.empreendimento_id, s.empreendimento_codigo, s.empreendimento_denominador, s.municipio_id, s.municipio_texto, s.situacao_id, s.situacao_texto, s.requerimento, 1 origem, 1 tipo from lst_car_solic_tit s where s.tipo = 1 union all select nvl(hp.cpf, hp.cnpj) responsavel, s.id, s.solic_tit_id, null solicitacao_numero, s.titulo_numero, s.titulo_ano, s.protocolo_id, s.protocolo_numero, s.protocolo_ano, s.protocolo_numero_completo, null projeto_digital, null credenciado, s.declarante_id, s.declarante_nome_razao, s.declarante_cpf_cnpj, s.empreendimento_id, s.empreendimento_codigo, s.empreendimento_denominador, s.municipio_id, s.municipio_texto, null situacao_id, s.situacao_texto, s.requerimento, 1 origem, 2 tipo from lst_car_solic_tit s, hst_titulo ht, hst_empreendimento he, hst_empreendimento_responsavel her, hst_pessoa hp where ht.titulo_id = s.solic_tit_id and ht.situacao_id = 3/*Concluído*/ and he.empreendimento_id = ht.empreendimento_id and he.tid = ht.empreendimento_tid and her.id_hst = he.id and hp.pessoa_id = her.responsavel_id and hp.tid = her.responsavel_tid and s.tipo = 2 union all select '' responsavel, c.id, c.solicitacao_id solic_tit_id, c.numero solicitacao_numero, null titulo_numero, null titulo_ano, null protocolo_id, null protocolo_numero, null protocolo_ano, null protocolo_numero_completo, c.projeto_digital, c.credenciado, c.declarante_id, c.declarante_nome_razao, c.declarante_cpf_cnpj, c.empreendimento_id, c.empreendimento_codigo, c.empreendimento_denominador, c.municipio_id, c.municipio_texto, c.situacao_id, c.situacao_texto, c.requerimento, 2 origem, 1 tipo from lst_car_solicitacao_cred c) l where 1 = 1" + comandtxt + DaHelper.Ordenar(colunas, ordenar); comando.DbCommand.CommandText = String.Format(@"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor", esquemaBanco); #endregion using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { #region Adicionando o retorno SolicitacaoListarResultados item; while (reader.Read()) { item = new SolicitacaoListarResultados(); item.Id = reader.GetValue <int>("solic_tit_id"); item.Numero = reader.GetValue <string>("numero"); item.Ano = reader.GetValue <string>("ano"); item.EmpreendimentoDenominador = reader.GetValue <string>("empreendimento_denominador"); item.MunicipioTexto = reader.GetValue <string>("municipio_texto"); item.SituacaoTexto = reader.GetValue <string>("situacao_texto"); item.IsTitulo = reader.GetValue <int>("tipo") == 2; item.CredenciadoId = reader.GetValue <int>("credenciado"); item.Origem = (eCARSolicitacaoOrigem)(reader.GetValue <int>("origem")); retorno.Itens.Add(item); } reader.Close(); #endregion Adicionando o retorno } } return(retorno); }
internal Resultados <SolicitacaoListarResultados> Filtrar(Filtro <SolicitacaoListarFiltro> filtros, BancoDeDados banco = null) { Resultados <SolicitacaoListarResultados> retorno = new Resultados <SolicitacaoListarResultados>(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { string comandtxt = string.Empty; string esquemaBanco = string.IsNullOrEmpty(UsuarioInterno) ? "" : "."; Comando comando = bancoDeDados.CriarComando(""); #region Adicionando Filtros comandtxt += comando.FiltroAnd("l.solicitacao_numero", "solicitacao_numero", filtros.Dados.SolicitacaoNumero); comandtxt += comando.FiltroAnd("l.empreendimento_codigo", "empreendimento_codigo", filtros.Dados.EmpreendimentoCodigo); comandtxt += comando.FiltroAndLike("l.protocolo_numero_completo", "protocolo_numero_completo", filtros.Dados.Protocolo.NumeroTexto); comandtxt += comando.FiltroAndLike("l.declarante_nome_razao", "declarante_nome_razao", filtros.Dados.DeclaranteNomeRazao); comandtxt += comando.FiltroAnd("l.declarante_cpf_cnpj", "declarante_cpf_cnpj", filtros.Dados.DeclaranteCPFCNPJ); comandtxt += comando.FiltroAndLike("l.empreendimento_denominador", "empreendimento_denominador", filtros.Dados.EmpreendimentoDenominador); comandtxt += comando.FiltroAnd("l.municipio_id", "municipio_id", filtros.Dados.Municipio); comandtxt += comando.FiltroAnd("l.requerimento", "requerimento", filtros.Dados.Requerimento); comandtxt += comando.FiltroAnd("l.titulo_numero", "titulo_numero", filtros.Dados.Titulo.Inteiro); comandtxt += comando.FiltroAnd("l.titulo_ano", "titulo_ano", filtros.Dados.Titulo.Ano); comandtxt += comando.FiltroAnd("l.situacao_id", "situacao", filtros.Dados.Situacao); #endregion #region Quantidade de registro do resultado comando.DbCommand.CommandText = String.Format(@"select count(1) from {0}lst_car_solic_tit l, {0}tab_requerimento tr where 1 = 1 and l.requerimento = tr.id and (l.requerimento in (select r.id from {0}tab_requerimento r, {0}tab_pessoa tp where r.interessado = tp.id and nvl(tp.cpf, tp.cnpj) = :cpfCnpj) or l.requerimento in (select r.id from {0}tab_requerimento r, {0}tab_pessoa tp, {0}tab_requerimento_responsavel trr where r.id = trr.requerimento and trr.responsavel = tp.id and nvl(tp.cpf, tp.cnpj) = :cpfCnpj) or l.requerimento in (select r.id {0}from tab_requerimento r, {0}tab_pessoa tp, {0}tab_empreendimento te, {0}tab_empreendimento_responsavel ter where r.empreendimento = te.id and te.id = ter.empreendimento and ter.responsavel = tp.id and nvl(tp.cpf, tp.cnpj) = :cpfCnpj)) " + comandtxt, esquemaBanco); comando.AdicionarParametroEntrada("cpfCnpj", filtros.Dados.AutorCPFCNPJ); retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando)); comando.AdicionarParametroEntrada("menor", filtros.Menor); comando.AdicionarParametroEntrada("maior", filtros.Maior); comandtxt = @"select l.solic_tit_id, nvl(l.solicitacao_numero, l.titulo_numero) numero, l.titulo_ano ano, l.empreendimento_denominador, l.municipio_texto, l.situacao_texto, l.tipo from lst_car_solic_tit l, {0}tab_requerimento tr where 1 = 1 and l.requerimento = tr.id and (l.requerimento in (select r.id from {0}tab_requerimento r, {0}tab_pessoa tp where r.interessado = tp.id and nvl(tp.cpf, tp.cnpj) = :cpfCnpj) or l.requerimento in (select r.id from {0}tab_requerimento r, {0}tab_pessoa tp, {0}tab_requerimento_responsavel trr where r.id = trr.requerimento and trr.responsavel = tp.id and nvl(tp.cpf, tp.cnpj) = :cpfCnpj) or l.requerimento in (select r.id {0}from tab_requerimento r, {0}tab_pessoa tp, {0}tab_empreendimento te, {0}tab_empreendimento_responsavel ter where r.empreendimento = te.id and te.id = ter.empreendimento and ter.responsavel = tp.id and nvl(tp.cpf, tp.cnpj) = :cpfCnpj)) " + comandtxt; comando.DbCommand.CommandText = String.Format(@"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor", esquemaBanco); #endregion using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { #region Adicionando o retorno SolicitacaoListarResultados item; while (reader.Read()) { item = new SolicitacaoListarResultados(); item.Id = reader.GetValue <int>("solic_tit_id"); item.Numero = reader.GetValue <string>("numero"); item.Ano = reader.GetValue <string>("ano"); item.EmpreendimentoDenominador = reader.GetValue <string>("empreendimento_denominador"); item.MunicipioTexto = reader.GetValue <string>("municipio_texto"); item.SituacaoTexto = reader.GetValue <string>("situacao_texto"); item.IsTitulo = reader.GetValue <int>("tipo") == 2; retorno.Itens.Add(item); } reader.Close(); #endregion Adicionando o retorno } } return(retorno); }