internal void ObterValores(List <ConfiguracaoVegetalItem> itens)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                Comando comando = bancoDeDados.CriarComando(@"
				select i.id, i.tid, i.texto, i.situacao, s.texto situacao_texto, i.motivo 
				from tab_ingrediente_ativo i, lov_ingrediente_ativo_situacao s 
				where i.situacao = s.id "                , EsquemaBanco);

                comando.DbCommand.CommandText += comando.AdicionarIn("and", "i.id", DbType.Int32, itens.Select(x => x.Id).ToList());

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem ingredienteAtivo;

                    while (reader.Read())
                    {
                        ingredienteAtivo = itens.Single(x => x.Id == reader.GetValue <int>("id"));

                        ingredienteAtivo.Texto         = reader.GetValue <string>("texto");
                        ingredienteAtivo.SituacaoId    = reader.GetValue <int>("situacao");
                        ingredienteAtivo.SituacaoTexto = reader.GetValue <string>("situacao_texto");
                        ingredienteAtivo.Motivo        = reader.GetValue <string>("motivo");
                        ingredienteAtivo.Tid           = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }
            }
        }
        internal bool VerificarEncerrar(Atividade atividade, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = null;

                List <int> modelosRequeridos = new List <int>();

                if (atividade.Finalidades != null && atividade.Finalidades.Count > 0)
                {
                    modelosRequeridos.AddRange(atividade.Finalidades.Select(x => x.TituloModelo).ToList());
                }
                else
                {
                    modelosRequeridos = ObterModelosRequeridos(atividade, banco);
                }

                comando = bancoDeDados.CriarComando(@"select count(*) from {0}tab_titulo_atividades ta, {0}tab_titulo tt 
				where ta.protocolo = :protocolo and ta.atividade = :atividade and ta.titulo = tt.id and tt.situacao = 5 and tt.situacao_motivo not in (1,4) "                , EsquemaBanco);

                comando.DbCommand.CommandText += comando.AdicionarIn("and ", "tt.modelo", DbType.Int32, modelosRequeridos);
                comando.AdicionarParametroEntrada("protocolo", atividade.Protocolo.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("atividade", atividade.Id, DbType.Int32);

                return(Convert.ToInt32(bancoDeDados.ExecutarScalar(comando)) == modelosRequeridos.Count);
            }
        }
Beispiel #3
0
        public List <Item> ObterItensProjetoDigital(List <Caracterizacao> caracterizacoes)
        {
            List <Item> itens = new List <Item>();

            if (caracterizacoes.Count == 0)
            {
                return(itens);
            }

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                #region Itens do roteiro

                Comando comando = bancoDeDados.CriarComando(@"select r.id, r.nome, r.condicionante, r.procedimento, r.tipo, l.texto tipo_texto,
															r.caracterizacao_tipo, lc.texto caracterizacao_tipo_texto, li.id situacao_id, li.texto situacao_texto,
															r.tid from tab_roteiro_item r, lov_roteiro_item_tipo l, lov_caracterizacao_tipo lc, lov_analise_item_situacao li
															where r.tipo = l.id and lc.id = r.caracterizacao_tipo and li.id = 1/*Recebido*/ and r.tipo = 3 /*Projeto Digital*/"                                                            , EsquemaBanco);

                comando.DbCommand.CommandText += comando.AdicionarIn("and", "r.caracterizacao_tipo", DbType.Int32, caracterizacoes.Select(x => (int)x.Tipo).ToList());

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Item item = new Item();

                    while (reader.Read())
                    {
                        item                         = new Item();
                        item.Id                      = Convert.ToInt32(reader["id"]);
                        item.Nome                    = reader["nome"].ToString();
                        item.DataAnalise             = DateTime.Today.ToString();
                        item.Recebido                = true;
                        item.Situacao                = reader.GetValue <Int32>("situacao_id");
                        item.SituacaoTexto           = reader.GetValue <String>("situacao_texto");
                        item.Condicionante           = reader["condicionante"].ToString();
                        item.ProcedimentoAnalise     = reader["procedimento"].ToString();
                        item.Tipo                    = reader.GetValue <int>("tipo");
                        item.TipoTexto               = reader["tipo_texto"].ToString();
                        item.CaracterizacaoTipoId    = reader.GetValue <int>("caracterizacao_tipo");
                        item.CaracterizacaoTipoTexto = reader.GetValue <string>("caracterizacao_tipo_texto");
                        item.Tid                     = reader["tid"].ToString();
                        item.TemProjetoGeografico    = caracterizacoes.Any(x => (int)x.Tipo == item.CaracterizacaoTipoId && x.ProjetoId > 0);

                        itens.Add(item);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(itens);
        }
Beispiel #4
0
        internal List <string> ObterNomeModeloTitulo(List <int> codigoModeloConfigurado, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select nome from {0}tab_titulo_modelo m where ", EsquemaBanco);

                //comando.AdicionarParametroEntrada("codigoModelo", codigoModeloConfigurado, DbType.Int32);
                comando.DbCommand.CommandText += comando.AdicionarIn("", "m.codigo", DbType.Int32, codigoModeloConfigurado);

                List <string> lstModelos = bancoDeDados.ExecutarList <string>(comando);

                return(lstModelos);
            }
        }
        internal bool ResponsavelTecnicoHabilitadoParaCultivar(int credenciadoId, List <int> cultivarIds, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComandoPlSql(@"select count(*) from tab_hab_emi_cfo_cfoc th, tab_hab_emi_cfo_cfoc_praga p, tab_praga_cultura tpc, 
				tab_cultura_cultivar tcc "                , EsquemaBanco);

                comando.DbCommand.CommandText += String.Format(@" where  th.id = p.habilitar_emi_id and p.praga = tpc.praga  and tpc.cultura = tcc.cultura and 
				th.responsavel = :credenciado_id {0}"                , comando.AdicionarIn("and", "tcc.id", DbType.Int32, cultivarIds));

                comando.AdicionarParametroEntrada("credenciado_id", credenciadoId, DbType.Int32);

                return(Convert.ToInt32(bancoDeDados.ExecutarScalar(comando)) > 0);
            }
        }
        public List <string> ObterGrupoNome(List <ePermissao> permissoes)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                Comando comando = bancoDeDados.CriarComando(@"select t.grupo||' - '||t.nome nome from lov_autenticacao_permissao t where ");
                comando.DbCommand.CommandText += comando.AdicionarIn("", "t.codigo", DbType.String, permissoes);

                IEnumerable <IDataReader> daReader = DaHelper.ObterLista(comando, bancoDeDados);

                List <string> lstPermissoes = new List <string>();

                foreach (var item in daReader)
                {
                    lstPermissoes.Add(item["nome"].ToString());
                }

                return(lstPermissoes);
            }
        }
        internal void ExcluirTodosNaoAssociadosBloqueio(LocalVistoria local, BancoDeDados banco)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                List <int> listaIdExcluir = new List <int>();

                Comando cmdConsulta = bancoDeDados.CriarComando(@"select lv.id from {0}CNF_LOCAL_VISTORIA_BLOQUEIO lv where lv.setor = :setorId", EsquemaBanco);
                cmdConsulta.DbCommand.CommandText += cmdConsulta.AdicionarNotIn("and", "lv.id", DbType.Int32, local.Bloqueios.Select(x => x.Id).ToList());
                cmdConsulta.AdicionarParametroEntrada("setorId", local.SetorID, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(cmdConsulta))
                {
                    while (reader.Read())
                    {
                        listaIdExcluir.Add(reader.GetValue <int>("id"));
                    }

                    reader.Close();
                }

                if (listaIdExcluir.Count > 0)
                {
                    Comando cmdUpdate = bancoDeDados.CriarComando(@"update {0}CNF_LOCAL_VISTORIA_BLOQUEIO set tid = :tid where ", EsquemaBanco);
                    cmdUpdate.DbCommand.CommandText += cmdUpdate.AdicionarIn("", "id", DbType.Int32, listaIdExcluir);
                    cmdUpdate.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                    bancoDeDados.ExecutarNonQuery(cmdUpdate);

                    //foreach (int idExcluido in listaIdExcluir)
                    //{
                    //    // Gerando historico para todos os itens excluidos
                    //    Historico.Gerar(idExcluido, eHistoricoArtefato.localvistoria, eHistoricoAcao.excluir, bancoDeDados);
                    //}

                    Comando comando = bancoDeDados.CriarComando("delete from {0}CNF_LOCAL_VISTORIA_BLOQUEIO lv where lv.setor = :setorId ", EsquemaBanco);
                    comando.DbCommand.CommandText += comando.AdicionarNotIn("and", "lv.id", DbType.Int32, local.Bloqueios.Select(x => x.Id).ToList());
                    comando.AdicionarParametroEntrada("setorId", local.SetorID, DbType.Int32);
                    bancoDeDados.ExecutarNonQuery(comando);
                }


                bancoDeDados.Commit();
            }
        }
Beispiel #8
0
        internal List <TituloModeloLst> ObterModelosAtividades(List <AtividadeSolicitada> atividades, bool renovacao = false, BancoDeDados banco = null)
        {
            List <TituloModeloLst> modelos = new List <TituloModeloLst>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Roteiros

                Comando comando = bancoDeDados.CriarComando(@"select tm.id, tm.nome from cnf_atividade_atividades a, cnf_atividade_modelos m, tab_titulo_modelo tm
				where a.configuracao = m.configuracao and tm.id = m.modelo "                );

                comando.DbCommand.CommandText += comando.AdicionarIn("and", "a.atividade", DbType.Int32, atividades.Select(x => x.Id).ToList());

                if (renovacao)
                {
                    comando.DbCommand.CommandText += String.Format("and tm.id in (select r.modelo from {0}tab_titulo_modelo_regras r where r.regra = 6)", EsquemaBanco);
                }

                comando.DbCommand.CommandText += " group by tm.id, tm.nome";

                bancoDeDados.ExecutarNonQuery(comando);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    TituloModeloLst modelo;
                    while (reader.Read())
                    {
                        modelo       = new TituloModeloLst();
                        modelo.Id    = Convert.ToInt32(reader["id"]);
                        modelo.Texto = reader["nome"].ToString();

                        modelos.Add(modelo);
                    }
                    reader.Close();
                }

                #endregion
            }
            return(modelos);
        }
