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

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

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

            SilviculturaVM vm = new SilviculturaVM(caracterizacao, _listaBus.SilviculturaCulturasFlorestais, _listaBus.CaracterizacaoGeometriaTipo, true);

            vm.TextoMerge = textoMerge;
            vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;
            vm.TextoAbrirModal = _validar.AbrirModalAcessar(caracterizacao);

            vm.TemARL             = true;
            vm.TemARLDesconhecida = false;

            return(View(vm));
        }
        internal bool Salvar(Silvicultura caracterizacao)
        {
            if (!_caracterizacaoValidar.Basicas(caracterizacao.EmpreendimentoId))
            {
                return(false);
            }

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

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

            #region Silviculturas

            foreach (var silvicultura in caracterizacao.Silviculturas)
            {
                if (silvicultura.Culturas.Count <= 0)
                {
                    Validacao.Add(Mensagem.Silvicultura.CulturaObrigatorio);
                }
            }

            #endregion

            return(Validacao.EhValido);
        }
예제 #3
0
        public SilviculturaVM(Silvicultura caracterizacao, List <Lista> tipoCultivo, List <Lista> tipoGeometria, bool isVisualizar = false)
        {
            IsVisualizar   = isVisualizar;
            Caracterizacao = caracterizacao;

            foreach (SilviculturaSilvicult silvicultura in caracterizacao.Silviculturas)
            {
                SilviculturaSilvicultVM silviculturaVM = new SilviculturaSilvicultVM(silvicultura, tipoCultivo, tipoGeometria, isVisualizar);
                SilviculturaSilvicultVM.Add(silviculturaVM);
            }
        }
        public ActionResult GeoMergiar(Silvicultura silvicultura)
        {
            SilviculturaVM vm = new SilviculturaVM(_bus.MergiarGeo(silvicultura), _listaBus.SilviculturaCulturasFlorestais, _listaBus.CaracterizacaoGeometriaTipo);

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

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

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

            if (caracterizacao.Id <= 0)
            {
                Criar(caracterizacao, banco);
            }
            else
            {
                Editar(caracterizacao, banco);
            }
        }
        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() }));
            }

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

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

            SilviculturaVM vm = new SilviculturaVM(caracterizacao, _listaBus.SilviculturaCulturasFlorestais, _listaBus.CaracterizacaoGeometriaTipo);

            vm.TextoMerge = textoMerge;
            vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;
            vm.TextoAbrirModal = _validar.AbrirModalAcessar(caracterizacao);

            var emp         = _empBus.Obter(id);
            var enderecoEmp = emp.Enderecos.Find(x => x.ZonaLocalizacaoId == (int)eEmpreendimentoLocalizacao.ZonaRural);

            if (enderecoEmp != null)
            {
                vm.TemARL             = _bus.TemARL(id);
                vm.TemARLDesconhecida = _bus.TemARLDesconhecida(id);
            }
            else
            {
                vm.TemARL             = true;
                vm.TemARLDesconhecida = false;
            }

            return(View(vm));
        }
예제 #8
0
        public object ObterDadosPdfTitulo(int empreendimento, int atividade, IEspecificidade especificidade, BancoDeDados banco = null)
        {
            Silvicultura      silvicultura = ObterPorEmpreendimento(empreendimento);
            CaracterizacaoPDF caractPdf    = new CaracterizacaoPDF();

            #region Culturas

            caractPdf.Cultura.AreaTotalHa = silvicultura.Silviculturas.Sum(x => x.AreaCroquiHa).ToStringTrunc(4);

            //Agrupando Culturas Florestais
            List <CulturaFlorestalTipoPDF> culturas = new List <CulturaFlorestalTipoPDF>();

            silvicultura.Silviculturas.ForEach(x =>
            {
                x.Culturas.ForEach(y =>
                {
                    culturas.Add(new CulturaFlorestalTipoPDF()
                    {
                        AreaCultura      = y.AreaCultura.ToStringTrunc(4),
                        AreaCulturaHa    = y.AreaCulturaHa.ToStringTrunc(),
                        AreaCulturaTexto = y.AreaCulturaTexto,
                        CulturaTipo      = y.CulturaTipo,
                        CulturaTipoTexto = y.CulturaTipoTexto,
                        EspecificarTexto = y.EspecificarTexto,
                        Id  = y.Id,
                        Tid = y.Tid
                    });
                });
            });

            culturas.ForEach(cultura =>
            {
                if (!caractPdf.Cultura.Tipos.Exists(y => y.CulturaTipoTexto.ToLower() == cultura.CulturaTipoTexto.ToLower()))
                {
                    cultura.AreaCultura = culturas
                                          .Where(x => x.CulturaTipoTexto.ToLower() == cultura.CulturaTipoTexto.ToLower())
                                          .Sum(x => Convert.ToDecimal(x.AreaCulturaHa)).ToStringTrunc(4);
                    caractPdf.Cultura.Tipos.Add(cultura);
                }
            });
            #endregion

            return(caractPdf);
        }
