public ActionResult ReservaLegalVisualizar(ReservaLegal reservaLegal, int empInternoID)
        {
            List <Lista> dominiosCompensacao = new List <Lista>();
            List <Lista> lstIdentificacaoARL = new List <Lista>();

            if (reservaLegal.EmpreendimentoCompensacao.Id > 0)
            {
                dominiosCompensacao = _busInterno.ObterDominiosLista(reservaLegal.EmpreendimentoCompensacao.Id);
                lstIdentificacaoARL = _busInterno.ObterARLCompensacaoLista(empInternoID, reservaLegal.MatriculaId.GetValueOrDefault());
            }

            ReservaLegalVM vm = new ReservaLegalVM(
                ListaCredenciadoBus.DominialidadeReservaSituacoes,
                ListaCredenciadoBus.DominialidadeReservaLocalizacoes,
                ListaCredenciadoBus.DominialidadeReservaCartorios,
                reservaLegal,
                true,
                0,
                ListaCredenciadoBus.TiposCoordenada,
                ListaCredenciadoBus.Datuns,
                booleanLista: ListaCredenciadoBus.BooleanLista,
                lstMatriculaCompensacao: dominiosCompensacao,
                lstIdentificacaoARLCompensacao: lstIdentificacaoARL,
                lstSituacoesVegetal: ListaCredenciadoBus.DominialidadeReservaSituacaoVegetacao);

            return(PartialView("ReservaLegalPartial", vm));
        }
        private void ValidarEmpreendimentoCedente(ReservaLegal reserva)
        {
            if (reserva.MatriculaId.GetValueOrDefault() <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalMatriculaCedenteObrigatorio);
            }

            if (reserva.IdentificacaoARLCedente <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalIdentificacaoARLObrigatoria);
            }

            if (!Validacao.EhValido)
            {
                return;
            }

            Dominialidade dominialidadeCedente = _daInterno.ObterPorEmpreendimento(reserva.EmpreendimentoCompensacao.Id);

            if (dominialidadeCedente.Id <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalEmpreendimentoCedenteNaoPossuiDominialidade);
            }

            if (reserva.MatriculaId.GetValueOrDefault() > 0 && !dominialidadeCedente.Dominios.Exists(x => x.Id == reserva.MatriculaId.GetValueOrDefault()))
            {
                Validacao.Add(Mensagem.Dominialidade.MatriculaSelecionadaNaoEstaMaisVinculadaCedente);
            }

            if (!dominialidadeCedente.Dominios.SelectMany(x => x.ReservasLegais).ToList().Exists(x => x.Id == reserva.IdentificacaoARLCedente))
            {
                Validacao.Add(Mensagem.Dominialidade.RLSelecionadaNaoEstaMaisVinculadaCedente);
            }
        }
        private List <Lista> LocalizacoesReserva(ReservaLegal reserva, int dominioTipo = 0)
        {
            List <Lista> localizacoes = ListaCredenciadoBus.DominialidadeReservaLocalizacoes;

            if (!string.IsNullOrEmpty(reserva.Identificacao))
            {
                if (reserva.Compensada)
                {
                    localizacoes = localizacoes.Where(x => (new string[] {
                        ((int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente).ToString()
                    }).Contains(x.Id)).ToList();;
                }
                else
                {
                    if (dominioTipo == (int)eDominioTipo.Posse)
                    {
                        localizacoes = localizacoes.Where(x => x.Id == ((int)eReservaLegalLocalizacao.NestaPosse).ToString()).ToList();;
                    }
                    else if (dominioTipo == (int)eDominioTipo.Matricula)
                    {
                        localizacoes = localizacoes.Where(x => x.Id == ((int)eReservaLegalLocalizacao.NestaMatricula).ToString()).ToList();;
                    }
                }
            }
            else
            {
                localizacoes = localizacoes.Where(x => (new string[] {
                    ((int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora).ToString()
                }).Contains(x.Id)).ToList();
            }

            return(localizacoes);
        }
示例#4
0
        internal ReservaLegal ObterReservaLegal(int reservaId, BancoDeDados banco = null)
        {
            ReservaLegal reserva = null;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select r.id, r.situacao_vegetal, l.texto situacao_vegetal_texto , r.arl_croqui
															from crt_dominialidade_reserva r, lov_crt_domin_reserva_sit_veg l where l.id = r.situacao_vegetal and r.id = :id"                                                            , EsquemaBanco);
                comando.AdicionarParametroEntrada("id", reservaId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        reserva                      = new ReservaLegal();
                        reserva.Id                   = reader.GetValue <int>("id");
                        reserva.ARLCroqui            = reader.GetValue <decimal>("arl_croqui");
                        reserva.SituacaoVegetalId    = reader.GetValue <int>("situacao_vegetal");
                        reserva.SituacaoVegetalTexto = reader.GetValue <string>("situacao_vegetal_texto");
                    }
                    reader.Close();
                }
            }
            return(reserva);
        }
示例#5
0
        internal List <ReservaLegal> ObterRLsCompensacao(int projetoGeoInternoId, BancoDeDados banco = null)
        {
            List <ReservaLegal> retorno = new List <ReservaLegal>();;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select id, situacao, localizacao, identificacao, situacao_vegetal, arl_croqui, arl_documento, numero_termo, cartorio, 
				matricula, tid, nome_cartorio, numero_folha, numero_livro, matricula_numero, averbacao_numero, arl_recebida, emp_compensacao, cedente_possui_emp, arl_cedida, 
				arl_cedente, cedente_receptor   from crt_dominialidade_reserva r where dominio in (select id from crt_dominialidade_dominio where dominialidade 
				in(select id from crt_dominialidade where empreendimento = (select empreendimento from crt_projeto_geo where id = :id))) 
				and r.emp_compensacao is not null and r.compensada = 1"                , EsquemaBanco);
                comando.AdicionarParametroEntrada("id", projetoGeoInternoId, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ReservaLegal reserva = null;
                    while (reader.Read())
                    {
                        reserva                         = new ReservaLegal();
                        reserva.Id                      = reader.GetValue <int>("id");
                        reserva.SituacaoId              = reader.GetValue <int>("situacao");
                        reserva.LocalizacaoId           = reader.GetValue <int>("localizacao");
                        reserva.Identificacao           = reader.GetValue <string>("identificacao");
                        reserva.SituacaoVegetalGeo      = reader.GetValue <string>("situacao_vegetal");
                        reserva.ARLCroqui               = reader.GetValue <decimal>("arl_croqui");
                        reserva.NumeroTermo             = reader.GetValue <string>("numero_termo");
                        reserva.IdentificacaoARLCedente = reader.GetValue <int>("arl_cedente");
                        retorno.Add(reserva);
                    }
                }
            }

            return(retorno);
        }
        public ActionResult ReservaLegalValidarSalvar(ReservaLegal reserva, List <ReservaLegal> reservasAdicionadas)
        {
            if (reservasAdicionadas != null && reservasAdicionadas.Count > 0)
            {
                if (reserva.IdentificacaoARLCedente > 0 && reservasAdicionadas.Exists(r => r.IdentificacaoARLCedente == reserva.IdentificacaoARLCedente))
                {
                    Validacao.Add(Mensagem.Dominialidade.RLAssociadaEmOutroEmpreendimentoCedente(0, ""));
                }
            }

            _validar.ReservaLegalSalvar(reserva);
            return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
        }
        private static void ValidarCamposSituacaoRegistrada(ReservaLegal reserva)
        {
            if (string.IsNullOrEmpty(reserva.MatriculaNumero))
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalNumeroMatriculaObrigatorio);
            }

            if (reserva.TipoCartorioId <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalTipoCartorioObrigatorio);
            }

            if (string.IsNullOrEmpty(reserva.AverbacaoNumero))
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalNumeroAverbacaoObrigatorio);
            }
        }
        public ReservaLegalPDF(ReservaLegal reserva)
        {
            ARLCroqui        = reserva.AreaReservaLegal;
            ARLCroquiDecimal = reserva.ARLCroqui;

            Identificacao               = reserva.Identificacao;
            NumeroTermo                 = reserva.NumeroTermo;
            SituacaoId                  = reserva.SituacaoId;
            SituacaoVegetalId           = reserva.SituacaoVegetalId.GetValueOrDefault();
            SituacaoTexto               = reserva.SituacaoTexto;
            SituacaoVegetalTexto        = reserva.SituacaoVegetalTexto;
            Compensada                  = reserva.Compensada;
            Compensacao                 = reserva.Compensacao;
            LocalizacaoId               = reserva.LocalizacaoId;
            CedentePossuiEmpreendimento = reserva.CedentePossuiEmpreendimento;
            ARLCedida = reserva.ARLCedida;
            EmpreendimentoCompensacao = reserva.EmpreendimentoCompensacao;
            IdentificacaoARLCedente   = reserva.IdentificacaoARLCedente;
            Coordenada = reserva.Coordenada;
        }