Beispiel #9
0
        public Resultados <Titulo> Filtrar(Filtro <TituloFiltro> filtros, BancoDeDados banco = null)
        {
            Resultados <Titulo> retorno = new Resultados <Titulo>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                string  comandtxt = string.Empty;
                Comando comando   = bancoDeDados.CriarComando("");

                #region Adicionando Filtros

                comandtxt += comando.AdicionarIn("and", "t.situacao_id", DbType.Int32, new List <int>()
                {
                    3, 5, 6
                });
                comandtxt += comando.FiltroIn("t.modelo_id", "select re.modelo from tab_titulo_modelo_regras re where re.regra = :regra", "regra", 8);

                comandtxt += comando.FiltroAnd("t.modelo_id", "modelo", filtros.Dados.Modelo);

                comandtxt += comando.FiltroAnd("t.setor_id", "setor", filtros.Dados.Setor);

                comandtxt += comando.FiltroAndLike("t.numero || '/' || t.ano", "numero", filtros.Dados.Numero, true);

                comandtxt += comando.FiltroAndLike("t.protocolo_numero", "protocolo_numero", filtros.Dados.Protocolo.NumeroTexto, true);

                comandtxt += comando.FiltroAndLike("t.empreendimento_denominador", "empreendimento", filtros.Dados.Empreendimento, true);

                if (filtros.Dados.Modelo <= 0 && filtros.Dados.ModeloFiltrar != null && filtros.Dados.ModeloFiltrar.Count > 0)
                {
                    comandtxt += comando.AdicionarIn("and", "t.modelo_id", DbType.Int32, filtros.Dados.ModeloFiltrar.Select(x => x).ToList());
                }

                if (filtros.Dados.SituacoesFiltrar != null && filtros.Dados.SituacoesFiltrar.Count > 0)
                {
                    comandtxt += comando.AdicionarIn("and", "t.situacao_id", DbType.Int32, filtros.Dados.SituacoesFiltrar.Select(x => x).ToList());
                }

                List <String> ordenar = new List <String>();
                List <String> colunas = new List <String>()
                {
                    "numero", "modelo_sigla", "protocolo_numero", "empreendimento", "situacao_texto", "data_vencimento"
                };

                if (filtros.OdenarPor > 0)
                {
                    ordenar.Add(colunas.ElementAtOrDefault(filtros.OdenarPor - 1));
                }
                else
                {
                    ordenar.Add("numero");
                }

                #endregion

                #region Quantidade de registro do resultado

                comando.DbCommand.CommandText = String.Format(@"select count(*) from {0}lst_titulo t where t.id > 0 " + comandtxt, (string.IsNullOrEmpty(EsquemaBanco) ? "" : "."));

                retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando));

                comando.AdicionarParametroEntrada("menor", filtros.Menor);
                comando.AdicionarParametroEntrada("maior", filtros.Maior);

                comandtxt = String.Format(@"select t.titulo_id id, t.titulo_tid, t.numero_completo, t.data_vencimento, t.autor_id, t.autor_nome, t.modelo_sigla, t.situacao_texto, t.modelo_id,
				t.modelo_nome, t.protocolo_id, t.protocolo protocolo_tipo, t.protocolo_numero, t.empreendimento_denominador empreendimento from 
				{0}lst_titulo t where 1 = 1 "                 + comandtxt + DaHelper.Ordenar(colunas, ordenar),
                                          (string.IsNullOrEmpty(EsquemaBanco) ? "" : "."));

                comando.DbCommand.CommandText = @"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor";

                #endregion

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    #region Adicionando os dados na classe de retorno

                    Titulo titulo;
                    while (reader.Read())
                    {
                        titulo            = new Titulo();
                        titulo.Id         = Convert.ToInt32(reader["id"]);
                        titulo.Autor.Id   = Convert.ToInt32(reader["autor_id"]);
                        titulo.Autor.Nome = reader["autor_nome"].ToString();
                        titulo.Tid        = reader["titulo_tid"].ToString();

                        if (reader["numero_completo"] != null && !Convert.IsDBNull(reader["numero_completo"]))
                        {
                            titulo.Numero.Texto = reader["numero_completo"].ToString();
                        }

                        if (reader["modelo_id"] != null && !Convert.IsDBNull(reader["modelo_id"]))
                        {
                            titulo.Modelo.Id = Convert.ToInt32(reader["modelo_id"]);
                        }

                        if (reader["modelo_sigla"] != null && !Convert.IsDBNull(reader["modelo_sigla"]))
                        {
                            titulo.Modelo.Sigla = reader["modelo_sigla"].ToString();
                        }

                        if (reader["modelo_nome"] != null && !Convert.IsDBNull(reader["modelo_nome"]))
                        {
                            titulo.Modelo.Nome = reader["modelo_nome"].ToString();
                        }

                        if (reader["situacao_texto"] != null && !Convert.IsDBNull(reader["situacao_texto"]))
                        {
                            titulo.Situacao.Nome = reader["situacao_texto"].ToString();
                        }

                        titulo.Protocolo.IsProcesso = (reader["protocolo_tipo"] != null && Convert.ToInt32(reader["protocolo_tipo"]) == 1);

                        if (reader["protocolo_id"] != null && !Convert.IsDBNull(reader["protocolo_id"]))
                        {
                            ProtocoloNumero prot = new ProtocoloNumero(reader["protocolo_numero"].ToString());
                            titulo.Protocolo.Id = Convert.ToInt32(reader["protocolo_id"]);
                            titulo.Protocolo.NumeroProtocolo = prot.Numero;
                            titulo.Protocolo.Ano             = prot.Ano;
                        }

                        if (reader["empreendimento"] != null && !Convert.IsDBNull(reader["empreendimento"]))
                        {
                            titulo.EmpreendimentoTexto = reader["empreendimento"].ToString();
                        }

                        if (reader["data_vencimento"] != null && !Convert.IsDBNull(reader["data_vencimento"]))
                        {
                            titulo.DataVencimento.Data = Convert.ToDateTime(reader["data_vencimento"]);
                        }

                        retorno.Itens.Add(titulo);
                    }

                    reader.Close();

                    #endregion
                }
            }

            return(retorno);
        }
        public List <Pessoa> ObterResponsaveis(int empreendimento, BancoDeDados bancoCredenciado)
        {
            var retorno = new List <Pessoa>();
            var conj    = new List <string>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(bancoCredenciado, UsuarioCredenciado))
            {
                bancoDeDados.IniciarTransacao();

                #region Responsáveis do empreendimento

                Comando comando = bancoDeDados.CriarComando(@"select p.tipo Tipo, p.id Id, p.interno InternoId, nvl(p.nome, p.razao_social) NomeRazaoSocial,
				nvl(p.cpf, p.cnpj) CPFCNPJ, (select c.conjuge||'@'||c.pessoa from {0}tab_pessoa_conjuge c where c.pessoa = p.id or c.conjuge = p.id) conjuge 
				from {0}tab_pessoa p, {0}tab_empreendimento_responsavel pc where p.id = pc.responsavel and pc.empreendimento = :empreendimento"                , UsuarioCredenciado);

                comando.AdicionarParametroEntrada("empreendimento", empreendimento, DbType.Int32);

                Pessoa pessoa;

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        pessoa              = new Pessoa();
                        pessoa.Id           = reader.GetValue <int>("Id");
                        pessoa.Tipo         = reader.GetValue <int>("Tipo");
                        pessoa.InternoId    = reader.GetValue <int>("InternoId");
                        pessoa.NomeFantasia = reader.GetValue <string>("NomeRazaoSocial");
                        pessoa.CPFCNPJ      = reader.GetValue <string>("CPFCNPJ");
                        if (!string.IsNullOrEmpty(reader.GetValue <string>("conjuge")))
                        {
                            conj = reader.GetValue <string>("conjuge").Split('@').ToList();
                            pessoa.Fisica.ConjugeId = (Convert.ToInt32(conj[0]) == pessoa.Id) ? Convert.ToInt32(conj[1]) : Convert.ToInt32(conj[0]);
                        }
                        retorno.Add(pessoa);
                    }

                    reader.Close();
                }

                #endregion

                //Obter CPF Conjuges
                comando = bancoDeDados.CriarComando(@"select p.id, p.cpf from {0}tab_pessoa p ", UsuarioCredenciado);
                comando.DbCommand.CommandText += comando.AdicionarIn("where", "p.id", DbType.Int32, retorno.Where(x => x.Fisica.ConjugeId > 0).Select(x => x.Fisica.ConjugeId).ToList());

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        pessoa = retorno.FirstOrDefault(x => x.Fisica.ConjugeId == reader.GetValue <int>("id"));

                        if (pessoa != null)
                        {
                            pessoa.Fisica.ConjugeCPF = reader.GetValue <string>("cpf");
                        }
                    }

                    reader.Close();
                }
            }
            return(retorno);
        }
        internal List <Cultivar> ObterCultivares(List <int> culturas, BancoDeDados banco = null)
        {
            List <Cultivar> lstCultivar = new List <Cultivar>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Cultivar

                Comando comando = bancoDeDados.CriarComando(@"select cc.id, cc.cultivar, cc.cultura from tab_cultura_cultivar cc ", EsquemaBanco);
                comando.DbCommand.CommandText += comando.AdicionarIn("where", "cultura", DbType.Int32, culturas);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Cultivar lista = null;

                    while (reader.Read())
                    {
                        lista           = new Cultivar();
                        lista.Id        = reader.GetValue <int>("id");
                        lista.Nome      = reader.GetValue <string>("cultivar");
                        lista.CulturaId = reader.GetValue <int>("cultura");

                        lstCultivar.Add(lista);
                    }

                    reader.Close();
                }

                #endregion

                #region Cultivar_Configurações

                comando = bancoDeDados.CriarComando(@"
				select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
				lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
				from {0}tab_cultivar_configuracao t, {0}tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld
				where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar = :id"                , EsquemaBanco);

                lstCultivar.ForEach(x =>
                {
                    comando.AdicionarParametroEntrada("id", x.Id, DbType.Int32);
                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            x.LsCultivarConfiguracao.Add(new CultivarConfiguracao()
                            {
                                Id                           = reader.GetValue <int>("id"),
                                Tid                          = reader.GetValue <string>("tid"),
                                Cultivar                     = reader.GetValue <int>("cultivar"),
                                PragaId                      = reader.GetValue <int>("PragaId"),
                                PragaTexto                   = reader.GetValue <string>("PragaTexto"),
                                TipoProducaoId               = reader.GetValue <int>("TipoProducaoId"),
                                TipoProducaoTexto            = reader.GetValue <string>("TipoProducaoTexto"),
                                DeclaracaoAdicionalId        = reader.GetValue <int>("DeclaracaoAdicionalId"),
                                DeclaracaoAdicionalTexto     = reader.GetValue <string>("DeclaracaoAdicionalTexto"),
                                DeclaracaoAdicionalTextoHtml = reader.GetValue <string>("DeclaracaoAdicionalTextoHtml"),
                            });
                        }

                        reader.Close();
                    }
                });

                #endregion
            }

            return(lstCultivar);
        }
        internal Agrotoxico ObterAgrotoxico(int id, bool simplificado = false, BancoDeDados banco = null)
        {
            Agrotoxico agrotoxico = new Agrotoxico();

            using (BancoDeDados bancoDedados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDedados.CriarComando(@"select t.id, t.possui_cadastro, t.numero_cadastro, t.cadastro_ativo, t.motivo, t.nome_comercial,
															t.numero_registro_ministerio, t.numero_processo_sep, t.titular_registro, nvl(p.nome, p.razao_social) 
															titular_registro_nome_razao, nvl(p.cpf, p.cnpj) titular_registro_cpf_cnpj, t.classificacao_toxicologica, 
															c.texto class_toxicologica_texto, t.periculosidade_ambiental, pa.texto periculosidade_ambiental_texto, 
															t.forma_apresentacao, t.observacao_interna, t.observacao_geral, t.arquivo, t.tid from tab_agrotoxico t,
															tab_pessoa p, tab_class_toxicologica c, tab_peric_ambiental pa where c.id = classificacao_toxicologica 
															and p.id = t.titular_registro and pa.id = t.periculosidade_ambiental and t.id = :id"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        agrotoxico.Id            = id;
                        agrotoxico.Bula.Id       = reader.GetValue <int>("arquivo");
                        agrotoxico.CadastroAtivo = reader.GetValue <bool>("cadastro_ativo");
                        agrotoxico.ClassificacaoToxicologica.Id    = reader.GetValue <int>("classificacao_toxicologica");
                        agrotoxico.ClassificacaoToxicologica.Texto = reader.GetValue <string>("class_toxicologica_texto");
                        agrotoxico.FormaApresentacao.Id            = reader.GetValue <int>("forma_apresentacao");
                        agrotoxico.MotivoId                      = reader.GetValue <int?>("motivo");
                        agrotoxico.NomeComercial                 = reader.GetValue <string>("nome_comercial");
                        agrotoxico.NumeroCadastro                = reader.GetValue <int>("numero_cadastro");
                        agrotoxico.NumeroRegistroMinisterio      = reader.GetValue <long>("numero_registro_ministerio");
                        agrotoxico.NumeroProcessoSep             = reader.GetValue <long>("numero_processo_sep");
                        agrotoxico.ObservacaoGeral               = reader.GetValue <string>("observacao_geral");
                        agrotoxico.ObservacaoInterna             = reader.GetValue <string>("observacao_interna");
                        agrotoxico.PericulosidadeAmbiental.Id    = reader.GetValue <int>("periculosidade_ambiental");
                        agrotoxico.PericulosidadeAmbiental.Texto = reader.GetValue <string>("periculosidade_ambiental_texto");
                        agrotoxico.PossuiCadastro                = reader.GetValue <bool>("possui_cadastro");
                        agrotoxico.Tid = reader.GetValue <string>("tid");
                        agrotoxico.TitularRegistro.Id = reader.GetValue <int>("titular_registro");
                        agrotoxico.TitularRegistro.NomeRazaoSocial = reader.GetValue <string>("titular_registro_nome_razao");
                        agrotoxico.TitularRegistro.CPFCNPJ         = reader.GetValue <string>("titular_registro_cpf_cnpj");
                    }
                    reader.Close();
                }

                if (simplificado)
                {
                    return(agrotoxico);
                }

                #region Classes de Uso

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.classe_uso, c.texto classe_uso_texto, t.tid from tab_agrotoxico_classe_uso t, tab_classe_uso c 
                where t.classe_uso = c.id and t.agrotoxico =:agrotoxico", EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem classeUso = null;

                    while (reader.Read())
                    {
                        classeUso = new ConfiguracaoVegetalItem();
                        classeUso.IdRelacionamento = reader.GetValue <int>("id");
                        classeUso.Id    = reader.GetValue <int>("classe_uso");
                        classeUso.Texto = reader.GetValue <string>("classe_uso_texto");
                        classeUso.Tid   = reader.GetValue <string>("tid");
                        agrotoxico.ClassesUso.Add(classeUso);
                    }

                    reader.Close();
                }

                #endregion

                #region Ingredientes Ativos

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.ingrediente_ativo, i.texto ingrediente_ativo_texto, i.situacao, t.concentracao, t.tid from tab_agrotoxico_ing_ativo 
                t, tab_ingrediente_ativo i where t.ingrediente_ativo = i.id and t.agrotoxico = :agrotoxico", EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem ingrediente = null;

                    while (reader.Read())
                    {
                        ingrediente = new ConfiguracaoVegetalItem();
                        ingrediente.IdRelacionamento = reader.GetValue <int>("id");
                        ingrediente.Id           = reader.GetValue <int>("ingrediente_ativo");
                        ingrediente.Texto        = reader.GetValue <string>("ingrediente_ativo_texto");
                        ingrediente.SituacaoId   = reader.GetValue <int>("situacao");
                        ingrediente.Tid          = reader.GetValue <string>("tid");
                        ingrediente.Concentracao = reader.GetValue <decimal>("concentracao");
                        agrotoxico.IngredientesAtivos.Add(ingrediente);
                    }

                    reader.Close();
                }

                #endregion

                #region Grupos químicos

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.grupo_quimico, g.texto grupo_quimico_texto, t.tid from tab_agrotoxico_grupo_quimico t, 
                tab_grupo_quimico g where t.grupo_quimico = g.id and t.agrotoxico = :agrotoxico", EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem grupo = null;

                    while (reader.Read())
                    {
                        grupo = new ConfiguracaoVegetalItem();
                        grupo.IdRelacionamento = reader.GetValue <int>("id");
                        grupo.Id    = reader.GetValue <int>("grupo_quimico");
                        grupo.Texto = reader.GetValue <string>("grupo_quimico_texto");
                        grupo.Tid   = reader.GetValue <string>("tid");
                        agrotoxico.GruposQuimicos.Add(grupo);
                    }

                    reader.Close();
                }

                #endregion

                #region Culturas

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico, t.cultura, c.texto cultura_texto, t.intervalo_seguranca, 
													t.tid from tab_agrotoxico_cultura t, tab_cultura c where t.cultura = c.id 
													and t.agrotoxico = :agrotoxico"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("agrotoxico", id, DbType.Int32);

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    AgrotoxicoCultura cultura = null;

                    while (reader.Read())
                    {
                        cultura = new AgrotoxicoCultura();
                        cultura.IdRelacionamento   = reader.GetValue <int>("id");
                        cultura.Cultura.Id         = reader.GetValue <int>("cultura");
                        cultura.Cultura.Nome       = reader.GetValue <string>("cultura_texto");
                        cultura.IntervaloSeguranca = reader.GetValue <string>("intervalo_seguranca");
                        cultura.Tid = reader.GetValue <string>("tid");
                        agrotoxico.Culturas.Add(cultura);
                    }

                    reader.Close();
                }

                #endregion

                #region Pragas das culturas

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico_cultura, t.praga, p.nome_cientifico, p.nome_comum, t.tid from tab_agrotoxico_cultura_praga t, tab_praga p ", EsquemaBanco);
                comando.DbCommand.CommandText += String.Format(" where t.praga = p.id {0}",
                                                               comando.AdicionarIn("and", "t.agrotoxico_cultura", DbType.Int32, agrotoxico.Culturas.Select(x => x.IdRelacionamento).ToList()));

                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    Praga praga = null;

                    while (reader.Read())
                    {
                        praga = new Praga();
                        praga.IdRelacionamento = reader.GetValue <int>("id");
                        praga.Id             = reader.GetValue <int>("praga");
                        praga.NomeCientifico = reader.GetValue <string>("nome_cientifico");
                        praga.NomeComum      = reader.GetValue <string>("nome_comum");
                        praga.Tid            = reader.GetValue <string>("tid");

                        if (agrotoxico.Culturas != null && agrotoxico.Culturas.Count > 0)
                        {
                            agrotoxico.Culturas.Single(x => x.IdRelacionamento == reader.GetValue <int>("agrotoxico_cultura")).Pragas.Add(praga);
                        }
                    }

                    reader.Close();
                }

                #endregion

                #region Modalidades de aplicacao das culturas

                comando = bancoDedados.CriarComando(@"select t.id, t.agrotoxico_cultura, t.modalidade_aplicacao, m.texto modalidade_texto, t.tid from tab_agro_cult_moda_aplicacao t, 
                tab_modalidade_aplicacao m ", EsquemaBanco);

                comando.DbCommand.CommandText += String.Format(" where t.modalidade_aplicacao = m.id {0}",
                                                               comando.AdicionarIn("and", "t.agrotoxico_cultura", DbType.Int32, agrotoxico.Culturas.Select(x => x.IdRelacionamento).ToList()));


                using (IDataReader reader = bancoDedados.ExecutarReader(comando))
                {
                    ConfiguracaoVegetalItem modalidade = null;

                    while (reader.Read())
                    {
                        modalidade    = new ConfiguracaoVegetalItem();
                        modalidade.Id = reader.GetValue <int>("modalidade_aplicacao");
                        modalidade.IdRelacionamento = reader.GetValue <int>("id");
                        modalidade.Texto            = reader.GetValue <string>("modalidade_texto");

                        if (agrotoxico.Culturas != null && agrotoxico.Culturas.Count > 0)
                        {
                            agrotoxico.Culturas.Single(x => x.IdRelacionamento == reader.GetValue <int>("agrotoxico_cultura")).ModalidadesAplicacao.Add(modalidade);
                        }
                    }

                    reader.Close();
                }

                #endregion
            }

            return(agrotoxico);
        }
        public List <Caracterizacao> ObterCaracterizacoesAtuais(int empreendimento, List <CaracterizacaoLst> caracterizacoes, BancoDeDados banco = null)
        {
            List <Caracterizacao> lista = new List <Caracterizacao>();
            String select = String.Empty;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Lista das caracterizações

                Comando comando = bancoDeDados.CriarComando(@"select 'select ' || t.id || ' tipo, c.id caracterizacao_id, c.tid caracterizacao_tid from {0}' ||
				t.tabela || ' c where c.empreendimento = :empreendimento union all ' resultado from {0}lov_caracterizacao_tipo t "                , EsquemaBanco);

                comando.DbCommand.CommandText += comando.AdicionarIn("where", "t.id", DbType.Int32, caracterizacoes.Select(x => (int)x.Id).ToList());

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        select += reader.GetValue <string>("resultado");
                    }

                    reader.Close();
                }

                if (!string.IsNullOrEmpty(select))
                {
                    comando = bancoDeDados.CriarComando(@"
					select lc.id tipo, lc.texto tipo_texto, c.caracterizacao_id, c.caracterizacao_tid, pg.id projeto_id, pg.tid projeto_tid
					from {0}lov_caracterizacao_tipo lc, ("                     + select.Substring(0, select.Length - 10) + @") c,
						(select p.id, p.tid, p.empreendimento, p.caracterizacao from {0}crt_projeto_geo p where p.empreendimento = :empreendimento) pg
					where lc.id = pg.caracterizacao(+) and lc.id = c.tipo order by lc.id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("empreendimento", empreendimento, DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        Caracterizacao caracterizacao = null;

                        while (reader.Read())
                        {
                            caracterizacao = new Caracterizacao();

                            caracterizacao.Tipo       = (eCaracterizacao)reader.GetValue <int>("tipo");
                            caracterizacao.Nome       = reader.GetValue <string>("tipo_texto");
                            caracterizacao.Id         = reader.GetValue <int>("caracterizacao_id");
                            caracterizacao.Tid        = reader.GetValue <string>("caracterizacao_tid");
                            caracterizacao.ProjetoId  = reader.GetValue <int>("projeto_id");
                            caracterizacao.ProjetoTid = reader.GetValue <string>("projeto_tid");

                            lista.Add(caracterizacao);
                        }

                        reader.Close();
                    }
                }

                #endregion
            }

            return(lista);
        }
        internal List <Cultivar> ObterCultivares(List <int> culturas, int protocoloId, BancoDeDados banco = null)
        {
            List <Cultivar> cultivares = new List <Cultivar>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@" select c.texto cultura, cc.cultivar, crt_c.capacidade_mes, lu.texto unidade_medida_texto
															from {0}crt_unidade_cons_cultivar  crt_c, {0}tab_cultura c, {0}tab_cultura_cultivar cc,
															{0}lov_crt_un_conso_un_medida lu where crt_c.id in (select id from {0}crt_unidade_cons_cultivar
															@) and unidade_consolidacao in (select unidade_consolidacao
															from {0}crt_unidade_cons_cultivar where unidade_consolidacao = (select id 
															from {0}crt_unidade_consolidacao where empreendimento = (select empreendimento from {0}tab_protocolo 
															where id = :protocolo))) and crt_c.cultura = c.id and crt_c.cultivar = cc.id(+)
															and lu.id = crt_c.unidade_medida"                                                            , EsquemaBanco);

                comando.DbCommand.CommandText = comando.DbCommand.CommandText.Replace("@", "{0}");

                comando.DbCommand.CommandText = string.Format(comando.DbCommand.CommandText, comando.AdicionarIn("where", "cultura", DbType.Int32, culturas));

                comando.AdicionarParametroEntrada("protocolo", protocoloId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Cultivar cultivar;

                    while (reader.Read())
                    {
                        cultivar                    = new Cultivar();
                        cultivar.Nome               = reader.GetValue <String>("cultivar");
                        cultivar.CulturaTexto       = reader.GetValue <String>("cultura");
                        cultivar.CapacidadeMes      = reader.GetValue <Decimal>("capacidade_mes");
                        cultivar.UnidadeMedidaTexto = reader.GetValue <String>("unidade_medida_texto");

                        cultivares.Add(cultivar);
                    }

                    reader.Close();
                }
            }

            return(cultivares);
        }
