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 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 bool Salvar(IEspecificidade especificidade)
        {
            CertificadoRegistroAtividadeFlorestal esp = especificidade as CertificadoRegistroAtividadeFlorestal;
            CaracterizacaoBus     caracterizacaoBus   = new CaracterizacaoBus();
            List <Caracterizacao> caracterizacoes     = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());

            RequerimentoAtividade(esp, jaAssociado: false);            //Validação de Atividade já associada feita a seguir

            ValidarTituloUnicoPorEmpreendimentoAtividade(esp);

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

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

            if (idCaracterizacao > 0)
            {
                ICaracterizacaoBus busCaract = CaracterizacaoBusFactory.Criar(eCaracterizacao.RegistroAtividadeFlorestal);

                bool isPossui = false;

                busCaract.ObterAtividadesCaracterizacao(especificidade.Titulo.EmpreendimentoId.Value).ForEach(x =>
                {
                    if (esp.Atividades[0].Id == x)
                    {
                        isPossui = true;
                        return;
                    }
                });

                if (!isPossui)
                {
                    Validacao.Add(Mensagem.CertificadoRegistroAtividadeFlorestalMsg.CaracterizacaoAtividadeInexistente);
                }
            }
            else
            {
                Validacao.Add(Mensagem.CertificadoRegistroAtividadeFlorestalMsg.RegistroAtividadeFlorestalInexistente);
            }

            #region Campos da especifícidade

            if (string.IsNullOrWhiteSpace(esp.Vias))
            {
                Validacao.Add(Mensagem.CertificadoRegistroAtividadeFlorestalMsg.ViaObrigatorio);
            }
            else if (esp.Vias == "0")
            {
                Validacao.Add(Mensagem.CertificadoRegistroAtividadeFlorestalMsg.ViaObrigatorio);
            }

            if (string.IsNullOrWhiteSpace(esp.AnoExercicio))
            {
                Validacao.Add(Mensagem.CertificadoRegistroAtividadeFlorestalMsg.AnoExercicioObrigatorio);
            }

            #endregion

            return(Validacao.EhValido);
        }
        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);
        }
示例#5
0
        public bool Salvar(IEspecificidade especificidade)
        {
            AutorizacaoExploracaoFlorestal esp = especificidade as AutorizacaoExploracaoFlorestal;
            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, solicitado: false, jaAssociado: false, atividadeAndamento: false);

            if (!String.IsNullOrWhiteSpace(esp.Observacao) && esp.Observacao.Length > 500)
            {
                Validacao.Add(Mensagem.AutorizacaoExploracaoFlorestal.ObservacaoMuitoGrande);
            }

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

            if ((esp.TitulosAssociado.FirstOrDefault() ?? new TituloAssociadoEsp()).Id <= 0)
            {
                Validacao.Add(Mensagem.AutorizacaoExploracaoFlorestal.LaudoVistoriaObrigatorio);
            }
            else
            {
                var situacaoLaudo = _daEspecificidade.ObterTituloAssociado(esp.TitulosAssociado.FirstOrDefault().Id).Situacao;
                if (situacaoLaudo != (int)eTituloSituacao.Concluido && situacaoLaudo != (int)eTituloSituacao.Prorrogado)
                {
                    Validacao.Add(Mensagem.AutorizacaoExploracaoFlorestal.LaudoVistoriaDeveEstarConcluidoOuProrrogado);
                }
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.ExploracaoFlorestal);
            if (idCaracterizacao == 0)
            {
                Validacao.Add(Mensagem.AutorizacaoExploracaoFlorestal.ExploracaoInexistente);
            }

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

            return(Validacao.EhValido);
        }
