예제 #1
0
        public ActionResult Editar(int id)
        {
            if (!_caracterizacaoValidar.Basicas(id))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            if (!_validar.Acessar(id))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, Msg = Validacao.QueryParam() }));
            }

            InformacaoCorte caracterizacao = _bus.ObterPorEmpreendimento(id);
            string          textoMerge     = _caracterizacaoValidar.DependenciasAlteradas(
                caracterizacao.EmpreendimentoId,
                (int)eCaracterizacao.InformacaoCorte,
                eCaracterizacaoDependenciaTipo.Caracterizacao,
                caracterizacao.Dependencias);

            if (!string.IsNullOrEmpty(textoMerge))
            {
                caracterizacao = _bus.MergiarGeo(caracterizacao);
            }

            InformacaoCorteVM vm = new InformacaoCorteVM(caracterizacao);

            vm.TextoMerge = textoMerge;
            vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;

            return(View(vm));
        }
예제 #2
0
        public ActionResult InformacaoCorteInformacaoExcluir(int itemId, int empreendimentoId)
        {
            InformacaoCorte caracterizacao = _bus.ObterPorEmpreendimento(empreendimentoId);

            if (caracterizacao.InformacoesCortes.Count > 1)
            {
                _bus.ExcluirInformacao(itemId);
                caracterizacao = _bus.ObterPorEmpreendimento(empreendimentoId);
            }
            else
            {
                Validacao.Add(Mensagem.InformacaoCorte.InformacaoCorteUltimoItemListaObrigatorio);
            }

            caracterizacao.Dependencias = _caracterizacaoBus.ObterDependenciasAtual(empreendimentoId, eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao);

            InformacaoCorteVM vm   = new InformacaoCorteVM(caracterizacao);
            String            html = ViewModelHelper.RenderPartialViewToString(ControllerContext, "InformacaoCorte", vm);

            return(Json(new
            {
                @EhValido = Validacao.EhValido,
                @Msg = Validacao.Erros,
                @CaracterizacaoId = caracterizacao.Id,
                @Html = html,
                @UrlRedirecionar = Url.Action("", "Caracterizacao", new { id = caracterizacao.EmpreendimentoId, Msg = Validacao.QueryParam() })
            }, JsonRequestBehavior.AllowGet));
        }
예제 #3
0
        public ActionResult Criar(int id)
        {
            if (!_caracterizacaoValidar.Basicas(id))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }


            InformacaoCorte caracterizacao = _bus.ObterPorEmpreendimento(id) ?? new InformacaoCorte();

            caracterizacao.EmpreendimentoId = id;

            if (caracterizacao.Id > 0)
            {
                return(RedirectToAction("Editar", new { id = caracterizacao.EmpreendimentoId }));
            }

            if (!_validar.Acessar(caracterizacao.EmpreendimentoId))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = id, Msg = Validacao.QueryParam() }));
            }

            caracterizacao.Dependencias = _caracterizacaoBus.ObterDependenciasAtual(id, eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao);
            InformacaoCorteVM vm = new InformacaoCorteVM(caracterizacao);

            vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;

            return(View(vm));
        }
예제 #4
0
        public ActionResult GeoMergiar(InformacaoCorte caracterizacao)
        {
            InformacaoCorteVM vm = new InformacaoCorteVM(_bus.MergiarGeo(caracterizacao));

            vm.Caracterizacao.InformacaoCorteInformacao = vm.Caracterizacao.InformacoesCortes.First();
            _bus.Salvar(vm.Caracterizacao);

            return(Json(new
            {
                @EhValido = Validacao.EhValido,
                @Msg = Validacao.Erros,
                @Html = ViewModelHelper.RenderPartialViewToString(ControllerContext, "InformacaoCorte", vm),
                @Dependencias = ViewModelHelper.Json(vm.Caracterizacao.Dependencias)
            }, JsonRequestBehavior.AllowGet));
        }
