public bool Salvar(IEspecificidade especificidade)
        {
            AutorizacaoQueimaControlada esp = especificidade as AutorizacaoQueimaControlada;
            EspecificidadeDa            _da = new EspecificidadeDa();
            CaracterizacaoValidar       caracterizacaoValidar = new CaracterizacaoValidar();
            CaracterizacaoBus           caracterizacaoBus     = new CaracterizacaoBus();
            List <Caracterizacao>       caracterizacoes       = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            List <Dependencia>          dependencias          = new List <Dependencia>();
            String caracterizacoesAlteradas = String.Empty;
            int    idCaracterizacao;

            RequerimentoAtividade(esp, false, true);

            Destinatario(especificidade.ProtocoloReq.Id, esp.Destinatario, "Autorizacao_Destinatario");

            if ((esp.TitulosAssociado.FirstOrDefault() ?? new TituloAssociadoEsp()).Id <= 0)
            {
                Validacao.Add(Mensagem.AutorizacaoQueimaControlada.LaudoVistoriaObrigatorio);
            }
            else if (_daEspecificidade.ObterTituloAssociado(esp.TitulosAssociado.FirstOrDefault().Id).Situacao != (int)eTituloSituacao.Concluido)
            {
                Validacao.Add(Mensagem.AutorizacaoQueimaControlada.LaudoVIstoriaDeveEstarConcluiddo);
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.Dominialidade);
            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.AutorizacaoQueimaControlada.CaracterizacaoDeveEstarValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.Dominialidade).Nome));
                }
            }
            else
            {
                Validacao.Add(Mensagem.AutorizacaoQueimaControlada.DominialidadeInexistente);
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.QueimaControlada);
            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.QueimaControlada, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.QueimaControlada, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.AutorizacaoQueimaControlada.CaracterizacaoDeveEstarValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.QueimaControlada).Nome));
                }
            }
            else
            {
                Validacao.Add(Mensagem.AutorizacaoQueimaControlada.QueimaInexistente);
            }

            if (caracterizacoesAlteradas != String.Empty)
            {
                Validacao.Add(Mensagem.Caracterizacao.CaracterizacaoAlterada);
            }

            return(Validacao.EhValido);
        }
        public ActionResult Criar(int empreendimento, int tipo, bool isCadastrarCaracterizacao)
        {
            if (!_caracterizacaoValidar.Dependencias(empreendimento, tipo))
            {
                return(RedirectToAction("", "Caracterizacao", new { id = empreendimento, Msg = Validacao.QueryParam() }));
            }

            DescricaoLicenciamentoAtividadeVM vm = new DescricaoLicenciamentoAtividadeVM();

            DescricaoLicenciamentoAtividade dscLicAtividade = _bus.ObterPorEmpreendimento(empreendimento, (eCaracterizacao)tipo);

            dscLicAtividade = _bus.ObterDadosGeo(empreendimento, (eCaracterizacao)tipo, dscLicAtividade);
            if (dscLicAtividade.Id == 0)
            {
                dscLicAtividade.Tipo = tipo;
            }

            vm.CaracterizacaoTipoTexto       = _caracterizacaoBus.ObterCaracterizacoesEmpreendimento(empreendimento).SingleOrDefault(x => (int)x.Tipo == tipo).Nome;
            dscLicAtividade.EmpreendimentoId = empreendimento;
            vm.DscLicAtividade           = dscLicAtividade;
            vm.IsCadastrarCaracterizacao = isCadastrarCaracterizacao;

            vm.ResponsaveisEmpreendimento   = ViewModelHelper.CriarSelectList(_bus.ObterResponsaveis(empreendimento));
            vm.FontesAbastecimentoAguaTipo  = ViewModelHelper.CriarSelectList(_listaBus.DscLicAtvFontesAbastecimentoAguaTipo);
            vm.PontosLancamentoEfluenteTipo = ViewModelHelper.CriarSelectList(_listaBus.DscLicAtvPontosLancamentoEfluenteTipo);
            vm.OutorgaAguaTipo   = ViewModelHelper.CriarSelectList(_listaBus.DscLicAtvOutorgaAguaTipo);
            vm.FontesGeracaoTipo = ViewModelHelper.CriarSelectList(_listaBus.DscLicAtvFontesGeracaoTipo);
            vm.UnidadeTipo       = ViewModelHelper.CriarSelectList(_listaBus.DscLicAtvUnidadeTipo);
            vm.CombustivelTipo   = ViewModelHelper.CriarSelectList(_listaBus.DscLicAtvCombustivelTipo);

            vm.VegetacaoAreaUtil = _listaBus.DscLicAtvVegetacaoAreaUtil;
            vm.Acondicionamento  = _listaBus.DscLicAtvAcondicionamento;
            vm.Estocagem         = _listaBus.DscLicAtvEstocagem;
            vm.Tratamento        = _listaBus.DscLicAtvTratamento;
            vm.DestinoFinal      = _listaBus.DscLicAtvDestinoFinal;

            if (vm.DscLicAtividade.Id > 0)
            {
                vm.DscLicAtividade.Dependencias = _caracterizacaoBus.ObterDependencias(vm.DscLicAtividade.Id, vm.DscLicAtividade.GetTipo, eCaracterizacaoDependenciaTipo.DescricaoLicenciamentoAtividade);

                vm.TextoMerge = _caracterizacaoValidar.DependenciasAlteradas(
                    vm.DscLicAtividade.EmpreendimentoId,
                    vm.DscLicAtividade.Tipo,
                    eCaracterizacaoDependenciaTipo.DescricaoLicenciamentoAtividade,
                    vm.DscLicAtividade.Dependencias);
                vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;
            }

            if (vm.ResponsaveisEmpreendimento != null && vm.ResponsaveisEmpreendimento.Count == 2)
            {
                vm.DscLicAtividade.RespAtividade = Int32.Parse(vm.ResponsaveisEmpreendimento.First(x => int.Parse(x.Value) > 0).Value);
            }

            vm.UrlAvancar = CaracterizacaoVM.GerarUrl(empreendimento, isCadastrarCaracterizacao, (eCaracterizacao)tipo);

            return(View("Criar", vm));
        }
        public ExploracaoFlorestal ObterPorId(int id, bool simplificado = false, BancoDeDados banco = null)
        {
            ExploracaoFlorestal caracterizacao = null;

            try
            {
                caracterizacao = _da.Obter(id, banco, simplificado);
                caracterizacao.Dependencias = _busCaracterizacao.ObterDependencias(caracterizacao.Id, eCaracterizacao.ExploracaoFlorestal, eCaracterizacaoDependenciaTipo.Caracterizacao);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
Пример #4
0
        public RegularizacaoFundiaria ObterPorEmpreendimento(int empreendimento, bool simplificado = false, BancoDeDados banco = null)
        {
            RegularizacaoFundiaria caracterizacao = null;

            try
            {
                caracterizacao = _da.ObterPorEmpreendimento(empreendimento, simplificado, banco);
                caracterizacao.Dependencias = _busCaracterizacao.ObterDependencias(caracterizacao.Id, eCaracterizacao.RegularizacaoFundiaria, eCaracterizacaoDependenciaTipo.Caracterizacao, banco);

                int zona = (int)_busCaracterizacao.ObterEmpreendimentoSimplificado(empreendimento).ZonaLocalizacao;
                caracterizacao.Posses.ForEach(x =>
                {
                    x.Zona = zona;
                });

                caracterizacao.Posses     = caracterizacao.Posses.OrderBy(x => x.Identificacao).ToList();
                caracterizacao.Matriculas = _busDominialidade.ObterPorEmpreendimento(empreendimento).Dominios.Where(x => x.Tipo == eDominioTipo.Matricula).ToList();
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
Пример #5
0
        public List <CaracterizacaoLst> ObterCaracterizacoes(int empreendimento)
        {
            List <CaracterizacaoLst> caracterizacoesRetorno = new List <CaracterizacaoLst>();
            List <CaracterizacaoLst> caracterizacoes        = _caracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);

            caracterizacoes = caracterizacoes.Where(x => x.Id == (int)eCaracterizacao.ExploracaoFlorestal || x.Id == (int)eCaracterizacao.QueimaControlada || x.Id == (int)eCaracterizacao.Silvicultura).ToList();
            int caracterizacao = 0;

            CaracterizacaoBus     caracterizacaoBus     = new CaracterizacaoBus();
            CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();

            foreach (CaracterizacaoLst item in caracterizacoes)
            {
                caracterizacao = caracterizacaoBus.Existe(empreendimento, (eCaracterizacao)item.Id);

                if (caracterizacao <= 0)
                {
                    continue;
                }

                List <Dependencia> dependencias = caracterizacaoBus.ObterDependencias(caracterizacao, (eCaracterizacao)item.Id, eCaracterizacaoDependenciaTipo.Caracterizacao);
                string             retorno      = caracterizacaoValidar.DependenciasAlteradas(empreendimento, item.Id, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias);

                if (!string.IsNullOrEmpty(retorno))
                {
                    continue;
                }

                caracterizacoesRetorno.Add(item);
            }

            return(caracterizacoesRetorno);
        }
Пример #6
0
        internal bool AssociarDependencias(ProjetoDigital projetoDigital)
        {
            Dependencia caracterizacao = projetoDigital.Dependencias.FirstOrDefault(x => x.DependenciaTipo == (int)eCaracterizacaoDependenciaTipo.Caracterizacao) ?? new Dependencia();

            List <Dependencia> dependencias = _busCaracterizacao.ObterDependencias(
                caracterizacao.DependenciaId,
                (eCaracterizacao)caracterizacao.DependenciaCaracterizacao,
                eCaracterizacaoDependenciaTipo.Caracterizacao);

            string retorno = _validarCaracterizacao.DependenciasAlteradas(
                projetoDigital.EmpreendimentoId.GetValueOrDefault(),
                caracterizacao.DependenciaCaracterizacao,
                eCaracterizacaoDependenciaTipo.Caracterizacao,
                dependencias);

            if (!string.IsNullOrEmpty(retorno))
            {
                Validacao.Add(Mensagem.ProjetoDigital.AssociadaProjetoDigitalCaracterizacaoInvalida);
            }
            else
            {
                if ((eCaracterizacao)caracterizacao.DependenciaCaracterizacao == eCaracterizacao.UnidadeProducao)
                {
                    ICaracterizacaoBus caracterizacaoBus = CaracterizacaoBusFactory.Criar(eCaracterizacao.UnidadeProducao);
                    caracterizacaoBus.ValidarAssociar(caracterizacao.DependenciaId, projetoDigital.Id);
                }
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            LaudoVistoriaFundiaria    esp = especificidade as LaudoVistoriaFundiaria;
            CaracterizacaoValidar     caracterizacaoValidar = new CaracterizacaoValidar();
            CaracterizacaoBus         caracterizacaoBus     = new CaracterizacaoBus();
            LaudoVistoriaFundiariaBus busLaudo     = new LaudoVistoriaFundiariaBus();
            List <Dependencia>        dependencias = new List <Dependencia>();

            //Genéricas
            RequerimentoAtividade(esp, false, true);

            if (esp.Destinatario <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFundiariaMsg.DestinatarioObrigatorio);
            }

            if (esp.RegularizacaoDominios.Count <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFundiariaMsg.RegularizacaoDominioObrigatorio);
            }

            int idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.RegularizacaoFundiaria);

            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.RegularizacaoFundiaria, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.RegularizacaoFundiaria, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.LaudoVistoriaFundiariaMsg.RegularizacaoFundiariaInvalida);
                }
            }
            else
            {
                Validacao.Add(Mensagem.LaudoVistoriaFundiariaMsg.RegularizacaoFundiariaObrigatorio);
            }

            #region Regularizacao fundiaria

            List <Int32> idsPossesRegularizacao = busLaudo.ObterPossesRegularizacao(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault()).Select(x => Convert.ToInt32(x.Id)).ToList();
            esp.RegularizacaoDominios.ForEach(x =>
            {
                if (!idsPossesRegularizacao.Contains(x.DominioId))
                {
                    Validacao.Add(Mensagem.LaudoVistoriaFundiariaMsg.RegularizacaoDominioInexistente);
                }
            });

            #endregion

            ValidacoesGenericasBus.DataMensagem(esp.DataVistoria, "Laudo_DataVistoria_DataTexto", "vistoria");

            if (busLaudo.ExistePecaTecnica(esp.Atividades.First().Id, esp.ProtocoloReq.Id) <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFundiariaMsg.PecaTecnicaObrigatorio(esp.Atividades.First().NomeAtividade));
            }

            return(Validacao.EhValido);
        }
        public CadastroAmbientalRural ObterPorEmpreendimento(int empreendimento, bool finalizado, bool simplificado = false, BancoDeDados banco = null)
        {
            CadastroAmbientalRural caracterizacao = null;

            try
            {
                caracterizacao = _da.ObterPorEmpreendimento(empreendimento, simplificado, finalizado);
                caracterizacao.SituacaoProcessamento = ObterSituacaoProcessamento(caracterizacao.EmpreendimentoId);
                caracterizacao.Dependencias          = _caracterizacaoBus.ObterDependencias(caracterizacao.Id, eCaracterizacao.CadastroAmbientalRural, eCaracterizacaoDependenciaTipo.Caracterizacao);

                caracterizacao.PercentMaximaRecuperacaoAPP = CalcularPorcentagemMaximaModuloFiscal(caracterizacao.ATPQuantidadeModuloFiscal);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
Пример #9
0
        public Dominialidade ObterPorEmpreendimento(int empreendimento, bool simplificado = false, BancoDeDados banco = null, bool isVisualizar = false)
        {
            Dominialidade caracterizacao = null;

            try
            {
                caracterizacao = _da.ObterPorEmpreendimento(empreendimento, simplificado: simplificado);
                caracterizacao.Dependencias = _busCaracterizacao.ObterDependencias(caracterizacao.Id, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);

                Dominialidade caracterizacaoGeo = _da.ObterDadosGeo(empreendimento);
                caracterizacao.ATPCroqui = caracterizacaoGeo.ATPCroqui;

                caracterizacao.Dominios.SelectMany(caract => caract.ReservasLegais).ToList().ForEach(reserva =>
                {
                    caracterizacaoGeo.Dominios.SelectMany(caractGeo => caractGeo.ReservasLegais)
                    .Where(reservaGeo => reservaGeo.Identificacao == reserva.Identificacao).ToList().ForEach(r =>
                    {
                        reserva.Coordenada.EastingUtm  = r.Coordenada.EastingUtm;
                        reserva.Coordenada.NorthingUtm = r.Coordenada.NorthingUtm;
                        reserva.SituacaoVegetalId      = r.SituacaoVegetalId;
                        reserva.SituacaoVegetalTexto   = r.SituacaoVegetalTexto;
                    });
                });

                foreach (Dominio dominio in caracterizacao.Dominios)
                {
                    foreach (ReservaLegal reserva in dominio.ReservasLegais)
                    {
                        if (!string.IsNullOrEmpty(reserva.MatriculaIdentificacao))
                        {
                            Dominio dominioAux = caracterizacao.Dominios.SingleOrDefault(x => x.Identificacao == reserva.MatriculaIdentificacao);

                            if (dominioAux == null)
                            {
                                continue;
                            }

                            reserva.MatriculaTexto = dominioAux.Matricula + " - " + dominioAux.Folha + " - " + dominioAux.Livro;
                        }
                    }
                }

                //poderia ser qualquer uma das novas areas da release 2.2.33.0
                if (!isVisualizar && !caracterizacao.Areas.Exists(x => x.Tipo == (int)eDominialidadeArea.ARL_PRESERVADA))
                {
                    ObterDominialidadeARL(caracterizacao);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            #region Variáveis

            OutrosInformacaoCorteDa _da = new OutrosInformacaoCorteDa();
            CaracterizacaoBus       caracterizacaoBus     = new CaracterizacaoBus();
            CaracterizacaoValidar   caracterizacaoValidar = new CaracterizacaoValidar();
            List <Dependencia>      dependencias          = new List <Dependencia>();
            OutrosInformacaoCorte   esp             = especificidade as OutrosInformacaoCorte;
            List <Caracterizacao>   caracterizacoes = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            int idCaracterizacao;

            #endregion

            RequerimentoAtividade(esp);
            Destinatario(esp.ProtocoloReq.Id, esp.Destinatario, "Outros_Destinatarios");

            // Atividade Informação de corte
            if (esp.Atividades[0].Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.InformacaoDeCorte))
            {
                Validacao.Add(Mensagem.OutrosInformacaoCorte.AtividadeInvalida(esp.Atividades[0].NomeAtividade));
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.InformacaoCorte);
            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.InformacaoCorte, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.OutrosInformacaoCorte.CaracterizacaoValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.InformacaoCorte).Nome));
                }
            }
            else
            {
                Validacao.Add(Mensagem.OutrosInformacaoCorte.CaracterizacaoCadastrada);
            }

            if (esp.InformacaoCorte == 0)
            {
                Validacao.Add(Mensagem.OutrosInformacaoCorte.InformacaoCorteObrigatorio);
            }
            else if (!_da.IsInformacaoCorteCadastrado(esp.InformacaoCorte))
            {
                Validacao.Add(Mensagem.OutrosInformacaoCorte.InformacaoCorteInexistente);
            }
            else if (_da.IsInformacaoCorteAssociado(esp.InformacaoCorte, esp.Id))
            {
                Validacao.Add(Mensagem.OutrosInformacaoCorte.InformacaoCorteAssociado);
            }


            return(Validacao.EhValido);
        }
        public ProjetoGeografico ObterProjeto(int projetoGeoID, int projetoDigitalID = 0, bool simplificado = false)
        {
            ProjetoGeografico projeto = null;

            try
            {
                projeto = _da.Obter(projetoGeoID, null, simplificado, (!_da.ValidarProjetoGeograficoTemporario(projetoGeoID)));

                if (projeto.Id > 0 && !simplificado)
                {
                    projeto.Dependencias = _caracterizacaoBus.ObterDependencias(projetoGeoID, (eCaracterizacao)projeto.CaracterizacaoId, eCaracterizacaoDependenciaTipo.ProjetoGeografico);

                    ObterOrtofotos(projeto);

                    #region Sobreposicoes

                    if (projeto.Sobreposicoes.Itens != null && projeto.Sobreposicoes.Itens.Count > 0)
                    {
                        foreach (var item in SobreposicaoTipo)
                        {
                            if (projeto.Sobreposicoes.Itens.Exists(x => x.Tipo == item.Id))
                            {
                                projeto.Sobreposicoes.Itens.First(x => x.Tipo == item.Id).TipoTexto = item.Texto;
                            }
                            else
                            {
                                projeto.Sobreposicoes.Itens.Add(new Sobreposicao()
                                {
                                    Tipo          = item.Id,
                                    TipoTexto     = item.Texto,
                                    Base          = (int)((item.Id == (int)eSobreposicaoTipo.OutrosEmpreendimento) ? eSobreposicaoBase.IDAF : eSobreposicaoBase.GeoBase),
                                    Identificacao = " - "
                                });
                            }
                        }
                    }

                    #endregion
                }

                return(projeto);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(projeto);
        }
Пример #12
0
        public Barragem ObterPorEmpreendimento(int empreendimento, bool simplificado = false, BancoDeDados banco = null)
        {
            Barragem caracterizacao = null;

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

            return(caracterizacao);
        }
Пример #13
0
        public SilviculturaATV ObterPorEmpreendimento(int EmpreendimentoId, bool simplificado = false, BancoDeDados banco = null)
        {
            SilviculturaATV caracterizacao = null;

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

            return(caracterizacao);
        }
Пример #14
0
        public ProducaoCarvaoVegetal ObterPorEmpreendimento(int EmpreendimentoId, bool simplificado = false, BancoDeDados banco = null)
        {
            ProducaoCarvaoVegetal caracterizacao = null;

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

            return(caracterizacao);
        }
Пример #15
0
        public Dominialidade ObterPorEmpreendimento(int empreendimento, int projetoDigitalId = 0, bool simplificado = false, BancoDeDados banco = null, bool isVisualizar = false)
        {
            Dominialidade caracterizacao = null;

            try
            {
                List <Caracterizacao> caracterizacoesAssociadas = _busCaracterizacao.ObterCaracterizacoesAssociadasProjetoDigital(projetoDigitalId).Where(x => x.Tipo == eCaracterizacao.Dominialidade).ToList();

                if (caracterizacoesAssociadas != null && caracterizacoesAssociadas.Count > 0)
                {
                    caracterizacao = ObterHistorico(caracterizacoesAssociadas.FirstOrDefault().Id, caracterizacoesAssociadas.FirstOrDefault().Tid);
                }
                else
                {
                    caracterizacao = _da.ObterPorEmpreendimento(empreendimento, simplificado: simplificado);
                    caracterizacao.Dependencias = _busCaracterizacao.ObterDependencias(caracterizacao.Id, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);

                    Dominialidade caracterizacaoGeo = _da.ObterDadosGeo(empreendimento);
                    caracterizacao.ATPCroqui = caracterizacaoGeo.ATPCroqui;

                    caracterizacao.Dominios.SelectMany(caract => caract.ReservasLegais).ToList().ForEach(reserva =>
                    {
                        caracterizacaoGeo.Dominios.SelectMany(caractGeo => caractGeo.ReservasLegais)
                        .Where(reservaGeo => reservaGeo.Identificacao == reserva.Identificacao).ToList().ForEach(r =>
                        {
                            reserva.Coordenada           = r.Coordenada;
                            reserva.Coordenada.Datum.Id  = 1;
                            reserva.Coordenada.Tipo.Id   = 3;
                            reserva.SituacaoVegetalId    = r.SituacaoVegetalId;
                            reserva.SituacaoVegetalTexto = r.SituacaoVegetalTexto;
                        });
                    });

                    foreach (Dominio dominio in caracterizacao.Dominios)
                    {
                        foreach (ReservaLegal reserva in dominio.ReservasLegais)
                        {
                            if (!string.IsNullOrEmpty(reserva.MatriculaIdentificacao))
                            {
                                Dominio dominioAux = caracterizacao.Dominios.SingleOrDefault(x => x.Identificacao == reserva.MatriculaIdentificacao);

                                if (dominioAux == null)
                                {
                                    continue;
                                }

                                reserva.MatriculaTexto = dominioAux.Matricula + " - " + dominioAux.Folha + " - " + dominioAux.Livro;
                            }
                        }
                    }
                }
                if (!isVisualizar && !caracterizacao.Areas.Exists(x => x.Tipo == (int)eDominialidadeArea.ARL_PRESERVADA))
                {
                    ObterDominialidadeARL(caracterizacao);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(caracterizacao);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            LaudoVistoriaFlorestal esp = especificidade as LaudoVistoriaFlorestal;

            RequerimentoAtividade(esp, apenasObrigatoriedade: true);

            Destinatario(especificidade.ProtocoloReq.Id, esp.Destinatario, "Laudo_Destinatario");

            ValidacoesGenericasBus.DataMensagem(esp.DataVistoria, "Laudo_DataVistoria_DataTexto", "vistoria");

            if (String.IsNullOrWhiteSpace(esp.Objetivo))
            {
                Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.ObjetivoObrigatorio);
            }

            if (esp.Caracterizacao <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.CaracterizacaoObrigatoria);
            }
            else
            {
                CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
                int caracterizacao = caracterizacaoBus.Existe(esp.Titulo.EmpreendimentoId.GetValueOrDefault(), (eCaracterizacao)esp.Caracterizacao);

                if (caracterizacao <= 0)
                {
                    Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.CaracterizacaoCadastrada);
                }
                else
                {
                    CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();
                    List <Dependencia>    dependencias          = caracterizacaoBus.ObterDependencias(caracterizacao,
                                                                                                      (eCaracterizacao)esp.Caracterizacao,
                                                                                                      eCaracterizacaoDependenciaTipo.Caracterizacao);

                    string retorno = caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(),
                                                                                 esp.Caracterizacao,
                                                                                 eCaracterizacaoDependenciaTipo.Caracterizacao,
                                                                                 dependencias);

                    if (!string.IsNullOrEmpty(retorno))
                    {
                        List <CaracterizacaoLst> caracterizacoes = _caracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
                        Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.CaracterizacaoInvalida(caracterizacoes.SingleOrDefault(x => x.Id == esp.Caracterizacao).Texto));
                    }
                }
            }

            if (String.IsNullOrWhiteSpace(esp.Consideracao))
            {
                Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.ConsideracoesObrigatorio);
            }

            if (String.IsNullOrWhiteSpace(esp.ParecerDescricao))
            {
                Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.ParecerTecnicoDescricaoObrigatorio);
            }

            if (esp.Conclusao <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFlorestalMsg.ConclusaoObrigatoria);
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(CARSolicitacao entidade)
        {
            if (!_protocoloDa.EmPosse(entidade.Protocolo.Id.GetValueOrDefault()))
            {
                Validacao.Add(Mensagem.CARSolicitacao.ProtocoloPosse);
                return(false);
            }

            if (entidade.SituacaoId <= 0)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoSituacaoObrigatoria);
            }

            if (entidade.Protocolo == null || entidade.Protocolo.Id.GetValueOrDefault(0) <= 0)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoProtocoloObrigatorio);
            }

            if (entidade.Requerimento.Id <= 0)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoRequerimentoObrigatorio);
            }

            _requerimentoValidar.Existe(entidade.Requerimento.Id);

            if (entidade.SituacaoId == (int)eCARSolicitacaoSituacao.EmCadastro)
            {
                if (entidade.Protocolo.Id.GetValueOrDefault() != entidade.ProtocoloSelecionado.Id.GetValueOrDefault())
                {
                    if (!_da.ExisteProtocoloAssociado(entidade.Protocolo.Id.GetValueOrDefault(), entidade.ProtocoloSelecionado.Id.GetValueOrDefault()))
                    {
                        Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoRequerimentoDesassociadoProtocolo(entidade.Requerimento.Numero.ToString()));
                    }
                }

                String numeroProtocoloPai = _da.ObterNumeroProtocoloPai(entidade.Protocolo.Id.GetValueOrDefault(0));
                if (!String.IsNullOrWhiteSpace(numeroProtocoloPai))
                {
                    Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoProtocoloApensadoEmOutroProcesso(numeroProtocoloPai));
                }
            }

            #region Atividade

            if (entidade.Atividade.Id <= 0)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoAtividadeObrigatoria);
            }
            else
            {
                if (entidade.Atividade.Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.CadastroAmbientalRural))
                {
                    Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoAtividadeInvalida);
                }
            }

            #endregion Atividade

            #region Validar Dados do Titulo

            String tituloSituacao = _da.ObterSituacaoTituloCARExistente(entidade.Empreendimento.Id);

            if (!String.IsNullOrWhiteSpace(tituloSituacao))
            {
                Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoPossuiTitulo(tituloSituacao));
                return(false);
            }

            #endregion Validar Dados do Titulo

            #region Empreendimento

            if (!entidade.Empreendimento.Codigo.HasValue)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoEmpreendimentoCodigoObrigatorio);
            }

            if (entidade.Empreendimento.Id <= 0)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoEmpreendimentoObrigatorio);
            }
            else
            {
                String situacao = _da.EmpreendimentoPossuiSolicitacao(entidade.Id, entidade.Empreendimento.Id);
                if (!String.IsNullOrEmpty(situacao))
                {
                    Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoJaPossuiSolicitacao(situacao));
                    return(Validacao.EhValido);
                }

                situacao = _carSolicitacaoCredenciadoBus.EmpreendimentoPossuiSolicitacao(entidade.Empreendimento.Id);
                if (!String.IsNullOrEmpty(situacao))
                {
                    Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoJaPossuiSolicitacao(situacao));
                    return(Validacao.EhValido);
                }

                entidade.Empreendimento.CNPJ = _da.ObterCNPJEmpreendimento(entidade.Empreendimento.Id);
                if (!String.IsNullOrWhiteSpace(entidade.Empreendimento.CNPJ))
                {
                    situacao = _carSolicitacaoCredenciadoBus.EmpreendimentoPossuiSolicitacao(entidade.Empreendimento.CNPJ);
                    if (!String.IsNullOrEmpty(situacao))
                    {
                        Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoJaPossuiSolicitacao(situacao));
                        return(Validacao.EhValido);
                    }
                }
            }

            #endregion Empreendimento

            #region Validar Dados da Caracterizacao

            if (_da.EmpreendimentoProjetoGeograficoDominialidadeNaoFinalizado(entidade.Empreendimento.Id))
            {
                Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoProjetoGeograficoDominialidadeNaoFinalizado);
            }
            else
            {
                int idCaracterizacao = 0;
                List <Dependencia> dependencias;

                idCaracterizacao = _caracterizacaoBus.Existe(entidade.Empreendimento.Id, eCaracterizacao.Dominialidade);

                if (idCaracterizacao > 0)
                {
                    dependencias = _caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);
                    if (_caracterizacaoValidar.DependenciasAlteradas(entidade.Empreendimento.Id, (int)eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                    {
                        Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoDominialidadeInvalida);
                    }
                }
                else
                {
                    Validacao.Add(Mensagem.CARSolicitacao.EmpreendimentoDominialidadeInexistente);
                }
            }

            #endregion Validar Dados da Caracterizacao

            if (entidade.Declarante.Id <= 0)
            {
                Validacao.Add(Mensagem.CARSolicitacao.SolicitacaoDeclaranteObrigatorio);
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            #region Variáveis

            OutrosLegitimacaoTerraDevolutaDa _da                 = new OutrosLegitimacaoTerraDevolutaDa();
            CaracterizacaoBus              caracterizacaoBus     = new CaracterizacaoBus();
            CaracterizacaoValidar          caracterizacaoValidar = new CaracterizacaoValidar();
            List <Dependencia>             dependencias          = new List <Dependencia>();
            OutrosLegitimacaoTerraDevoluta esp             = especificidade as OutrosLegitimacaoTerraDevoluta;
            List <Caracterizacao>          caracterizacoes = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            int    idCaracterizacao;
            string titulo = string.Empty;

            #endregion

            #region Requerimento

            //O requerimento <nº> não está mais associado ao processo <nº>.
            //A atividade <nome> não está mais associada ao processo.
            //A atividade <nome> deve estar na situação ‘em andamento’.
            //Este modelo de título não foi solicitado para a atividade <nome>’.

            RequerimentoAtividade(esp, apenasObrigatoriedade: true);

            #endregion

            #region Atividade

            //O modelo de título <nome do modelo> não pode ser utilizado para atividade <nome da atividade selecionada na especificidade do título>.
            if (!ConfiguracaoAtividade.ObterId(new[] {
                (int)eAtividadeCodigo.RegularizacaoFundiariaRural,
                (int)eAtividadeCodigo.RegularizacaoFundiariaUrbana,
                (int)eAtividadeCodigo.RegularizacaoFundiariaRuralOriundaDeProcessoDiscriminatorio,
                (int)eAtividadeCodigo.RegularizacaoFundiariaUrbanaOriundaDeProcessoDiscriminatorio
            }).Any(x => x == esp.Atividades[0].Id))
            {
                Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.AtividadeInvalida(esp.Atividades[0].NomeAtividade));
            }

            #endregion

            #region Destinatários

            if (esp.Destinatarios.Count == 0)
            {
                Validacao.Add(Mensagem.Especificidade.DestinatarioObrigatorio("Outros_Destinatarios"));
            }
            else
            {
                esp.Destinatarios.ForEach(x =>
                {
                    Destinatario(esp.ProtocoloReq.Id, x.Id, "Outros_Destinatarios");
                });
            }

            #endregion

            #region Caracterização

            //A caracterização de <nome da caracterização> deve estar cadastrada.
            //Para cadastrar este modelo de título é necessário ter os dados da caracterização <nome da caracterização dependente> válidos.

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.RegularizacaoFundiaria);
            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.RegularizacaoFundiaria, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.RegularizacaoFundiaria, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.CaracterizacaoValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.RegularizacaoFundiaria).Nome));
                }
            }
            else
            {
                Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.CaracterizacaoCadastrada);
            }

            #endregion

            #region Posse

            if (esp.Dominio == 0)
            {
                Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.DominioObrigatorio);
            }
            else
            {
                if (!_da.IsDominioCadastrado(esp.Dominio))
                {
                    Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.DominioInexistente);
                }

                TituloEsp tituloAux = _da.IsDominioAssociado(esp.Dominio, esp.Titulo.Id);
                switch ((eTituloSituacao)tituloAux.SituacaoId)
                {
                case eTituloSituacao.Cadastrado:
                case eTituloSituacao.Emitido:
                case eTituloSituacao.Assinado:
                    Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.PosseAssociadaSituacao(tituloAux.SituacaoTexto));
                    break;

                case eTituloSituacao.Concluido:
                case eTituloSituacao.Prorrogado:
                    Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.PosseAssociadaNumero(tituloAux.Numero.Texto));
                    break;
                }
            }

            #endregion

            if (string.IsNullOrWhiteSpace(esp.ValorTerreno))
            {
                Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.ValorTerrenoObrigatorio);
            }

            if (!esp.IsInalienabilidade.HasValue)
            {
                Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.IsInalienabilidadeObrigatorio);
            }

            if (esp.MunicipioGlebaId <= 0)
            {
                Validacao.Add(Mensagem.OutrosLegitimacaoTerraDevolutaMsg.MunicipioGlebaObrigatorio);
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            LaudoVistoriaFomentoFlorestal esp = especificidade as LaudoVistoriaFomentoFlorestal;

            RequerimentoAtividade(esp, false, true);

            Destinatario(especificidade.ProtocoloReq.Id, esp.Destinatario, "Laudo_Destinatario");

            ValidacoesGenericasBus.DataMensagem(esp.DataVistoria, "Laudo_DataVistoria_DataTexto", "vistoria");

            if (String.IsNullOrWhiteSpace(esp.Objetivo))
            {
                Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.ObjetivoObrigatorio);
            }

            if (String.IsNullOrWhiteSpace(esp.Consideracoes))
            {
                Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.ConsideracoesObrigatorio);
            }

            if (String.IsNullOrWhiteSpace(esp.DescricaoParecer))
            {
                Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.ParecerTecnicoObrigatorio);
            }

            if (esp.ConclusaoTipo <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.ConclusaoObrigatoria);
            }

            #region Caracterizacao

            CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
            int caracterizacao = caracterizacaoBus.Existe(esp.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.SilviculturaATV);

            if (caracterizacao <= 0)
            {
                Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.CaracterizacaoCadastrada);
            }
            else
            {
                CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();
                List <Dependencia>    dependencias          = caracterizacaoBus.ObterDependencias(caracterizacao, eCaracterizacao.SilviculturaATV, eCaracterizacaoDependenciaTipo.Caracterizacao);

                string retorno = caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(),
                                                                             (int)eCaracterizacao.SilviculturaATV,
                                                                             eCaracterizacaoDependenciaTipo.Caracterizacao,
                                                                             dependencias);

                if (!string.IsNullOrEmpty(retorno))
                {
                    List <CaracterizacaoLst> caracterizacoes = _caracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
                    Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.CaracterizacaoInvalida(caracterizacoes.SingleOrDefault(x => x.Id == (int)eCaracterizacao.SilviculturaATV).Texto));
                }
            }

            #endregion

            #region Atividade

            foreach (var atividade in esp.Atividades)
            {
                if (atividade.Id != 0 && atividade.Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.ImplantacaoAtividadeSilviculturaReferenteAoFomentoFlorestal))
                {
                    List <ProcessoAtividadeItem> atividades = _atividadeConfig.Obter <List <ProcessoAtividadeItem> >(ConfiguracaoProcesso.KeyAtividadesProcesso);
                    Validacao.Add(Mensagem.LaudoVistoriaFomentoFlorestal.AtividadeInvalida(atividades.SingleOrDefault(x => x.Id == atividade.Id).Texto));
                }
            }

            #endregion

            return(Validacao.EhValido);
        }