示例#6
0
        public bool EnviarBasicas(ProjetoDigital projeto, bool validardesatualizadas = false)
        {
            if (projeto.Situacao == (int)eProjetoDigitalSituacao.AguardandoCorrecao)
            {
                Validacao.Add(Mensagem.ProjetoDigital.PossuiPendenciasCorrecao);
                return(false);
            }

            if (projeto.Situacao != (int)eProjetoDigitalSituacao.EmElaboracao)
            {
                Validacao.Add(Mensagem.ProjetoDigital.EnviarSituacaoInvalida);
                return(false);
            }

            if (validardesatualizadas)
            {
                EmpreendimentoCaracterizacao empreendimento  = _busCaracterizacao.ObterEmpreendimentoSimplificado(projeto.EmpreendimentoId.GetValueOrDefault(0));
                List <CaracterizacaoLst>     caracterizacoes = _busCaracterizacao.ObterCaracterizacoesPorProjetoDigital(projeto.Id);

                List <Caracterizacao> cadastradas        = _busCaracterizacao.ObterCaracterizacoesEmpreendimento(projeto.EmpreendimentoId.GetValueOrDefault(0), projeto.Id) ?? new List <Caracterizacao>();
                List <Caracterizacao> cadastradasInterno = _internoBus.ObterCaracterizacoesAtuais(empreendimento.InternoID, caracterizacoes);

                if (cadastradas != null && cadastradas.Count > 0)
                {
                    List <int> desatualizadas = new List <int>();
                    if (!string.IsNullOrEmpty(_validarCaracterizacao.CaracterizacoesCadastradasDesatualizadas(projeto.EmpreendimentoId.GetValueOrDefault(), cadastradas, cadastradasInterno, out desatualizadas)))
                    {
                        GerenciadorConfiguracao <ConfiguracaoCaracterizacao> configCaracterizacao = new GerenciadorConfiguracao <ConfiguracaoCaracterizacao>(new ConfiguracaoCaracterizacao());
                        Validacao.Add(Mensagem.Caracterizacao.CaracterizacaoDesatualizadaEnviar(
                                          configCaracterizacao.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes)
                                          .Where(x => desatualizadas.Exists(y => y == x.Id))
                                          .Select(x => x.Texto).ToList()
                                          ));
                    }
                }
            }

            return(Validacao.EhValido);
        }
        public bool Salvar(IEspecificidade especificidade)
        {
            LicencaOperacaoFomento esp = especificidade as LicencaOperacaoFomento;
            CaracterizacaoBus      caracterizacaoBus = new CaracterizacaoBus();
            List <Caracterizacao>  caracterizacoes   = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());

            RequerimentoAtividade(esp, faseAnterior: false);

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

            if (idCaracterizacao > 0)
            {
                ICaracterizacaoBus busCaract = CaracterizacaoBusFactory.Criar(eCaracterizacao.SilviculturaPPFF);

                bool isPossui = false;

                busCaract.ObterAtividadesCaracterizacao(especificidade.Titulo.EmpreendimentoId.Value).ForEach(x =>
                {
                    if (esp.Atividades[0].Id == x)
                    {
                        isPossui = true;
                        return;
                    }
                });

                if (!isPossui)
                {
                    Validacao.Add(Mensagem.LicencaOperacaoFomentoMsg.CaracterizacaoAtividadeInexistente);
                }
            }
            else
            {
                Validacao.Add(Mensagem.LicencaOperacaoFomentoMsg.SilviculturaPPFFInexistente);
            }

            return(Validacao.EhValido);
        }