예제 #9
0
        internal Silvicultura ObterPorEmpreendimento(int empreendimento, bool simplificado = false, BancoDeDados banco = null)
        {
            Silvicultura caracterizacao = new Silvicultura();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select s.id from {0}crt_silvicultura 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);
        }
예제 #10
0
        public Silvicultura MergiarGeo(Silvicultura caracterizacaoAtual)
        {
            Silvicultura dadosGeo = ObterDadosGeo(caracterizacaoAtual.EmpreendimentoId);

            caracterizacaoAtual.Dependencias = _busCaracterizacao.ObterDependenciasAtual(caracterizacaoAtual.EmpreendimentoId, eCaracterizacao.Silvicultura, eCaracterizacaoDependenciaTipo.Caracterizacao);
            caracterizacaoAtual.Areas        = dadosGeo.Areas;

            foreach (SilviculturaSilvicult silvicultura in dadosGeo.Silviculturas)
            {
                if (!caracterizacaoAtual.Silviculturas.Exists(x => x.Identificacao == silvicultura.Identificacao))
                {
                    caracterizacaoAtual.Silviculturas.Add(silvicultura);
                }
            }

            List <SilviculturaSilvicult> silviculturasRemover = new List <SilviculturaSilvicult>();

            foreach (SilviculturaSilvicult silvicultura in caracterizacaoAtual.Silviculturas)
            {
                if (!dadosGeo.Silviculturas.Exists(x => x.Identificacao == silvicultura.Identificacao))
                {
                    silviculturasRemover.Add(silvicultura);
                    continue;
                }
                else
                {
                    SilviculturaSilvicult silviculturaAux = dadosGeo.Silviculturas.SingleOrDefault(x => x.Identificacao == silvicultura.Identificacao) ?? new SilviculturaSilvicult();
                    silvicultura.Identificacao      = silviculturaAux.Identificacao;
                    silvicultura.AreaCroqui         = silviculturaAux.AreaCroqui;
                    silvicultura.AreaCroquiHa       = silviculturaAux.AreaCroquiHa;
                    silvicultura.GeometriaTipo      = silviculturaAux.GeometriaTipo;
                    silvicultura.GeometriaTipoTexto = silviculturaAux.GeometriaTipoTexto;
                }
            }

            foreach (SilviculturaSilvicult silvicultura in silviculturasRemover)
            {
                caracterizacaoAtual.Silviculturas.Remove(silvicultura);
            }

            return(caracterizacaoAtual);
        }
        public string AbrirModalAcessar(Silvicultura caracterizacao)
        {
            EmpreendimentoCaracterizacao empreendimento = _caracterizacaoBus.ObterEmpreendimentoSimplificado(caracterizacao.EmpreendimentoId);

            /*if (empreendimento.ZonaLocalizacao == eZonaLocalizacao.Rural)
             * {
             *      DominialidadeDa dominialidadeDa = new DominialidadeDa();
             *      Dominialidade dominialidade = dominialidadeDa.ObterPorEmpreendimento(caracterizacao.EmpreendimentoId);
             *
             *      foreach (Dominio dominio in dominialidade.Dominios)
             *      {
             *              if (dominio.ReservasLegais.Exists(x => x.SituacaoId == (int)eReservaLegalSituacao.NaoInformada))
             *              {
             *                      return Mensagem.Silvicultura.EmpreendimentoRuralReservaIndefinida.Texto;
             *              }
             *      }
             * }*/

            return(string.Empty);
        }