예제 #5
0
        public InformacaoCorte ObterPorEmpreendimento(int EmpreendimentoId, bool simplificado = false, BancoDeDados banco = null)
        {
            InformacaoCorte caracterizacao = null;

            try
            {
                caracterizacao = _da.ObterPorEmpreendimento(EmpreendimentoId, simplificado: simplificado);
                caracterizacao.Dependencias = _busCaracterizacao.ObterDependencias(caracterizacao.Id, eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
예제 #6
0
        internal int Salvar(InformacaoCorte caracterizacao, BancoDeDados banco)
        {
            if (caracterizacao == null)
            {
                throw new Exception("A Caracterização é nula.");
            }

            if (caracterizacao.Id <= 0)
            {
                int?id = Criar(caracterizacao, banco);
                return(id.GetValueOrDefault(0));
            }
            else
            {
                Editar(caracterizacao.InformacaoCorteInformacao, banco);
                return(caracterizacao.Id);
            }
        }
예제 #7
0
        internal InformacaoCorte ObterPorEmpreendimento(int empreendimento, bool simplificado = false, BancoDeDados banco = null)
        {
            InformacaoCorte caracterizacao = new InformacaoCorte();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select s.id from {0}crt_informacao_corte s where s.empreendimento = :empreendimento", EsquemaBanco);
                comando.AdicionarParametroEntrada("empreendimento", empreendimento, DbType.Int32);

                object valor = bancoDeDados.ExecutarScalar(comando);

                if (valor != null && !Convert.IsDBNull(valor))
                {
                    caracterizacao = Obter(Convert.ToInt32(valor), bancoDeDados, simplificado);
                }
            }

            return(caracterizacao);
        }
예제 #8
0
        public int Salvar(InformacaoCorte caracterizacao)
        {
            int id = 0;

            try
            {
                if (_validar.Salvar(caracterizacao))
                {
                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                    {
                        bancoDeDados.IniciarTransacao();

                        id = _da.Salvar(caracterizacao, bancoDeDados);

                        //Gerencia as dependências da caracterização
                        if (caracterizacao.Dependencias != null && caracterizacao.Dependencias.Count > 0)
                        {
                            _busCaracterizacao.Dependencias(new Caracterizacao()
                            {
                                Id             = caracterizacao.Id,
                                Tipo           = eCaracterizacao.InformacaoCorte,
                                DependenteTipo = eCaracterizacaoDependenciaTipo.Caracterizacao,
                                Dependencias   = caracterizacao.Dependencias
                            }, bancoDeDados);
                        }

                        Validacao.Add(Mensagem.InformacaoCorte.Salvar);

                        bancoDeDados.Commit();
                    }
                }
            }
            catch (Exception e)
            {
                Validacao.AddErro(e);
            }

            return(id);
        }
예제 #9
0
        public ActionResult Salvar(InformacaoCorte caracterizacao)
        {
            caracterizacao.Id           = _bus.Salvar(caracterizacao);
            caracterizacao              = _bus.ObterPorEmpreendimento(caracterizacao.EmpreendimentoId);
            caracterizacao.Dependencias = _caracterizacaoBus.ObterDependenciasAtual(caracterizacao.EmpreendimentoId, eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao);

            InformacaoCorteVM vm = new InformacaoCorteVM(caracterizacao);

            vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;

            String html = ViewModelHelper.RenderPartialViewToString(ControllerContext, "InformacaoCorte", vm);

            return(Json(new
            {
                @EhValido = Validacao.EhValido,
                @Msg = Validacao.Erros,
                @CaracterizacaoId = caracterizacao.Id,
                @Html = html,
                @Dependencias = ViewModelHelper.Json(caracterizacao.Dependencias),
                @UrlRedirecionar = Url.Action("", "Caracterizacao", new { id = caracterizacao.EmpreendimentoId, Msg = Validacao.QueryParam() })
            }, JsonRequestBehavior.AllowGet));
        }
        public bool Salvar(InformacaoCorte caracterizacao)
        {
            if (!_caracterizacaoValidar.Basicas(caracterizacao.EmpreendimentoId))
            {
                return(false);
            }

            if (caracterizacao.Id <= 0 && (_da.ObterPorEmpreendimento(caracterizacao.EmpreendimentoId, true) ?? new InformacaoCorte()).Id > 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoCaracterizacaoJaCriada);
                return(false);
            }

            if (!Acessar(caracterizacao.EmpreendimentoId))
            {
                return(false);
            }

            InformacaoCorteInformacaoSalvar(caracterizacao.InformacaoCorteInformacao);

            return(Validacao.EhValido);
        }
예제 #11
0
        internal InformacaoCorte Obter(int id, BancoDeDados banco = null, string tid = null, bool simplificado = false)
        {
            InformacaoCorte caracterizacao = new InformacaoCorte();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                if (tid == null)
                {
                    caracterizacao = Obter(id, bancoDeDados, simplificado);
                }
                else
                {
                    Comando comando = bancoDeDados.CriarComando(@"select count(s.id) existe from {0}crt_informacao_corte s where s.id = :id and s.tid = :tid", EsquemaBanco);

                    comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                    comando.AdicionarParametroEntrada("tid", DbType.String, 36, tid);

                    caracterizacao = (Convert.ToBoolean(bancoDeDados.ExecutarScalar(comando))) ? Obter(id, bancoDeDados, simplificado) : ObterHistorico(id, bancoDeDados, tid, simplificado);
                }
            }

            return(caracterizacao);
        }