示例#8
0
        public ActionResult Index(int id)
        {
            EmpreendimentoCaracterizacao empreendimento = _bus.ObterEmpreendimentoSimplificado(id);

            if (empreendimento.Id == 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoNaoEncontrado);
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            CaracterizacaoVM vm = new CaracterizacaoVM(empreendimento);

            List <CaracterizacaoLst> caracterizacoes = _bus.CaracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
            List <ProjetoGeografico> projetos        = _bus.ObterProjetosEmpreendimento(id);

            if (!_bus.ValidarAcessarTela(caracterizacoes))
            {
                return(RedirectToAction("Index", "../Empreendimento", Validacao.QueryParamSerializer()));
            }

            List <Caracterizacao> cadastradas = _bus.ObterCaracterizacoesEmpreendimento(id) ?? new List <Caracterizacao>();

            vm.CaracterizacoesNaoCadastradas = caracterizacoes
                                               .Where(x => !cadastradas.Any(y => y.Id > 0 && (int)y.Tipo == x.Id))
                                               .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Id, Nome = z.Texto
            }).ToList();

            vm.CaracterizacoesCadastradas = caracterizacoes
                                            .Where(x => cadastradas.Any(y => y.Id > 0 && (int)y.Tipo == x.Id))
                                            .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Id, Nome = z.Texto
            }).ToList();

            List <DependenciaLst> dependencias = _bus.CaracterizacaoConfig.Obter <List <DependenciaLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);

            vm.CaracterizacoesNaoCadastradas.ForEach(x =>
            {
                x.PodeCadastrar         = User.IsInRole(String.Format("{0}Criar", x.Tipo.ToString()));
                x.ProjetoGeografico     = User.IsInRole("ProjetoGeograficoCriar");
                x.DscLicAtividade       = User.IsInRole("DescricaoLicenciamentoAtividadeCriar");
                x.ProjetoGeoObrigatorio = dependencias.Exists(y =>
                                                              y.DependenteTipo == (int)x.Tipo &&
                                                              y.DependenciaTipo == (int)x.Tipo &&
                                                              y.TipoId == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico);

                x.DscLicAtividadeObrigatorio = dependencias.Exists(y =>
                                                                   y.DependenteTipo == (int)x.Tipo &&
                                                                   y.DependenciaTipo == (int)x.Tipo &&
                                                                   y.TipoId == (int)eCaracterizacaoDependenciaTipo.DescricaoLicenciamentoAtividade);

                Caracterizacao cadastrada = cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao();
                x.ProjetoGeograficoId     = cadastrada.ProjetoRascunhoId;
                x.DscLicAtividadeId       = cadastrada.DscLicAtividadeId;

                if (x.ProjetoGeograficoId <= 0)
                {
                    x.ProjetoGeograficoId = cadastrada.ProjetoId;
                }

                x.UrlCriar = Url.Action("Criar", x.Tipo.ToString());
            });

            vm.CaracterizacoesCadastradas.ForEach(x =>
            {
                if (User.IsInRole("ProjetoGeograficoEditar") || User.IsInRole("ProjetoGeograficoVisualizar"))
                {
                    x.ProjetoGeografico = true;
                }

                x.ProjetoGeograficoVisualizar =
                    User.IsInRole(ePermissao.ProjetoGeograficoVisualizar.ToString()) &&
                    !User.IsInRole(ePermissao.ProjetoGeograficoCriar.ToString()) &&
                    !User.IsInRole(ePermissao.ProjetoGeograficoEditar.ToString());

                if (User.IsInRole("DescricaoLicenciamentoAtividadeEditar") || User.IsInRole("DescricaoLicenciamentoAtividadeVisualizar"))
                {
                    x.DscLicAtividade = true;
                }

                x.DscLicAtividadeVisualizar =
                    User.IsInRole(ePermissao.DescricaoLicenciamentoAtividadeVisualizar.ToString()) &&
                    !User.IsInRole(ePermissao.DescricaoLicenciamentoAtividadeCriar.ToString()) &&
                    !User.IsInRole(ePermissao.DescricaoLicenciamentoAtividadeEditar.ToString());

                x.PodeEditar     = User.IsInRole(String.Format("{0}Editar", x.Tipo.ToString()));
                x.PodeVisualizar = User.IsInRole(String.Format("{0}Visualizar", x.Tipo.ToString()));
                x.PodeExcluir    = User.IsInRole(String.Format("{0}Excluir", x.Tipo.ToString()));

                Caracterizacao cadastrada = cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao();
                x.ProjetoGeograficoId     = cadastrada.ProjetoId;
                x.DscLicAtividadeId       = cadastrada.DscLicAtividadeId;

                x.UrlEditar         = Url.Action("Editar", x.Tipo.ToString());
                x.UrlVisualizar     = Url.Action("Visualizar", x.Tipo.ToString());
                x.UrlExcluirConfirm = Url.Action("ExcluirConfirm", x.Tipo.ToString());
                x.UrlExcluir        = Url.Action("Excluir", x.Tipo.ToString());
            });

            #region CAR

            vm.CaracterizacoesCadastradas.Where(x => x.Tipo == eCaracterizacao.CadastroAmbientalRural).ToList().ForEach(x =>
            {
                x.ProjetoGeografico           = false;
                x.ProjetoGeograficoVisualizar = false;
                x.ProjetoGeograficoId         = 0;

                x.DscLicAtividade           = false;
                x.DscLicAtividadeVisualizar = false;
                x.DscLicAtividadeId         = 0;
            });

            #endregion

            return(View("Caracterizacao", vm));
        }