예제 #12
0
        public SilviculturaPDF(Silvicultura silvicultura)
        {
            Decimal totalHa = silvicultura.Silviculturas.Sum(x => x.AreaCroquiHa);

            AreaTotalHa = totalHa.ToStringTrunc(4);

            //Agrupando Culturas Florestais
            List <CulturaFlorestal> culturas = silvicultura.Silviculturas.SelectMany(x => x.Culturas).ToList();

            culturas.ForEach(cultura =>
            {
                if (!Culturas.Exists(y => y.CulturaTipo == cultura.CulturaTipo))
                {
                    cultura.AreaCulturaHa = culturas
                                            .Where(x => x.CulturaTipo == cultura.CulturaTipo)
                                            .Sum(x => x.AreaCulturaHa);
                    Culturas.Add(cultura);
                }
            });
        }
        public ActionResult Criar(Silvicultura caracterizacao)
        {
            string textoMerge = _caracterizacaoValidar.DependenciasAlteradas(
                caracterizacao.EmpreendimentoId,
                (int)eCaracterizacao.Silvicultura,
                eCaracterizacaoDependenciaTipo.Caracterizacao,
                caracterizacao.Dependencias);

            if (!string.IsNullOrEmpty(textoMerge))
            {
                return(Json(new { @TextoMerge = textoMerge }, JsonRequestBehavior.AllowGet));
            }

            _bus.Salvar(caracterizacao);
            return(Json(new
            {
                @EhValido = Validacao.EhValido,
                @Msg = Validacao.Erros,
                @UrlRedirecionar = Url.Action("", "Caracterizacao", new { id = caracterizacao.EmpreendimentoId, Msg = Validacao.QueryParam() })
            }, JsonRequestBehavior.AllowGet));
        }
예제 #14
0
        internal Silvicultura Obter(int id, BancoDeDados banco = null, string tid = null, bool simplificado = false)
        {
            Silvicultura caracterizacao = new Silvicultura();

            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_silvicultura 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);
        }