예제 #12
0
        internal InformacaoCorte Obter(int id, BancoDeDados banco = null, bool simplificado = false)
        {
            InformacaoCorte caracterizacao = new InformacaoCorte();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Informacao de Corte

                Comando comando = bancoDeDados.CriarComando(@"select c.empreendimento, c.tid 
															from {0}crt_informacao_corte c where c.id = :id"                                                            , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.Id = id;
                        caracterizacao.EmpreendimentoId = Convert.ToInt32(reader["empreendimento"]);
                        caracterizacao.Tid = reader["tid"].ToString();
                    }

                    reader.Close();
                }

                #endregion

                if (caracterizacao.Id <= 0 || simplificado)
                {
                    return(caracterizacao);
                }

                #region Informacoes

                comando = bancoDeDados.CriarComando(@"select i.id, i.arvores_isoladas_restante, i.area_corte_restante, i.data_informacao, i.tid
													from crt_inf_corte_inf i where i.caracterizacao = :caracterizacao order by i.id"                                                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    InformacaoCorteInformacao informacaoCorte = null;

                    while (reader.Read())
                    {
                        informacaoCorte    = new InformacaoCorteInformacao();
                        informacaoCorte.Id = Convert.ToInt32(reader["id"]);
                        informacaoCorte.CaracterizacaoId = caracterizacao.Id;
                        informacaoCorte.Tid = reader["tid"].ToString();

                        if (reader["arvores_isoladas_restante"] != null && !Convert.IsDBNull(reader["arvores_isoladas_restante"]))
                        {
                            informacaoCorte.ArvoresIsoladasRestantes = Convert.ToDecimal(reader["arvores_isoladas_restante"]).ToString("N0");
                        }

                        if (reader["data_informacao"] != null && !Convert.IsDBNull(reader["data_informacao"]))
                        {
                            informacaoCorte.DataInformacao.DataTexto = Convert.ToDateTime(reader["data_informacao"]).ToShortDateString();
                        }

                        if (reader["area_corte_restante"] != null && !Convert.IsDBNull(reader["area_corte_restante"]))
                        {
                            informacaoCorte.AreaCorteRestante = Convert.ToDecimal(reader["area_corte_restante"]).ToString("N4");
                        }

                        #region Especies

                        comando = bancoDeDados.CriarComando(@"select e.id, e.especie, le.texto especie_texto, e.especie_especificar_texto, 
															e.arvores_isoladas, e.area_corte, e.idade_plantio, e.tid from crt_inf_corte_inf_especie e, 
															lov_crt_silvicultura_cult_fl le where le.id = e.especie 
															and e.inf_corte_inf = :inf_corte_inf order by e.id"                                                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("inf_corte_inf", informacaoCorte.Id, DbType.Int32);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Especie especie = null;

                            while (readerAux.Read())
                            {
                                especie                  = new Especie();
                                especie.Id               = Convert.ToInt32(readerAux["id"]);
                                especie.EspecieTipo      = Convert.ToInt32(readerAux["especie"]);
                                especie.EspecieTipoTexto = readerAux["especie_texto"].ToString();
                                especie.ArvoresIsoladas  = readerAux["arvores_isoladas"].ToString();
                                especie.Tid              = readerAux["tid"].ToString();

                                if (readerAux["especie_especificar_texto"] != null && !Convert.IsDBNull(readerAux["especie_especificar_texto"]))
                                {
                                    especie.EspecieEspecificarTexto = readerAux["especie_especificar_texto"].ToString();
                                    especie.EspecieTipoTexto        = especie.EspecieEspecificarTexto;
                                }

                                if (readerAux["area_corte"] != null && !Convert.IsDBNull(readerAux["area_corte"]))
                                {
                                    especie.AreaCorte = Convert.ToDecimal(readerAux["area_corte"]).ToString("N4");
                                }

                                if (readerAux["idade_plantio"] != null && !Convert.IsDBNull(readerAux["idade_plantio"]))
                                {
                                    especie.IdadePlantio = Convert.ToDecimal(readerAux["idade_plantio"]).ToString("N0");
                                }

                                informacaoCorte.Especies.Add(especie);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        #region Produtos

                        comando = bancoDeDados.CriarComando(@"select p.id, p.produto, lp.texto produto_texto, p.destinacao_material, 
															lm.texto destinacao_material_texto, p.quantidade, p.tid 
															from {0}crt_inf_corte_inf_produto p, {0}lov_crt_produto lp, 
															{0}lov_crt_inf_corte_inf_dest_mat lm where lp.id = p.produto 
															and lm.id = p.destinacao_material and p.inf_corte_inf = :inf_corte_inf order by p.id"                                                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("inf_corte_inf", informacaoCorte.Id, DbType.Int32);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Produto produto = null;

                            while (readerAux.Read())
                            {
                                produto                     = new Produto();
                                produto.Id                  = Convert.ToInt32(readerAux["id"]);
                                produto.ProdutoTipo         = Convert.ToInt32(readerAux["produto"]);
                                produto.ProdutoTipoTexto    = readerAux["produto_texto"].ToString();
                                produto.DestinacaoTipo      = Convert.ToInt32(readerAux["destinacao_material"]);
                                produto.DestinacaoTipoTexto = readerAux["destinacao_material_texto"].ToString();
                                produto.Tid                 = readerAux["tid"].ToString();

                                if (readerAux["quantidade"] != null && !Convert.IsDBNull(readerAux["quantidade"]))
                                {
                                    produto.Quantidade = Convert.ToDecimal(readerAux["quantidade"]).ToString("N2");
                                }

                                informacaoCorte.Produtos.Add(produto);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.InformacoesCortes.Add(informacaoCorte);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
예제 #13
0
 public InformacaoCorte MergiarGeo(InformacaoCorte caracterizacaoAtual)
 {
     caracterizacaoAtual.Dependencias = _busCaracterizacao.ObterDependenciasAtual(caracterizacaoAtual.EmpreendimentoId, eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao);
     return(caracterizacaoAtual);
 }
예제 #14
0
 public InformacaoCorteVM(InformacaoCorte caracterizacao, bool isVisualizar = false)
 {
     IsVisualizar   = isVisualizar;
     Caracterizacao = caracterizacao;
 }
예제 #15
0
        internal int?Criar(InformacaoCorte caracterizacao, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Informacao de Corte

                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"insert into {0}crt_informacao_corte(id, empreendimento, tid) 
															values({0}seq_crt_informacao_corte.nextval, :empreendimento, :tid) returning id into :id"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("empreendimento", caracterizacao.EmpreendimentoId, DbType.Int32);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroSaida("id", DbType.Int32);

                bancoDeDados.ExecutarNonQuery(comando);

                caracterizacao.Id = Convert.ToInt32(comando.ObterValorParametro("id"));

                #region Informacao de Corte Informacao

                comando = bancoDeDados.CriarComando(@"insert into {0}crt_inf_corte_inf(id, caracterizacao, arvores_isoladas_restante, 
													area_corte_restante, data_informacao, tid) values({0}seq_crt_inf_corte_inf.nextval,
													:caracterizacao, :arvores_isoladas_restante, :area_corte_restante,  
													:data_informacao, :tid) returning id into :id"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("arvores_isoladas_restante", caracterizacao.InformacaoCorteInformacao.ArvoresIsoladasRestantes, DbType.Decimal);
                comando.AdicionarParametroEntrada("area_corte_restante", caracterizacao.InformacaoCorteInformacao.AreaCorteRestante, DbType.Decimal);
                comando.AdicionarParametroEntrada("data_informacao", caracterizacao.InformacaoCorteInformacao.DataInformacao.DataTexto, DbType.DateTime);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroSaida("id", DbType.Int32);

                bancoDeDados.ExecutarNonQuery(comando);

                caracterizacao.InformacaoCorteInformacao.Id = Convert.ToInt32(comando.ObterValorParametro("id"));

                #region Especies

                if (caracterizacao.InformacaoCorteInformacao.Especies != null && caracterizacao.InformacaoCorteInformacao.Especies.Count > 0)
                {
                    foreach (Especie especie in caracterizacao.InformacaoCorteInformacao.Especies)
                    {
                        comando = bancoDeDados.CriarComando(@"insert into {0}crt_inf_corte_inf_especie(id, inf_corte_inf, especie, 
															especie_especificar_texto, arvores_isoladas, area_corte, idade_plantio, tid)
															values({0}seq_crt_inf_corte_inf_especie.nextval, :inf_corte_inf, 
															:especie, :especie_especificar_texto, :arvores_isoladas, :area_corte, :idade_plantio, 
															:tid)"                                                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("inf_corte_inf", caracterizacao.InformacaoCorteInformacao.Id, DbType.Int32);
                        comando.AdicionarParametroEntrada("especie", especie.EspecieTipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("especie_especificar_texto", String.IsNullOrWhiteSpace(especie.EspecieEspecificarTexto) ? (Object)DBNull.Value: especie.EspecieEspecificarTexto, DbType.String);
                        comando.AdicionarParametroEntrada("arvores_isoladas", especie.ArvoresIsoladas, DbType.Decimal);
                        comando.AdicionarParametroEntrada("area_corte", especie.AreaCorte, DbType.Decimal);
                        comando.AdicionarParametroEntrada("idade_plantio", especie.IdadePlantio, DbType.Decimal);
                        comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                        bancoDeDados.ExecutarNonQuery(comando);
                    }
                }

                #endregion

                #region Produtos

                if (caracterizacao.InformacaoCorteInformacao.Produtos != null && caracterizacao.InformacaoCorteInformacao.Produtos.Count > 0)
                {
                    foreach (Produto produto in caracterizacao.InformacaoCorteInformacao.Produtos)
                    {
                        comando = bancoDeDados.CriarComando(@"insert into crt_inf_corte_inf_produto(id, inf_corte_inf, produto,
															destinacao_material, quantidade, tid) values({0}seq_crt_inf_corte_inf_produto.nextval, 
															:inf_corte_inf, :produto, :destinacao_material, :quantidade, :tid)"                                                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("inf_corte_inf", caracterizacao.InformacaoCorteInformacao.Id, DbType.Int32);
                        comando.AdicionarParametroEntrada("produto", produto.ProdutoTipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("destinacao_material", produto.DestinacaoTipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("quantidade", produto.Quantidade, DbType.Decimal);
                        comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                        bancoDeDados.ExecutarNonQuery(comando);
                    }
                }

                #endregion

                #endregion

                #endregion

                #region Histórico

                Historico.Gerar(caracterizacao.Id, eHistoricoArtefatoCaracterizacao.informacaocorte, eHistoricoAcao.criar, bancoDeDados, null);

                #endregion

                bancoDeDados.Commit();

                return(caracterizacao.Id);
            }
        }
예제 #16
0
        private InformacaoCorte ObterHistorico(int id, BancoDeDados banco = null, string tid = null, bool simplificado = false)
        {
            InformacaoCorte caracterizacao    = new InformacaoCorte();
            int             hst               = 0;
            int             hst_inf_corte_inf = 0;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Informacao de Corte

                Comando comando = bancoDeDados.CriarComando(@"select c.id, c.empreendimento_id, c.tid 
															from {0}hst_crt_informacao_corte c where c.caracterizacao = :id and c.tid = :tid"                                                            , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, tid);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.Id = id;
                        caracterizacao.EmpreendimentoId = Convert.ToInt32(reader["empreendimento_id"]);
                        caracterizacao.Tid = reader["tid"].ToString();
                        hst = Convert.ToInt32(reader["id"]);
                    }

                    reader.Close();
                }

                #endregion

                if (caracterizacao.Id <= 0 || simplificado)
                {
                    return(caracterizacao);
                }

                #region Informacoes

                comando = bancoDeDados.CriarComando(@"select i.id, i.inf_corte_inf, i.arvores_isoladas_restante, i.area_corte_restante, i.data_informacao, i.tid
													from hst_crt_inf_corte_inf i where i.caracterizacao = :caracterizacao and i.id_hst = :hst"                                                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    InformacaoCorteInformacao informacaoCorte = null;

                    while (reader.Read())
                    {
                        informacaoCorte    = new InformacaoCorteInformacao();
                        informacaoCorte.Id = Convert.ToInt32(reader["inf_corte_inf"]);
                        informacaoCorte.ArvoresIsoladasRestantes = reader["arvores_isoladas_restante"].ToString();
                        informacaoCorte.AreaCorteRestante        = reader["area_corte_restante"].ToString();
                        informacaoCorte.DataInformacao.DataTexto = Convert.ToDateTime(reader["data_informacao"]).ToShortDateString();
                        informacaoCorte.Tid = reader["tid"].ToString();
                        hst_inf_corte_inf   = Convert.ToInt32(reader["id"]);

                        #region Especies

                        comando = bancoDeDados.CriarComando(@"select e.especie_entidade_id, e.especie_id, e.especie_texto, e.especie_especificar_texto, 
															e.arvores_isoladas, e.area_corte, e.idade_plantio, e.tid from hst_crt_inf_corte_inf_especie e
															where e.id_hst = :hst_inf_corte_inf"                                                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("inf_corte_inf", informacaoCorte.Id, DbType.Int32);
                        comando.AdicionarParametroEntrada("hst_inf_corte_inf", hst_inf_corte_inf, DbType.Int32);

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Especie especie = null;

                            while (readerAux.Read())
                            {
                                especie                  = new Especie();
                                especie.Id               = Convert.ToInt32(readerAux["especie_entidade_id"]);
                                especie.EspecieTipo      = Convert.ToInt32(readerAux["especie_id"]);
                                especie.EspecieTipoTexto = readerAux["especie_texto"].ToString();
                                especie.ArvoresIsoladas  = readerAux["arvores_isoladas"].ToString();
                                especie.AreaCorte        = readerAux["area_corte"].ToString();
                                especie.Tid              = readerAux["tid"].ToString();

                                if (readerAux["especie_especificar_texto"] != null && !Convert.IsDBNull(readerAux["especie_especificar_texto"]))
                                {
                                    especie.EspecieEspecificarTexto = readerAux["especie_especificar_texto"].ToString();
                                }

                                if (readerAux["idade_plantio"] != null && !Convert.IsDBNull(readerAux["idade_plantio"]))
                                {
                                    especie.IdadePlantio = Convert.ToDecimal(readerAux["idade_plantio"]).ToString("N0");
                                }

                                informacaoCorte.Especies.Add(especie);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        #region Produtos

                        comando = bancoDeDados.CriarComando(@"select p.id, p.produto_entidade_id, p.produto_id, p.produto_texto, p.destinacao_material_id, 
															p.destinacao_material_texto, p.quantidade, p.tid 
															from {0}hst_crt_inf_corte_inf_produto p
															where p.id_hst = :hst_inf_corte_inf"                                                            , EsquemaBanco);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            Produto produto = null;

                            while (readerAux.Read())
                            {
                                produto                     = new Produto();
                                produto.Id                  = Convert.ToInt32(readerAux["produto_entidade_id"]);
                                produto.ProdutoTipo         = Convert.ToInt32(readerAux["produto_id"]);
                                produto.ProdutoTipoTexto    = readerAux["produto_texto"].ToString();
                                produto.DestinacaoTipo      = Convert.ToInt32(readerAux["destinacao_material_id"]);
                                produto.DestinacaoTipoTexto = readerAux["destinacao_material_texto"].ToString();
                                produto.Quantidade          = readerAux["quantidade"].ToString();
                                produto.Tid                 = readerAux["tid"].ToString();

                                informacaoCorte.Produtos.Add(produto);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.InformacoesCortes.Add(informacaoCorte);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
        internal Outros ObterDadosPDF(int titulo, BancoDeDados banco = null)
        {
            Outros                    outros        = new Outros();
            InformacaoCorteBus        infoCorteBus  = new InformacaoCorteBus();
            InformacaoCorte           infoCorte     = null;
            InformacaoCorteInformacao infoCorteInfo = null;
            int infoCorteInfoId = 0;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Dados do Titulo

                DadosPDF dados = DaEsp.ObterDadosTitulo(titulo, bancoDeDados);

                outros.Titulo = dados.Titulo;
                outros.Titulo.SetorEndereco = DaEsp.ObterEndSetor(outros.Titulo.SetorId);
                outros.Protocolo            = dados.Protocolo;
                outros.Empreendimento       = dados.Empreendimento;

                #endregion

                #region Especificidade

                Comando comando = bancoDeDados.CriarComando(@" select e.destinatario, e.informacao_corte from {0}esp_out_informacao_corte e where e.titulo = :titulo ", EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        outros.Destinatario = _daEsp.ObterDadosPessoa(reader.GetValue <int>("destinatario"), outros.Empreendimento.Id, bancoDeDados);
                        infoCorteInfoId     = reader.GetValue <int>("informacao_corte");
                    }

                    reader.Close();
                }

                #endregion

                #region Dominialidade

                DominialidadeBus _dominialidadeBus = new DominialidadeBus();

                outros.Dominialidade = new DominialidadePDF(_dominialidadeBus.ObterPorEmpreendimento(outros.Empreendimento.Id.GetValueOrDefault(), banco: bancoDeDados));

                #endregion

                #region Informação de corte

                infoCorte = infoCorteBus.ObterPorEmpreendimento(outros.Empreendimento.Id.GetValueOrDefault(), banco: bancoDeDados);

                if (infoCorte != null)
                {
                    infoCorteInfo = infoCorte.InformacoesCortes.SingleOrDefault(x => x.Id == infoCorteInfoId);

                    if (infoCorteInfo != null)
                    {
                        outros.InformacaoCorteInfo = new InformacaoCorteInfoPDF(infoCorteInfo);
                    }
                }

                #endregion
            }

            return(outros);
        }