Пример #20
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 bool Salvar(IEspecificidade especificidade)
        {
            TermoCPFARLDa         _da = new TermoCPFARLDa();
            EspecificidadeDa      _daEspecificidade     = new EspecificidadeDa();
            DominialidadeDa       _daDominialidade      = new DominialidadeDa();
            CaracterizacaoBus     caracterizacaoBus     = new CaracterizacaoBus();
            CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();
            List <Dependencia>    dependencias          = new List <Dependencia>();
            TermoCPFARL           esp             = especificidade as TermoCPFARL;
            List <Caracterizacao> caracterizacoes = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            List <PessoaLst>      destinatarios   = _daEspecificidade.ObterInteressados(esp.ProtocoloReq.Id);
            List <ReservaLegal>   reservas;
            int idCaracterizacao;
            int tipo;

            RequerimentoAtividade(esp);

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

            if (esp.Destinatarios.Count == 0)
            {
                Validacao.Add(Mensagem.Especificidade.DestinatarioObrigatorio("Termo_Destinatario"));
            }
            else
            {
                esp.Destinatarios.ForEach(x =>
                {
                    if (destinatarios.SingleOrDefault(y => y.Id == x.Id) == null)
                    {
                        Validacao.Add(Mensagem.Especificidade.DestinatarioDesassociado("Termo_Destinatario", x.Nome));
                    }
                    else
                    {
                        tipo = _daEspecificidade.ObterDadosPessoa(x.Id).Tipo;
                        if (tipo == 3 || tipo == 4)
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.DestinatarioNaoPermitido);
                        }
                    }
                });
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.Dominialidade);
            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.TermoCPFARLMsg.CaracterizacaoDeveEstarValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.Dominialidade).Nome));
                }
                else
                {
                    reservas = new List <ReservaLegal>();

                    Dominialidade dominialidade = _daDominialidade.ObterPorEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(0));
                    dominialidade.Dominios.ForEach(x => { x.ReservasLegais.ForEach(reserva => { reservas.Add(reserva); }); });

                    if (reservas == null || reservas.Count == 0)
                    {
                        Validacao.Add(Mensagem.TermoCPFARLMsg.ArlInexistente);
                    }
                    else
                    {
                        if (reservas.Exists(x => x.SituacaoVegetalId == (int)eReservaLegalSituacaoVegetal.NaoCaracterizada || x.SituacaoVegetalId == (int)eReservaLegalSituacaoVegetal.EmUso))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.ARLSituacaoVegetalInvalida);
                        }

                        if (reservas.Exists(x => x.SituacaoId != (int)eReservaLegalSituacao.Proposta))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.DominioSituacaoInvalida);
                        }

                        if (reservas.Exists(x => x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoMatriculaCedente ||
                                            x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoMatriculaReceptora ||
                                            x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente ||
                                            x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.LocalizacaoInvalida);
                        }
                    }
                }
            }
            else
            {
                Validacao.Add(Mensagem.TermoCPFARLMsg.DominialidadeInexistente);
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            #region Validacoes Genericas

            LaudoAuditoriaFomentoFlorestal esp = especificidade as LaudoAuditoriaFomentoFlorestal;
            RequerimentoAtividade(esp, false, true);

            Destinatario(especificidade.ProtocoloReq.Id, esp.Destinatario, "Laudo_Destinatario");

            ValidacoesGenericasBus.DataMensagem(esp.DataVistoria, "Laudo_DataVistoria_DataTexto", "vistoria");

            #endregion

            #region Objetivo

            if (String.IsNullOrWhiteSpace(esp.Objetivo))
            {
                Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.ObjetivoObrigatorio);
            }

            #endregion

            #region PlantioAPP

            if (!esp.PlantioAPP.HasValue)
            {
                Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioAPPObrigatorio);
            }
            else
            {
                if (esp.PlantioAPP.Value == 1)
                {
                    if (!String.IsNullOrWhiteSpace(esp.PlantioAPPArea))
                    {
                        Decimal aux = 0;
                        if (!Decimal.TryParse(esp.PlantioAPPArea, out aux))
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioAPPAreaInvalida);
                        }

                        if (aux <= 0)
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioAPPAreaMaiorZero);
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioAPPAreaObrigatoria);
                    }
                }
            }

            #endregion

            #region PlantioMudasEspeciesFlorestNativas

            if (!esp.PlantioMudasEspeciesFlorestNativas.HasValue)
            {
                Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasObrigatorio);
            }
            else
            {
                if (esp.PlantioMudasEspeciesFlorestNativas.Value == 1)
                {
                    if (!String.IsNullOrWhiteSpace(esp.PlantioMudasEspeciesFlorestNativasArea))
                    {
                        Decimal aux = 0;
                        if (!Decimal.TryParse(esp.PlantioMudasEspeciesFlorestNativasArea, out aux))
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasAreaInvalida);
                        }

                        if (aux <= 0)
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasAreaMaiorZero);
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasAreaObrigatoria);
                    }

                    if (!String.IsNullOrWhiteSpace(esp.PlantioMudasEspeciesFlorestNativasQtd))
                    {
                        Decimal aux = 0;
                        if (!Decimal.TryParse(esp.PlantioMudasEspeciesFlorestNativasQtd, out aux))
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasQtdInvalida);
                        }

                        if (aux <= 0)
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasQtdMaiorZero);
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PlantioMudasEspeciesFlorestNativasQtdObrigatoria);
                    }
                }
            }

            #endregion

            #region PreparoSolo

            if (!esp.PreparoSolo.HasValue)
            {
                Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PreparoSoloObrigatorio);
            }
            else
            {
                if (esp.PreparoSolo.Value == 1)
                {
                    if (!String.IsNullOrWhiteSpace(esp.PreparoSoloArea))
                    {
                        Decimal aux = 0;
                        if (!Decimal.TryParse(esp.PreparoSoloArea, out aux))
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PreparoSoloAreaInvalida);
                        }

                        if (aux <= 0)
                        {
                            Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PreparoSoloAreaMaiorZero);
                        }
                    }
                    else
                    {
                        Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.PreparoSoloAreaObrigatoria);
                    }
                }
            }

            #endregion

            #region Resultado

            if (esp.ResultadoTipo <= 0)
            {
                Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.ResultadoObrigatorio);
            }
            else
            {
                if (esp.ResultadoTipo == (int)eEspecificidadeResultado.NaoConforme)
                {
                    if (String.IsNullOrWhiteSpace(esp.ResultadoQuais))
                    {
                        Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.ResultadoQuaisObrigatorio);
                    }
                }
            }

            #endregion

            #region Caracterizacao

            CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
            int caracterizacao = caracterizacaoBus.Existe(esp.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.SilviculturaATV);

            if (caracterizacao <= 0)
            {
                Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.CaracterizacaoCadastrada);
            }
            else
            {
                CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();
                List <Dependencia>    dependencias          = caracterizacaoBus.ObterDependencias(caracterizacao, eCaracterizacao.SilviculturaATV, eCaracterizacaoDependenciaTipo.Caracterizacao);

                string retorno = caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(),
                                                                             (int)eCaracterizacao.SilviculturaATV,
                                                                             eCaracterizacaoDependenciaTipo.Caracterizacao,
                                                                             dependencias);

                if (!string.IsNullOrEmpty(retorno))
                {
                    List <CaracterizacaoLst> caracterizacoes = _caracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
                    Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.CaracterizacaoInvalida(caracterizacoes.SingleOrDefault(x => x.Id == (int)eCaracterizacao.SilviculturaATV).Texto));
                }
            }

            #endregion

            #region Atividade

            foreach (var atividade in esp.Atividades)
            {
                if (atividade.Id != 0 && atividade.Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.ImplantacaoAtividadeSilviculturaReferenteAoFomentoFlorestal))
                {
                    List <ProcessoAtividadeItem> atividades = _atividadeConfig.Obter <List <ProcessoAtividadeItem> >(ConfiguracaoProcesso.KeyAtividadesProcesso);
                    Validacao.Add(Mensagem.LaudoAuditoriaFomentoFlorestal.AtividadeInvalida(atividades.SingleOrDefault(x => x.Id == atividade.Id).Texto));
                }
            }

            #endregion

            return(Validacao.EhValido);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            CadastroAmbientalRuralTitulo esp = especificidade as CadastroAmbientalRuralTitulo;

            List <Dependencia>    dependencias    = new List <Dependencia>();
            List <Caracterizacao> caracterizacoes = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            int idCaracterizacao;

            RequerimentoAtividade(esp);

            if (Destinatario(especificidade.ProtocoloReq.Id, esp.Destinatario, "CadastroAmbientalRuralTitulo_Destinatario"))
            {
                if (!ValidarDestinatarioIsRepresentanteEmpreendimento(esp.ProtocoloReq.Id, esp.Destinatario))
                {
                    Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.DestinatarioNaoEstaAssociadoEmpreendimento);
                }
            }

            if (esp.Atividades[0].Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.CadastroAmbientalRural))
            {
                Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.AtividadeInvalida);
            }
            else
            {
                String tituloNumero = _da.ObterNumeroTituloCARExistente(esp.Titulo.EmpreendimentoId.GetValueOrDefault(0));

                if (!String.IsNullOrWhiteSpace(tituloNumero))
                {
                    Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.AtividadeJaAssociadaOutroTitulo(tituloNumero));
                }
            }

            #region Caracterizacao

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.CadastroAmbientalRural);
            if (idCaracterizacao > 0)
            {
                if (especificidade.Titulo.EmpreendimentoId.GetValueOrDefault() > 0)
                {
                    if (_da.EmpreendimentoCaracterizacaoCARNaoFinalizada(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault()))
                    {
                        Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.EmpreendimentoCaracterizacaoCARNaoFinalizada);
                        return(Validacao.EhValido);
                    }
                }

                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.CadastroAmbientalRural, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.CadastroAmbientalRural, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.CaracterizacaoValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.CadastroAmbientalRural).Nome));
                }
            }
            else
            {
                Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.CaracterizacaoNaoCadastrada);
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.Dominialidade);
            if (idCaracterizacao > 0)
            {
                if (_da.EmpreendimentoCaracterizacaoCARNaoFinalizada(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault()))
                {
                    Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.EmpreendimentoCaracterizacaoCARNaoFinalizada);
                    return(Validacao.EhValido);
                }

                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.CaracterizacaoValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.Dominialidade).Nome));
                }
            }
            else
            {
                Validacao.Add(Mensagem.CadastroAmbientalRuralTitulo.DominialidadeInexistente);
            }

            #endregion

            return(Validacao.EhValido);
        }