示例#9
0
        public string ObterTermoMatriculaCompensada(ReservaLegal reserva)
        {
            string retorno = string.Empty;

            if (!string.IsNullOrEmpty(reserva.NumeroTermo))
            {
                retorno = reserva.NumeroTermo;
            }

            if (!string.IsNullOrEmpty(reserva.MatriculaIdentificacao))
            {
                if (!string.IsNullOrEmpty(retorno))
                {
                    retorno += "/" + reserva.MatriculaTexto;
                }
                else
                {
                    retorno = reserva.MatriculaTexto;
                }
            }

            return(retorno);
        }
示例#10
0
        public ActionResult ReservaLegal(ReservaLegal reservaLegal, int?dominioTipo)
        {
            List <Lista> dominiosCompensacao = new List <Lista>();
            List <Lista> lstIdentificacaoARL = new List <Lista>();

            if (reservaLegal.EmpreendimentoCompensacao.Id > 0)
            {
                dominiosCompensacao = _bus.ObterDominiosLista(reservaLegal.EmpreendimentoCompensacao.Id);
                lstIdentificacaoARL = _bus.ObterARLCompensacaoLista(reservaLegal.EmpreendimentoId, reservaLegal.MatriculaId.GetValueOrDefault());
            }

            ReservaLegalVM vm = new ReservaLegalVM(_listaBus.DominialidadeReservaSituacoes,
                                                   _listaBus.DominialidadeReservaLocalizacoes,
                                                   _listaBus.DominialidadeReservaCartorios,
                                                   reservaLegal, dominioTipo: dominioTipo.GetValueOrDefault(0),
                                                   lstTiposCoordenada: _listaBus.TiposCoordenada,
                                                   lstDatuns: _listaBus.Datuns,
                                                   lstMatriculaCompensacao: dominiosCompensacao,
                                                   lstIdentificacaoARLCompensacao: lstIdentificacaoARL,
                                                   booleanLista: _listaBus.BooleanLista,
                                                   lstSituacoesVegetal: _listaBus.DominialidadeReservaSituacaoVegetacao);

            return(PartialView("ReservaLegalPartial", vm));
        }
示例#11
0
        internal ReservaLegal ObterARLPorId(int reservaLegalID, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                Comando comando = bancoDeDados.CriarComando(@"select r.id, r.tid, r.situacao, lrs.texto situacao_texto, r.localizacao, lrl.texto localizacao_texto, r.identificacao, r.situacao_vegetal, 
						lrsv.texto situacao_vegetal_texto, r.arl_croqui, r.arl_documento, r.numero_termo, r.cartorio, lrc.texto cartorio_texto, r.matricula, d.identificacao matricula_identificacao, 
						r.compensada, r.numero_cartorio, r.nome_cartorio, r.numero_livro, r.numero_folha, r.matricula_numero, r.averbacao_numero, r.arl_recebida, r.emp_compensacao, r.cedente_possui_emp, 
						r.arl_cedida, r.arl_cedente, c.id coordenada_id, c.coordenada_tipo, ct.texto coordenada_tipo_texto, c.datum, cd.texto datum_texto, c.easting_utm, c.northing_utm 
						from {0}crt_dominialidade_reserva r, {0}crt_dominialidade_dominio d, {0}lov_crt_domin_reserva_situacao lrs, {0}lov_crt_domin_reserva_local lrl, 
						{0}lov_crt_domin_reserva_sit_veg lrsv, {0}lov_crt_domin_reserva_cartorio lrc, {0}crt_dominia_reserva_coord c, {0}lov_coordenada_tipo ct, {0}lov_coordenada_datum cd 
						where r.matricula = d.id(+) and r.situacao = lrs.id and r.localizacao = lrl.id(+) and r.situacao_vegetal = lrsv.id(+) and r.cartorio = lrc.id(+) 
						and ct.id(+) = c.coordenada_tipo and cd.id(+) = c.datum and c.reserva(+) = r.id and r.id = :reserva"                        , EsquemaBanco);

                comando.AdicionarParametroEntrada("reserva", reservaLegalID, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ReservaLegal reserva = new ReservaLegal();

                    if (reader.Read())
                    {
                        reserva                        = new ReservaLegal();
                        reserva.Id                     = reader.GetValue <int>("id");
                        reserva.SituacaoId             = reader.GetValue <int>("situacao");
                        reserva.SituacaoTexto          = reader.GetValue <string>("situacao_texto");
                        reserva.Identificacao          = reader.GetValue <string>("identificacao");
                        reserva.Compensada             = reader.GetValue <bool>("compensada");
                        reserva.LocalizacaoId          = reader.GetValue <int>("localizacao");
                        reserva.LocalizacaoTexto       = reader.GetValue <string>("localizacao_texto");
                        reserva.SituacaoVegetalId      = reader.GetValue <int>("situacao_vegetal");
                        reserva.SituacaoVegetalTexto   = reader.GetValue <string>("situacao_vegetal_texto");
                        reserva.ARLCroqui              = reader.GetValue <decimal>("arl_croqui");
                        reserva.NumeroTermo            = reader.GetValue <string>("numero_termo");
                        reserva.Tid                    = reader.GetValue <string>("tid");
                        reserva.TipoCartorioId         = reader.GetValue <int>("cartorio");
                        reserva.TipoCartorioTexto      = reader.GetValue <string>("cartorio_texto");
                        reserva.MatriculaId            = reader.GetValue <int>("matricula");
                        reserva.MatriculaIdentificacao = reader.GetValue <string>("matricula_identificacao");
                        reserva.NumeroCartorio         = reader.GetValue <string>("numero_cartorio");
                        reserva.NomeCartorio           = reader.GetValue <string>("nome_cartorio");
                        reserva.NumeroFolha            = reader.GetValue <string>("numero_folha");
                        reserva.NumeroLivro            = reader.GetValue <string>("numero_livro");

                        //Compensação
                        reserva.MatriculaNumero = reader.GetValue <string>("matricula_numero");
                        reserva.AverbacaoNumero = reader.GetValue <string>("averbacao_numero");
                        reserva.ARLRecebida     = reader.GetValue <decimal>("arl_recebida");
                        reserva.EmpreendimentoCompensacao.Id = reader.GetValue <int>("emp_compensacao");
                        reserva.CedentePossuiEmpreendimento  = reader.GetValue <int>("cedente_possui_emp");
                        reserva.ARLCedida = reader.GetValue <decimal>("arl_cedida");
                        reserva.IdentificacaoARLCedente = reader.GetValue <int>("arl_cedente");

                        //Coordenada
                        reserva.Coordenada.Id          = reader.GetValue <int>("coordenada_id");
                        reserva.Coordenada.Tipo.Id     = reader.GetValue <int>("coordenada_tipo");
                        reserva.Coordenada.Tipo.Texto  = reader.GetValue <string>("coordenada_tipo_texto");
                        reserva.Coordenada.Datum.Id    = reader.GetValue <int>("datum");
                        reserva.Coordenada.Datum.Texto = reader.GetValue <string>("datum_texto");
                        reserva.Coordenada.EastingUtm  = reader.GetValue <double?>("easting_utm");
                        reserva.Coordenada.NorthingUtm = reader.GetValue <double?>("northing_utm");
                    }

                    return(reserva);
                }
            }
        }
