public BeneficiamentoMadeiraBeneficiamentoVM(BeneficiamentoMadeiraBeneficiamento caracterizacao, List <ProcessoAtividadeItem> atividades, List <Lista> materiaPrimaConsumida, List <Lista> coordenadaslst, List <Lista> tipoGeometrico, List <Lista> unidadeMedida, bool isVisualizar = false, bool isEditar = false)
        {
            IsVisualizar   = isVisualizar;
            Caracterizacao = caracterizacao;
            IsEditar       = isEditar;

            Atividade = ViewModelHelper.CriarSelectList(atividades.Where(x => x.Id == _serrariasQuandoNaoAssociadasAFabricacaoDeEstruturas || x.Id == _fabricacaoDeEstruturasDeMadeiraComAplicacaoRural).ToList(), true, true, selecionado: caracterizacao.Atividade.ToString());

            CoodernadaAtividade            = new CoordenadaAtividadeVM(caracterizacao.CoordenadaAtividade, coordenadaslst, tipoGeometrico, IsVisualizar);
            MateriaPrimaFlorestalConsumida = new MateriaPrimaFlorestalConsumidaVM(caracterizacao.MateriasPrimasFlorestais, materiaPrimaConsumida, unidadeMedida, isVisualizar);
        }
        private BeneficiamentoMadeira ObterHistorico(int id, BancoDeDados banco = null, string tid = null, bool simplificado = false)
        {
            BeneficiamentoMadeira caracterizacao = new BeneficiamentoMadeira();

            int hst = 0;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select c.id, c.empreendimento, c.tid  from {0}hst_crt_benefic_madeira 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())
                    {
                        hst = Convert.ToInt32(reader["id"]);

                        caracterizacao.Id = id;
                        caracterizacao.EmpreendimentoId = Convert.ToInt32(reader["empreendimento"]);
                        caracterizacao.Tid = reader["tid"].ToString();
                    }

                    reader.Close();
                }

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

                #region Beneficiamentos

                using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                {
                    comando = bancoDeDados.CriarComando(@"select c.id, c.atividade_id, c.beneficiamento_mad_benf_id, c.volume_madeira_serrar, c.volume_madeira_processar, c.geometria_coord_atv_x, c.geometria_coord_atv_y, c.equip_contr_poluicao_sonora,
														c.geometria_id, c.geometria_tipo, c.tid  from {0}hst_crt_benefic_madeira_benef c where c.id_hst = :id_hst"                                                        , EsquemaBanco);

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

                    BeneficiamentoMadeiraBeneficiamento beneficiamento = null;

                    while (readerAux.Read())
                    {
                        beneficiamento                             = new BeneficiamentoMadeiraBeneficiamento();
                        beneficiamento.Id                          = Convert.ToInt32(readerAux["beneficiamento_mad_benf_id"]);
                        beneficiamento.Atividade                   = Convert.ToInt32(readerAux["atividade_id"]);
                        beneficiamento.VolumeMadeiraSerrar         = readerAux["volume_madeira_serrar"].ToString();
                        beneficiamento.VolumeMadeiraProcessar      = readerAux["volume_madeira_processar"].ToString();
                        beneficiamento.EquipControlePoluicaoSonora = readerAux["equip_contr_poluicao_sonora"].ToString();
                        beneficiamento.CoordenadaAtividade.Id      = Convert.ToInt32(readerAux["geometria_id"]);
                        beneficiamento.CoordenadaAtividade.Tipo    = Convert.ToInt32(readerAux["geometria_tipo"]);

                        if (readerAux["geometria_coord_atv_x"] != null && !Convert.IsDBNull(readerAux["geometria_coord_atv_x"]))
                        {
                            beneficiamento.CoordenadaAtividade.CoordX = Convert.ToDecimal(readerAux["geometria_coord_atv_x"]);
                        }

                        if (readerAux["geometria_coord_atv_y"] != null && !Convert.IsDBNull(readerAux["geometria_coord_atv_y"]))
                        {
                            beneficiamento.CoordenadaAtividade.CoordY = Convert.ToDecimal(readerAux["geometria_coord_atv_y"]);
                        }
                    }

                    readerAux.Close();

                    #region Materias-Prima Florestal Consumida

                    comando = bancoDeDados.CriarComando(@"select m.materia_prima id, m.materia_prima_tipo, lm.texto materia_prima_tipo_texto, 
													m.unidade, lu.texto unidade_texto, m.quantidade, m.especificar, m.tid 
														from {0}crt_benef_madeira_mat_fl_c m, {0}lov_crt_benefic_madeira_mat_pr_c lm, {0}lov_crt_unidade_medida lu
														where lm.id = m.materia_prima_tipo and lu.id = m.unidade  and c.id_hst = :id order by m.id"                                                        , EsquemaBanco);

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

                    using (IDataReader readerAux2 = bancoDeDados.ExecutarReader(comando))
                    {
                        MateriaPrima materia = null;

                        while (readerAux2.Read())
                        {
                            materia    = new MateriaPrima();
                            materia.Id = Convert.ToInt32(readerAux2["id"]);
                            materia.MateriaPrimaConsumida      = Convert.ToInt32(readerAux2["materia_prima_tipo"]);
                            materia.MateriaPrimaConsumidaTexto = (materia.MateriaPrimaConsumida == (int)eMateriaPrima.Outros) ? readerAux2["especificar"].ToString() : readerAux2["materia_prima_tipo_texto"].ToString();
                            materia.Unidade          = Convert.ToInt32(readerAux2["unidade"]);
                            materia.UnidadeTexto     = readerAux2["unidade_texto"].ToString();
                            materia.Quantidade       = readerAux2["quantidade"].ToString();
                            materia.EspecificarTexto = readerAux2["especificar"].ToString();
                            materia.Tid = readerAux2["tid"].ToString();

                            beneficiamento.MateriasPrimasFlorestais.Add(materia);
                        }

                        readerAux2.Close();
                    }

                    #endregion
                }

                #endregion
            }

            return(caracterizacao);
        }