Beispiel #15
0
        internal Resultados <CulturaListarResultado> Filtrar(Filtro <CulturaListarFiltro> filtro)
        {
            Resultados <CulturaListarResultado> retorno = new Resultados <CulturaListarResultado>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                string     comandtxt    = string.Empty;
                string     esquemaBanco = (string.IsNullOrEmpty(EsquemaBanco) ? "" : EsquemaBanco + ".");
                Comando    comando      = bancoDeDados.CriarComando("");
                List <int> culturas     = new List <int>();

                #region Adicionando Filtros

                if (!string.IsNullOrEmpty(filtro.Dados.Cultivar))
                {
                    if (filtro.Dados.StraggCultivar)
                    {
                        comandtxt = comando.FiltroAndLike("cc.cultivar", "cultivar", filtro.Dados.Cultivar, true, true);

                        comando.DbCommand.CommandText = String.Format(@"select distinct cc.cultura from tab_cultura_cultivar cc where cc.id > 0" + comandtxt, esquemaBanco);
                        culturas = bancoDeDados.ExecutarList <int>(comando);

                        comando   = bancoDeDados.CriarComando("");
                        comandtxt = string.Empty;
                    }
                    else
                    {
                        comandtxt = comando.FiltroAndLike("cc.cultivar", "cultivar", filtro.Dados.Cultivar, true, true);
                    }
                }

                comandtxt += comando.FiltroAndLike("c.texto", "cultura", filtro.Dados.Cultura, true, true);

                comandtxt += comando.AdicionarIn("and", "c.id", DbType.Int32, culturas);

                List <String> ordenar = new List <String>();
                List <String> colunas = new List <String>()
                {
                    "cultura", "cultivar"
                };

                if (filtro.OdenarPor > 0)
                {
                    ordenar.Add(colunas.ElementAtOrDefault(filtro.OdenarPor - 1));
                }
                else
                {
                    ordenar.Add("cultura");
                }

                #endregion

                #region Quantidade de registro do resultado

                if (filtro.Dados.StraggCultivar)
                {
                    comando.DbCommand.CommandText = String.Format(@"select count(*) from tab_cultura c where c.id > 0" + comandtxt, esquemaBanco);
                }
                else
                {
                    comando.DbCommand.CommandText = String.Format(@"select count(*) from(select c.id, c.texto cultura, cc.cultivar 
					from {0}tab_cultura c, {0}tab_cultura_cultivar cc where cc.cultura = c.id "                     + comandtxt + ")", esquemaBanco);
                }

                retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando));

                comando.AdicionarParametroEntrada("menor", filtro.Menor);
                comando.AdicionarParametroEntrada("maior", filtro.Maior);

                if (filtro.Dados.StraggCultivar)
                {
                    comandtxt = String.Format(@"select c.id, c.texto cultura, stragg(cc.cultivar) cultivar from {0}tab_cultura c, {0}tab_cultura_cultivar cc
					where cc.cultura(+) = c.id "                     + comandtxt + " group by c.id, c.texto " + DaHelper.Ordenar(colunas, ordenar), esquemaBanco);
                }
                else
                {
                    comandtxt = String.Format(@"select c.id, c.texto cultura, cc.cultivar, cc.id cultivar_id from {0}tab_cultura c, {0}tab_cultura_cultivar cc 
					where cc.cultura = c.id "                     + comandtxt + " group by c.id, c.texto, cc.cultivar, cc.id" + DaHelper.Ordenar(colunas, ordenar), esquemaBanco);
                }

                comando.DbCommand.CommandText = @"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor";

                #endregion

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    CulturaListarResultado item;

                    while (reader.Read())
                    {
                        item          = new CulturaListarResultado();
                        item.Id       = reader.GetValue <int>("id");
                        item.Cultura  = reader.GetValue <string>("cultura");
                        item.Cultivar = reader.GetValue <string>("cultivar");

                        if (!filtro.Dados.StraggCultivar)
                        {
                            item.CultivarId = reader.GetValue <string>("cultivar_id");
                        }

                        retorno.Itens.Add(item);
                    }

                    reader.Close();
                }
            }

            return(retorno);
        }