示例#9
0
        public bool Excluir(int empreendimento)
        {
            if (!EmPosse(empreendimento))
            {
                Validacao.Add(Mensagem.Empreendimento.Posse);
                return(Validacao.EhValido);
            }

            List <String> requerimentosAssociados = _da.VerificarEmpreendimentoRequerimento(empreendimento);

            if (requerimentosAssociados.Count > 0)
            {
                foreach (String numero in requerimentosAssociados)
                {
                    Validacao.Add(Mensagem.Empreendimento.EmpreedimentoAssociado("requerimento", numero));
                }
            }

            CaracterizacaoBus caractBus = new CaracterizacaoBus();

            IEnumerable <Dependencia> lstDepDominialidade = caractBus.ObterDependenciasAtual(empreendimento, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao)
                                                            .Where(x => x.DependenciaId > 0);

            if (lstDepDominialidade != null && lstDepDominialidade.Count() > 0)
            {
                List <DependenciaLst> dependentes = caractBus.CaracterizacaoConfig.Obter <List <DependenciaLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);
                Validacao.Add(Mensagem.Empreendimento.AssociadoDependencias(lstDepDominialidade.Select(x => dependentes.First(lstDep => lstDep.TipoId == x.DependenciaTipo).TipoTexto).ToList()));
            }

            List <Caracterizacao> lstCaractCadastradas = caractBus.ObterCaracterizacoesEmpreendimento(empreendimento) ?? new List <Caracterizacao>();

            lstCaractCadastradas = lstCaractCadastradas.Where(x => x.Id > 0).ToList();

            List <CaracterizacaoLst> caracterizacoes = caractBus.CaracterizacaoConfig.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);

            if (lstCaractCadastradas.Count > 0)
            {
                Validacao.Add(Mensagem.Empreendimento.AssociadoCaracterizacoes(lstCaractCadastradas.Select(x => caracterizacoes.Single(c => c.Id == (int)x.Tipo).Texto).ToList()));
            }

            List <String> listString = null;

            //Associado ao Documento
            listString = _da.VerificarEmpreendimentoDocumento(empreendimento);
            if (listString != null && listString.Count > 0)
            {
                listString.ForEach(x => Validacao.Add(Msg.AssociadoDocumento(x)));
            }

            //Associado ao Processo
            listString = _da.VerificarEmpreendimentoProcesso(empreendimento);
            if (listString != null && listString.Count > 0)
            {
                listString.ForEach(x => Validacao.Add(Msg.AssociadoProcesso(x)));
            }

            //Associado ao Título
            listString = _da.VerificarEmpreendimentoTitulo(empreendimento);
            if (listString != null && listString.Count > 0)
            {
                listString.ForEach(x => Validacao.Add(Msg.AssociadoTitulo(x)));
            }

            //Associado a Fiscalização
            listString = _da.VerificarEmpreendimentoFiscalizacoes(empreendimento);
            if (listString != null && listString.Count > 0)
            {
                listString.ForEach(x => Validacao.Add(Msg.AssociadoFiscalizacao(x)));
            }

            return(Validacao.EhValido);
        }
        public ActionResult Index(int id, int projetoDigitalId, bool visualizar = false)
        {
            ProjetoDigitalCredenciadoBus projetoDigitalCredenciadoBus = new ProjetoDigitalCredenciadoBus();

            if (id == 0)
            {
                if (!visualizar)
                {
                    ProjetoDigital projetoDigital = projetoDigitalCredenciadoBus.AlterarEtapa(projetoDigitalId, eProjetoDigitalEtapa.Envio);
                }
                return(RedirectToAction("Operar", "ProjetoDigital", Validacao.QueryParamSerializer(new { id = projetoDigitalId, area = "" })));
            }

            EmpreendimentoCaracterizacao empreendimento = _bus.ObterEmpreendimentoSimplificado(id);
            CaracterizacaoVM             vm             = new CaracterizacaoVM(empreendimento);

            if (empreendimento.InternoID > 0)
            {
                Empreendimento empreendimentoInterno = new EmpreendimentoInternoBus().ObterSimplificado(empreendimento.InternoID);

                if (empreendimento.InternoTID != empreendimentoInterno.Tid)
                {
                    vm.MensagensNotificacoes.Add(Mensagem.Caracterizacao.EmpreendimentoDesatualizado(empreendimentoInterno.Denominador).Texto);
                }
            }

            if (empreendimento.Id == 0)
            {
                Validacao.Add(Mensagem.Caracterizacao.EmpreendimentoNaoEncontrado);
                return(RedirectToAction("Operar", "ProjetoDigital", Validacao.QueryParamSerializer(new { id = projetoDigitalId, area = "" })));
            }

            vm.ProjetoDigitalId = projetoDigitalId;
            vm.IsVisualizar     = visualizar;

            List <CaracterizacaoLst> caracterizacoes = _bus.ObterCaracterizacoesPorProjetoDigital(projetoDigitalId);

            if (caracterizacoes.All(carac => carac.Permissao == ePermissaoTipo.NaoPermitido))
            {
                Validacao.Add(Mensagem.Caracterizacao.UsuarioNaoPermitidoParaCaracterizacao);
            }

            caracterizacoes.RemoveAll(caract => caract.Permissao == ePermissaoTipo.NaoPermitido);

            #region Projeto Digital

            if (caracterizacoes == null || caracterizacoes.Count <= 0)
            {
                ProjetoDigital projetoDigital = projetoDigitalCredenciadoBus.AlterarEtapa(projetoDigitalId, eProjetoDigitalEtapa.Envio);

                return(RedirectToAction("Operar", "ProjetoDigital", Validacao.QueryParamSerializer(new { id = projetoDigitalId, area = "" })));
            }

            ProjetoDigitalCredenciadoValidar projetoDigitalCredenciadoValidar = new ProjetoDigitalCredenciadoValidar();
            if (!projetoDigitalCredenciadoValidar.PossuiCaracterizacaoAtividade(caracterizacoes, projetoDigitalId))
            {
                if (!visualizar)
                {
                    ProjetoDigital projetoDigital = projetoDigitalCredenciadoBus.AlterarEtapa(projetoDigitalId, eProjetoDigitalEtapa.Envio);
                }
                return(RedirectToAction("Operar", "ProjetoDigital", Validacao.QueryParamSerializer(new { id = projetoDigitalId, area = "" })));
            }
            else
            {
                vm.MostrarFinalizar = (projetoDigitalCredenciadoBus.Obter(projetoDigitalId).Etapa == (int)eProjetoDigitalEtapa.Caracterizacao) && !visualizar;
            }

            #endregion

            List <Caracterizacao> caracterizacoesAssociadas = _bus.ObterCaracterizacoesAssociadasProjetoDigital(projetoDigitalId);
            List <Caracterizacao> cadastradas        = _bus.ObterCaracterizacoesEmpreendimento(id, projetoDigitalId) ?? new List <Caracterizacao>();
            List <Caracterizacao> cadastradasInterno = _internoBus.ObterCaracterizacoesAtuais(empreendimento.InternoID, caracterizacoes);

            if (cadastradas != null && cadastradas.Count > 0)
            {
                List <int> desatualizadas    = new List <int>();
                string     msgDesatualizadas = _validar.CaracterizacoesCadastradasDesatualizadas(empreendimento.Id, cadastradas, cadastradasInterno, out desatualizadas);
                if (!string.IsNullOrEmpty(msgDesatualizadas))
                {
                    vm.MensagensNotificacoes.Add(msgDesatualizadas);
                }
                vm.CaracterizacoesPossivelCopiar = _bus.ObterPossivelCopiar(cadastradas);
                vm.CaracterizacoesPossivelCopiar.AddRange(desatualizadas.Where(x => !vm.CaracterizacoesPossivelCopiar.Exists(y => y == x)));
            }

            vm.CaracterizacoesNaoCadastradas = caracterizacoes
                                               .Where(x => !cadastradas.Any(y => y.Id > 0 && (int)y.Tipo == x.Id))
                                               .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Id, Nome = z.Texto
            }).ToList();

            vm.CaracterizacoesCadastradas = caracterizacoes
                                            .Where(x => cadastradas.Where(y => !caracterizacoesAssociadas.Exists(z => z.Tipo == y.Tipo)).Any(y => y.Id > 0 && (int)y.Tipo == x.Id))
                                            .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Id, Nome = z.Texto
            }).ToList();

            vm.CaracterizacoesAssociadas = caracterizacoesAssociadas
                                           .Select(z => new CaracterizacaoVME()
            {
                Tipo = (eCaracterizacao)z.Tipo, Nome = z.Nome
            }).ToList();

            List <DependenciaLst> dependencias = _bus.CaracterizacaoConfig.Obter <List <DependenciaLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);

            #region Não Cadastradas

            vm.CaracterizacoesNaoCadastradas.ForEach(x =>
            {
                ICaracterizacaoBus caracterizacaoBus = CaracterizacaoBusFactory.Criar(x.Tipo);
                if (caracterizacaoBus != null)
                {
                    x.PodeCopiar = cadastradasInterno.Exists(y => y.Tipo == x.Tipo) && caracterizacaoBus.PodeCopiar(empreendimento.InternoID);
                }

                x.PodeCadastrar         = User.IsInRole(String.Format("{0}Criar", x.Tipo.ToString()));
                x.ProjetoGeografico     = User.IsInRole("ProjetoGeograficoCriar");
                x.ProjetoGeoObrigatorio = dependencias.Exists(y =>
                                                              y.DependenteTipo == (int)x.Tipo &&
                                                              y.DependenciaTipo == (int)x.Tipo &&
                                                              y.TipoId == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico);

                x.ProjetoGeograficoId = (cadastradas.FirstOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao()).ProjetoRascunhoId;

                if (x.ProjetoGeograficoId <= 0)
                {
                    x.ProjetoGeograficoId = (cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo) ?? new Caracterizacao()).ProjetoId;
                }

                x.UrlCriar = Url.Action("Criar", x.Tipo.ToString());
            });

            #endregion

            #region Cadastradas

            vm.CaracterizacoesCadastradas.ForEach(x =>
            {
                if (User.IsInRole("ProjetoGeograficoEditar") || User.IsInRole("ProjetoGeograficoVisualizar"))
                {
                    x.ProjetoGeografico = true;
                }

                x.ProjetoGeograficoVisualizar = visualizar;
                x.PodeEditar     = User.IsInRole(String.Format("{0}Editar", x.Tipo.ToString()));
                x.PodeVisualizar = User.IsInRole(String.Format("{0}Visualizar", x.Tipo.ToString()));
                x.PodeExcluir    = (User.IsInRole(String.Format("{0}Excluir", x.Tipo.ToString())) && (x.Tipo == eCaracterizacao.UnidadeConsolidacao || x.Tipo == eCaracterizacao.UnidadeProducao));

                x.PodeCopiar   = cadastradasInterno.Exists(y => y.Tipo == x.Tipo);
                x.PodeAssociar = !caracterizacoesAssociadas.Exists(y => y.Tipo == x.Tipo);

                x.ProjetoGeograficoId = cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo).ProjetoId;

                x.UrlEditar         = Url.Action("Editar", x.Tipo.ToString());
                x.UrlVisualizar     = Url.Action("Visualizar", x.Tipo.ToString());
                x.UrlExcluirConfirm = Url.Action("ExcluirConfirm", x.Tipo.ToString());
                x.UrlExcluir        = Url.Action("Excluir", x.Tipo.ToString());
            });

            #endregion

            #region Associadas

            vm.CaracterizacoesAssociadas.ForEach(x =>
            {
                if (User.IsInRole("ProjetoGeograficoVisualizar"))
                {
                    x.ProjetoGeografico           = true;
                    x.ProjetoGeograficoVisualizar = true;
                    x.ProjetoGeograficoId         = cadastradas.SingleOrDefault(y => y.Tipo == x.Tipo).ProjetoId;
                }

                x.PodeVisualizar = User.IsInRole(String.Format("{0}Visualizar", x.Tipo.ToString()));
                x.UrlVisualizar  = Url.Action("Visualizar", x.Tipo.ToString());
            });

            #endregion

            return(View("Caracterizacao", vm));
        }
        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)
        {
            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);
        }
        public bool ValidarTituloGenericoAtividadeCaracterizacao(IEspecificidade especificidade, eEspecificidade tipo = eEspecificidade.Nulo)
        {
            CaracterizacaoBus              busCaracterizacao     = new CaracterizacaoBus();
            GerenciadorConfiguracao        configAtividade       = new GerenciadorConfiguracao(new ConfiguracaoAtividade());
            GerenciadorConfiguracao        configCaracterizacao  = new GerenciadorConfiguracao(new ConfiguracaoCaracterizacao());
            List <AtividadeCaracterizacao> lstAtivCaract         = configAtividade.Obter <List <AtividadeCaracterizacao> >(ConfiguracaoAtividade.KeyAtividadesCaracterizacoes);
            List <Caracterizacao>          lstCaracterizacoes    = busCaracterizacao.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            List <CaracterizacaoLst>       lstCnfCaracterizacoes = configCaracterizacao.Obter <List <CaracterizacaoLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoes);
            //List<DependenciaLst> lstCnfDependencias = configCaracterizacao.Obter<List<DependenciaLst>>(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);
            EspecificidadeBusBase _busEspBase = new EspecificidadeBusBase();

            foreach (var item in especificidade.Atividades)
            {
                if (item.Id == 0)
                {
                    continue;
                }

                var ativCaract = lstAtivCaract.FirstOrDefault(x => x.AtividadeId == item.Id);

                if (ativCaract == null || ativCaract.AtividadeId != item.Id || !ativCaract.IsTituloGenerico)
                {
                    EspecificidadeDa _daEsp = new EspecificidadeDa();
                    item.NomeAtividade = _daEsp.ObterAtividadeNome(item.Id);
                    Validacao.Add(Mensagem.Especificidade.AtividadeNaoConfiguradaNaAtividadeCaracte(item.NomeAtividade, especificidade.Titulo.ModeloSigla));
                    continue;
                }

                Caracterizacao     caracterizacao     = lstCaracterizacoes.Find(x => x.Tipo == (eCaracterizacao)ativCaract.CaracterizacaoTipoId);
                CaracterizacaoLst  caracterizacaoTipo = lstCnfCaracterizacoes.Find(x => x.Id == ativCaract.CaracterizacaoTipoId);
                ICaracterizacaoBus busCaract          = CaracterizacaoBusFactory.Criar(caracterizacao.Tipo);

                if (busCaract == null)
                {
                    throw new Exception("CaracterizacaoBusFactory não implementada para o tipo " + caracterizacaoTipo.Texto);
                }

                List <int> atividadesCaract = busCaract.ObterAtividadesCaracterizacao(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());

                if (atividadesCaract == null || atividadesCaract.Count == 0)
                {
                    Validacao.Add(Mensagem.Especificidade.CaracterizacaoNaoPreenchida(caracterizacaoTipo.Texto));
                    continue;
                }

                if (!atividadesCaract.Exists(x => x == item.Id))
                {
                    Validacao.Add(Mensagem.Especificidade.AtividadeDiferenteCaracterizacao(caracterizacaoTipo.Texto));
                    continue;
                }

                List <Dependencia> lstDependenciaAteradas = busCaracterizacao.ObterDependenciasAlteradas(
                    especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(),
                    caracterizacao.Id,
                    (eCaracterizacao)caracterizacaoTipo.Id,
                    eCaracterizacaoDependenciaTipo.Caracterizacao);

                if (lstDependenciaAteradas != null && lstDependenciaAteradas.Count > 0)
                {
                    Validacao.Add(Mensagem.Especificidade.CaracterizacaoDependencias(caracterizacaoTipo.Texto));

                    /*Validacao.Add(Mensagem.Especificidade.CaracterizacaoDependencias(String.Join(", ", lstDependenciaAteradas.Select(x =>
                     *      String.Format("{0} - {1}",
                     *      lstCnfDependencias.Single(y => y.Id == x.DependenciaTipo).TipoTexto,
                     *      lstCnfCaracterizacoes.Single(y => y.Id == x.DependenciaCaracterizacao).Texto)
                     * ).ToArray())));*/
                }
            }

            switch (tipo)
            {
            case eEspecificidade.LicencaAmbientalRegularizacao:
            case eEspecificidade.LicencaAmbientalUnica:
            case eEspecificidade.LicencaSimplificada:
            case eEspecificidade.LicencaInstalacao:
            case eEspecificidade.LicencaOperacao:
            case eEspecificidade.LicencaPrevia:
                if (especificidade.Atividades.Count > 0)
                {
                    especificidade.AtividadeCaractTipo =
                        (eAtividadeCodigo)ConfiguracaoAtividade.ObterCodigo(especificidade.Atividades[0].Id);
                }

                switch (especificidade.AtividadeCaractTipo)
                {
                case eAtividadeCodigo.Barragem:
                    var configEspAtivCaract = _busEspBase.GetConfigAtivEspCaracterizacao((int)tipo);
                    var list = configEspAtivCaract.GetListValue <int>("Atividades");

                    if (especificidade is ILicenca && list.Where(x => x == (int)eAtividadeCodigo.Barragem).ToList().Count > 0)
                    {
                        _validarLicenca.Validar(especificidade as ILicenca);
                    }

                    break;
                }
                break;
            }
            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);
        }