예제 #15
0
        public bool Salvar(Silvicultura caracterizacao)
        {
            try
            {
                if (_validar.Salvar(caracterizacao))
                {
                    GerenciadorTransacao.ObterIDAtual();

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

                        _da.Salvar(caracterizacao, bancoDeDados);

                        //Gerencia as dependências da caracterização
                        _busCaracterizacao.Dependencias(new Caracterizacao()
                        {
                            Id             = caracterizacao.Id,
                            Tipo           = eCaracterizacao.Silvicultura,
                            DependenteTipo = eCaracterizacaoDependenciaTipo.Caracterizacao,
                            Dependencias   = caracterizacao.Dependencias
                        }, bancoDeDados);

                        Validacao.Add(Mensagem.Silvicultura.Salvar);

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

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

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

                Comando comando = bancoDeDados.CriarComando(@"select c.empreendimento, c.tid from {0}crt_silvicultura 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 Silviculturas

                comando = bancoDeDados.CriarComando(@"select c.id, c.identificacao, lv.id geometria, lv.texto geometria_texto, c.area_croqui, c.tid 
													from {0}crt_silvicultura_silv c, lov_crt_geometria_tipo lv 
													where c.caracterizacao = :id and c.geometria = lv.id order by c.id"                                                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    SilviculturaSilvicult silvicultura = null;

                    while (reader.Read())
                    {
                        silvicultura                    = new SilviculturaSilvicult();
                        silvicultura.Id                 = Convert.ToInt32(reader["id"]);
                        silvicultura.Tid                = reader["tid"].ToString();
                        silvicultura.Identificacao      = reader["identificacao"].ToString();
                        silvicultura.AreaCroqui         = reader.GetValue <Decimal>("area_croqui");
                        silvicultura.GeometriaTipo      = Convert.ToInt32(reader["geometria"]);
                        silvicultura.GeometriaTipoTexto = reader["geometria_texto"].ToString();
                        silvicultura.AreaCroquiHa       = silvicultura.AreaCroqui.Convert(eMetrica.M2ToHa);

                        #region Culturas Florestais

                        comando = bancoDeDados.CriarComando(@"select c.id, lc.id cultura, lc.texto cultura_texto, c.area, c.especificar, c.tid
															from {0}crt_silvicultura_cult c, {0}lov_crt_silvicultura_cult_fl lc where c.cultura = lc.id
															and c.silvicultura_id = :silvicultura"                                                            , EsquemaBanco);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            CulturaFlorestal cultura = null;

                            while (readerAux.Read())
                            {
                                cultura                  = new CulturaFlorestal();
                                cultura.Id               = Convert.ToInt32(readerAux["id"]);
                                cultura.Tid              = readerAux["tid"].ToString();
                                cultura.CulturaTipo      = Convert.ToInt32(readerAux["cultura"]);
                                cultura.CulturaTipoTexto = readerAux["cultura_texto"].ToString();
                                cultura.AreaCulturaHa    = readerAux.GetValue <Decimal>("area").Convert(eMetrica.M2ToHa);
                                cultura.AreaCulturaTexto = cultura.AreaCulturaHa.ToStringTrunc(4);

                                if (readerAux["especificar"] != null && !Convert.IsDBNull(readerAux["especificar"]))
                                {
                                    cultura.EspecificarTexto = readerAux["especificar"].ToString();
                                    cultura.CulturaTipoTexto = cultura.EspecificarTexto;
                                }

                                silvicultura.Culturas.Add(cultura);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.Silviculturas.Add(silvicultura);
                    }

                    reader.Close();
                }

                #endregion

                #region Áreas

                comando = bancoDeDados.CriarComando(@"select a.id, a.tipo, la.texto tipo_texto, a.valor, a.tid from {0}crt_silvicultura_areas a, {0}lov_crt_silvicultura_area la 
															where a.tipo = la.id and a.caracterizacao = :caracterizacao"                                                            , EsquemaBanco);

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

                using (IDataReader readerAux2 = bancoDeDados.ExecutarReader(comando))
                {
                    SilviculturaArea item;
                    while (readerAux2.Read())
                    {
                        item           = new SilviculturaArea();
                        item.Id        = Convert.ToInt32(readerAux2["id"]);
                        item.Tid       = readerAux2["tid"].ToString();
                        item.Tipo      = Convert.ToInt32(readerAux2["tipo"]);
                        item.TipoTexto = readerAux2["tipo_texto"].ToString();
                        item.Valor     = readerAux2.GetValue <Decimal>("valor");

                        caracterizacao.Areas.Add(item);
                    }

                    readerAux2.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
예제 #17
0
        internal void Editar(Silvicultura caracterizacao, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Silvicultura

                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"update {0}crt_silvicultura c set c.tid = :tid where c.id = :id", EsquemaBanco);

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

                bancoDeDados.ExecutarNonQuery(comando);

                #endregion

                #region Limpar os dados do banco

                comando = bancoDeDados.CriarComando(@"delete from {0}crt_silvicultura_cult c where c.silvicultura_id in 
				(select a.id from {0}crt_silvicultura_silv a where a.caracterizacao = :caracterizacao"                , EsquemaBanco);

                comando.DbCommand.CommandText += comando.AdicionarNotIn("and", "a.id", DbType.Int32, caracterizacao.Silviculturas.Select(x => x.Id).ToList());

                comando.DbCommand.CommandText += ")";

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

                bancoDeDados.ExecutarNonQuery(comando);

                foreach (SilviculturaSilvicult item in caracterizacao.Silviculturas)
                {
                    comando = bancoDeDados.CriarComando(@"delete from {0}crt_silvicultura_cult c 
					where c.silvicultura_id in (select a.id from {0}crt_silvicultura_silv a where a.caracterizacao = :caracterizacao and a.id = :silvicultura)"                    , EsquemaBanco);
                    comando.DbCommand.CommandText += String.Format(" {0}", comando.AdicionarNotIn("and", "c.id", DbType.Int32, item.Culturas.Select(x => x.Id).ToList()));

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

                    bancoDeDados.ExecutarNonQuery(comando);
                }


                comando = bancoDeDados.CriarComando(@"delete from {0}crt_silvicultura_silv c where c.caracterizacao = :caracterizacao", EsquemaBanco);
                comando.DbCommand.CommandText += comando.AdicionarNotIn("and", "c.id", DbType.Int32, caracterizacao.Silviculturas.Select(x => x.Id).ToList());

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

                bancoDeDados.ExecutarNonQuery(comando);

                //Areas
                foreach (SilviculturaSilvicult silvicultura in caracterizacao.Silviculturas)
                {
                    comando = bancoDeDados.CriarComando("delete from {0}crt_silvicultura_areas c ", EsquemaBanco);
                    comando.DbCommand.CommandText += String.Format("where c.caracterizacao = :caracterizacao{0}",
                                                                   comando.AdicionarNotIn("and", "c.id", DbType.Int32, caracterizacao.Areas.Select(x => x.Id).ToList()));
                    comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                    bancoDeDados.ExecutarNonQuery(comando);
                }

                #endregion

                #region Silviculturas

                if (caracterizacao.Silviculturas != null && caracterizacao.Silviculturas.Count > 0)
                {
                    foreach (SilviculturaSilvicult item in caracterizacao.Silviculturas)
                    {
                        if (item.Id > 0)
                        {
                            comando = bancoDeDados.CriarComando(@"update {0}crt_silvicultura_silv c set c.identificacao = :identificacao,
																c.caracterizacao = :caracterizacao, c.geometria = :geometria,
																c.area_croqui = :area_croqui, c.tid = :tid where c.id = :id"                                                                , EsquemaBanco);

                            comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                            comando.AdicionarParametroEntrada("id", item.Id, DbType.Int32);
                        }
                        else
                        {
                            comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura_silv c (id, caracterizacao, identificacao, geometria, area_croqui, tid)
																values ({0}seq_crt_silvicultura_silv.nextval, :caracterizacao, :identificacao, :geometria, :area_croqui, :tid)
																returning c.id into :id"                                                                , EsquemaBanco);

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

                        comando.AdicionarParametroEntrada("identificacao", item.Identificacao, DbType.String);
                        comando.AdicionarParametroEntrada("geometria", item.GeometriaTipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("area_croqui", item.AreaCroquiHa.Convert(eMetrica.HaToM2), DbType.Decimal);
                        comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                        bancoDeDados.ExecutarNonQuery(comando);

                        if (item.Id <= 0)
                        {
                            item.Id = Convert.ToInt32(comando.ObterValorParametro("id"));
                        }

                        #region Culturas Florestais

                        if (item.Culturas != null && item.Culturas.Count > 0)
                        {
                            foreach (CulturaFlorestal itemAux in item.Culturas)
                            {
                                if (itemAux.Id > 0)
                                {
                                    comando = bancoDeDados.CriarComando(@"update {0}crt_silvicultura_cult c set c.caracterizacao = :caracterizacao, c.silvicultura_id = :silvicultura_id, 
																		c.cultura = :cultura, c.area = :area, c.especificar = :especificar, c.tid = :tid where c.id = :id"                                                                        , EsquemaBanco);

                                    comando.AdicionarParametroEntrada("id", itemAux.Id, DbType.Int32);
                                }
                                else
                                {
                                    comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura_cult c (id, caracterizacao, silvicultura_id, cultura, area, especificar, tid)
																		values ({0}seq_crt_silvicultura_cult.nextval, :caracterizacao, :silvicultura_id, :cultura, :area, :especificar, :tid) returning c.id into :id"                                                                        , EsquemaBanco);
                                    comando.AdicionarParametroSaida("id", DbType.Int32);
                                }

                                comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                                comando.AdicionarParametroEntrada("silvicultura_id", item.Id, DbType.Int32);
                                comando.AdicionarParametroEntrada("cultura", itemAux.CulturaTipo, DbType.Int32);
                                comando.AdicionarParametroEntrada("area", itemAux.AreaCulturaHa.Convert(eMetrica.HaToM2), DbType.Decimal);
                                comando.AdicionarParametroEntrada("especificar", (itemAux.CulturaTipo == (int)eCulturaFlorestal.Outros) ? itemAux.CulturaTipoTexto : (object)DBNull.Value, DbType.String);
                                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                                bancoDeDados.ExecutarNonQuery(comando);

                                if (itemAux.Id <= 0)
                                {
                                    itemAux.Id = Convert.ToInt32(comando.ObterValorParametro("id"));
                                }
                            }
                        }

                        #endregion
                    }
                }

                #endregion

                #region Áreas

                if (caracterizacao.Areas != null && caracterizacao.Areas.Count > 0)
                {
                    foreach (SilviculturaArea area in caracterizacao.Areas)
                    {
                        if (area.Id > 0)
                        {
                            comando = bancoDeDados.CriarComando(@"update {0}crt_silvicultura_areas c set c.tipo = :tipo, c.valor = :valor, 
							c.tid = :tid where c.id = :id"                            , EsquemaBanco);

                            comando.AdicionarParametroEntrada("id", area.Id, DbType.Int32);
                        }
                        else
                        {
                            comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura_areas(id, caracterizacao, tipo, valor, tid)
							values ({0}seq_crt_silvicultura_areas.nextval, :caracterizacao, :tipo, :valor, :tid)"                            , EsquemaBanco);

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

                        comando.AdicionarParametroEntrada("tipo", area.Tipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("valor", area.Valor, DbType.Decimal);
                        comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                        bancoDeDados.ExecutarNonQuery(comando);
                    }
                }

                #endregion

                #region Histórico

                Historico.Gerar(caracterizacao.Id, eHistoricoArtefatoCaracterizacao.silvicultura, eHistoricoAcao.atualizar, bancoDeDados, null);

                #endregion

                bancoDeDados.Commit();
            }
        }
예제 #18
0
        internal int?Criar(Silvicultura caracterizacao, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Silvicultura

                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura c (id, empreendimento, tid) 
				values ({0}seq_crt_silvicultura.nextval, :empreendimento, :tid) returning c.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"));

                #endregion

                #region Silviculturas

                if (caracterizacao.Silviculturas != null && caracterizacao.Silviculturas.Count > 0)
                {
                    foreach (SilviculturaSilvicult item in caracterizacao.Silviculturas)
                    {
                        comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura_silv c (id, caracterizacao, identificacao, geometria, area_croqui, tid)
															values ({0}seq_crt_silvicultura_silv.nextval, :caracterizacao, :identificacao, :geometria, :area_croqui, :tid)
															returning c.id into :id"                                                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                        comando.AdicionarParametroEntrada("identificacao", item.Identificacao, DbType.String);
                        comando.AdicionarParametroEntrada("geometria", item.GeometriaTipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("area_croqui", item.AreaCroquiHa.Convert(eMetrica.HaToM2), DbType.Decimal);
                        comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                        comando.AdicionarParametroSaida("id", DbType.Int32);

                        bancoDeDados.ExecutarNonQuery(comando);

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

                        #region Culturas Florestais

                        if (item.Culturas != null && item.Culturas.Count > 0)
                        {
                            foreach (CulturaFlorestal itemAux in item.Culturas)
                            {
                                comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura_cult c (id, caracterizacao, silvicultura_id, cultura, area, especificar, tid)
																	values ({0}seq_crt_silvicultura_cult.nextval, :caracterizacao, :silvicultura_id, :cultura, :area, :especificar, :tid)"                                                                    , EsquemaBanco);

                                comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                                comando.AdicionarParametroEntrada("silvicultura_id", item.Id, DbType.Int32);
                                comando.AdicionarParametroEntrada("cultura", itemAux.CulturaTipo, DbType.Int32);
                                comando.AdicionarParametroEntrada("area", itemAux.AreaCulturaHa.Convert(eMetrica.HaToM2), DbType.Decimal);
                                comando.AdicionarParametroEntrada("especificar", (itemAux.CulturaTipo == (int)eCulturaFlorestal.Outros) ? itemAux.CulturaTipoTexto : (object)DBNull.Value, DbType.String);
                                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                                bancoDeDados.ExecutarNonQuery(comando);
                            }
                        }

                        #endregion
                    }
                }

                #endregion

                #region Áreas

                if (caracterizacao.Areas != null && caracterizacao.Areas.Count > 0)
                {
                    foreach (SilviculturaArea area in caracterizacao.Areas)
                    {
                        comando = bancoDeDados.CriarComando(@"insert into {0}crt_silvicultura_areas(id, caracterizacao, tipo, valor, tid)
						values ({0}seq_crt_silvicultura_areas.nextval, :caracterizacao, :tipo, :valor, :tid)"                        , EsquemaBanco);

                        comando.AdicionarParametroEntrada("caracterizacao", caracterizacao.Id, DbType.Int32);
                        comando.AdicionarParametroEntrada("tipo", area.Tipo, DbType.Int32);
                        comando.AdicionarParametroEntrada("valor", area.Valor, DbType.Decimal);
                        comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                        bancoDeDados.ExecutarNonQuery(comando);
                    }
                }

                #endregion

                #region Histórico

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

                #endregion

                bancoDeDados.Commit();

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

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

                Comando comando = bancoDeDados.CriarComando(@"select c.id, c.empreendimento_id, c.tid 
				from {0}hst_crt_silvicultura 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"]);
                        hstCaracterizacao = hst;

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

                    reader.Close();
                }

                #endregion

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

                #region Silviculturas

                comando = bancoDeDados.CriarComando(@"select c.id, c.silvicultura_silv_id, c.identificacao, c.area_croqui, c.geometria_id, c.geometria_texto, c.tid 
													from {0}hst_crt_silvicultura_silv c where c.id_hst = :id"                                                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    SilviculturaSilvicult silvicultura = null;

                    while (reader.Read())
                    {
                        hst = Convert.ToInt32(reader["id"]);

                        silvicultura                    = new SilviculturaSilvicult();
                        silvicultura.Id                 = Convert.ToInt32(reader["silvicultura_silv_id"]);
                        silvicultura.Tid                = reader["tid"].ToString();
                        silvicultura.Identificacao      = reader["identificacao"].ToString();
                        silvicultura.AreaCroqui         = reader.GetValue <Decimal>("area_croqui");
                        silvicultura.GeometriaTipo      = Convert.ToInt32(reader["geometria_id"]);
                        silvicultura.GeometriaTipoTexto = reader["geometria_texto"].ToString();

                        #region Culturas Florestais

                        comando = bancoDeDados.CriarComando(@"select c.silvicultura_cult_id id, c.cultura_id, c.cultura_texto, 
															c.area, c.especificar, c.tid from {0}hst_crt_silvicultura_cult c 
															where c.id_hst = :id"                                                            , EsquemaBanco);

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

                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            CulturaFlorestal cultura = null;

                            while (readerAux.Read())
                            {
                                cultura                  = new CulturaFlorestal();
                                cultura.Id               = Convert.ToInt32(readerAux["id"]);
                                cultura.CulturaTipo      = Convert.ToInt32(readerAux["cultura_id"]);
                                cultura.CulturaTipoTexto = readerAux["cultura_texto"].ToString();
                                cultura.Tid              = readerAux["tid"].ToString();

                                if (readerAux["especificar"] != null && !Convert.IsDBNull(readerAux["especificar"]))
                                {
                                    cultura.EspecificarTexto = readerAux["especificar"].ToString();
                                    cultura.CulturaTipoTexto = cultura.EspecificarTexto;
                                }

                                silvicultura.Culturas.Add(cultura);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.Silviculturas.Add(silvicultura);
                    }

                    reader.Close();
                }

                #endregion

                #region Áreas

                comando = bancoDeDados.CriarComando(@"select a.silvicultura_area_id, a.tipo_id, a.tipo_texto, a.valor, a.tid 
													from {0}hst_crt_silvicultura_areas a 
													where a.id_hst = :hst_caracterizacao"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("hst_caracterizacao", hstCaracterizacao, DbType.Int32);

                using (IDataReader readerAux2 = bancoDeDados.ExecutarReader(comando))
                {
                    SilviculturaArea item;
                    while (readerAux2.Read())
                    {
                        item           = new SilviculturaArea();
                        item.Id        = Convert.ToInt32(readerAux2["silvicultura_area_id"]);
                        item.Tid       = readerAux2["tid"].ToString();
                        item.Tipo      = Convert.ToInt32(readerAux2["tipo_id"]);
                        item.TipoTexto = readerAux2["tipo_texto"].ToString();
                        item.Valor     = readerAux2.GetValue <Decimal>("valor");

                        caracterizacao.Areas.Add(item);
                    }

                    readerAux2.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
예제 #20
0
        internal Silvicultura ObterDadosGeo(int empreendimento, BancoDeDados banco = null)
        {
            Silvicultura caracterizacao = new Silvicultura();

            caracterizacao.EmpreendimentoId = empreendimento;

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

                Comando comando = bancoDeDados.CriarComando(@"
					select a.atividade,
								   a.codigo             identificacao,
								   3 geometria_tipo,
								   a.area_m2            area_croqui
							  from {1}geo_aativ       a,
								   {0}crt_projeto_geo         g,
								   {0}lov_caracterizacao_tipo lc
							 where a.atividade = lc.texto
							   and a.projeto = g.id
							   and lc.id = :caracterizacao
							   and g.empreendimento = :empreendimento
							   and g.caracterizacao = :caracterizacao
							union all
							select a.atividade,
								   a.codigo             identificacao,
								   2 geometria_tipo,
								   null                 area_croqui
							  from {1}geo_lativ       a,
								   {0}crt_projeto_geo         g,
								   {0}lov_caracterizacao_tipo lc
							 where a.atividade = lc.texto
							   and a.projeto = g.id
							   and lc.id = :caracterizacao
							   and g.empreendimento = :empreendimento
							   and g.caracterizacao = :caracterizacao
							union all
							select a.atividade,
								   a.codigo             identificacao,
								   1 geometria_tipo,
								   null                 area_croqui
							  from {1}geo_pativ       a,
								   {0}crt_projeto_geo         g,
								   {0}lov_caracterizacao_tipo lc
							 where a.atividade = lc.texto
							   and a.projeto = g.id
							   and lc.id = :caracterizacao
							   and g.empreendimento = :empreendimento
							   and g.caracterizacao = :caracterizacao
							union all
							select a.atividade,
								   a.codigo             identificacao,
								   3 geometria_tipo,
								   a.area_m2            area_croqui
							  from {1}geo_aiativ      a,
								   {0}crt_projeto_geo         g,
								   {0}lov_caracterizacao_tipo lc
							 where a.atividade = lc.texto
							   and a.projeto = g.id
							   and lc.id = :caracterizacao
							   and g.empreendimento = :empreendimento
							   and g.caracterizacao = :caracterizacao"                            , EsquemaBanco, EsquemaBancoGeo);

                comando.AdicionarParametroEntrada("empreendimento", empreendimento, DbType.Int32);
                comando.AdicionarParametroEntrada("caracterizacao", (int)eCaracterizacao.Silvicultura, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    SilviculturaSilvicult silvicultura = null;
                    while (reader.Read())
                    {
                        silvicultura = new SilviculturaSilvicult();
                        silvicultura.Identificacao = reader["identificacao"].ToString();
                        silvicultura.GeometriaTipo = Convert.ToInt32(reader["geometria_tipo"]);
                        silvicultura.AreaCroqui    = reader.GetValue <Decimal>("area_croqui");
                        silvicultura.AreaCroquiHa  = silvicultura.AreaCroqui.Convert(eMetrica.M2ToHa);

                        silvicultura.GeometriaTipoTexto = _caracterizacaoConfig.Obter <List <Lista> >(ConfiguracaoCaracterizacao.KeyCaracterizacaoGeometriaTipo).
                                                          SingleOrDefault(x => x.Id == (silvicultura.GeometriaTipo).ToString()).Texto;

                        caracterizacao.Silviculturas.Add(silvicultura);
                    }

                    reader.Close();
                }

                #endregion

                #region Areas

                int projetoDomId = 0;

                comando = bancoDeDados.CriarComando(@"select g.id from {0}crt_projeto_geo g where g.empreendimento = :empreendimento and g.caracterizacao = :caracterizacao_dom", EsquemaBanco, EsquemaBancoGeo);

                comando.AdicionarParametroEntrada("empreendimento", empreendimento, DbType.Int32);
                comando.AdicionarParametroEntrada("caracterizacao_dom", (int)eCaracterizacao.Dominialidade, DbType.Int32);

                projetoDomId = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando));


                comando = bancoDeDados.CriarComando(@"(select sum(t.area_m2) area, 'ATP_CROQUI' area_tipo  from {1}geo_atp t where t.projeto = :projetoDominialidade)
					union all
					(select sum(t.area_m2) area, 'AVN' area_tipo from {1}geo_avn t where t.projeto = :projetoDominialidade) 
					union all
					(select sum(t.area_m2) area, 'AA_FLORESTA_PLANTADA' area_tipo from {1}geo_aa t where t.projeto = :projetoDominialidade and t.vegetacao = 'FLORESTA-PLANTADA' ) 
					union all
					(select sum(t.area_m2) area, t.tipo area_tipo from {1}geo_areas_calculadas t where t.projeto = :projetoDominialidade and t.tipo in ('APP_AVN', 'APP_AA_USO', 'APP_AA_REC' ) group by t.tipo)
					union all
					(select sum(t.area_m2) area, 'APP' area_tipo from {1}geo_areas_calculadas t where t.projeto = :projetoDominialidade and t.tipo = 'APP_APMP' group by t.tipo)
					union all 
					(select sum(t.area_m2) area, 'ARL_'||t.situacao area_tipo from {1}geo_arl t where t.projeto = :projetoDominialidade and t.situacao in ('PRESERV', 'USO', 'REC', 'D' ) group by t.situacao)"                    , EsquemaBanco, EsquemaBancoGeo);

                comando.AdicionarParametroEntrada("projetoDominialidade", projetoDomId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        caracterizacao.Areas.Add(new SilviculturaArea()
                        {
                            Tipo  = (int)ObterEnumeSilviculturaArea(reader["area_tipo"].ToString()),
                            Valor = reader.GetValue <Decimal>("area")
                        });
                    }

                    reader.Close();
                }
            }

            #endregion

            return(caracterizacao);
        }