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) { OutrosConclusaoTransferenciaDominio esp = especificidade as OutrosConclusaoTransferenciaDominio; if (esp.Destinatarios.Count < 1) { Validacao.Add(Mensagem.Especificidade.DestinatarioObrigatorio("ddlDestinatarios")); } if (esp.Responsaveis.Count < 1) { Validacao.Add(Mensagem.Especificidade.ResponsavelObrigatorio("ddlResponsaveis")); } if (esp.Interessados.Count < 1) { Validacao.Add(Mensagem.Especificidade.InteressadoObrigatorio("ddlInteressados")); } List <PessoaEspecificidade> lstValida = null; esp.Destinatarios.ForEach(x => { lstValida = new List <PessoaEspecificidade>(); lstValida.AddRange(esp.Destinatarios.Where(y => x.Id == y.Id).ToList()); if (lstValida.Count > 1) { Validacao.Add(Mensagem.Especificidade.DestinatarioJaAdicionado); } }); esp.Interessados.ForEach(x => { lstValida = new List <PessoaEspecificidade>(); lstValida.AddRange(esp.Interessados.Where(y => x.Id == y.Id).ToList()); if (lstValida.Count > 1) { Validacao.Add(Mensagem.Especificidade.InteressadoJaAdicionado); } }); esp.Responsaveis.ForEach(x => { lstValida = new List <PessoaEspecificidade>(); lstValida.AddRange(esp.Responsaveis.Where(y => x.Id == y.Id).ToList()); if (lstValida.Count > 1) { Validacao.Add(Mensagem.Especificidade.ResponsavelJaAdicionado); } }); foreach (PessoaEspecificidade pessoa in esp.Responsaveis) { for (int i = 0; i < esp.Interessados.Count; i++) { if (esp.Interessados[i].Id == pessoa.Id) { Validacao.Add(new EspecificidadeMsg().InteressadoIgualResponsavel); return(Validacao.EhValido); } } } #region Verificar lista de pessoas desassociadas List <PessoaEspecificidade> destinatarios = PessoasDesassociadas(esp.Destinatarios, _daEspecificidade.ObterInteressados(esp.ProtocoloReq.Id)); List <PessoaEspecificidade> responsaveis = PessoasDesassociadas(esp.Responsaveis, _daEspecificidade.ObterEmpreendimentoResponsaveis(esp.Titulo.EmpreendimentoId.GetValueOrDefault())); List <PessoaEspecificidade> interessados = PessoasDesassociadas(esp.Interessados, _daEspecificidade.ObterInteressados(esp.ProtocoloReq.Id)); if (destinatarios.Count > 0) { Validacao.Add(Mensagem.Especificidade.DestinatarioNaoAssociadoMais(Mensagem.Concatenar(destinatarios.Select(x => x.Nome).ToList()))); } if (responsaveis.Count > 0) { Validacao.Add(Mensagem.Especificidade.ResponsavelNaoAssociadoMais(Mensagem.Concatenar(responsaveis.Select(x => x.Nome).ToList()))); } if (interessados.Count > 0) { Validacao.Add(Mensagem.Especificidade.InteressadoNaoAssociadoMais(Mensagem.Concatenar(interessados.Select(x => x.Nome).ToList()))); } #endregion RequerimentoAtividade(esp); return(Validacao.EhValido); }