Beispiel #16
0
        internal List <LaudoLaboratorial> ObterLaudoLaboratorial(List <PTVProdutoRelatorio> origens)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
            {
                List <PTVProdutoRelatorio> listaOrigem = ObterOrigens(origens);
                List <LaudoLaboratorial>   retorno     = new List <LaudoLaboratorial>();
                Comando comando = null;

                if (listaOrigem.Exists(x => x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO))
                {
                    comando = bancoDeDados.CriarComando(@"select t.id, t.nome_laboratorio, t.numero_laudo_resultado_analise, t.estado, e.sigla estado_texto, t.municipio, m.texto municipio_texto
					from tab_cfo t, lov_estado e, lov_municipio m where e.id = t.estado and m.id = t.municipio and t.possui_laudo_laboratorial > 0 "                    , UsuarioCredenciado);
                    comando.DbCommand.CommandText += comando.AdicionarIn("and", "t.id", DbType.Int32, listaOrigem.Where(x => x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO).Select(x => x.Origem).ToList());

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            retorno.Add(new LaudoLaboratorial()
                            {
                                Id   = reader.GetValue <int>("id"),
                                Nome = reader.GetValue <string>("nome_laboratorio"),
                                LaudoResultadoAnalise = reader.GetValue <string>("numero_laudo_resultado_analise"),
                                Estado         = reader.GetValue <int>("estado"),
                                EstadoTexto    = reader.GetValue <string>("estado_texto"),
                                Municipio      = reader.GetValue <int>("municipio"),
                                MunicipioTexto = reader.GetValue <string>("municipio_texto")
                            });
                        }

                        reader.Close();
                    }
                }

                if (listaOrigem.Exists(x => x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFOC))
                {
                    comando = bancoDeDados.CriarComando(@"select t.id, t.nome_laboratorio, t.numero_laudo_resultado_analise, t.estado, e.sigla estado_texto, t.municipio, m.texto municipio_texto
					from tab_cfoc t, lov_estado e, lov_municipio m where e.id = t.estado and m.id = t.municipio and t.possui_laudo_laboratorial > 0 "                    , UsuarioCredenciado);
                    comando.DbCommand.CommandText += comando.AdicionarIn("and", "t.id", DbType.Int32, listaOrigem.Where(x => x.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFOC).Select(x => x.Origem).ToList());

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            retorno.Add(new LaudoLaboratorial()
                            {
                                Id   = reader.GetValue <int>("id"),
                                Nome = reader.GetValue <string>("nome_laboratorio"),
                                LaudoResultadoAnalise = reader.GetValue <string>("numero_laudo_resultado_analise"),
                                Estado         = reader.GetValue <int>("estado"),
                                EstadoTexto    = reader.GetValue <string>("estado_texto"),
                                Municipio      = reader.GetValue <int>("municipio"),
                                MunicipioTexto = reader.GetValue <string>("municipio_texto")
                            });
                        }

                        reader.Close();
                    }
                }

                return(retorno);
            }
        }
        internal List <Cultivar> ObterCultivares(List <int> culturas, List <int> lotes = null, int OutroEstado = 0, BancoDeDados banco = null)
        {
            List <Cultivar> lstCultivar = new List <Cultivar>();
            LoteDa          _loteDa     = new LoteDa();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Cultivar

                Comando comando = bancoDeDados.CriarComando(@"select cc.id, cc.cultivar, cc.cultura from tab_cultura_cultivar cc ", EsquemaBanco);
                comando.DbCommand.CommandText += comando.AdicionarIn("where", "cultura", DbType.Int32, culturas);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Cultivar lista = null;

                    while (reader.Read())
                    {
                        lista           = new Cultivar();
                        lista.Id        = reader.GetValue <int>("id");
                        lista.Nome      = reader.GetValue <string>("cultivar");
                        lista.CulturaId = reader.GetValue <int>("cultura");

                        lstCultivar.Add(lista);
                    }

                    reader.Close();
                }

                #endregion

                #region Cultivar_Configurações
                StringBuilder   sbDecAdd         = new StringBuilder();
                List <LoteItem> lstLotesPtvOutro = new List <LoteItem>();
                List <LoteItem> lstLotesCfo      = new List <LoteItem>();
                List <LoteItem> lstLotesCfoc     = new List <LoteItem>();
                string          cmdSql           = "";
                // string strOutroEstado = "";
                if (lotes != null && lotes.Count > 0 && lotes[0] != 0)
                {
                    // strOutroEstado = "('0')";
                    foreach (int idLot in lotes)
                    {
                        Lote lot = _loteDa.Obter(idLot);
                        // totaloutro = lot.Lotes.Where(z => z.OrigemTipo == (int)eDocumentoFitossanitarioTipo.PTVOutroEstado).ToList().Count;
                        lstLotesPtvOutro.AddRange(lot.Lotes.Where(z => z.OrigemTipo == (int)eDocumentoFitossanitarioTipo.PTVOutroEstado).ToList());

                        lstLotesCfo.AddRange(lot.Lotes.Where(z => z.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFO).ToList());

                        lstLotesCfoc.AddRange(lot.Lotes.Where(z => z.OrigemTipo == (int)eDocumentoFitossanitarioTipo.CFOC).ToList());
                        //foreach (LoteItem item in lstLotes)
                        //{
                        //    sbDecAdd.Append(ObterDeclaracaoAdicionalPTVOutroEstado(item.Origem));
                        //}

                        //if (lstLotes.Count > 0 && lstLotes.Count == lot.Lotes.Count)
                        //{
                        //    strOutroEstado = "('1')";
                        //}
                        //else if (lstLotes.Count > 0 && lstLotes.Count != lot.Lotes.Count)
                        //    strOutroEstado = "('1','0')";
                        //else
                        //    strOutroEstado = "('0')";
                    }
                }
                else
                {
                    cmdSql = string.Format(@" select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
				                                lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
				                                from {0}tab_cultivar_configuracao t, {0}tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld
				                                where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar = :id and
                                                ld.outro_estado = '0'", EsquemaBanco);
                }



                //else if (OutroEstado == 1)
                //    strOutroEstado = "('1')";
                //else
                //    strOutroEstado = "('0')";


//                string cmdSql = string.Format(@"select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
//				            lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
//				            from {0}tab_cultivar_configuracao t, {0}tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld, tab_ptv_outrouf_declaracao ot
//				            where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar = :id and ld.id = ot.declaracao_adicional(+)", EsquemaBanco, strOutroEstado);



                string strLotes = "";
                if ((lstLotesCfo != null && lstLotesCfo.Count > 0) ||
                    (lstLotesCfoc != null && lstLotesCfoc.Count > 0))
                {
                    string strCultivares = "";
                    if (lstLotesCfo != null && lstLotesCfo.Count > 0)
                    {
                        strCultivares = string.Join(",", lstLotesCfo
                                                    .Select(x => string.Format("'{0}'", x.Cultivar.ToString())));

                        cmdSql = string.Format(@" select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
				                              lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
				                              from {0}tab_cultivar_configuracao t, {0}tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld
				                              where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar in ({1}) and
                                              ld.outro_estado = '0'", EsquemaBanco, strCultivares);
                    }
                    else if (lstLotesCfoc != null && lstLotesCfoc.Count > 0)
                    {
                        strCultivares = string.Join(",", lstLotesCfoc
                                                    .Select(x => string.Format("'{0}'", x.Cultivar.ToString())));


                        foreach (LoteItem ltItem in lstLotesCfoc)
                        {
                            Dictionary <int, int> lstTipoDocOrigem = BuscaTipoDocOrigemCFOC(ltItem.Origem, ltItem.Cultivar, bancoDeDados);


                            foreach (KeyValuePair <int, int> kv in lstTipoDocOrigem)
                            {
                                if (kv.Key == (int)eDocumentoFitossanitarioTipo.PTVOutroEstado)
                                {
                                    if (!string.IsNullOrEmpty(cmdSql))
                                    {
                                        cmdSql += " union all ";
                                    }

                                    cmdSql += string.Format(@" select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
				                                        lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
				                                        from tab_cultivar_configuracao t, tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld, tab_ptv_outrouf_declaracao ot
				                                        where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar = :id and ld.id = ot.declaracao_adicional
                                                        and ot.ptv = {1} ", EsquemaBanco, kv.Value);
                                }

                                if (kv.Key == (int)eDocumentoFitossanitarioTipo.CFO)
                                {
                                    if (!string.IsNullOrEmpty(cmdSql))
                                    {
                                        cmdSql += " union all ";
                                    }

                                    cmdSql += string.Format(@" select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
				                              lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
				                              from {0}tab_cultivar_configuracao t, {0}tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld
				                              where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar = :id and
                                              ld.outro_estado = '0'", EsquemaBanco);
                                }
                            }
                        }
                    }
                }

                if (lstLotesPtvOutro != null && lstLotesPtvOutro.Count > 0)
                {
                    strLotes = string.Join(",", lstLotesPtvOutro
                                           .Select(x => string.Format("'{0}'", x.Origem.ToString())));

                    if (!string.IsNullOrEmpty(cmdSql))
                    {
                        cmdSql += " union all ";
                    }

                    cmdSql += string.Format(@" select t.id, t.tid, t.cultivar, t.praga PragaId, p.nome_cientifico || nvl2(p.nome_comum,' - '||p.nome_comum,'') as PragaTexto, t.tipo_producao TipoProducaoId,
				                                        lt.texto as TipoProducaoTexto, t.declaracao_adicional DeclaracaoAdicionalId, ld.texto as DeclaracaoAdicionalTexto, ld.texto_formatado as DeclaracaoAdicionalTextoHtml
				                                        from tab_cultivar_configuracao t, tab_praga p, lov_cultivar_tipo_producao lt, lov_cultivar_declara_adicional ld, tab_ptv_outrouf_declaracao ot
				                                        where p.id = t.praga and lt.id = t.tipo_producao and ld.id = t.declaracao_adicional and t.cultivar = :id and ld.id = ot.declaracao_adicional
                                                and ot.ptv in ({1})", EsquemaBanco, strLotes);
                }

                //ld.outro_estado in {1}

                if (string.IsNullOrEmpty(cmdSql))
                {
                    return(lstCultivar);
                }

                comando = bancoDeDados.CriarComando(cmdSql, EsquemaBanco);

                lstCultivar.ForEach(x =>
                {
                    if (cmdSql.Contains(":"))
                    {
                        comando.AdicionarParametroEntrada("id", x.Id, DbType.Int32);
                    }



                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            //string Declaracao = "";

                            //if (lstLotes != null && lstLotes.Any(z => z.Cultivar == reader.GetValue<int>("cultivar")))
                            //    Declaracao = sbDecAdd.ToString();
                            //else
                            //    Declaracao = reader.GetValue<string>("DeclaracaoAdicionalTexto");

                            x.LsCultivarConfiguracao.Add(new CultivarConfiguracao()
                            {
                                Id                           = reader.GetValue <int>("id"),
                                Tid                          = reader.GetValue <string>("tid"),
                                Cultivar                     = reader.GetValue <int>("cultivar"),
                                PragaId                      = reader.GetValue <int>("PragaId"),
                                PragaTexto                   = reader.GetValue <string>("PragaTexto"),
                                TipoProducaoId               = reader.GetValue <int>("TipoProducaoId"),
                                TipoProducaoTexto            = reader.GetValue <string>("TipoProducaoTexto"),
                                DeclaracaoAdicionalId        = reader.GetValue <int>("DeclaracaoAdicionalId"),
                                DeclaracaoAdicionalTexto     = reader.GetValue <string>("DeclaracaoAdicionalTexto"),
                                DeclaracaoAdicionalTextoHtml = reader.GetValue <string>("DeclaracaoAdicionalTextoHtml")
                            });
                        }

                        reader.Close();
                    }
                });

                #endregion
            }

            return(lstCultivar);
        }
        internal Funcionario ObterFuncionarioAutenticacao(string login, List <String> permissoesGerencial)
        {
            Funcionario funcionario = new Funcionario();
            Comando     comando     = null;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                comando = bancoDeDados.CriarComando(@"select f.id, f.usuario, f.nome, f.tipo, u.login, f.email, u.logon_anterior_ip, u.logon_anterior_data, 
					t.texto tipo_texto, f.tid from tab_funcionario f, tab_usuario u, lov_funcionario_tipo t where u.login = :login and f.usuario = u.id 
					and f.situacao = 1 and f.tipo = t.id"                    );

                comando.AdicionarParametroEntrada("login", DbType.String, 30, login);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        funcionario.Id                      = Convert.ToInt32(reader["id"]);
                        funcionario.Usuario.Id              = Convert.ToInt32(reader["usuario"]);
                        funcionario.Usuario.Login           = reader["login"].ToString();
                        funcionario.Usuario.IpUltimoLogon   = reader["logon_anterior_ip"].ToString();
                        funcionario.Usuario.DataUltimoLogon = (reader["logon_anterior_data"] != DBNull.Value) ? Convert.ToDateTime(reader["logon_anterior_data"]) : new DateTime?();
                        funcionario.Nome                    = reader["nome"].ToString();
                        funcionario.Email                   = reader["email"].ToString();
                        funcionario.Tipo                    = Convert.ToInt32(reader["tipo"]);
                        funcionario.TipoTexto               = reader["tipo_texto"].ToString();
                        funcionario.Tid                     = reader["tid"].ToString();
                    }

                    reader.Close();
                }

                #region Papel / Permissao

                comando = bancoDeDados.CriarComando(@"select da.codigo from (
				select p.codigo from tab_funcionario_papel f, tab_autenticacao_papel_perm app, lov_autenticacao_permissao p 
				where f.funcionario = :id and f.papel = app.papel and app.permissao = p.id 
				union
				select p.codigo from tab_funcionario_permissao t, lov_autenticacao_permissao p where t.permissao = p.id and t.funcionario = :id) da"                );

                comando.AdicionarParametroEntrada("id", funcionario.Id, DbType.Int32);
                comando.DbCommand.CommandText += comando.AdicionarIn("where", "da.codigo", DbType.String, permissoesGerencial);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        if (!Enum.IsDefined(typeof(ePermissao), reader["codigo"].ToString()))
                        {
                            Validacao.Add(new Mensagem()
                            {
                                Tipo = eTipoMensagem.Erro, Texto = String.Format("Permissão \"{0}\" não definida! [Verifique Enumerado e commite !]", reader["codigo"].ToString())
                            });
                            continue;
                        }

                        funcionario.Permissoes.Add(new Permissao()
                        {
                            Codigo = (ePermissao)Enum.Parse(typeof(ePermissao), reader["codigo"].ToString())
                        });
                    }

                    reader.Close();
                }

                #endregion
            }

            return(funcionario);
        }
        public List <Pessoa> ObterPessoas(int requerimento, BancoDeDados bancoCredenciado)
        {
            List <Pessoa> retorno = new List <Pessoa>();
            List <int>    ids     = new List <int>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(bancoCredenciado, UsuarioCredenciado))
            {
                bancoDeDados.IniciarTransacao();

                #region Pessoas relacionadas com o Projeto Digital

                Comando comando = bancoDeDados.CriarComando(@"select r.interessado id from {0}tab_requerimento r where r.id = :requerimento union all
				select er.responsavel id from {0}tab_requerimento r, {0}tab_empreendimento_responsavel er where r.id = :requerimento and r.empreendimento = er.empreendimento union all 
				select rr.responsavel id from {0}tab_requerimento_responsavel rr where rr.requerimento = :requerimento"                , UsuarioCredenciado);

                comando.AdicionarParametroEntrada("requerimento", requerimento, DbType.Int32);

                ids = bancoDeDados.ExecutarList <int>(comando);

                #region Responsáveis/Representantes

                ids = ids.Where(x => x > 0).ToList();
                List <string> conj = new List <string>();

                if (ids != null && ids.Count > 0)
                {
                    comando = bancoDeDados.CriarComando(@"select p.tipo Tipo, p.id Id, p.interno InternoId, nvl(p.nome, p.razao_social) NomeRazaoSocial,
					nvl(p.cpf, p.cnpj) CPFCNPJ, (select c.conjuge||'@'||c.pessoa from {0}tab_pessoa_conjuge c where c.pessoa = p.id or c.conjuge = p.id) conjuge 
					from {0}tab_pessoa p "                    , UsuarioCredenciado);

                    comando.DbCommand.CommandText += comando.AdicionarIn("where", "p.id", DbType.Int32, ids);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        Pessoa pes;
                        while (reader.Read())
                        {
                            pes                 = new Pessoa();
                            pes.Id              = reader.GetValue <int>("Id");
                            pes.Tipo            = reader.GetValue <int>("Tipo");
                            pes.InternoId       = reader.GetValue <int>("InternoId");
                            pes.NomeRazaoSocial = reader.GetValue <string>("NomeRazaoSocial");
                            pes.CPFCNPJ         = reader.GetValue <string>("CPFCNPJ");
                            if (!string.IsNullOrEmpty(reader.GetValue <string>("conjuge")))
                            {
                                conj = reader.GetValue <string>("conjuge").Split('@').ToList();
                                pes.Fisica.ConjugeId = (Convert.ToInt32(conj[0]) == pes.Id) ? Convert.ToInt32(conj[1]) : Convert.ToInt32(conj[0]);
                            }
                            retorno.Add(pes);
                        }

                        reader.Close();
                    }
                }

                if (retorno.Count > 0)
                {
                    if (retorno.Exists(x => x.IsJuridica))
                    {
                        //Representantes
                        comando = bancoDeDados.CriarComando(@"select pc.pessoa, p.tipo Tipo, p.id Id, p.interno InternoId, nvl(p.nome, p.razao_social) NomeRazaoSocial,
						nvl(p.cpf, p.cnpj) CPFCNPJ, (select c.conjuge||'@'||c.pessoa from {0}tab_pessoa_conjuge c where c.pessoa = p.id or c.conjuge = p.id) conjuge 
						from {0}tab_pessoa p, {0}tab_pessoa_representante pc where p.id = pc.representante"                        , UsuarioCredenciado);

                        comando.DbCommand.CommandText += comando.AdicionarIn("and", "pc.pessoa", DbType.Int32, retorno.Where(x => x.IsJuridica).Select(x => x.Id).ToList());

                        using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                        {
                            Pessoa pes;
                            while (reader.Read())
                            {
                                pes                  = new Pessoa();
                                pes.Id               = reader.GetValue <int>("Id");
                                pes.Tipo             = reader.GetValue <int>("Tipo");
                                pes.InternoId        = reader.GetValue <int>("InternoId");
                                pes.IdRelacionamento = reader.GetValue <int>("pessoa");
                                pes.NomeRazaoSocial  = reader.GetValue <string>("NomeRazaoSocial");
                                pes.CPFCNPJ          = reader.GetValue <string>("CPFCNPJ");
                                if (!string.IsNullOrEmpty(reader.GetValue <string>("conjuge")))
                                {
                                    conj = reader.GetValue <string>("conjuge").Split('@').ToList();
                                    pes.Fisica.ConjugeId = (Convert.ToInt32(conj[0]) == pes.Id) ? Convert.ToInt32(conj[1]) : Convert.ToInt32(conj[0]);
                                }
                                retorno.Add(pes);
                            }

                            reader.Close();
                        }

                        retorno.Where(x => x.IsJuridica).ToList().ForEach(x =>
                        {
                            x.Juridica.Representantes = retorno.Where(y => y.IdRelacionamento == x.Id).ToList();
                        });
                    }

                    if (retorno.Exists(x => x.IsFisica))
                    {
                        //Conjuges
                        comando = bancoDeDados.CriarComando(@"select p.tipo Tipo, p.id Id, p.interno InternoId, nvl(p.nome, p.razao_social) NomeRazaoSocial,
						nvl(p.cpf, p.cnpj) CPFCNPJ, (select c.conjuge||'@'||c.pessoa from {0}tab_pessoa_conjuge c where c.pessoa = p.id or c.conjuge = p.id) conjuge 
						from {0}tab_pessoa p, {0}tab_pessoa_conjuge pc where p.id = pc.conjuge"                        , UsuarioCredenciado);

                        comando.DbCommand.CommandText += comando.AdicionarIn("and", "pc.pessoa", DbType.Int32, retorno.Where(x => x.IsFisica).Select(x => x.Id).ToList());

                        using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                        {
                            Pessoa pes;
                            while (reader.Read())
                            {
                                pes                 = new Pessoa();
                                pes.Id              = reader.GetValue <int>("Id");
                                pes.Tipo            = reader.GetValue <int>("Tipo");
                                pes.InternoId       = reader.GetValue <int>("InternoId");
                                pes.NomeRazaoSocial = reader.GetValue <string>("NomeRazaoSocial");
                                pes.CPFCNPJ         = reader.GetValue <string>("CPFCNPJ");
                                if (!string.IsNullOrEmpty(reader.GetValue <string>("conjuge")))
                                {
                                    conj = reader.GetValue <string>("conjuge").Split('@').ToList();
                                    pes.Fisica.ConjugeId = (Convert.ToInt32(conj[0]) == pes.Id) ? Convert.ToInt32(conj[1]) : Convert.ToInt32(conj[0]);
                                }
                                retorno.Add(pes);
                            }

                            reader.Close();
                        }

                        //Obter CPF Conjuges
                        comando = bancoDeDados.CriarComando(@"select p.id, p.cpf from {0}tab_pessoa p ", UsuarioCredenciado);
                        comando.DbCommand.CommandText += comando.AdicionarIn("where", "p.id", DbType.Int32, retorno.Where(x => x.Fisica.ConjugeId > 0).Select(x => x.Fisica.ConjugeId).ToList());

                        using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                        {
                            Pessoa pes;

                            while (reader.Read())
                            {
                                pes = retorno.FirstOrDefault(x => x.Fisica.ConjugeId == reader.GetValue <int>("id"));

                                if (pes != null)
                                {
                                    pes.Fisica.ConjugeCPF = reader.GetValue <string>("cpf");
                                }
                            }

                            reader.Close();
                        }
                    }
                }

                #endregion

                #endregion
            }

            retorno = retorno.GroupBy(x => x.Id).Select(y => new Pessoa
            {
                Id              = y.First().Id,
                Tipo            = y.First().Tipo,
                InternoId       = y.First().InternoId,
                NomeRazaoSocial = y.First().NomeRazaoSocial,
                CPFCNPJ         = y.First().CPFCNPJ,
                Fisica          = y.First().Fisica,
                Juridica        = y.First().Juridica,
            }).ToList();

            return(retorno);
        }
        internal void ExcluirTodosNaoAssociados(LocalVistoria local, BancoDeDados banco)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                List <int> listaIdExcluir       = new List <int>();
                List <int> listaIdExcluirLogico = new List <int>();

                Comando cmdConsulta = bancoDeDados.CriarComando(@"select lv.id from {0}CNF_LOCAL_VISTORIA lv where lv.setor = :setorId", EsquemaBanco);
                cmdConsulta.DbCommand.CommandText += cmdConsulta.AdicionarNotIn("and", "lv.id", DbType.Int32, local.DiasHorasVistoria.Select(x => x.Id).ToList());
                cmdConsulta.AdicionarParametroEntrada("setorId", local.SetorID, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(cmdConsulta))
                {
                    while (reader.Read())
                    {
                        int dataVistoriaId = reader.GetValue <int>("id");
                        if (PossuiHorarioAssociado(dataVistoriaId, banco: banco) > 0)
                        {
                            listaIdExcluirLogico.Add(dataVistoriaId);
                        }
                        else
                        {
                            listaIdExcluir.Add(dataVistoriaId);
                        }
                    }

                    reader.Close();
                }

                if (listaIdExcluir.Count > 0 || listaIdExcluirLogico.Count > 0)
                {
                    if (listaIdExcluir.Count > 0)
                    {
                        Comando cmdUpdate = bancoDeDados.CriarComando(@"update {0}CNF_LOCAL_VISTORIA set tid = :tid where ", EsquemaBanco);
                        cmdUpdate.DbCommand.CommandText += cmdUpdate.AdicionarIn("", "id", DbType.Int32, listaIdExcluir);
                        cmdUpdate.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                        bancoDeDados.ExecutarNonQuery(cmdUpdate);

                        foreach (int idExcluido in listaIdExcluir)
                        {
                            // Gerando historico para todos os itens excluidos
                            Historico.Gerar(idExcluido, eHistoricoArtefato.localvistoria, eHistoricoAcao.excluir, bancoDeDados);
                        }

                        Comando cmdDelete = bancoDeDados.CriarComando("delete from {0}cnf_local_vistoria lv where lv.setor = :setorId ", EsquemaBanco);
                        cmdDelete.DbCommand.CommandText += cmdDelete.AdicionarIn("and", "lv.id", DbType.Int32, listaIdExcluir);
                        cmdDelete.AdicionarParametroEntrada("setorId", local.SetorID, DbType.Int32);
                        bancoDeDados.ExecutarNonQuery(cmdDelete);
                    }

                    if (listaIdExcluirLogico.Count > 0)
                    {
                        Comando cmdUpdate = bancoDeDados.CriarComando(@"update {0}CNF_LOCAL_VISTORIA set tid = :tid where ", EsquemaBanco);
                        cmdUpdate.DbCommand.CommandText += cmdUpdate.AdicionarIn("", "id", DbType.Int32, listaIdExcluirLogico);
                        cmdUpdate.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                        bancoDeDados.ExecutarNonQuery(cmdUpdate);

                        foreach (int idExcluido in listaIdExcluirLogico)
                        {
                            // Gerando historico para todos os itens excluidos
                            Historico.Gerar(idExcluido, eHistoricoArtefato.localvistoria, eHistoricoAcao.excluir, bancoDeDados);
                        }

                        Comando comando = bancoDeDados.CriarComando("update {0}cnf_local_vistoria lv set situacao = 0 where lv.setor = :setorId ", EsquemaBanco);
                        comando.DbCommand.CommandText += comando.AdicionarIn("and", "lv.id", DbType.Int32, listaIdExcluirLogico);
                        comando.AdicionarParametroEntrada("setorId", local.SetorID, DbType.Int32);
                        bancoDeDados.ExecutarNonQuery(comando);
                    }
                }

                bancoDeDados.Commit();
            }
        }
        public RequerimentoRelatorio Obter(int id)
        {
            RequerimentoRelatorio requerimento = new RequerimentoRelatorio();

            #region Banco do Credenciado

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(EsquemaBanco))
            {
                #region Requerimento

                Comando comando = bancoDeDados.CriarComando(@"
												select r.id,
												r.credenciado,
												trunc(r.data_criacao) data_criacao,
												r.interessado,
												r.empreendimento,
												r.situacao,
												r.agendamento agendamento,
												to_char(r.data_criacao, 'dd') dia,
												to_char(r.data_criacao, 'MM') mes,
												to_char(r.data_criacao, 'yyyy') ano,
												r.setor,
												r.informacoes,
												p.situacao projeto_digital_situacao,
												(select pe.municipio from {0}tab_pessoa_endereco pe, {0}tab_credenciado c where pe.pessoa = c.pessoa and c.id = r.credenciado) municipio
											from {0}tab_requerimento r, tab_projeto_digital p 
											where r.id = p.requerimento and r.id = :id"                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        requerimento.Id           = id;
                        requerimento.AutorId      = reader.GetValue <int>("credenciado");
                        requerimento.DataCadastro = Convert.ToDateTime(reader["data_criacao"]);
                        requerimento.DiaCadastro  = reader["dia"].ToString();
                        int mes = reader.GetValue <int>("mes");
                        requerimento.MesCadastro              = _configSys.Obter <List <String> >(ConfiguracaoSistema.KeyMeses).ElementAt(mes - 1);
                        requerimento.AnoCadastro              = reader["ano"].ToString();
                        requerimento.MunicipioId              = reader.GetValue <int>("municipio");
                        requerimento.Interessado.Id           = reader.GetValue <int>("interessado");
                        requerimento.Empreendimento.Id        = reader.GetValue <int>("empreendimento");
                        requerimento.ProjetoDigitalSituacaoId = reader.GetValue <int>("projeto_digital_situacao");
                        requerimento.SituacaoId          = reader.GetValue <int>("situacao");
                        requerimento.AgendamentoVistoria = reader["agendamento"].ToString();
                        requerimento.SetorId             = reader.GetValue <int>("setor");
                        requerimento.Informacoes         = reader["informacoes"].ToString();
                    }

                    reader.Close();
                }

                #endregion

                #region Atividades

                comando = bancoDeDados.CriarComando(@"
									select a.id, a.atividade, a.tid
									  from {0}tab_requerimento_atividade a
									 where a.requerimento = :id"                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    RequerimentoAtividadeRelatorio atividade;

                    while (reader.Read())
                    {
                        atividade    = new RequerimentoAtividadeRelatorio();
                        atividade.Id = Convert.ToInt32(reader["atividade"]);
                        atividade.IdRelacionamento = Convert.ToInt32(reader["id"]);

                        #region Atividades/Finalidades/Modelos
                        comando = bancoDeDados.CriarComando(@"
												select a.id,
													   a.finalidade,
													   a.modelo,
													   a.titulo_anterior_tipo,
													   a.titulo_anterior_id,
													   a.titulo_anterior_numero,
													   a.modelo_anterior_id,
													   a.modelo_anterior_nome,
													   a.modelo_anterior_sigla,
													   a.orgao_expedidor
												  from {0}tab_requerimento_ativ_finalida a       
												 where a.requerimento_ativ = :id"                                                , EsquemaBanco);

                        comando.AdicionarParametroEntrada("id", atividade.IdRelacionamento, DbType.Int32);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Finalidade fin;

                            while (readerAux.Read())
                            {
                                fin = new Finalidade();

                                fin.IdRelacionamento = Convert.ToInt32(readerAux["id"]);

                                fin.OrgaoExpedidor = readerAux["orgao_expedidor"].ToString();

                                if (readerAux["finalidade"] != DBNull.Value)
                                {
                                    fin.Id = Convert.ToInt32(readerAux["finalidade"]);
                                }

                                if (readerAux["modelo"] != DBNull.Value)
                                {
                                    fin.TituloModelo = Convert.ToInt32(readerAux["modelo"]);
                                }

                                if (readerAux["modelo_anterior_id"] != DBNull.Value)
                                {
                                    fin.TituloModeloAnteriorId = Convert.ToInt32(readerAux["modelo_anterior_id"]);
                                }

                                fin.TituloModeloAnteriorTexto = readerAux["modelo_anterior_nome"].ToString();
                                fin.TituloModeloAnteriorSigla = readerAux["modelo_anterior_sigla"].ToString();

                                if (readerAux["titulo_anterior_tipo"] != DBNull.Value)
                                {
                                    fin.TituloAnteriorTipo = Convert.ToInt32(readerAux["titulo_anterior_tipo"]);
                                }

                                if (readerAux["titulo_anterior_id"] != DBNull.Value)
                                {
                                    fin.TituloAnteriorId = Convert.ToInt32(readerAux["titulo_anterior_id"]);
                                }

                                fin.TituloAnteriorNumero = readerAux["titulo_anterior_numero"].ToString();
                                fin.EmitidoPorInterno    = (fin.TituloAnteriorTipo != 3);
                                atividade.Finalidades.Add(fin);
                            }
                            readerAux.Close();
                        }
                        #endregion

                        requerimento.Atividades.Add(atividade);
                    }

                    reader.Close();
                }

                #endregion

                #region Interessado

                comando = bancoDeDados.CriarComando(@"
											select p.id,
												   p.tipo,
												   p.nome,
												   p.cpf,
												   p.rg,
												   p.estado_civil,
												   p.cnpj,
												   p.razao_social,
												   p.nome_fantasia,
												   p.ie,
												   p.apelido,
												   tpp.profissao
											  from {0}tab_pessoa p, {0}tab_pessoa_profissao tpp
											 where p.id = tpp.pessoa(+)
											   and p.id = :id"                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", requerimento.Interessado.Id, DbType.Int32);
                PessoaRelatorio pessoa = new PessoaRelatorio();

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        pessoa.Id   = requerimento.Interessado.Id;
                        pessoa.Tipo = Convert.ToInt32(reader["tipo"]);

                        if (pessoa.IsFisica)
                        {
                            pessoa.Fisica.Nome    = reader["nome"].ToString();
                            pessoa.Fisica.CPF     = reader["cpf"].ToString();
                            pessoa.Fisica.RG      = reader["rg"].ToString();
                            pessoa.Fisica.Apelido = reader["apelido"].ToString();
                        }
                        else                         // juridica
                        {
                            pessoa.Juridica.CNPJ         = reader["cnpj"].ToString();
                            pessoa.Juridica.RazaoSocial  = reader["razao_social"].ToString();
                            pessoa.Juridica.NomeFantasia = reader["nome_fantasia"].ToString();
                            pessoa.Juridica.IE           = reader["ie"].ToString();
                        }
                    }
                    reader.Close();
                }

                #region Meio de Contato

                comando = bancoDeDados.CriarComando(@"select a.id, a.pessoa, a.meio_contato tipo_contato_id, a.valor
					from {0}tab_pessoa_meio_contato a where a.pessoa = :pessoa"                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("pessoa", pessoa.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ContatoRelatorio contato;
                    while (reader.Read())
                    {
                        contato             = new ContatoRelatorio();
                        contato.Id          = Convert.ToInt32(reader["id"]);
                        contato.PessoaId    = Convert.ToInt32(reader["pessoa"]);
                        contato.TipoContato = (eTipoContato)Enum.Parse(contato.TipoContato.GetType(), reader["tipo_contato_id"].ToString());
                        contato.Valor       = reader["valor"].ToString();
                        pessoa.MeiosContatos.Add(contato);
                    }
                    reader.Close();
                }

                #endregion

                #region Endereços

                comando = bancoDeDados.CriarComando(@"
													select te.id,
														   te.pessoa,
														   te.cep,
														   te.logradouro,
														   te.bairro,
														   te.estado      estado_id,
														   te.municipio   municipio_id,
														   te.numero,
														   te.complemento,
														   te.distrito
													  from {0}tab_pessoa_endereco te
													 where te.pessoa = :pessoa"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("pessoa", pessoa.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        pessoa.Endereco.Id          = Convert.ToInt32(reader["id"]);
                        pessoa.Endereco.Cep         = reader["cep"].ToString();
                        pessoa.Endereco.Logradouro  = reader["logradouro"].ToString();
                        pessoa.Endereco.Bairro      = reader["bairro"].ToString();
                        pessoa.Endereco.EstadoId    = Convert.IsDBNull(reader["estado_id"]) ? 0 : Convert.ToInt32(reader["estado_id"]);
                        pessoa.Endereco.MunicipioId = Convert.IsDBNull(reader["municipio_id"]) ? 0 : Convert.ToInt32(reader["municipio_id"]);
                        pessoa.Endereco.Numero      = reader["numero"].ToString();
                        pessoa.Endereco.Complemento = reader["complemento"].ToString();
                        pessoa.Endereco.Distrito    = reader["distrito"].ToString();
                    }
                    reader.Close();
                }

                #endregion

                requerimento.Interessado = pessoa;

                #endregion

                #region Responsáveis

                comando = bancoDeDados.CriarComando(@"
											select pr.id,
												   pr.responsavel,
												   pr.funcao funcao,
												   pr.numero_art,
												   nvl(p.nome, p.razao_social) nome,
												   nvl(p.cpf, p.cnpj) cpf_cnpj,
												   nvl(p.rg, p.ie) rg_ie,
												   p.tipo,
												   trunc(p.data_nascimento) data_nascimento
											  from {0}tab_requerimento_responsavel pr, {0}tab_pessoa p
											 where pr.responsavel = p.id
											   and pr.requerimento = :requerimento"                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("requerimento", id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ResponsavelTecnicoRelatorio responsavel;
                    while (reader.Read())
                    {
                        responsavel             = new ResponsavelTecnicoRelatorio();
                        responsavel.Id          = Convert.ToInt32(reader["responsavel"]);
                        responsavel.FuncaoTexto = reader["funcao"].ToString();
                        responsavel.CpfCnpj     = reader["cpf_cnpj"].ToString();
                        responsavel.RgIe        = reader["rg_ie"].ToString();
                        responsavel.NomeRazao   = reader["nome"].ToString();
                        responsavel.NumeroArt   = reader["numero_art"].ToString();

                        if (reader["data_nascimento"] != null && !Convert.IsDBNull(reader["data_nascimento"]))
                        {
                            responsavel.DataNascimento = Convert.ToDateTime(reader["data_nascimento"]).ToShortDateString();
                        }

                        responsavel.DataVencimento = "Falta";

                        #region Meio de Contato

                        comando = bancoDeDados.CriarComando(@"select a.id, a.pessoa, a.meio_contato tipo_contato_id, a.valor
							from tab_pessoa_meio_contato a
							where a.pessoa = :pessoa"                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("pessoa", responsavel.Id, DbType.Int32);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            ContatoRelatorio contato;
                            while (readerAux.Read())
                            {
                                contato             = new ContatoRelatorio();
                                contato.Id          = Convert.ToInt32(readerAux["id"]);
                                contato.PessoaId    = Convert.ToInt32(readerAux["pessoa"]);
                                contato.TipoContato = (eTipoContato)Enum.Parse(contato.TipoContato.GetType(), readerAux["tipo_contato_id"].ToString());
                                contato.Valor       = readerAux["valor"].ToString();
                                responsavel.MeiosContatos.Add(contato);
                            }
                            readerAux.Close();
                        }

                        #endregion

                        #region Endereços

                        comando = bancoDeDados.CriarComando(@"
														select te.id,
															   te.pessoa,
															   te.cep,
															   te.logradouro,
															   te.bairro,
															   te.estado      estado_id,
															   te.municipio   municipio_id,
															   te.numero,
															   te.complemento,
															   te.distrito
														  from {0}tab_pessoa_endereco te
														 where te.pessoa = :pessoa"                                                        , EsquemaBanco);

                        comando.AdicionarParametroEntrada("pessoa", responsavel.Id, DbType.Int32);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            while (readerAux.Read())
                            {
                                responsavel.Endereco.Id          = Convert.ToInt32(readerAux["id"]);
                                responsavel.Endereco.Cep         = readerAux["cep"].ToString();
                                responsavel.Endereco.Logradouro  = readerAux["logradouro"].ToString();
                                responsavel.Endereco.Bairro      = readerAux["bairro"].ToString();
                                responsavel.Endereco.EstadoId    = Convert.IsDBNull(readerAux["estado_id"]) ? 0 : Convert.ToInt32(readerAux["estado_id"]);
                                responsavel.Endereco.MunicipioId = Convert.IsDBNull(readerAux["municipio_id"]) ? 0 : Convert.ToInt32(readerAux["municipio_id"]);
                                responsavel.Endereco.Numero      = readerAux["numero"].ToString();
                                responsavel.Endereco.Complemento = readerAux["complemento"].ToString();
                                responsavel.Endereco.Distrito    = readerAux["distrito"].ToString();
                            }
                            readerAux.Close();
                        }

                        #endregion

                        requerimento.Responsaveis.Add(responsavel);
                    }
                    reader.Close();
                }

                #endregion

                #region Empreendimento

                if (requerimento.Empreendimento.Id > 0)
                {
                    comando = bancoDeDados.CriarComando(@"
					select e.id,
							e.codigo,
							e.segmento,
							e.denominador,
							e.cnpj,
							e.atividade,
							e.nome_fantasia,
							e.denominador razao_social
					from tab_empreendimento e
					where e.id = :id"                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", requerimento.Empreendimento.Id, DbType.Int32);
                    EmpreendimentoRelatorio empreendimento = new EmpreendimentoRelatorio();

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            empreendimento.Id             = requerimento.Empreendimento.Id;
                            empreendimento.Codigo         = reader.GetValue <int>("codigo");
                            empreendimento.CNPJ           = reader["cnpj"].ToString();
                            empreendimento.NomeFantasia   = reader["nome_fantasia"].ToString();
                            empreendimento.Denominador    = reader["denominador"].ToString();
                            empreendimento.SegmentoTexto  = reader["segmento"].ToString();
                            empreendimento.AtividadeTexto = Convert.ToString(reader["atividade"]);
                            empreendimento.NomeRazao      = Convert.ToString(reader["razao_social"]);
                        }

                        reader.Close();
                    }

                    #region Endereços

                    comando = bancoDeDados.CriarComando(@"
											select te.id,
													te.empreendimento,
													te.correspondencia,
													te.cep,
													te.logradouro,
													te.bairro,
													te.estado estado_id,
													te.municipio municipio_id,
													te.numero,
													te.complemento,
													(case
														when te.zona = 1 then
														'Urbana'
														else
														'Rural'
													end) zona,
													te.distrito,
													te.corrego,
													te.complemento
												from tab_empreendimento_endereco te
												where te.empreendimento = :empreendimento"                                                , EsquemaBanco);

                    comando.AdicionarParametroEntrada("empreendimento", empreendimento.Id, DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        EnderecoRelatorio end;
                        while (reader.Read())
                        {
                            end    = new EnderecoRelatorio();
                            end.Id = Convert.ToInt32(reader["id"]);
                            end.Correspondencia = Convert.IsDBNull(reader["correspondencia"]) ? 0 : Convert.ToInt32(reader["correspondencia"]);
                            end.Cep             = reader["cep"].ToString();
                            end.Logradouro      = reader["logradouro"].ToString();
                            end.Bairro          = reader["bairro"].ToString();
                            end.EstadoId        = Convert.IsDBNull(reader["estado_id"]) ? 0 : Convert.ToInt32(reader["estado_id"]);
                            end.MunicipioId     = Convert.IsDBNull(reader["municipio_id"]) ? 0 : Convert.ToInt32(reader["municipio_id"]);
                            end.Numero          = reader["numero"].ToString();
                            end.Complemento     = reader["complemento"].ToString();
                            end.Corrego         = reader["corrego"].ToString();
                            end.Zona            = reader["zona"].ToString();
                            end.Distrito        = reader["distrito"].ToString();
                            end.Complemento     = reader["complemento"].ToString();
                            empreendimento.Enderecos.Add(end);
                        }
                        reader.Close();
                    }

                    #endregion

                    #region Coordenada

                    comando = bancoDeDados.CriarComando(@"
													select aec.id,
														   aec.tipo_coordenada,
														   aec.datum,
														   aec.easting_utm,
														   aec.northing_utm,
														   aec.fuso_utm,
														   aec.hemisferio_utm,
														   aec.latitude_gms,
														   aec.longitude_gms,
														   aec.latitude_gdec,
														   aec.longitude_gdec,
														   aec.forma_coleta    forma_coleta,
														   aec.local_coleta    local_coleta,
														   aec.datum           datum_texto,
														   aec.hemisferio_utm  hemisferio_utm_texto
													  from {0}tab_empreendimento_coord aec
													 where aec.empreendimento = :empreendimentoid"                                                    , EsquemaBanco);

                    comando.AdicionarParametroEntrada("empreendimentoid", empreendimento.Id, DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            empreendimento.Coordenada.Id = Convert.ToInt32(reader["id"]);
                            empreendimento.Coordenada.EastingUtmTexto  = Convert.ToString(reader["easting_utm"]);
                            empreendimento.Coordenada.NorthingUtmTexto = Convert.ToString(reader["northing_utm"]);
                            empreendimento.Coordenada.FusoUtm          = Convert.IsDBNull(reader["fuso_utm"]) ? 0 : Convert.ToInt32(reader["fuso_utm"]);
                            empreendimento.Coordenada.HemisferioUtm    = Convert.IsDBNull(reader["hemisferio_utm"]) ? 0 : Convert.ToInt32(reader["hemisferio_utm"]);
                            empreendimento.Coordenada.LatitudeGms      = reader["latitude_gms"].ToString();
                            empreendimento.Coordenada.LongitudeGms     = reader["longitude_gms"].ToString();
                            empreendimento.Coordenada.LatitudeGdec     = Convert.IsDBNull(reader["latitude_gdec"]) ? 0 : Convert.ToDouble(reader["latitude_gdec"]);
                            empreendimento.Coordenada.LongitudeGdec    = Convert.IsDBNull(reader["longitude_gdec"]) ? 0 : Convert.ToDouble(reader["longitude_gdec"]);
                            empreendimento.Coordenada.Datum.Id         = Convert.ToInt32(reader["datum"]);
                            empreendimento.Coordenada.Tipo.Id          = Convert.ToInt32(reader["tipo_coordenada"]);
                            empreendimento.Coordenada.FormaColetaTexto = Convert.ToString(reader["forma_coleta"]);
                            empreendimento.Coordenada.LocalColetaTexto = Convert.ToString(reader["local_coleta"]);
                        }
                        reader.Close();
                    }

                    #endregion

                    #region Meio de Contato

                    comando = bancoDeDados.CriarComando(@"select a.id, a.empreendimento, a.meio_contato tipo_contato_id, a.valor
				  from {0}tab_empreendimento_contato a
				 where a.empreendimento = :empreendimento"                , EsquemaBanco);

                    comando.AdicionarParametroEntrada("empreendimento", empreendimento.Id, DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        ContatoRelatorio contato;
                        while (reader.Read())
                        {
                            contato             = new ContatoRelatorio();
                            contato.Id          = Convert.ToInt32(reader["id"]);
                            contato.PessoaId    = Convert.ToInt32(reader["empreendimento"]);
                            contato.TipoContato = (eTipoContato)Enum.Parse(contato.TipoContato.GetType(), reader["tipo_contato_id"].ToString());
                            contato.Valor       = reader["valor"].ToString();
                            empreendimento.MeiosContatos.Add(contato);
                        }
                        reader.Close();
                    }

                    #endregion

                    requerimento.Empreendimento = empreendimento;
                }

                #endregion

                #region Elaborador

                comando = bancoDeDados.CriarComando(@"
				select nvl(p.nome, p.razao_social) NomeRazaoSocial, lc.texto TipoTexto 
				from {0}tab_credenciado c, {0}tab_pessoa p, {0}lov_credenciado_tipo lc 
				where c.pessoa = p.id and c.tipo = lc.id and c.id = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", requerimento.AutorId, DbType.Int32);
                requerimento.UsuarioCredenciado = bancoDeDados.ObterEntity <CredenciadoRelatorio>(comando);

                #endregion
            }

            #endregion

            #region Banco do Interno

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                #region Requerimento

                requerimento.Municipio = ObterMunicipio(requerimento.MunicipioId, bancoDeDados);

                #region Situacao

                Comando comando = bancoDeDados.CriarComando(@"select l.texto situacao_texto from {0}lov_requerimento_situacao l where l.id = :id", EsquemaInterno);

                comando.AdicionarParametroEntrada("id", requerimento.SituacaoId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        requerimento.SituacaoTexto = reader["situacao_texto"].ToString();
                    }
                    reader.Close();
                }

                #endregion

                #region Agendamento

                if (!string.IsNullOrWhiteSpace(requerimento.AgendamentoVistoria))
                {
                    comando = bancoDeDados.CriarComando(@"select l.texto agendamento from {0}lov_requerimento_agendamento l where l.id = :id", EsquemaInterno);

                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(requerimento.AgendamentoVistoria), DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            requerimento.AgendamentoVistoria = reader["agendamento"].ToString();
                        }
                        reader.Close();
                    }
                }

                #endregion

                #region Setor

                if (requerimento.SetorId > 0)
                {
                    comando = bancoDeDados.CriarComando(@"select m.texto from tab_setor_endereco se, lov_municipio m 
						where se.municipio = m.id (+) and se.setor = :setor"                        , EsquemaInterno);

                    comando.AdicionarParametroEntrada("setor", Convert.ToInt32(requerimento.SetorId), DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            requerimento.Municipio = reader["texto"].ToString();
                        }
                        reader.Close();
                    }
                }

                #endregion

                #endregion

                if (requerimento.Atividades.Count > 0)
                {
                    #region Atividades

                    comando = bancoDeDados.CriarComando(@"select b.id, b.atividade atividade_texto, b.conclusao from {0}tab_atividade b", EsquemaInterno);

                    comando.DbCommand.CommandText += comando.AdicionarIn("where", "b.id", DbType.Int32, requerimento.Atividades.Select(x => x.Id).ToList());

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        while (reader.Read())
                        {
                            int idr = Convert.ToInt32(reader["id"]);
                            RequerimentoAtividadeRelatorio atividade = requerimento.Atividades.FirstOrDefault(x => x.Id == idr);
                            atividade.NomeAtividade = reader["atividade_texto"].ToString();
                            atividade.Conclusao     = reader.GetValue <string>("conclusao");
                        }

                        reader.Close();
                    }

                    #endregion

                    #region Atividades/Finalidades/Modelos

                    comando = bancoDeDados.CriarComando(@"
							select ltf.texto finalidade_texto, tm.nome modelo_nome
							  from {0}tab_titulo_modelo tm, {0}lov_titulo_finalidade ltf
							 where tm.id = :modelo and ltf.id = :fin"                            , EsquemaInterno);

                    comando.AdicionarParametroEntrada("fin", DbType.Int32);
                    comando.AdicionarParametroEntrada("modelo", DbType.Int32);

                    var finalidades = requerimento.Atividades.SelectMany(x => x.Finalidades);

                    foreach (Finalidade f in finalidades)
                    {
                        comando.SetarValorParametro("fin", f.Id);
                        comando.SetarValorParametro("modelo", f.TituloModelo);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            if (readerAux.Read())
                            {
                                f.Texto             = readerAux["finalidade_texto"].ToString();
                                f.TituloModeloTexto = readerAux["modelo_nome"].ToString();
                            }

                            readerAux.Close();
                        }
                    }

                    #endregion
                }

                #region Interessado

                #region Profissao

                if (!string.IsNullOrWhiteSpace(requerimento.Interessado.Fisica.Profissao))
                {
                    comando = bancoDeDados.CriarComando(@"select texto from {0}tab_profissao where id = :id", EsquemaInterno);

                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(requerimento.Interessado.Fisica.Profissao), DbType.Int32);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            requerimento.Interessado.Fisica.Profissao = reader["texto"].ToString();
                        }
                        reader.Close();
                    }
                }

                #endregion

                #region Meios de Contato

                comando = bancoDeDados.CriarComando(@"select b.id, b.texto, b.mascara from {0}tab_meio_contato b", EsquemaInterno);

                comando.DbCommand.CommandText += comando.AdicionarIn("where", "b.id", DbType.Int32, requerimento.Interessado.MeiosContatos.Select(x => x.Id).ToList());

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        int idr      = Convert.ToInt32(reader["id"]);
                        var contatos = requerimento.Interessado.MeiosContatos.Where(x => x.Id == idr).ToList();
                        contatos.ForEach(x =>
                        {
                            x.TipoTexto = reader["texto"].ToString();
                            x.Mascara   = reader.GetValue <string>("mascara");
                        });
                    }

                    reader.Close();
                }

                #endregion

                #region Endereco

                EnderecoRelatorio end = requerimento.Interessado.Endereco;
                end.MunicipioTexto = ObterMunicipio(end.MunicipioId, bancoDeDados);
                end.EstadoSigla    = ObterEstado(end.EstadoId, bancoDeDados);

                #endregion

                #endregion

                #region Responsaveis

                #region Funcao

                comando = bancoDeDados.CriarComando(@"select lf.texto funcao from {0}lov_protocolo_resp_funcao lf where lf.id = :id", EsquemaInterno);
                comando.AdicionarParametroEntrada("id", DbType.Int32);

                foreach (var resp in requerimento.Responsaveis)
                {
                    comando.SetarValorParametro("id", int.Parse(resp.FuncaoTexto));
                    resp.FuncaoTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #region Meios de Contato

                comando = bancoDeDados.CriarComando(@"select b.id, b.texto, b.mascara from {0}tab_meio_contato b", EsquemaInterno);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        int idr      = Convert.ToInt32(reader["id"]);
                        var contatos = requerimento.Responsaveis.SelectMany(x => x.MeiosContatos).Where(x => x.Id == idr).ToList();
                        contatos.ForEach(x =>
                        {
                            x.TipoTexto = reader["texto"].ToString();
                            x.Mascara   = reader.GetValue <string>("mascara");
                        });
                    }

                    reader.Close();
                }

                #endregion

                #region Endereços

                foreach (var endResp in requerimento.Responsaveis.Select(x => x.Endereco))
                {
                    endResp.MunicipioTexto = ObterMunicipio(endResp.MunicipioId, bancoDeDados);
                    endResp.EstadoSigla    = ObterEstado(endResp.EstadoId, bancoDeDados);
                }

                #endregion

                #endregion

                #region Empreendimento

                EmpreendimentoRelatorio emp = requerimento.Empreendimento;

                #region Atividade

                if (!string.IsNullOrWhiteSpace(emp.AtividadeTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select a.atividade from {0}tab_empreendimento_atividade a where a.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.AtividadeTexto), DbType.Int32);
                    requerimento.Empreendimento.AtividadeTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #region Segmento

                if (!string.IsNullOrWhiteSpace(emp.SegmentoTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select les.texto from {0}lov_empreendimento_segmento les where les.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.SegmentoTexto), DbType.Int32);
                    requerimento.Empreendimento.SegmentoTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #region Endereços

                foreach (var endEmp in emp.Enderecos)
                {
                    endEmp.MunicipioTexto = ObterMunicipio(endEmp.MunicipioId, bancoDeDados);
                    endEmp.EstadoSigla    = ObterEstado(endEmp.EstadoId, bancoDeDados);
                }

                #endregion

                #region Meios de Contato

                comando = bancoDeDados.CriarComando(@"select b.id, b.texto, b.mascara from tab_meio_contato b", EsquemaInterno);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        int idr      = Convert.ToInt32(reader["id"]);
                        var contatos = emp.MeiosContatos.Where(x => x.Id == idr).ToList();
                        contatos.ForEach(x =>
                        {
                            x.TipoTexto = reader["texto"].ToString();
                            x.Mascara   = reader.GetValue <string>("mascara");
                        });
                    }

                    reader.Close();
                }

                #endregion

                #region Coordenada

                ListaBus bus = new ListaBus();

                emp.Coordenada.DatumTexto = ObterDatum(emp.Coordenada.Datum.Id, bancoDeDados);
                emp.Coordenada.Tipo.Texto = ObterTipoCoordenada(emp.Coordenada.Tipo.Id, bancoDeDados);

                if (!string.IsNullOrWhiteSpace(emp.Coordenada.HemisferioUtmTexto))
                {
                    emp.Coordenada.HemisferioUtmTexto = bus.Hemisferios.FirstOrDefault(x => x.Id == Convert.ToInt32(emp.Coordenada.HemisferioUtmTexto)).Texto;
                }

                if (!string.IsNullOrWhiteSpace(emp.Coordenada.FormaColetaTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select c.texto from {0}lov_empreendimento_forma_colet c where c.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.Coordenada.FormaColetaTexto), DbType.Int32);
                    emp.Coordenada.FormaColetaTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                if (!string.IsNullOrWhiteSpace(emp.Coordenada.LocalColetaTexto))
                {
                    comando = bancoDeDados.CriarComando(@"select c.texto from {0}lov_empreendimento_local_colet c where c.id = :id", EsquemaInterno);
                    comando.AdicionarParametroEntrada("id", Convert.ToInt32(emp.Coordenada.LocalColetaTexto), DbType.Int32);
                    emp.Coordenada.LocalColetaTexto = bancoDeDados.ExecutarScalar <string>(comando);
                }

                #endregion

                #endregion
            }

            #endregion

            return(requerimento);
        }