//Validacoes de Cadastro/Edição public bool Salvar(Titulo titulo) { JuntarApensarBus _juntarApensarBus = new JuntarApensarBus(); Titulo(titulo); if (titulo.Id <= 0 && titulo.Protocolo.Id > 0) { ProtocoloSetorModelo(titulo, titulo.Setor.Id); } if (titulo.Id > 0 && titulo.Situacao.Id != 1) { if (String.IsNullOrEmpty(titulo.Situacao.Texto) && titulo.Situacao.Id > 0) { titulo.Situacao = _configTitulo.Obter <List <Situacao> >(ConfiguracaoTitulo.KeySituacoes).Single(x => x.Id == titulo.Situacao.Id); } Validacao.Add(Mensagem.Titulo.SituacaoEditar(titulo.Situacao.Texto)); } //Esta validação deve ser feita para cadastrar/Editar pois na edição do titulo deve existir a //possibilidade de alterar o protocolo para o processo pai //Esta validação não pode ser feita no botao editar do listar #region Validacao de Juntado/Apensado if (titulo.Protocolo != null && titulo.Protocolo.Id > 0) { string numero = _protocoloValidar.ObterNumeroProcessoPai(titulo.Protocolo.Id.Value); if (!String.IsNullOrEmpty(numero)) { Validacao.Add(titulo.Protocolo.IsProcesso ? Mensagem.Titulo.ProcessoJuntado(numero) : Mensagem.Titulo.DocumentoApensado(numero)); } } #endregion #region [ Cadastro Ambiental Rural ] if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo)) { var busCARSolicitacao = new CARSolicitacaoBus(); if (!busCARSolicitacao.VerificarSeEmpreendimentoPossuiSolicitacaoValidaEEnviada(titulo.EmpreendimentoId.GetValueOrDefault())) { Validacao.Add(Mensagem.TituloAlterarSituacao.TituloNaoPossuiSolicitacaoDeInscricao); } } #endregion return(Validacao.EhValido); }
public bool AlterarSituacao(Titulo titulo, int acao, bool gerouPdf = true) { Titulo tituloAux = _da.ObterSimplificado(titulo.Id); if (tituloAux == null) { return(false); } #region ValidarPermissao List <ePermissao> acaoPermissao = new List <ePermissao>(); switch (titulo.Situacao.Id) { #region Cadastrado case 1: acaoPermissao.Add(ePermissao.TituloCriar); acaoPermissao.Add(ePermissao.TituloCancelarEmissao); break; #endregion #region Emitido para assinatura case 2: acaoPermissao.Add(ePermissao.TituloEmitir); break; #endregion #region Concluído case 3: acaoPermissao.Add(ePermissao.TituloEmitir); acaoPermissao.Add(ePermissao.TituloAssinar); break; #endregion #region Assinado case 4: acaoPermissao.Add(ePermissao.TituloAssinar); break; #endregion #region Cancelado case 5: acaoPermissao.Add(ePermissao.TituloEncerrar); acaoPermissao.Add(ePermissao.DocumentoEncerrarOficioPendencia); break; #endregion #region Suspenso case 11: acaoPermissao.Add(ePermissao.TituloEncerrar); acaoPermissao.Add(ePermissao.DocumentoEncerrarOficioPendencia); break; #endregion #region Prorrogado case 6: acaoPermissao.Add(ePermissao.TituloProrrogar); break; #endregion } if (!_permissaoValdiar.ValidarAny(acaoPermissao.ToArray())) { return(false); } #endregion //Validar Titulo if ((eAlterarSituacaoAcao)acao == eAlterarSituacaoAcao.EmitirParaAssinatura) { _validarTitulo.Titulo(titulo); if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.Value)) { IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.Value); titulo.Especificidade = busEsp.Obter(titulo.Id) as Especificidade; titulo.Especificidade = titulo.ToEspecificidade(); busEsp.Validar.Emitir(titulo.Especificidade); } } else if ( (eAlterarSituacaoAcao)acao == eAlterarSituacaoAcao.Assinar || (eAlterarSituacaoAcao)acao == eAlterarSituacaoAcao.Entregar || (eAlterarSituacaoAcao)acao == eAlterarSituacaoAcao.Prorrogar || (eAlterarSituacaoAcao)acao == eAlterarSituacaoAcao.Concluir) { if (titulo.Atividades != null) { foreach (var item in titulo.Atividades) { if (!item.Ativada) { Validacao.Add(Mensagem.AtividadeEspecificidade.AtividadeDesativada(item.NomeAtividade)); } } } } if (!Validacao.EhValido) { return(false); } switch (titulo.Situacao.Id) { #region Cadastrado case 1: if (tituloAux.Situacao.Id != 2) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Cadastrado", "Emitido para assinatura")); } break; #endregion #region Emitido para assinatura case 2: if (!gerouPdf) { Validacao.Add(Mensagem.TituloAlterarSituacao.GerarPdfObrigatorio); } if (tituloAux.Situacao.Id != 1) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Emitido para assinatura", "Cadastrado")); } if (ValidarDatas(titulo.DataEmissao, "DataEmissao", "emissão")) { if (!titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { if (titulo.Numero.Ano != titulo.DataEmissao.Data.Value.Year) { Validacao.Add(Mensagem.TituloAlterarSituacao.NumeroAnoEmissaoAno); } } } if (titulo.Modelo.Regra(eRegra.Prazo) && titulo.Prazo.GetValueOrDefault() <= 0) { Validacao.Add(Mensagem.TituloAlterarSituacao.PrazoObrigatorio); } if (titulo.Modelo.Regra(eRegra.Prazo) && (titulo.Prazo.GetValueOrDefault() + DateTime.Now.Year) > DateTime.MaxValue.Year) { Validacao.Add(Mensagem.TituloAlterarSituacao.PrazoInvalido); } break; #endregion #region Concluído case 3: if (tituloAux.Situacao.Id == 1 && !gerouPdf) { Validacao.Add(Mensagem.TituloAlterarSituacao.GerarPdfObrigatorio); } if (tituloAux.Situacao.Id != 1 && tituloAux.Situacao.Id != 2 && tituloAux.Situacao.Id != 4 && tituloAux.Situacao.Id != 11) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Concluído", "Cadastrado, Suspenso, Emitido para assinatura ou Assinado")); } if (tituloAux.Situacao.Id == 1 || tituloAux.Situacao.Id == 11) { if (ValidarDatas(titulo.DataEmissao, "DataEmissao", "emissão")) { if (Validacao.EhValido && !titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { if (titulo.Numero.Ano != titulo.DataEmissao.Data.Value.Year) { Validacao.Add(Mensagem.TituloAlterarSituacao.NumeroAnoEmissaoAno); } } } } if (titulo.Modelo.Regra(eRegra.Prazo) && titulo.Prazo.GetValueOrDefault() <= 0) { Validacao.Add(Mensagem.TituloAlterarSituacao.PrazoObrigatorio); } if (titulo.Modelo.Regra(eRegra.Prazo) && (titulo.Prazo.GetValueOrDefault() + DateTime.Now.Year) > DateTime.MaxValue.Year) { Validacao.Add(Mensagem.TituloAlterarSituacao.PrazoInvalido); } if (titulo.Modelo.Codigo == (int)eTituloModeloCodigo.AutorizacaoExploracaoFlorestal) { var associados = _da.ObterAssociados(titulo.Id); if (associados.Exists(x => x.DataVencimento.Data < titulo.DataEmissao.Data.Value.AddDays(titulo.Prazo.Value))) { Validacao.Add(Mensagem.TituloAlterarSituacao.PrazoSuperiorAoLaudo); } } #region [ Cadastro Ambiental Rural ] if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo)) { var busCARSolicitacao = new CARSolicitacaoBus(); if (!busCARSolicitacao.VerificarSeEmpreendimentoPossuiSolicitacaoValidaEEnviada(titulo.EmpreendimentoId.GetValueOrDefault())) { Validacao.Add(Mensagem.TituloAlterarSituacao.TituloNaoPossuiSolicitacaoDeInscricao); } } #endregion break; #endregion #region Assinado case 4: if (tituloAux.Situacao.Id != 2) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Assinado", "Emitido para assinatura")); } if (ValidarDatas(titulo.DataAssinatura, "DataAssinatura", "assinatura")) { if (titulo.DataAssinatura.Data < tituloAux.DataEmissao.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataAssinatura", "assinatura", "emissão")); } } break; #endregion #region Encerrado case 5: if (tituloAux.Situacao.Id != 3 && tituloAux.Situacao.Id != 6) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Encerrado", "Concluído ou Prorrogado")); } if (ValidarDatas(titulo.DataEncerramento, "DataEncerramento", "encerramento")) { if (titulo.Modelo.Regra(eRegra.Prazo)) { switch (Convert.ToInt32(titulo.Modelo.Resposta(eRegra.Prazo, eResposta.InicioPrazo).Valor)) { case 1: if (titulo.DataEncerramento.Data < tituloAux.DataEmissao.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataEncerramento", "encerramento", "emissão")); } break; case 2: if (titulo.DataEncerramento.Data < tituloAux.DataAssinatura.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataEncerramento", "encerramento", "assinatura")); } break; case 3: if (titulo.DataEncerramento.Data < tituloAux.DataEntrega.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataEncerramento", "encerramento", "entrega")); } break; } } } if (titulo.MotivoEncerramentoId.GetValueOrDefault() <= 0) { Validacao.Add(Mensagem.TituloAlterarSituacao.MotivoEncerramentoObrigatorio); } if (titulo.Modelo.Codigo == (int)eTituloModeloCodigo.LaudoVistoriaFlorestal) { if (_da.ExistsTituloAssociadoNaoEncerrado(titulo.Id)) { Validacao.Add(Mensagem.TituloAlterarSituacao.TituloPossuiAssociadoNaoEncerrado("encerrado")); } } break; #endregion #region Suspenso case 11: if (tituloAux.Situacao.Id != 3 && tituloAux.Situacao.Id != 6) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Suspenso", "Concluído ou Prorrogado")); } if (ValidarDatas(titulo.DataEncerramento, "DataEncerramento", "suspensão")) { if (titulo.Modelo.Regra(eRegra.Prazo)) { switch (Convert.ToInt32(titulo.Modelo.Resposta(eRegra.Prazo, eResposta.InicioPrazo).Valor)) { case 1: if (titulo.DataEncerramento.Data < tituloAux.DataEmissao.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataEncerramento", "suspensão", "emissão")); } break; case 2: if (titulo.DataEncerramento.Data < tituloAux.DataAssinatura.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataEncerramento", "suspensão", "assinatura")); } break; case 3: if (titulo.DataEncerramento.Data < tituloAux.DataEntrega.Data) { Validacao.Add(Mensagem.TituloAlterarSituacao.DataDeveSerSuperior("DataEncerramento", "suspensão", "entrega")); } break; } } } if (titulo.Modelo.Codigo == (int)eTituloModeloCodigo.LaudoVistoriaFlorestal) { if (_da.ExistsTituloAssociadoNaoEncerrado(titulo.Id)) { Validacao.Add(Mensagem.TituloAlterarSituacao.TituloPossuiAssociadoNaoEncerrado("suspenso")); } } break; #endregion #region Prorrogado case 6: if (tituloAux.Situacao.Id != 3 && tituloAux.Situacao.Id != 6) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Prorrogado", "Concluído ou Prorrogado")); } if (titulo.DiasProrrogados.GetValueOrDefault() <= 0) { Validacao.Add(Mensagem.TituloAlterarSituacao.DiasProrrogadosObrigatorio); } break; #endregion } AtivarCondicionantes(titulo); return(Validacao.EhValido); }