示例#12
0
        public bool Salvar(IEspecificidade especificidade)
        {
            TermoCPFARLCR         esp                   = especificidade as TermoCPFARLCR;
            TermoCPFARLCRDa       termoCPFARLCRDa       = new TermoCPFARLCRDa();
            CaracterizacaoBus     caracterizacaoBus     = new CaracterizacaoBus();
            CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();
            DominialidadeDa       dominialidadeDa       = new DominialidadeDa();
            EspecificidadeDa      especificidadeDa      = new EspecificidadeDa();
            GerenciadorConfiguracao <ConfiguracaoCaracterizacao> caracterizacaoConfig = new GerenciadorConfiguracao <ConfiguracaoCaracterizacao>(new ConfiguracaoCaracterizacao());
            string           caracterizacaoTipo = caracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes).Single(x => x.Id == (int)eCaracterizacao.Dominialidade).Texto;
            List <PessoaLst> responsaveis       = new List <PessoaLst>();

            RequerimentoAtividade(esp, jaAssociado: false);

            #region Básicas

            if (esp.CedenteDominioID <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.CedenteDominioObrigatorio);
            }

            if (esp.CedenteARLCompensacao == null || esp.CedenteARLCompensacao.Count <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.CedenteARLCompensacaoObrigatoria);
            }
            else
            {
                if (esp.CedenteARLCompensacao.Any(x => esp.CedenteARLCompensacao.Count(y => y.Id == x.Id && y.Id > 0) > 1))
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.CedenteARLCompensacaoDuplicada);
                }
            }

            if (esp.CedenteResponsaveisEmpreendimento == null || esp.CedenteResponsaveisEmpreendimento.Count <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.ResponsavelEmpreendimentoObrigatorio("Cedente", "cedente"));
            }
            else
            {
                if (esp.CedenteResponsaveisEmpreendimento.Any(x => esp.CedenteResponsaveisEmpreendimento.Count(y => y.Id == x.Id && y.Id > 0) > 1))
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.ResponsavelEmpreendimentoDuplicado("Cedente", "cedente"));
                }
            }

            if (esp.ReceptorEmpreendimentoID <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.ReceptorEmpreendimentoObrigatorio);
            }

            if (esp.ReceptorDominioID <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.ReceptorDominioObrigatorio);
            }

            if (esp.ReceptorResponsaveisEmpreendimento == null || esp.ReceptorResponsaveisEmpreendimento.Count <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.ResponsavelEmpreendimentoObrigatorio("Receptor", "receptor"));
            }
            else
            {
                if (esp.ReceptorResponsaveisEmpreendimento.Any(x => esp.ReceptorResponsaveisEmpreendimento.Count(y => y.Id == x.Id && y.Id > 0) > 1))
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.ResponsavelEmpreendimentoDuplicado("Receptor", "receptor"));
                }
            }

            if (string.IsNullOrWhiteSpace(esp.NumeroAverbacao))
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.NumeroAverbacaoObrigatorio);
            }

            ValidacoesGenericasBus.DataMensagem(esp.DataEmissao, "DataEmissao", "emissão");

            #endregion Básicas

            if (esp.Atividades.First().Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.ReservaLegal))
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.AtividadeInvalida(esp.Atividades[0].NomeAtividade));
            }

            if (!Validacao.EhValido)
            {
                return(false);
            }

            #region Cedente

            Dominialidade dominialidadeCedente = dominialidadeDa.ObterPorEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(0));
            dominialidadeCedente.Dependencias = caracterizacaoBus.ObterDependencias(dominialidadeCedente.Id, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);

            if (dominialidadeCedente == null || dominialidadeCedente.Id <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.DominialidadeInexistente("cedente", caracterizacaoTipo));
            }
            else
            {
                string retorno = caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.Dominialidade,
                                                                             eCaracterizacaoDependenciaTipo.Caracterizacao, dominialidadeCedente.Dependencias);

                if (!string.IsNullOrEmpty(retorno))
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.CaracterizacaoDeveEstarValida("cedente", caracterizacaoTipo));
                }
                else
                {
                    List <ReservaLegal> reservas = dominialidadeCedente.Dominios.SelectMany(x => x.ReservasLegais).Where(x => esp.CedenteARLCompensacao.Select(y => y.Id).Any(y => y == x.Id)).ToList();

                    if (reservas.Any(x => !x.Compensada))
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.ARLCedenteTipoInvalida);
                    }

                    if (reservas.Any(x => x.SituacaoId != (int)eReservaLegalSituacao.Proposta))
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.ARLCedenteSituacaoInvalida);
                    }

                    if (reservas.Any(x => x.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada && x.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao))
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.ARLCedenteSituacaoVegetalInvalida);
                    }

                    if (!dominialidadeCedente.Dominios.Any(x => x.Id.GetValueOrDefault() == esp.CedenteDominioID))
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.DominioDessassociado("cedente"));
                    }

                    esp.CedenteARLCompensacao.ForEach(reserva =>
                    {
                        ReservaLegal aux = reservas.SingleOrDefault(x => x.Id == reserva.Id);

                        if (aux == null || aux.Id <= 0)
                        {
                            Validacao.Add(Mensagem.TermoCPFARLCR.ReservaLegalDessassociadoCedente(reserva.Identificacao));
                        }
                        else
                        {
                            if (aux.MatriculaId != esp.ReceptorDominioID)
                            {
                                Validacao.Add(Mensagem.TermoCPFARLCR.ReservaLegalDessassociadoReceptorDominio(reserva.Identificacao));
                            }
                        }
                    });
                }
            }

            responsaveis = especificidadeDa.ObterEmpreendimentoResponsaveis(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(0));
            esp.CedenteResponsaveisEmpreendimento.ForEach(resp =>
            {
                PessoaLst aux = responsaveis.SingleOrDefault(x => x.Id == resp.Id);

                if (aux == null || aux.Id <= 0)
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.ResponsavelDessassociado("cedente", resp.NomeRazao));
                }
            });

            #endregion Cedente

            #region Receptor

            Dominialidade dominialidadeReceptor = dominialidadeDa.ObterPorEmpreendimento(esp.ReceptorEmpreendimentoID);
            dominialidadeReceptor.Dependencias = caracterizacaoBus.ObterDependencias(dominialidadeReceptor.Id, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);

            if (dominialidadeReceptor == null || dominialidadeReceptor.Id <= 0)
            {
                Validacao.Add(Mensagem.TermoCPFARLCR.DominialidadeInexistente("receptor", caracterizacaoTipo));
            }
            else
            {
                string retorno = caracterizacaoValidar.DependenciasAlteradas(esp.ReceptorEmpreendimentoID, (int)eCaracterizacao.Dominialidade,
                                                                             eCaracterizacaoDependenciaTipo.Caracterizacao, dominialidadeReceptor.Dependencias);

                if (!string.IsNullOrEmpty(retorno))
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.CaracterizacaoDeveEstarValida("receptor", caracterizacaoTipo));
                }
                else
                {
                    if (!dominialidadeReceptor.Dominios.Any(x => x.Id.GetValueOrDefault() == esp.ReceptorDominioID))
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.DominioDessassociado("receptor"));
                    }

                    List <ReservaLegal> reservas = dominialidadeReceptor.Dominios.SelectMany(x => x.ReservasLegais).Where(x => esp.CedenteARLCompensacao.Select(y => y.Id).Any(y => y == x.IdentificacaoARLCedente)).ToList();

                    esp.CedenteARLCompensacao.ForEach(reserva =>
                    {
                        if (!reservas.Any(x => x.IdentificacaoARLCedente == reserva.Id))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLCR.ReservaLegalDessassociadoReceptor(reserva.Identificacao));
                        }
                    });
                }
            }

            responsaveis = especificidadeDa.ObterEmpreendimentoResponsaveis(esp.ReceptorEmpreendimentoID);
            esp.ReceptorResponsaveisEmpreendimento.ForEach(resp =>
            {
                PessoaLst aux = responsaveis.SingleOrDefault(x => x.Id == resp.Id);

                if (aux == null || aux.Id <= 0)
                {
                    Validacao.Add(Mensagem.TermoCPFARLCR.ResponsavelDessassociado("receptor", resp.NomeRazao));
                }
            });

            #endregion Receptor

            List <TituloModeloLst> lista = termoCPFARLCRDa.ObterTitulosCedenteReceptor(esp.CedenteDominioID, esp.ReceptorDominioID);
            lista.ForEach(titulo =>
            {
                if (titulo.Id != esp.Titulo.Id)
                {
                    if (string.IsNullOrEmpty(titulo.Texto))
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.DominioPossuiTituloCadastrado(titulo.Situacao));
                    }
                    else
                    {
                        Validacao.Add(Mensagem.TermoCPFARLCR.DominioPossuiTituloConcluido(titulo.Sigla, titulo.Texto, titulo.Situacao));
                    }
                }
            });

            return(Validacao.EhValido);
        }
        public Dominialidade MergiarGeo(Dominialidade caracterizacaoAtual)
        {
            Dominialidade dominialidadeGeo = ObterDadosGeo(caracterizacaoAtual.EmpreendimentoId);

            caracterizacaoAtual.Dependencias = _busCaracterizacao.ObterDependenciasAtual(caracterizacaoAtual.EmpreendimentoId, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);

            foreach (Dominio dominio in dominialidadeGeo.Dominios)
            {
                if (!caracterizacaoAtual.Dominios.Exists(x => x.Identificacao == dominio.Identificacao))
                {
                    caracterizacaoAtual.Dominios.Add(dominio);
                }
            }

            List <Dominio> dominiosRemover = new List <Dominio>();

            foreach (Dominio dominio in caracterizacaoAtual.Dominios)
            {
                if (!dominialidadeGeo.Dominios.Exists(x => x.Identificacao == dominio.Identificacao))
                {
                    dominiosRemover.Add(dominio);
                    continue;
                }
                else
                {
                    Dominio dominioAux = dominialidadeGeo.Dominios.SingleOrDefault(x => x.Identificacao == dominio.Identificacao) ?? new Dominio();

                    dominio.TipoGeo    = dominioAux.TipoGeo;
                    dominio.TipoTexto  = dominioAux.TipoTexto;
                    dominio.AreaCroqui = dominioAux.AreaCroqui;
                    dominio.APPCroqui  = dominioAux.APPCroqui;

                    foreach (ReservaLegal reserva in dominioAux.ReservasLegais)
                    {
                        if (!dominio.ReservasLegais.Exists(x => x.Identificacao == reserva.Identificacao))
                        {
                            dominio.ReservasLegais.Add(reserva);
                        }
                    }

                    List <ReservaLegal> reservasRemover = new List <ReservaLegal>();
                    foreach (ReservaLegal reserva in dominio.ReservasLegais)
                    {
                        if (!string.IsNullOrEmpty(reserva.Identificacao) && !dominioAux.ReservasLegais.Exists(x => x.Identificacao == reserva.Identificacao))
                        {
                            //reservasRemover.Add(reserva);
                            reserva.Excluir = true;
                            continue;
                        }
                        else
                        {
                            ReservaLegal reservaAux = dominioAux.ReservasLegais.SingleOrDefault(x => x.Identificacao == reserva.Identificacao) ?? new ReservaLegal();

                            reserva.Compensada           = reservaAux.Compensada;
                            reserva.SituacaoVegetalId    = reservaAux.SituacaoVegetalId;
                            reserva.SituacaoVegetalTexto = reservaAux.SituacaoVegetalTexto;
                            reserva.ARLCroqui            = reservaAux.ARLCroqui;
                            reserva.Coordenada           = reservaAux.Coordenada;

                            if (reserva.Compensada != reservaAux.Compensada)
                            {
                                reserva.Compensada    = reservaAux.Compensada;
                                reserva.LocalizacaoId = 0;
                            }
                        }
                    }

                    foreach (ReservaLegal reserva in reservasRemover)
                    {
                        dominio.ReservasLegais.Remove(reserva);
                    }
                }
            }

            caracterizacaoAtual.Dominios.SelectMany(x => x.ReservasLegais).Where(r => dominiosRemover.Exists(d => d.Id == r.MatriculaId)).ToList().ForEach(r =>
            {
                r.MatriculaId = null;
            });

            foreach (Dominio dominio in dominiosRemover)
            {
                caracterizacaoAtual.Dominios.Remove(dominio);
            }
            caracterizacaoAtual.Dominios.ForEach(x => { x.EmpreendimentoLocalizacao = caracterizacaoAtual.EmpreendimentoLocalizacao; });
            caracterizacaoAtual.Areas = dominialidadeGeo.Areas;

            ObterDominialidadeARL(caracterizacaoAtual);
            return(caracterizacaoAtual);
        }
示例#14
0
        internal Dominialidade Obter(int id, BancoDeDados banco = null, bool simplificado = false)
        {
            Dominialidade caracterizacao = new Dominialidade();

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

                Comando comando = bancoDeDados.CriarComando(@"select d.empreendimento, ee.zona empreendimento_localizacao, d.possui_area_exced_matri, 
				d.confrontante_norte, d.confrontante_sul, d.confrontante_leste, d.confrontante_oeste, d.tid 
				from {0}crt_dominialidade d, {0}tab_empreendimento_endereco ee 
				where ee.correspondencia = 0 and d.empreendimento = ee.empreendimento and d.id = :id"                , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.Id = id;
                        caracterizacao.EmpreendimentoId             = reader.GetValue <int>("empreendimento");
                        caracterizacao.EmpreendimentoLocalizacao    = reader.GetValue <int>("empreendimento_localizacao");
                        caracterizacao.PossuiAreaExcedenteMatricula = reader.GetValue <int?>("possui_area_exced_matri");
                        caracterizacao.ConfrontacaoNorte            = reader.GetValue <string>("confrontante_norte");
                        caracterizacao.ConfrontacaoSul   = reader.GetValue <string>("confrontante_sul");
                        caracterizacao.ConfrontacaoLeste = reader.GetValue <string>("confrontante_leste");
                        caracterizacao.ConfrontacaoOeste = reader.GetValue <string>("confrontante_oeste");
                        caracterizacao.Tid = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }

                #endregion

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

                #region Áreas

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

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    DominialidadeArea item;
                    while (reader.Read())
                    {
                        item           = new DominialidadeArea();
                        item.Id        = reader.GetValue <int>("id");
                        item.Tid       = reader.GetValue <string>("tid");
                        item.Tipo      = reader.GetValue <int>("tipo");
                        item.TipoTexto = reader.GetValue <string>("tipo_texto");
                        item.Valor     = reader.GetValue <decimal>("valor");

                        caracterizacao.Areas.Add(item);
                    }

                    reader.Close();
                }

                #endregion

                #region Domínios

                comando = bancoDeDados.CriarComando(@"select d.id, d.identificacao, d.tipo, ldt.texto tipo_texto, d.matricula, d.folha, d.livro, d.cartorio, d.area_croqui, 
				d.area_documento, d.app_croqui, d.comprovacao, ldc.texto comprovacao_texto, d.registro, d.numero_ccri, d.area_ccri, d.data_ultima_atualizacao, d.tid, d.arl_documento, 
				d.confrontante_norte, d.confrontante_sul, d.confrontante_leste, d.confrontante_oeste from {0}crt_dominialidade_dominio d, {0}lov_crt_domin_dominio_tipo ldt, 
				{0}lov_crt_domin_comprovacao ldc where d.tipo = ldt.id and d.comprovacao = ldc.id(+) and d.dominialidade = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Dominio dominio = null;

                    while (reader.Read())
                    {
                        dominio                                 = new Dominio();
                        dominio.Id                              = reader.GetValue <int>("id");
                        dominio.Tid                             = reader.GetValue <string>("tid");
                        dominio.Identificacao                   = reader.GetValue <string>("identificacao");
                        dominio.Tipo                            = (eDominioTipo)reader.GetValue <int>("tipo");
                        dominio.TipoTexto                       = reader.GetValue <string>("tipo_texto");
                        dominio.Matricula                       = reader.GetValue <string>("matricula");
                        dominio.Folha                           = reader.GetValue <string>("folha");
                        dominio.Livro                           = reader.GetValue <string>("livro");
                        dominio.Cartorio                        = reader.GetValue <string>("cartorio");
                        dominio.AreaCroqui                      = reader.GetValue <decimal>("area_croqui");
                        dominio.AreaDocumento                   = reader.GetValue <decimal>("area_documento");
                        dominio.AreaDocumentoTexto              = reader.GetValue <decimal>("area_documento").ToStringTrunc();
                        dominio.EmpreendimentoLocalizacao       = caracterizacao.EmpreendimentoLocalizacao;
                        dominio.APPCroqui                       = reader.GetValue <decimal>("app_croqui");
                        dominio.DescricaoComprovacao            = reader.GetValue <string>("registro");             //campo alterado
                        dominio.AreaCCIR                        = reader.GetValue <decimal>("area_ccri");
                        dominio.AreaCCIRTexto                   = reader.GetValue <decimal>("area_ccri").ToStringTrunc();
                        dominio.DataUltimaAtualizacao.DataTexto = reader.GetValue <string>("data_ultima_atualizacao");
                        dominio.ARLDocumento                    = reader.GetValue <decimal?>("arl_documento");
                        dominio.ARLDocumentoTexto               = reader.GetValue <decimal?>("arl_documento").ToStringTrunc();
                        dominio.ConfrontacaoNorte               = reader.GetValue <string>("confrontante_norte");
                        dominio.ConfrontacaoSul                 = reader.GetValue <string>("confrontante_sul");
                        dominio.ConfrontacaoLeste               = reader.GetValue <string>("confrontante_leste");
                        dominio.ConfrontacaoOeste               = reader.GetValue <string>("confrontante_oeste");
                        dominio.ComprovacaoId                   = reader.GetValue <int>("comprovacao");
                        dominio.ComprovacaoTexto                = reader.GetValue <string>("comprovacao_texto");
                        dominio.NumeroCCIR                      = reader.GetValue <long?>("numero_ccri");

                        #region Reservas Legais

                        comando = bancoDeDados.CriarComando(@"select r.id, r.tid, r.situacao, lrs.texto situacao_texto, r.localizacao, lrl.texto localizacao_texto, r.identificacao, r.situacao_vegetal, 
						lrsv.texto situacao_vegetal_texto, r.arl_croqui, r.arl_documento, r.numero_termo, r.cartorio, lrc.texto cartorio_texto, r.matricula, d.identificacao matricula_identificacao, 
						r.compensada, r.numero_cartorio, r.nome_cartorio, r.numero_livro, r.numero_folha, r.matricula_numero, r.averbacao_numero, r.arl_recebida, r.emp_compensacao, r.cedente_possui_emp, 
						r.arl_cedida, r.arl_cedente, c.id coordenada_id, c.coordenada_tipo, ct.texto coordenada_tipo_texto, c.datum, cd.texto datum_texto, c.easting_utm, c.northing_utm 
						from {0}crt_dominialidade_reserva r, {0}crt_dominialidade_dominio d, {0}lov_crt_domin_reserva_situacao lrs, {0}lov_crt_domin_reserva_local lrl, 
						{0}lov_crt_domin_reserva_sit_veg lrsv, {0}lov_crt_domin_reserva_cartorio lrc, {0}crt_dominia_reserva_coord c, {0}lov_coordenada_tipo ct, {0}lov_coordenada_datum cd 
						where r.matricula = d.id(+) and r.situacao = lrs.id and r.localizacao = lrl.id(+) and r.situacao_vegetal = lrsv.id(+) and r.cartorio = lrc.id(+) 
						and ct.id(+) = c.coordenada_tipo and cd.id(+) = c.datum and c.reserva(+) = r.id and r.dominio = :dominio"                        , EsquemaBanco);

                        comando.AdicionarParametroEntrada("dominio", dominio.Id, DbType.Int32);
                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            ReservaLegal reserva = null;

                            while (readerAux.Read())
                            {
                                reserva                        = new ReservaLegal();
                                reserva.Id                     = readerAux.GetValue <int>("id");
                                reserva.SituacaoId             = readerAux.GetValue <int>("situacao");
                                reserva.SituacaoTexto          = readerAux.GetValue <string>("situacao_texto");
                                reserva.Identificacao          = readerAux.GetValue <string>("identificacao");
                                reserva.Compensada             = readerAux.GetValue <bool>("compensada");
                                reserva.LocalizacaoId          = readerAux.GetValue <int>("localizacao");
                                reserva.LocalizacaoTexto       = readerAux.GetValue <string>("localizacao_texto");
                                reserva.SituacaoVegetalId      = readerAux.GetValue <int>("situacao_vegetal");
                                reserva.SituacaoVegetalTexto   = readerAux.GetValue <string>("situacao_vegetal_texto");
                                reserva.ARLCroqui              = readerAux.GetValue <decimal>("arl_croqui");
                                reserva.NumeroTermo            = readerAux.GetValue <string>("numero_termo");
                                reserva.Tid                    = readerAux.GetValue <string>("tid");
                                reserva.TipoCartorioId         = readerAux.GetValue <int>("cartorio");
                                reserva.TipoCartorioTexto      = readerAux.GetValue <string>("cartorio_texto");
                                reserva.MatriculaId            = readerAux.GetValue <int>("matricula");
                                reserva.MatriculaIdentificacao = readerAux.GetValue <string>("matricula_identificacao");
                                reserva.NumeroCartorio         = readerAux.GetValue <string>("numero_cartorio");
                                reserva.NomeCartorio           = readerAux.GetValue <string>("nome_cartorio");
                                reserva.NumeroFolha            = readerAux.GetValue <string>("numero_folha");
                                reserva.NumeroLivro            = readerAux.GetValue <string>("numero_livro");

                                //Compensação
                                reserva.MatriculaNumero = readerAux.GetValue <string>("matricula_numero");
                                reserva.AverbacaoNumero = readerAux.GetValue <string>("averbacao_numero");
                                reserva.ARLRecebida     = readerAux.GetValue <decimal>("arl_recebida");
                                reserva.EmpreendimentoCompensacao.Id = readerAux.GetValue <int>("emp_compensacao");
                                reserva.CedentePossuiEmpreendimento  = readerAux.GetValue <int>("cedente_possui_emp");
                                reserva.ARLCedida = readerAux.GetValue <decimal>("arl_cedida");
                                reserva.IdentificacaoARLCedente = readerAux.GetValue <int>("arl_cedente");

                                //Coordenada
                                reserva.Coordenada.Id          = readerAux.GetValue <int>("coordenada_id");
                                reserva.Coordenada.Tipo.Id     = readerAux.GetValue <int>("coordenada_tipo");
                                reserva.Coordenada.Tipo.Texto  = readerAux.GetValue <string>("coordenada_tipo_texto");
                                reserva.Coordenada.Datum.Id    = readerAux.GetValue <int>("datum");
                                reserva.Coordenada.Datum.Texto = readerAux.GetValue <string>("datum_texto");
                                reserva.Coordenada.EastingUtm  = readerAux.GetValue <double?>("easting_utm");
                                reserva.Coordenada.NorthingUtm = readerAux.GetValue <double?>("northing_utm");

                                if (reserva.IdentificacaoARLCedente > 0)
                                {
                                    ReservaLegal reservaAux = ObterARLPorId(reserva.IdentificacaoARLCedente);
                                    reserva.SituacaoVegetalId    = reservaAux.SituacaoVegetalId;
                                    reserva.SituacaoVegetalTexto = reservaAux.SituacaoVegetalTexto;
                                }

                                dominio.ReservasLegais.Add(reserva);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.Dominios.Add(dominio);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
        public bool ReservaLegalSalvar(ReservaLegal reserva)
        {
            if (reserva.SituacaoId <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoObrigatorio);
            }

            if (reserva.Id > 0 && reserva.CompensacaoTipo == eCompensacaoTipo.Cedente && reserva.Excluir)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedenteEdicaoNaoPermitida);
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.NaoInformada)
            {
                return(Validacao.EhValido);
            }

            if (reserva.CompensacaoTipo == eCompensacaoTipo.Cedente && (reserva.SituacaoVegetalId == (int)eReservaLegalSituacaoVegetal.NaoCaracterizada || reserva.SituacaoVegetalId == (int)eReservaLegalSituacaoVegetal.EmUso))
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePreservadaOuEmRecuperacao);
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.Proposta)
            {
                switch (reserva.LocalizacaoId)
                {
                    #region Receptora

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora:
                    if (reserva.CedentePossuiEmpreendimento < 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePossuiCodigoEmpreendimentoObrigatorio);
                    }

                    if (reserva.CedentePossuiEmpreendimento == 1)
                    {
                        if (reserva.EmpreendimentoCompensacao.Id <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalEmpreendimentoCedenteObrigatorio);
                        }
                        else
                        {
                            ValidarEmpreendimentoCedente(reserva);
                            VerificarRLAssociadaEmOutroEmpreendimentoCedente(reserva.Id, reserva.EmpreendimentoCompensacao.Id, reserva.IdentificacaoARLCedente);
                        }
                    }

                    break;

                    #endregion

                    #region Cedente

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente:

                    if (reserva.EmpreendimentoCompensacao.Id <= 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalEmpreendimentoReceptorObrigatorio);
                    }
                    else
                    {
                        if (reserva.MatriculaId.GetValueOrDefault() <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalEmpreendimentoReceptorMatriculaObrigatorio);
                        }
                    }

                    break;

                    #endregion

                case (int)eReservaLegalLocalizacao.NestaMatricula:
                case (int)eReservaLegalLocalizacao.NestaPosse:

                    break;

                default:
                    Validacao.Add(Mensagem.Dominialidade.ReservaLegalLocalizacaoObrigatorio);
                    break;
                }
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.Registrada)
            {
                switch (reserva.LocalizacaoId)
                {
                    #region Receptora

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora:

                    if (reserva.CedentePossuiEmpreendimento < 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePossuiCodigoEmpreendimentoObrigatorio);
                    }

                    ValidarCamposSituacaoRegistrada(reserva);

                    if (reserva.CedentePossuiEmpreendimento == 0)
                    {
                        if (reserva.ARLCedida <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ARLCedidaObrigatorio);
                        }

                        if (reserva.SituacaoVegetalId <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoVegetalObrigatorio);
                        }

                        if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoVegetalInvalido);
                        }
                    }

                    if (reserva.CedentePossuiEmpreendimento == 1)
                    {
                        if (reserva.EmpreendimentoCompensacao.Id <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalEmpreendimentoCedenteObrigatorio);
                        }

                        if (!string.IsNullOrEmpty(reserva.MatriculaIdentificacao))
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalMatriculaIdentificacaoCedenteObrigatorio);
                        }

                        if (reserva.IdentificacaoARLCedente <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalIdentificacaoARLObrigatoria);
                        }
                        else
                        {
                            ValidarEmpreendimentoCedente(reserva);
                            VerificarRLAssociadaEmOutroEmpreendimentoCedente(reserva.Id, reserva.EmpreendimentoCompensacao.Id, reserva.IdentificacaoARLCedente);
                        }
                    }

                    break;

                    #endregion

                    #region Cedente

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente:

                    ValidarCamposSituacaoRegistrada(reserva);

                    if (reserva.ARLRecebida <= 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ARLRecebidaObrigatorio);
                    }

                    break;

                    #endregion

                    #region Nesta Matrícula

                case (int)eReservaLegalLocalizacao.NestaMatricula:
                case (int)eReservaLegalLocalizacao.NestaPosse:

                    ValidarCamposSituacaoRegistrada(reserva);

                    break;

                    #endregion

                default:
                    Validacao.Add(Mensagem.Dominialidade.ReservaLegalLocalizacaoObrigatorio);
                    break;
                }
            }

            return(Validacao.EhValido);
        }
        internal Dominialidade Obter(int id, BancoDeDados banco = null, bool simplificado = false)
        {
            Dominialidade caracterizacao = new Dominialidade();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, EsquemaBanco))
            {
                #region Dominialidade

                Comando comando = bancoDeDados.CriarComando(@"select d.empreendimento, ee.zona empreendimento_localizacao, d.possui_area_exced_matri, 
				d.confrontante_norte, d.confrontante_sul, d.confrontante_leste, d.confrontante_oeste, d.tid 
				from {0}crt_dominialidade d, {0}tab_empreendimento_endereco ee 
				where ee.correspondencia = 0 and d.empreendimento = ee.empreendimento and d.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.EmpreendimentoLocalizacao    = Convert.ToInt32(reader["empreendimento_localizacao"]);
                        caracterizacao.PossuiAreaExcedenteMatricula = reader.GetValue <int?>("possui_area_exced_matri");
                        caracterizacao.ConfrontacaoNorte            = reader["confrontante_norte"].ToString();
                        caracterizacao.ConfrontacaoSul   = reader["confrontante_sul"].ToString();
                        caracterizacao.ConfrontacaoLeste = reader["confrontante_leste"].ToString();
                        caracterizacao.ConfrontacaoOeste = reader["confrontante_oeste"].ToString();
                        caracterizacao.Tid = reader["tid"].ToString();
                    }

                    reader.Close();
                }

                #endregion

                if (caracterizacao.Id <= 0 || simplificado)
                {
                    return(caracterizacao);
                }
                #region ATP
                comando = bancoDeDados.CriarComando(@"SELECT (ATP.AREA_M2) ATP FROM CRT_PROJETO_GEO CRP
														  INNER JOIN  IDAFCREDENCIADOGEO.GEO_ATP   ATP ON ATP.PROJETO = CRP.ID  
														  INNER JOIN CRT_DOMINIALIDADE  CRD ON CRD.EMPREENDIMENTO = CRP.EMPREENDIMENTO
														WHERE CRD.ID  = :id"                                                        , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.ATPCroqui = reader.GetValue <Decimal>("ATP");
                    }
                }
                #endregion

                #region Áreas

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

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

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

                        caracterizacao.Areas.Add(item);
                    }

                    reader.Close();
                }

                #endregion

                #region Domínios

                comando = bancoDeDados.CriarComando(@"select d.id, d.identificacao, d.tipo, ldt.texto tipo_texto, d.matricula, d.folha, d.livro, d.cartorio, d.area_croqui, 
				d.area_documento, d.app_croqui, d.comprovacao, ldc.texto comprovacao_texto, d.registro, d.numero_ccri, d.area_ccri, d.data_ultima_atualizacao, d.tid, d.arl_documento, 
				d.confrontante_norte, d.confrontante_sul, d.confrontante_leste, d.confrontante_oeste from {0}crt_dominialidade_dominio d, {0}lov_crt_domin_dominio_tipo ldt, 
				{0}lov_crt_domin_comprovacao ldc where d.tipo = ldt.id and d.comprovacao = ldc.id(+) and d.dominialidade = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Dominio dominio = null;

                    while (reader.Read())
                    {
                        dominio                                 = new Dominio();
                        dominio.Id                              = Convert.ToInt32(reader["id"]);
                        dominio.Tid                             = reader["tid"].ToString();
                        dominio.Identificacao                   = reader["identificacao"].ToString();
                        dominio.Tipo                            = (eDominioTipo)Convert.ToInt32(reader["tipo"]);
                        dominio.TipoTexto                       = reader["tipo_texto"].ToString();
                        dominio.Matricula                       = reader["matricula"].ToString();
                        dominio.Folha                           = reader["folha"].ToString();
                        dominio.Livro                           = reader["livro"].ToString();
                        dominio.Cartorio                        = reader["cartorio"].ToString();
                        dominio.AreaCroqui                      = reader.GetValue <decimal>("area_croqui");
                        dominio.AreaDocumento                   = reader.GetValue <decimal>("area_documento");
                        dominio.AreaDocumentoTexto              = reader.GetValue <decimal>("area_documento").ToStringTrunc();
                        dominio.EmpreendimentoLocalizacao       = caracterizacao.EmpreendimentoLocalizacao;
                        dominio.APPCroqui                       = reader.GetValue <decimal>("app_croqui");
                        dominio.DescricaoComprovacao            = reader["registro"].ToString();              //campo alterado
                        dominio.AreaCCIR                        = reader.GetValue <decimal>("area_ccri");
                        dominio.AreaCCIRTexto                   = reader.GetValue <decimal>("area_ccri").ToStringTrunc();
                        dominio.DataUltimaAtualizacao.DataTexto = reader["data_ultima_atualizacao"].ToString();
                        dominio.ARLDocumento                    = reader.GetValue <decimal?>("arl_documento");
                        dominio.ARLDocumentoTexto               = reader.GetValue <decimal?>("arl_documento").ToStringTrunc();
                        dominio.ConfrontacaoNorte               = reader["confrontante_norte"].ToString();
                        dominio.ConfrontacaoSul                 = reader["confrontante_sul"].ToString();
                        dominio.ConfrontacaoLeste               = reader["confrontante_leste"].ToString();
                        dominio.ConfrontacaoOeste               = reader["confrontante_oeste"].ToString();

                        if (reader["comprovacao"] != null && !Convert.IsDBNull(reader["comprovacao"]))
                        {
                            dominio.ComprovacaoId    = Convert.ToInt32(reader["comprovacao"]);
                            dominio.ComprovacaoTexto = reader["comprovacao_texto"].ToString();
                        }

                        if (reader["numero_ccri"] != null && !Convert.IsDBNull(reader["numero_ccri"]))
                        {
                            dominio.NumeroCCIR = Convert.ToInt64(reader["numero_ccri"]);
                        }

                        #region Reservas Legais

                        comando = bancoDeDados.CriarComando(@"select r.id, r.situacao, lrs.texto situacao_texto, r.arl_cedida, r.arl_recebida, r.localizacao, lrl.texto localizacao_texto, r.identificacao, r.situacao_vegetal, 
							lrsv.texto situacao_vegetal_texto, r.arl_croqui, r.arl_documento, r.numero_termo, r.cartorio, lrc.texto cartorio_texto, r.matricula, d.identificacao matricula_identificacao, 
							r.compensada, r.numero_cartorio, r.nome_cartorio, r.numero_livro, r.numero_folha, r.tid from {0}crt_dominialidade_reserva r, {0}crt_dominialidade_dominio d, {0}lov_crt_domin_reserva_situacao lrs,
							{0}lov_crt_domin_reserva_local lrl, {0}lov_crt_domin_reserva_sit_veg lrsv, {0}lov_crt_domin_reserva_cartorio lrc where r.matricula = d.id(+) and r.situacao = lrs.id and r.localizacao 
							= lrl.id(+) and r.situacao_vegetal = lrsv.id(+) and r.cartorio = lrc.id(+) and r.dominio = :dominio"                            , EsquemaBanco);

                        comando.AdicionarParametroEntrada("dominio", dominio.Id, DbType.Int32);
                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            ReservaLegal reserva = null;

                            while (readerAux.Read())
                            {
                                reserva               = new ReservaLegal();
                                reserva.Id            = Convert.ToInt32(readerAux["id"]);
                                reserva.SituacaoId    = Convert.ToInt32(readerAux["situacao"]);
                                reserva.SituacaoTexto = readerAux["situacao_texto"].ToString();
                                reserva.Identificacao = readerAux["identificacao"].ToString();
                                reserva.Compensada    = Convert.ToBoolean(readerAux["compensada"]);
                                reserva.ARLCedida     = readerAux.GetValue <decimal>("arl_cedida");
                                reserva.ARLRecebida   = readerAux.GetValue <decimal>("arl_recebida");

                                if (readerAux["localizacao"] != null && !Convert.IsDBNull(readerAux["localizacao"]))
                                {
                                    reserva.LocalizacaoId    = Convert.ToInt32(readerAux["localizacao"]);
                                    reserva.LocalizacaoTexto = readerAux["localizacao_texto"].ToString();
                                }

                                if (readerAux["situacao_vegetal"] != null && !Convert.IsDBNull(readerAux["situacao_vegetal"]))
                                {
                                    reserva.SituacaoVegetalId    = Convert.ToInt32(readerAux["situacao_vegetal"]);
                                    reserva.SituacaoVegetalTexto = readerAux["situacao_vegetal_texto"].ToString();
                                }

                                reserva.ARLCroqui   = readerAux.GetValue <decimal>("arl_croqui");
                                reserva.NumeroTermo = readerAux["numero_termo"].ToString();
                                reserva.Tid         = readerAux["tid"].ToString();

                                if (readerAux["cartorio"] != null && !Convert.IsDBNull(readerAux["cartorio"]))
                                {
                                    reserva.TipoCartorioId    = Convert.ToInt32(readerAux["cartorio"]);
                                    reserva.TipoCartorioTexto = readerAux["cartorio_texto"].ToString();
                                }

                                if (readerAux["matricula"] != null && !Convert.IsDBNull(readerAux["matricula"]))
                                {
                                    reserva.MatriculaId            = Convert.ToInt32(readerAux["matricula"]);
                                    reserva.MatriculaIdentificacao = readerAux["matricula_identificacao"].ToString();
                                }

                                reserva.NumeroCartorio = readerAux["numero_cartorio"].ToString();
                                reserva.NomeCartorio   = readerAux["nome_cartorio"].ToString();
                                reserva.NumeroFolha    = readerAux["numero_folha"].ToString();
                                reserva.NumeroLivro    = readerAux["numero_livro"].ToString();

                                dominio.ReservasLegais.Add(reserva);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.Dominios.Add(dominio);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
        private Dominialidade ObterHistorico(int id, BancoDeDados banco = null, string tid = null, bool simplificado = false)
        {
            Dominialidade caracterizacao = new Dominialidade();
            int           hst            = 0;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, EsquemaBanco))
            {
                #region Dominialidade

                Comando comando = bancoDeDados.CriarComando(@"select d.id, d.empreendimento_id, d.possui_area_exced_matri, 
				d.confrontante_norte, d.confrontante_sul, d.confrontante_leste, d.confrontante_oeste, d.tid 
				from {0}hst_crt_dominialidade d where d.dominialidade_id = :id and d.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 = reader.GetValue <int>("id");

                        caracterizacao.Id = id;
                        caracterizacao.EmpreendimentoId             = reader.GetValue <int>("empreendimento_id");
                        caracterizacao.PossuiAreaExcedenteMatricula = reader.GetValue <int?>("possui_area_exced_matri");
                        caracterizacao.ConfrontacaoNorte            = reader.GetValue <string>("confrontante_norte");
                        caracterizacao.ConfrontacaoSul   = reader.GetValue <string>("confrontante_sul");
                        caracterizacao.ConfrontacaoLeste = reader.GetValue <string>("confrontante_leste");
                        caracterizacao.ConfrontacaoOeste = reader.GetValue <string>("confrontante_oeste");
                        caracterizacao.Tid = reader.GetValue <string>("tid");
                    }

                    reader.Close();
                }

                #endregion

                if (caracterizacao.Id <= 0 || simplificado)
                {
                    return(caracterizacao);
                }
                #region ATP
                comando = bancoDeDados.CriarComando(@"SELECT (ATP.AREA_M2) ATP FROM CRT_PROJETO_GEO CRP
														  INNER JOIN  IDAFGEO.GEO_ATP   ATP ON ATP.PROJETO = CRP.ID  
														  INNER JOIN CRT_DOMINIALIDADE  CRD ON CRD.EMPREENDIMENTO = CRP.EMPREENDIMENTO
														WHERE CRD.ID  = :id"                                                        , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", id, DbType.Int32);
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        caracterizacao.ATPCroqui = reader.GetValue <Decimal>("ATP");
                    }
                }
                #endregion

                #region Áreas

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

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    DominialidadeArea item;
                    while (reader.Read())
                    {
                        item           = new DominialidadeArea();
                        item.Id        = reader.GetValue <int>("id");
                        item.Tid       = reader.GetValue <string>("tid");
                        item.Tipo      = reader.GetValue <int>("tipo_id");
                        item.TipoTexto = reader.GetValue <string>("tipo_texto");
                        item.Valor     = reader.GetValue <decimal>("valor");

                        caracterizacao.Areas.Add(item);
                    }

                    reader.Close();
                }

                #endregion

                #region Domínios

                comando = bancoDeDados.CriarComando(@"select d.id, d.dominialidade_dominio_id, d.identificacao, d.tipo_id, d.tipo_texto, d.matricula, d.folha, d.livro, d.cartorio, d.area_croqui,
				d.area_documento, d.app_croqui, d.comprovacao_id, d.comprovacao_texto, d.registro, d.numero_ccri, d.area_ccri, d.data_ultima_atualizacao, d.tid, d.arl_documento, d.confrontante_norte, 
				d.confrontante_sul, d.confrontante_leste, d.confrontante_oeste from {0}hst_crt_dominialidade_dominio d where d.id_hst = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", hst, DbType.Int32);
                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    Dominio dominio = null;

                    while (reader.Read())
                    {
                        hst = reader.GetValue <int>("id");

                        dominio                                 = new Dominio();
                        dominio.Id                              = reader.GetValue <int>("dominialidade_dominio_id");
                        dominio.Tid                             = reader.GetValue <string>("tid");
                        dominio.Identificacao                   = reader.GetValue <string>("identificacao");
                        dominio.Tipo                            = (eDominioTipo)reader.GetValue <int>("tipo_id");
                        dominio.TipoTexto                       = reader.GetValue <string>("tipo_texto");
                        dominio.Matricula                       = reader.GetValue <string>("matricula");
                        dominio.Folha                           = reader.GetValue <string>("folha");
                        dominio.Livro                           = reader.GetValue <string>("livro");
                        dominio.Cartorio                        = reader.GetValue <string>("cartorio");
                        dominio.AreaCroqui                      = reader.GetValue <decimal>("area_croqui");
                        dominio.AreaDocumento                   = reader.GetValue <decimal>("area_documento");
                        dominio.AreaDocumentoTexto              = reader.GetValue <decimal>("area_documento").ToStringTrunc();
                        dominio.APPCroqui                       = reader.GetValue <decimal>("app_croqui");
                        dominio.DescricaoComprovacao            = reader.GetValue <string>("registro");             //Campo alterado
                        dominio.AreaCCIR                        = reader.GetValue <decimal>("area_ccri");
                        dominio.AreaCCIRTexto                   = reader.GetValue <decimal>("area_ccri").ToStringTrunc();
                        dominio.DataUltimaAtualizacao.DataTexto = reader.GetValue <string>("data_ultima_atualizacao");
                        dominio.ARLDocumento                    = reader.GetValue <decimal>("arl_documento");
                        dominio.ARLDocumentoTexto               = reader.GetValue <decimal>("arl_documento").ToStringTrunc();
                        dominio.ConfrontacaoNorte               = reader.GetValue <string>("confrontante_norte");
                        dominio.ConfrontacaoSul                 = reader.GetValue <string>("confrontante_sul");
                        dominio.ConfrontacaoLeste               = reader.GetValue <string>("confrontante_leste");
                        dominio.ConfrontacaoOeste               = reader.GetValue <string>("confrontante_oeste");
                        dominio.NumeroCCIR                      = reader.GetValue <long>("numero_ccri");
                        dominio.ComprovacaoId                   = reader.GetValue <int>("comprovacao_id");
                        dominio.ComprovacaoTexto                = reader.GetValue <string>("comprovacao_texto");

                        #region Reservas Legais

                        comando = bancoDeDados.CriarComando(@"select r.dominialidade_reserva_id, r.situacao_id, r.situacao_texto, r.localizacao_id, r.localizacao_texto, 
						r.identificacao, r.situacao_vegetal_id, r.situacao_vegetal_texto, r.arl_croqui, r.numero_termo, r.cartorio_id, r.cartorio_texto, r.matricula_id, 
						r.compensada, r.numero_cartorio, r.nome_cartorio, r.numero_folha, r.numero_livro, r.tid 
						from {0}hst_crt_dominialidade_reserva r where r.id_hst = :id"                        , EsquemaBanco);

                        comando.AdicionarParametroEntrada("id", hst, DbType.Int32);
                        using (IDataReader readerAux = bancoDeDados.ExecutarReader(comando))
                        {
                            ReservaLegal reserva = null;

                            while (readerAux.Read())
                            {
                                reserva                        = new ReservaLegal();
                                reserva.Id                     = readerAux.GetValue <int>("dominialidade_reserva_id");
                                reserva.Tid                    = readerAux.GetValue <string>("tid");
                                reserva.SituacaoId             = readerAux.GetValue <int>("situacao_id");
                                reserva.SituacaoTexto          = readerAux.GetValue <string>("situacao_texto");
                                reserva.Identificacao          = readerAux.GetValue <string>("identificacao");
                                reserva.Compensada             = readerAux.GetValue <bool>("compensada");
                                reserva.LocalizacaoId          = readerAux.GetValue <int>("localizacao_id");
                                reserva.LocalizacaoTexto       = readerAux.GetValue <string>("localizacao_texto");
                                reserva.SituacaoVegetalId      = readerAux.GetValue <int>("situacao_vegetal_id");
                                reserva.SituacaoVegetalTexto   = readerAux.GetValue <string>("situacao_vegetal_texto");
                                reserva.ARLCroqui              = readerAux.GetValue <decimal>("arl_croqui");
                                reserva.NumeroTermo            = readerAux.GetValue <string>("numero_termo");
                                reserva.TipoCartorioId         = readerAux.GetValue <int>("cartorio_id");
                                reserva.TipoCartorioTexto      = readerAux["cartorio_texto"].ToString();
                                reserva.MatriculaId            = readerAux.GetValue <int>("matricula_id");
                                reserva.MatriculaIdentificacao = dominio.Identificacao;
                                reserva.NumeroCartorio         = readerAux.GetValue <string>("numero_cartorio");
                                reserva.NomeCartorio           = readerAux.GetValue <string>("nome_cartorio");
                                reserva.NumeroFolha            = readerAux.GetValue <string>("numero_folha");
                                reserva.NumeroLivro            = readerAux.GetValue <string>("numero_livro");

                                dominio.ReservasLegais.Add(reserva);
                            }

                            readerAux.Close();
                        }

                        #endregion

                        caracterizacao.Dominios.Add(dominio);
                    }

                    reader.Close();
                }

                #endregion
            }

            return(caracterizacao);
        }
示例#18
0
        public ReservaLegalVM(List <Lista> situacoes, List <Lista> localizacoes, List <Lista> cartorios, ReservaLegal reserva,
                              bool isVisualizar = false, int dominioTipo = 0, List <CoordenadaTipo> lstTiposCoordenada = null, List <Datum> lstDatuns = null,
                              List <Lista> lstMatriculaCompensacao = null, List <Lista> lstIdentificacaoARLCompensacao = null, List <Lista> booleanLista = null, List <Lista> lstSituacoesVegetal = null)
        {
            string situacaoSelecionada    = "0";
            string localizacaoSelecionada = "0";

            if (!string.IsNullOrEmpty(reserva.Identificacao))
            {
                situacoes = situacoes.Where(x => x.Id != ((int)eReservaLegalSituacao.NaoInformada).ToString()).ToList();

                if (reserva.Compensada)
                {
                    localizacoes = localizacoes.Where(x => (new string[] {
                        ((int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente).ToString()
                    }).Contains(x.Id)).ToList();;
                }
                else
                {
                    if (dominioTipo == 2)                    //2 - Posse
                    {
                        localizacoes = localizacoes.Where(x => x.Id == ((int)eReservaLegalLocalizacao.NestaPosse).ToString()).ToList();;
                    }
                    else if (dominioTipo == 1)                    //1 - Matricula
                    {
                        localizacoes = localizacoes.Where(x => x.Id == ((int)eReservaLegalLocalizacao.NestaMatricula).ToString()).ToList();;
                    }
                    localizacaoSelecionada = (localizacoes.FirstOrDefault() ?? new Lista()).Id.ToString();
                }
            }
            else
            {
                situacaoSelecionada = ((int)eReservaLegalSituacao.NaoInformada).ToString();
                localizacoes        = localizacoes.Where(x => (new string[] {
                    ((int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora).ToString()
                }).Contains(x.Id)).ToList();

                lstSituacoesVegetal = lstSituacoesVegetal.Where(x =>
                                                                (new string[] { ((int)eReservaLegalSituacaoVegetal.EmRecuperacao).ToString(), ((int)eReservaLegalSituacaoVegetal.Preservada).ToString() }).Contains(x.Id)).ToList();
            }

            if (reserva.SituacaoId > 0)
            {
                situacaoSelecionada = reserva.SituacaoId.ToString();
            }

            if (reserva.LocalizacaoId > 0)
            {
                localizacaoSelecionada = reserva.LocalizacaoId.ToString();
            }

            Situacoes                   = ViewModelHelper.CriarSelectList(situacoes, true, selecionado: situacaoSelecionada);
            Localizacoes                = ViewModelHelper.CriarSelectList(localizacoes, true, selecionado: localizacaoSelecionada);
            Cartorios                   = ViewModelHelper.CriarSelectList(cartorios, true, selecionado: reserva.TipoCartorioId.ToString());
            MatriculaCompensacao        = ViewModelHelper.CriarSelectList(lstMatriculaCompensacao, itemTextoPadrao: true, selecionado: reserva.MatriculaId.ToString());
            IdentificacaoARLCompensacao = ViewModelHelper.CriarSelectList(lstIdentificacaoARLCompensacao, true, true, reserva.IdentificacaoARLCedente.ToString());

            ReservaLegal     = reserva;
            IsVisualizar     = isVisualizar;
            TiposCoordenada  = ViewModelHelper.CriarSelectList(lstTiposCoordenada.Where(x => x.Id == 3).ToList(), true, false); //UTM
            Datuns           = ViewModelHelper.CriarSelectList(lstDatuns.Where(x => x.Id == 1).ToList(), true, false);          //SIRGAS2000
            SituacoesVegetal = ViewModelHelper.CriarSelectList(lstSituacoesVegetal, itemTextoPadrao: false, selecionado: reserva.SituacaoVegetalId.GetValueOrDefault().ToString());

            int selecionado = -1;

            if (reserva.CedentePossuiEmpreendimento.HasValue)
            {
                selecionado = Convert.ToInt32(reserva.CedentePossuiEmpreendimento.Value);
            }
            ListaBooleana = ViewModelHelper.CriarSelectList(booleanLista, itemTextoPadrao: false, selecionado: selecionado.ToString());
        }
        public bool ReservaLegalSalvar(ReservaLegal reserva)
        {
            if (reserva.SituacaoId <= 0)
            {
                Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoObrigatorio);
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.NaoInformada)
            {
                return(Validacao.EhValido);
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.Proposta)
            {
                switch (reserva.LocalizacaoId)
                {
                    #region Receptora

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora:
                    if (reserva.CedentePossuiEmpreendimento < 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePossuiCodigoEmpreendimentoObrigatorio);
                    }

                    if (reserva.CedentePossuiEmpreendimento == 1)
                    {
                        if (reserva.EmpreendimentoCompensacao.Id > 0)
                        {
                            ValidarEmpreendimentoCedente(reserva);
                            VerificarRLAssociadaEmOutroEmpreendimentoCedente(reserva.Id, reserva.EmpreendimentoCompensacao.Id, reserva.IdentificacaoARLCedente);
                        }
                    }

                    break;

                    #endregion

                    #region Cedente

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente:

                    if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePreservadaOuEmRecuperacao);
                    }
                    break;

                    #endregion

                case (int)eReservaLegalLocalizacao.NestaMatricula:
                case (int)eReservaLegalLocalizacao.NestaPosse:

                    break;

                default:
                    Validacao.Add(Mensagem.Dominialidade.ReservaLegalLocalizacaoObrigatorio);
                    break;
                }
            }

            if (reserva.SituacaoId == (int)eReservaLegalSituacao.Registrada)
            {
                switch (reserva.LocalizacaoId)
                {
                    #region Receptora

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora:

                    if (reserva.CedentePossuiEmpreendimento < 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePossuiCodigoEmpreendimentoObrigatorio);
                    }

                    ValidarCamposSituacaoRegistrada(reserva);

                    if (reserva.CedentePossuiEmpreendimento == 0)
                    {
                        if (reserva.ARLCedida <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ARLCedidaObrigatorio);
                        }

                        if (reserva.SituacaoVegetalId <= 0)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoVegetalObrigatorio);
                        }

                        if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada)
                        {
                            Validacao.Add(Mensagem.Dominialidade.ReservaLegalSituacaoVegetalInvalido);
                        }
                    }

                    if (reserva.CedentePossuiEmpreendimento == 1)
                    {
                        if (reserva.IdentificacaoARLCedente > 0)
                        {
                            ValidarEmpreendimentoCedente(reserva);
                            VerificarRLAssociadaEmOutroEmpreendimentoCedente(reserva.Id, reserva.EmpreendimentoCompensacao.Id, reserva.IdentificacaoARLCedente);
                        }
                    }

                    break;

                    #endregion

                    #region Cedente

                case (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente:

                    if (reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.Preservada && reserva.SituacaoVegetalId != (int)eReservaLegalSituacaoVegetal.EmRecuperacao)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ReservaLegalCedentePreservadaOuEmRecuperacao);
                    }

                    ValidarCamposSituacaoRegistrada(reserva);

                    if (reserva.ARLRecebida <= 0)
                    {
                        Validacao.Add(Mensagem.Dominialidade.ARLRecebidaObrigatorio);
                    }

                    break;

                    #endregion

                    #region Nesta Matrícula

                case (int)eReservaLegalLocalizacao.NestaMatricula:
                case (int)eReservaLegalLocalizacao.NestaPosse:

                    ValidarCamposSituacaoRegistrada(reserva);

                    break;

                    #endregion

                default:
                    Validacao.Add(Mensagem.Dominialidade.ReservaLegalLocalizacaoObrigatorio);
                    break;
                }
            }

            return(Validacao.EhValido);
        }