public void Excluir(Titulo titulo) { try { titulo = _da.ObterSimplificado(titulo.Id); titulo.Modelo = ObterModelo(titulo.Modelo.Id); if (!_validar.Excluir(titulo)) { return; } IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { GerenciadorTransacao.ObterIDAtual(); bancoDeDados.IniciarTransacao(); busEsp.Excluir(titulo.Id, bancoDeDados); _da.Excluir(titulo.Id, bancoDeDados); bancoDeDados.Commit(); } Validacao.Add(Mensagem.Titulo.Excluir); } catch (Exception exc) { Validacao.AddErro(exc); } }
public MemoryStream GerarPdf(Titulo titulo, BancoDeDados banco = null) { if ((titulo.Modelo.Arquivo.Id ?? 0) <= 0) { return(null); } ArquivoBus busArquivo = new ArquivoBus(eExecutorTipo.Interno); Arquivo templatePdf = busArquivo.Obter(titulo.Modelo.Arquivo.Id.Value); //Carrega as atividades para o ObterDadosPdf; if (titulo.Atividades == null || titulo.Atividades.Count == 0) { titulo.Atividades = _da.ObterAtividades(titulo.Id); } IEspecificidadeBus busEspecificiade = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.Value); titulo.Especificidade = busEspecificiade.Obter(titulo.Id) as Especificidade; titulo.ToEspecificidade(); IConfiguradorPdf configurador = busEspecificiade.ObterConfiguradorPdf(titulo.Especificidade) ?? new ConfiguracaoDefault(); configurador.ExibirSimplesConferencia = (titulo.Situacao.Id == (int)eTituloSituacao.Cadastrado) || (titulo.Situacao.Id == (int)eTituloSituacao.EmCadastro); Object dataSource = busEspecificiade.ObterDadosPdf(titulo.Especificidade, banco); GeradorAspose gerador = new GeradorAspose(configurador); #region Assinantes List <TituloAssinante> assinantes = _da.ObterAssinantes(titulo.Id); if (busEspecificiade.CargosOrdenar != null && busEspecificiade.CargosOrdenar.Count > 0) { assinantes = assinantes.OrderByDescending(assinante => busEspecificiade.CargosOrdenar.IndexOf((eCargo)assinante.FuncionarioCargoCodigo)).ToList(); } configurador.Assinantes = assinantes.Select(x => (IAssinante) new AssinanteDefault() { Nome = x.FuncionarioNome, Cargo = x.FuncionarioCargoNome } ).ToList(); //Adiciona os assinantes da Especificidade configurador.Assinantes.AddRange((((dynamic)dataSource).Titulo as IAssinanteDataSource).AssinanteSource); #endregion MemoryStream msPdf = gerador.Pdf(templatePdf, dataSource); if (dataSource is Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf) { Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf dataAnexos = dataSource as Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf; msPdf = GeradorAspose.AnexarPdf(msPdf, dataAnexos.AnexosPdfs); } return(msPdf); }
public ActionResult Salvar(int modeloId) { TituloModelo modelo = _busModelo.ObterSimplificado(modeloId); if (modelo == null || !modelo.Codigo.HasValue || !EspecificiadadeBusFactory.Possui(modelo.Codigo.Value)) { return(Json(new { Possui = false }, JsonRequestBehavior.AllowGet)); } _bus = EspecificiadadeBusFactory.Criar(modelo.Codigo.Value); eEspecificidade eTelaEsp = (eEspecificidade)modelo.Codigo.Value; string url = Url.Action(eTelaEsp.ToString(), _bus.Tipo.ToString(), new { Area = "Especificidades" }); return(Json(new { Possui = true, Url = url, Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet)); }
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); }
public void AlterarSituacao(Titulo titulo, int acao, BancoDeDados banco, bool gerouPdf = true) { Titulo atualTitulo = _da.ObterSimplificado(titulo.Id); if (titulo.Modelo.Regras == null || titulo.Modelo.Regras.Count == 0) { titulo.Modelo = _busModelo.Obter(titulo.Modelo.Id); } titulo.Situacao = ObterNovaSituacao(titulo, acao); bool isLimparPdfENumero = false; bool isGerarNumero = false; bool isGerarPdf = false; int novaSituacaoCondicionante = 0; if (titulo.Modelo.Codigo == (int)eTituloModeloCodigo.CertificadoRegistroAtividadeFlorestal) { if (titulo.Atividades.Any(x => x.Codigo == (int)eAtividadeCodigo.FabricanteMotosserra) || titulo.Atividades.Any(x => x.Codigo == (int)eAtividadeCodigo.ComercianteMotosserra)) { titulo.Prazo = 365; } else { titulo.Prazo = new DateTime(DateTime.Now.Year, 12, 31).DayOfYear - titulo.DataEmissao.Data.Value.DayOfYear; } } if (!_validar.AlterarSituacao(titulo, acao, gerouPdf)) { return; } #region Configurar Nova Situacao //Situação Nova switch ((eTituloSituacao)titulo.Situacao.Id) { #region 1 - Cadastrado case eTituloSituacao.Cadastrado: if (atualTitulo.Situacao.Id == (int)eTituloSituacao.Emitido) { if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Inteiro = null; titulo.Numero.Ano = null; } } titulo.DataEmissao.Data = null; titulo.DataInicioPrazo.Data = null; titulo.DataAssinatura.Data = null; titulo.DataVencimento.Data = null; titulo.DataEncerramento.Data = null; titulo.Prazo = null; isLimparPdfENumero = true; break; #endregion #region 2 - Emitido case eTituloSituacao.Emitido: isGerarNumero = true; isGerarPdf = true; //titulo.DataEmissao info na tela if (titulo.Modelo.Regra(eRegra.Prazo)) { int prazoId = Convert.ToInt32(titulo.Modelo.Resposta(eRegra.Prazo, eResposta.TipoPrazo).Valor); titulo.PrazoUnidade = _busLista.TituloModeloTiposPrazos.Single(x => x.Id == prazoId).Texto; } break; #endregion #region 3 - Concluído case eTituloSituacao.Concluido: if (titulo.Modelo.Regra(eRegra.Condicionantes)) { novaSituacaoCondicionante = 2; } if (atualTitulo.Situacao.Id == (int)eTituloSituacao.Cadastrado) { isGerarNumero = true; isGerarPdf = true; } //titulo.DataAssinatura info na tela if (titulo.Modelo.Regra(eRegra.Prazo)) { int prazoId = Convert.ToInt32(titulo.Modelo.Resposta(eRegra.Prazo, eResposta.TipoPrazo).Valor); titulo.PrazoUnidade = _busLista.TituloModeloTiposPrazos.Single(x => x.Id == prazoId).Texto; switch ((eAlterarSituacaoAcao)acao) { case eAlterarSituacaoAcao.EmitirParaAssinatura: titulo.DataInicioPrazo.Data = titulo.DataEmissao.Data.GetValueOrDefault(); break; case eAlterarSituacaoAcao.Assinar: titulo.DataInicioPrazo.Data = titulo.DataAssinatura.Data.GetValueOrDefault(); break; case eAlterarSituacaoAcao.Entregar: case eAlterarSituacaoAcao.Concluir: if (titulo.Modelo.Resposta(eRegra.Prazo, eResposta.InicioPrazo).Valor.ToString() == "2") //data da assinatura { titulo.DataInicioPrazo.Data = titulo.DataAssinatura.Data.GetValueOrDefault(); } else { titulo.DataInicioPrazo.Data = titulo.DataEmissao.Data.GetValueOrDefault(); } break; default: titulo.DataInicioPrazo.Data = DateTime.Now; break; } if (prazoId == 1) //Dias { titulo.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddDays(titulo.Prazo.GetValueOrDefault()); } else { titulo.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddYears(titulo.Prazo.GetValueOrDefault()); } } break; #endregion #region 4 - Assinado case eTituloSituacao.Assinado: //titulo.DataAssinatura info na tela break; #endregion #region 5 - Encerrado case eTituloSituacao.Encerrado: if (titulo.Modelo.Regra(eRegra.Condicionantes)) { novaSituacaoCondicionante = 5; } break; #endregion #region 6 - Prorrogado case eTituloSituacao.Prorrogado: if (titulo.Modelo.Regra(eRegra.Prazo)) { titulo.DataVencimento.Data = titulo.DataVencimento.Data.Value.AddDays(titulo.DiasProrrogados.GetValueOrDefault()); } break; #endregion } #endregion #region Numero de Titulo if (isGerarNumero) { titulo.Numero.ReiniciaPorAno = titulo.Modelo.Regra(eRegra.NumeracaoReiniciada); if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Automatico = true; TituloModeloResposta iniciarEm = titulo.Modelo.Resposta(eRegra.NumeracaoAutomatica, eResposta.InicioNumeracao); titulo.Numero.IniciaEm = null; titulo.Numero.IniciaEmAno = null; if (iniciarEm != null) { if (iniciarEm.Valor == null || !ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(iniciarEm.Valor.ToString())) { Validacao.Add(Mensagem.Titulo.IniciarEmInvalido); return; } string[] iniciar = iniciarEm.Valor.ToString().Split('/'); titulo.Numero.IniciaEm = Convert.ToInt32(iniciar[0]); titulo.Numero.IniciaEmAno = Convert.ToInt32(iniciar[1]); if (titulo.Numero.IniciaEmAno.GetValueOrDefault() != DateTime.Now.Year) { titulo.Numero.IniciaEm = null; titulo.Numero.IniciaEmAno = null; } } } if (titulo.DataEmissao.IsValido) { titulo.Numero.Ano = titulo.DataEmissao.Data.Value.Year; } } //Limpar numero if (isLimparPdfENumero) { if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero = null; } } #endregion if (isLimparPdfENumero) { titulo.ArquivoPdf.Id = null; } GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { bancoDeDados.IniciarTransacao(); #region Condicionante if (novaSituacaoCondicionante > 0) { foreach (var item in titulo.Condicionantes) { TituloCondicionante condicionanteAtual = _daCondicionante.Obter(item.Id, bancoDeDados); //Filtro para não alterar as 4 - atendida if (novaSituacaoCondicionante == 5 && condicionanteAtual.Situacao.Id == 4) //5 - encerrada | 4 - atendida { continue; } //Ativa a condicionante if (novaSituacaoCondicionante == 2 && condicionanteAtual.Situacao.Id != 2) { if (condicionanteAtual.PossuiPrazo) { //Regras do Modelo Sem Prazo em Condicionantes com Prazo if (!titulo.Modelo.Regra(eRegra.Prazo)) { condicionanteAtual.DataInicioPrazo.Data = titulo.DataEmissao.Data; condicionanteAtual.DataVencimento.Data = titulo.DataEmissao.Data.Value.AddDays(condicionanteAtual.Prazo.GetValueOrDefault()); } else { condicionanteAtual.DataInicioPrazo = titulo.DataInicioPrazo; condicionanteAtual.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddDays(condicionanteAtual.Prazo.GetValueOrDefault()); } } //Periodicidade if (!item.PossuiPeriodicidade && item.Periodicidades != null) { item.Periodicidades.Clear(); } TituloCondicionantePeriodicidade periodicidade = null; if (item.PossuiPeriodicidade) { int diasTotais = item.PeriodicidadeValor.GetValueOrDefault(); switch (item.PeriodicidadeTipo.Id) { case 1: //dia break; case 2: //Mes diasTotais *= 30; break; case 3: //Ano diasTotais *= 365; break; default: break; } if (item.Prazo.GetValueOrDefault() > 0 && item.Prazo.GetValueOrDefault() <= diasTotais) { int qtdPeriodo = Math.Abs((diasTotais / (item.Prazo.GetValueOrDefault()))); for (int i = 0; i < qtdPeriodo; i++) { periodicidade = new TituloCondicionantePeriodicidade(); periodicidade.Situacao.Id = 2; //Ativa //Regras do Modelo Sem Prazo em Condicionantes com Prazo if (!titulo.Modelo.Regra(eRegra.Prazo)) { periodicidade.DataInicioPrazo.Data = titulo.DataEmissao.Data.Value.AddDays(i * item.Prazo.GetValueOrDefault()); periodicidade.DataVencimento.Data = titulo.DataEmissao.Data.Value.AddDays((i + 1) * item.Prazo.GetValueOrDefault()); } else { periodicidade.DataInicioPrazo.Data = titulo.DataInicioPrazo.Data.Value.AddDays(i * item.Prazo.GetValueOrDefault()); periodicidade.DataVencimento.Data = titulo.DataInicioPrazo.Data.Value.AddDays((i + 1) * item.Prazo.GetValueOrDefault()); } item.Periodicidades.Add(periodicidade); } } } condicionanteAtual.Periodicidades = item.Periodicidades; condicionanteAtual.Situacao.Id = novaSituacaoCondicionante; _daCondicionante.Ativar(condicionanteAtual, bancoDeDados); } else { condicionanteAtual.Situacao.Id = novaSituacaoCondicionante; _daCondicionante.AlterarSituacao(condicionanteAtual, banco: bancoDeDados); } } } #endregion _da.AlterarSituacao(titulo, bancoDeDados); #region Atividades TituloBus tituloBus = new TituloBus(); AtividadeBus atividadeBus = new AtividadeBus(); List <Atividade> lstTituloAtividades = null; #region Título Concluido if (titulo.Situacao.Id == (int)eTituloSituacao.Concluido) //3 - Concluido { lstTituloAtividades = tituloBus.ObterAtividades(titulo.Id); if (lstTituloAtividades != null && lstTituloAtividades.Count > 0) { int?situacao = null; if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.GetValueOrDefault())) { IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); situacao = busEsp.ObterSituacaoAtividade(titulo.Id); } if (situacao != null || LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault()) || LstModeloCodigoIndeferido.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault())) { eAtividadeSituacao atividadeSituacao = (LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault())) ? eAtividadeSituacao.ComPendencia : eAtividadeSituacao.Indeferida; if (situacao != null) { atividadeSituacao = (eAtividadeSituacao)situacao; } atividadeBus.AlterarSituacao(lstTituloAtividades, atividadeSituacao, bancoDeDados); } else { foreach (Atividade atividade in lstTituloAtividades) { if (atividadeBus.VerificarDeferir(atividade, bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Deferida; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } } #endregion #region Título Encerrado if (titulo.Situacao.Id == (int)eTituloSituacao.Encerrado) //Encerrado { lstTituloAtividades = tituloBus.ObterAtividades(titulo.Id); eAtividadeSituacao situacaoAtual = eAtividadeSituacao.EmAndamento; if (lstTituloAtividades != null && lstTituloAtividades.Count > 0) { foreach (Atividade atividade in lstTituloAtividades) { situacaoAtual = (eAtividadeSituacao)atividadeBus.ObterAtividadeSituacao(atividade, bancoDeDados).SituacaoId; if (situacaoAtual == eAtividadeSituacao.Indeferida || situacaoAtual == eAtividadeSituacao.ComPendencia) { atividade.SituacaoId = (int)eAtividadeSituacao.EmAndamento; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } else { if (titulo.MotivoEncerramentoId == 1 || titulo.MotivoEncerramentoId == 4) { atividade.SituacaoId = (int)eAtividadeSituacao.EmAndamento; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } else if (atividadeBus.VerificarEncerrar(atividade, bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Encerrada; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } } #endregion #region Título Prorrogado if (titulo.Situacao.Id == (int)eTituloSituacao.Prorrogado) //6 - Prorrogar { lstTituloAtividades = tituloBus.ObterAtividades(titulo.Id); if (lstTituloAtividades != null && lstTituloAtividades.Count > 0) { if (LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo) || LstModeloCodigoIndeferido.Any(x => x == titulo.Modelo.Codigo)) { eAtividadeSituacao atividadeSituacao = (LstModeloCodigoPendencia.Any(x => x == titulo.Modelo.Codigo)) ? eAtividadeSituacao.ComPendencia : eAtividadeSituacao.Indeferida; atividadeBus.AlterarSituacao(lstTituloAtividades, atividadeSituacao, bancoDeDados); } else { int finalidade = _da.VerificarEhTituloAnterior(titulo); if (finalidade > 0) { eAtividadeSituacao atividadeSituacao = (finalidade == 1) ? eAtividadeSituacao.NovaFase : eAtividadeSituacao.EmRenovacao; atividadeBus.AlterarSituacao(lstTituloAtividades, atividadeSituacao, bancoDeDados); } else { foreach (Atividade atividade in lstTituloAtividades) { if (atividadeBus.VerificarDeferir(atividade, bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Deferida; atividadeBus.AlterarSituacao(atividade, bancoDeDados); continue; } //Voltar a situação default de andamento atividade.SituacaoId = (int)eAtividadeSituacao.EmAndamento; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } } #endregion #endregion #region Gerar Pdf de Titulo ArquivoBus arqBus = new ArquivoBus(eExecutorTipo.Interno); if (isGerarPdf && titulo.Modelo.Regra(eRegra.PdfGeradoSistema)) { TituloBus bus = new TituloBus(); titulo.ArquivoPdf.Nome = "Titulo.pdf"; titulo.ArquivoPdf.Extensao = ".pdf"; titulo.ArquivoPdf.ContentType = "application/pdf"; titulo.ArquivoPdf.Buffer = bus.GerarPdf(titulo, bancoDeDados); if (titulo.ArquivoPdf.Buffer != null) { arqBus.Salvar(titulo.ArquivoPdf); ArquivoDa _arquivoDa = new ArquivoDa(); _arquivoDa.Salvar(titulo.ArquivoPdf, User.EtramiteIdentity.FuncionarioId, User.EtramiteIdentity.Name, User.EtramiteIdentity.Login, (int)eExecutorTipo.Interno, User.EtramiteIdentity.FuncionarioTid, bancoDeDados); _da.SalvarPdfTitulo(titulo, bancoDeDados); } } #endregion #region Análise de Item //Trava a Análise de item de processo/documento caso o titulo que está sendo alterado seja um de pendência if (titulo.Atividades != null && titulo.Atividades.Count > 0) { Protocolo protocolo = titulo.Atividades.First().Protocolo; AnaliseItem analise = _busAnalise.Obter(protocolo); if (analise != null && analise.Id > 0) { if (_busTitulo.ExisteTituloPendencia(protocolo, bancoDeDados)) { if (analise.Situacao == 1) // 1 - Em andamento { analise.Situacao = 2; // 2 - Com Pendência _busAnalise.AlterarSituacao(analise, bancoDeDados); } } else if (analise.Situacao == 2) { analise.Situacao = 1; _busAnalise.AlterarSituacao(analise, bancoDeDados); } } } #endregion #region Gerar/Enviar Email #region Gerar Email Email email = null; if (titulo.Situacao.Id == (int)eTituloSituacao.Concluido && titulo.Modelo.Regra(eRegra.EnviarEmail)) //3 - Concluido { if (titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor != null) { string textoEmail = titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor.ToString(); if (!String.IsNullOrWhiteSpace(textoEmail)) { Dictionary <String, String> emailKeys = new Dictionary <string, string>(); emailKeys.Add("[orgão sigla]", _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla)); emailKeys.Add("[data da conclusão]", titulo.Modelo.Regra(eRegra.Prazo) ? titulo.DataInicioPrazo.DataTexto : titulo.DataEmissao.DataTexto); emailKeys.Add("[nome do modelo]", titulo.Modelo.Nome); emailKeys.Add("[nome do subtipo]", titulo.Modelo.SubTipo); emailKeys.Add("[nº do título]", titulo.Numero.Texto); emailKeys.Add("[nº processo/documento do título]", titulo.Protocolo.Numero); emailKeys.Add("[nome do empreendimento]", titulo.EmpreendimentoTexto); foreach (string key in emailKeys.Keys) { textoEmail = textoEmail.Replace(key, emailKeys[key]); } email = new Email(); email.Assunto = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla); email.Texto = textoEmail; email.Tipo = eEmailTipo.TituloConcluir; email.Codigo = titulo.Id; } } } #endregion if (email != null) { List <String> lstEmail = _da.ObterEmails(titulo.Id, bancoDeDados); if (lstEmail != null && lstEmail.Count > 0) { email.Destinatario = String.Join(", ", lstEmail.ToArray()); if (titulo.Modelo.Regra(eRegra.AnexarPDFTitulo)) { email.Anexos.Add(titulo.ArquivoPdf); } EmailBus emailBus = new EmailBus(); emailBus.Enviar(email, bancoDeDados); } } #endregion #region [ Solicitação CAR ] if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo)) { if (titulo.Situacao.Id == (int)eTituloSituacao.Concluido) { //Interno List <int> situacoes = new List <int>() { (int)eCARSolicitacaoSituacao.EmCadastro, (int)eCARSolicitacaoSituacao.Pendente, (int)eCARSolicitacaoSituacao.Valido, (int)eCARSolicitacaoSituacao.Suspenso }; CARSolicitacao solicitacao = _busCARSolicitacao.ObterPorEmpreendimento(titulo.EmpreendimentoId.GetValueOrDefault(0), situacoes, false, bancoDeDados) ?? new CARSolicitacao(); if (solicitacao != null && solicitacao.Id > 0) { solicitacao.SituacaoId = (int)eCARSolicitacaoSituacao.SubstituidoPeloTituloCAR; solicitacao.DataSituacao.Data = DateTime.Now; _busCARSolicitacao.AlterarSituacao(solicitacao, bancoDeDados, mostrarMsg: false); } else { //Credenciado _busCARSolicitacao.SubstituirPorTituloCARCredenciado(titulo.EmpreendimentoId.GetValueOrDefault(0), bancoDeDados); } } if (titulo.Situacao.Id == (int)eTituloSituacao.Encerrado) { List <int> situacoes = new List <int>() { (int)eCARSolicitacaoSituacao.SubstituidoPeloTituloCAR }; CARSolicitacao solicitacao = _busCARSolicitacao.ObterPorEmpreendimento(titulo.EmpreendimentoId.GetValueOrDefault(0), situacoes, false, bancoDeDados) ?? new CARSolicitacao(); if (solicitacao != null && solicitacao.Id > 0) { solicitacao.SituacaoAnteriorId = solicitacao.SituacaoId; solicitacao.DataSituacaoAnterior = solicitacao.DataSituacao; solicitacao.SituacaoId = (int)eCARSolicitacaoSituacao.Valido; solicitacao.DataSituacao.Data = DateTime.Now; _busCARSolicitacao.AlterarSituacao(solicitacao, bancoDeDados, mostrarMsg: false); } else { //Credenciado Empreendimento empreendimento = new EmpreendimentoBus().ObterSimplificado(titulo.EmpreendimentoId.GetValueOrDefault(0)); CARSolicitacaoCredenciadoBus carSolicitacaoCredBus = new CARSolicitacaoCredenciadoBus(); CARSolicitacao carSolicitacaoCred = new CARSolicitacao(); carSolicitacaoCred.Empreendimento.Codigo = empreendimento.Codigo; carSolicitacaoCredBus.AlterarSituacao(carSolicitacaoCred, new CARSolicitacao() { SituacaoId = (int)eCARSolicitacaoSituacao.Valido }); } } //SE situacao == Encerrado //TODO:Mudar Situação para Válido } #endregion if (!Validacao.EhValido) { bancoDeDados.Rollback(); return; } #region Salvar A especificidade if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.GetValueOrDefault())) { IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); titulo.Especificidade = busEsp.Obter(titulo.Id) as Especificidade; titulo.Especificidade = titulo.ToEspecificidade(); busEsp.Salvar(titulo.Especificidade, bancoDeDados); List <DependenciaLst> lstDependencias = busEsp.ObterDependencias(titulo.Especificidade); if (isGerarPdf && lstDependencias != null && lstDependencias.Count > 0) { if (!lstDependencias.Exists(x => x.TipoId == (int)eTituloDependenciaTipo.Caracterizacao && x.DependenciaTipo == (int)eCaracterizacao.Dominialidade)) { lstDependencias.Add(new DependenciaLst() { TipoId = (int)eTituloDependenciaTipo.Caracterizacao, DependenciaTipo = (int)eCaracterizacao.Dominialidade }); } _da.Dependencias(titulo.Id, titulo.Modelo.Id, titulo.EmpreendimentoId.GetValueOrDefault(), lstDependencias); } } #endregion #region Histórico eHistoricoAcao eAcao; switch ((eAlterarSituacaoAcao)acao) { case eAlterarSituacaoAcao.EmitirParaAssinatura: eAcao = eHistoricoAcao.emitir; break; case eAlterarSituacaoAcao.CancelarEmissao: eAcao = eHistoricoAcao.cancelaremissao; break; case eAlterarSituacaoAcao.Assinar: eAcao = eHistoricoAcao.assinar; break; case eAlterarSituacaoAcao.Prorrogar: eAcao = eHistoricoAcao.prorrogar; break; case eAlterarSituacaoAcao.Encerrar: eAcao = eHistoricoAcao.encerrar; break; case eAlterarSituacaoAcao.Entregar: eAcao = eHistoricoAcao.entregar; break; default: eAcao = eHistoricoAcao.emitir; break; } _da.Historico.Gerar(titulo.Id, eHistoricoArtefato.titulo, eAcao, bancoDeDados); _da.Consulta.Gerar(titulo.Id, eHistoricoArtefato.titulo, bancoDeDados); #region Solicitacao CAR if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo.GetValueOrDefault())) { if (titulo.Situacao.Id != (int)eTituloSituacao.Concluido) { _da.Consulta.Deletar(titulo.Id, eHistoricoArtefato.carsolicitacaotitulo, bancoDeDados); } else { _da.Consulta.Gerar(titulo.Id, eHistoricoArtefato.carsolicitacaotitulo, bancoDeDados); } } #endregion #endregion bancoDeDados.Commit(); Validacao.Add(Mensagem.TituloAlterarSituacao.TituloAltSituacaoSucesso); } }
public MemoryStream GerarPdf(Titulo titulo, BancoDeDados banco = null) { if ((titulo.Modelo.Arquivo.Id ?? 0) <= 0) { return(null); } ArquivoBus busArquivo = new ArquivoBus(eExecutorTipo.Interno); Arquivo templatePdf = busArquivo.Obter(titulo.Modelo.Arquivo.Id.Value); //Carrega as atividades para o ObterDadosPdf; if (titulo.Atividades == null || titulo.Atividades.Count == 0) { titulo.Atividades = _da.ObterAtividades(titulo.Id); } IEspecificidadeBus busEspecificiade = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.Value); titulo.Especificidade = busEspecificiade.Obter(titulo.Id) as Especificidade; titulo.ToEspecificidade(); IConfiguradorPdf configurador = busEspecificiade.ObterConfiguradorPdf(titulo.Especificidade) ?? new ConfiguracaoDefault(); configurador.ExibirSimplesConferencia = (titulo.Situacao.Id == (int)eTituloSituacao.Cadastrado) || (titulo.Situacao.Id == (int)eTituloSituacao.EmCadastro) || (titulo.Situacao.Id == (int)eTituloSituacao.AguardandoPagamento); Object dataSource = busEspecificiade.ObterDadosPdf(titulo.Especificidade, banco); #region Condicionantes var dataSourceTitulo = (((dynamic)dataSource).Titulo as DataSourceBase); if (titulo.Modelo.Regra(eRegra.Condicionantes)) { if (dataSourceTitulo.Condicionantes == null || dataSourceTitulo.Condicionantes.Count == 0) { EspecificidadeDa daEsp = new EspecificidadeDa(); dataSourceTitulo.Condicionantes = daEsp.ObterCondicionantes(titulo.Id); } } IConfiguracaoEvent cnfEvent = configurador as IConfiguracaoEvent; if (cnfEvent != null) { if (!titulo.Modelo.Regra(eRegra.Condicionantes) || dataSourceTitulo.Condicionantes == null || dataSourceTitulo.Condicionantes.Count == 0) { cnfEvent.AddLoadAcao((doc, dataSourceCnf) => { Table tabela = doc.FindTable("«TableStart:Titulo.Condicionantes»"); if (tabela != null) { if (configurador.CondicionanteRemovePageBreakAnterior) { tabela.RemovePageBreakAnterior(); } AsposeExtensoes.RemoveTables(new List <Table>() { tabela }); } }); } else { cnfEvent.AddExecutedAcao((doc, dataSourceCnf) => { Table tabela = doc.LastTable("«remover»"); while (tabela != null) { AsposeExtensoes.RemoveTables(new List <Table> { tabela }); tabela = doc.LastTable("«remover»"); } }); } } #endregion GeradorAspose gerador = new GeradorAspose(configurador); #region Assinantes List <TituloAssinante> assinantes = _da.ObterAssinantes(titulo.Id); if (busEspecificiade.CargosOrdenar != null && busEspecificiade.CargosOrdenar.Count > 0) { assinantes = assinantes.OrderByDescending(assinante => busEspecificiade.CargosOrdenar.IndexOf((eCargo)assinante.FuncionarioCargoCodigo)).ToList(); } configurador.Assinantes = assinantes.Select(x => (IAssinante) new AssinanteDefault() { Nome = x.FuncionarioNome, Cargo = x.FuncionarioCargoNome } ).ToList(); //Adiciona os assinantes da Especificidade configurador.Assinantes.AddRange((((dynamic)dataSource).Titulo as IAssinanteDataSource).AssinanteSource); #endregion MemoryStream msPdf = gerador.Pdf(templatePdf, dataSource); if (dataSource is Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf) { Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf dataAnexos = dataSource as Tecnomapas.Blocos.Entities.Etx.ModuloRelatorio.IAnexoPdf; msPdf = GeradorAspose.AnexarPdf(msPdf, dataAnexos.AnexosPdfs); } return(msPdf); }
public void Salvar(Titulo titulo) { try { titulo.Autor = new Funcionario() { Id = User.FuncionarioId }; if (titulo.Id <= 0) { titulo.Situacao.Id = (int)eTituloSituacao.Cadastrado; titulo.DataCriacao.Data = DateTime.Now; } if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Inteiro = null; titulo.Numero.Ano = null; } //Carrega o Modelo e suas regras do modelo titulo.Modelo = _busModelo.Obter(titulo.Modelo.Id); if (titulo.Condicionantes != null && titulo.Condicionantes.Count > 0) { foreach (var cond in titulo.Condicionantes) { if (!cond.PossuiPrazo || !cond.PossuiPeriodicidade) { if (cond.Periodicidades != null) { cond.Periodicidades.Clear(); } continue; } TituloCondicionantePeriodicidade periodicidade = new TituloCondicionantePeriodicidade(); periodicidade.Situacao.Id = 1; } } IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); string jsonEsp = (titulo.Especificidade != null) ? titulo.Especificidade.Json : null; titulo.Especificidade = (Especificidade)busEsp.Deserialize(jsonEsp); titulo.Especificidade = titulo.ToEspecificidade(); //Delega a validação de especificidade _validar.ValidarEspecificidade = () => { busEsp.Validar.Salvar(titulo.Especificidade); }; if (_validar.Salvar(titulo)) { #region Arquivos/Diretorio ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno); if (!titulo.Modelo.Regra(eRegra.PdfGeradoSistema) && titulo.ArquivoPdf.Id == 0) { titulo.ArquivoPdf = _busArquivo.Copiar(titulo.ArquivoPdf); } if (titulo.Anexos != null && titulo.Anexos.Count > 0) { foreach (Anexo anexo in titulo.Anexos) { if (anexo.Arquivo.Id == 0) { anexo.Arquivo = _busArquivo.Copiar(anexo.Arquivo); } } } #endregion using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia()) { GerenciadorTransacao.ObterIDAtual(); bancoDeDados.IniciarTransacao(); #region Arquivos/Banco ArquivoDa arquivoDa = new ArquivoDa(); if (!titulo.Modelo.Regra(eRegra.PdfGeradoSistema)) { arquivoDa.Salvar(titulo.ArquivoPdf, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados); } if (titulo.Anexos != null && titulo.Anexos.Count > 0) { foreach (Anexo anexo in titulo.Anexos) { if (anexo.Arquivo.Id == 0) { arquivoDa.Salvar(anexo.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados); } } } #endregion _da.Salvar(titulo, bancoDeDados); //Atualiza os Ids em Especificidade titulo.Especificidade = titulo.ToEspecificidade(); busEsp.Salvar(titulo.Especificidade, bancoDeDados); //Trata quando o catch do busEsp.Salvar silencia o erro. if (!Validacao.EhValido) { return; } bancoDeDados.Commit(); } Validacao.Add(Mensagem.Titulo.Salvar); if (LstCadastroAmbientalRuralTituloCodigo.Any(x => x == titulo.Modelo.Codigo)) { Validacao.Add(Mensagem.Retificacao.msgInst4()); } } } catch (Exception exc) { Validacao.AddErro(exc); } }
internal bool AlterarSituacao(Titulo titulo, bool validarTitulo) { if (titulo.Situacao.Id <= 0) { Validacao.Add(Mensagem.Titulo.SituacaoObrigatoria); } Titulo tituloAux = _da.ObterSimplificado(titulo.Id); if (tituloAux == null) { return(false); } switch ((eTituloSituacao)titulo.Situacao.Id) { #region Valido case eTituloSituacao.Valido: if (tituloAux.Situacao.Id != (int)eTituloSituacao.EmCadastro && tituloAux.Situacao.Id != (int)eTituloSituacao.Suspenso) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Válido", "Em cadastro ou Suspenso")); } break; #endregion #region Suspenso case eTituloSituacao.Suspenso: if (tituloAux.Situacao.Id != (int)eTituloSituacao.Valido) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Suspenso", "Válido")); } if (string.IsNullOrWhiteSpace(titulo.MotivoSuspensao)) { Validacao.Add(Mensagem.Titulo.MotivoObrigatorio); } break; #endregion #region Encerrado case eTituloSituacao.EncerradoDeclaratorio: if (tituloAux.Situacao.Id != (int)eTituloSituacao.Valido && tituloAux.Situacao.Id != (int)eTituloSituacao.Suspenso) { Validacao.Add(Mensagem.TituloAlterarSituacao.SituacaoInvalida("Encerrado", "Válido ou Suspenso")); } if (titulo.MotivoEncerramentoId <= 0) { Validacao.Add(Mensagem.Titulo.MotivoEncerramentoObrigatorio); } break; #endregion } if (!Validacao.EhValido) { return(false); } //Validar Titulo if (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 (titulo.Situacao.Id != (int)eTituloSituacao.EncerradoDeclaratorio) { if (titulo.Atividades != null) { foreach (var item in titulo.Atividades) { if (!item.Ativada) { Validacao.Add(Mensagem.AtividadeEspecificidade.AtividadeDesativada(item.NomeAtividade)); } } } } return(Validacao.EhValido); }
public void AlterarSituacao(Titulo titulo, BancoDeDados banco = null, bool validar = true) { Titulo atualTitulo = _da.ObterSimplificado(titulo.Id); bool isGerarNumero = false; bool isGerarPdf = false; if (validar) { if (!_validar.AlterarSituacao(titulo, atualTitulo.Situacao.Id == (int)eTituloSituacao.EmCadastro) || atualTitulo.Situacao.Id == (int)eTituloSituacao.Valido) { return; } } #region Configurar Nova Situacao //Situação Nova switch ((eTituloSituacao)titulo.Situacao.Id) { #region 3 - Valido case eTituloSituacao.Valido: if (atualTitulo.Situacao.Id == (int)eTituloSituacao.EmCadastro) { isGerarNumero = true; isGerarPdf = true; } break; #endregion } #endregion #region Numero de Titulo if (isGerarNumero) { titulo.Numero.ReiniciaPorAno = titulo.Modelo.Regra(eRegra.NumeracaoReiniciada); if (titulo.Modelo.Regra(eRegra.NumeracaoAutomatica)) { titulo.Numero.Automatico = true; TituloModeloResposta iniciarEm = titulo.Modelo.Resposta(eRegra.NumeracaoAutomatica, eResposta.InicioNumeracao); titulo.Numero.IniciaEm = null; titulo.Numero.IniciaEmAno = null; if (iniciarEm != null) { if (iniciarEm.Valor == null || !ValidacoesGenericasBus.ValidarMaskNumeroBarraAno(iniciarEm.Valor.ToString())) { Validacao.Add(Mensagem.Titulo.IniciarEmInvalido); return; } string[] iniciar = iniciarEm.Valor.ToString().Split('/'); titulo.Numero.IniciaEm = Convert.ToInt32(iniciar[0]); titulo.Numero.IniciaEmAno = Convert.ToInt32(iniciar[1]); if (titulo.Numero.IniciaEmAno.GetValueOrDefault() != DateTime.Now.Year) { titulo.Numero.IniciaEm = null; titulo.Numero.IniciaEmAno = null; } } } titulo.Numero.Ano = DateTime.Today.Year; } #endregion GerenciadorTransacao.ObterIDAtual(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { bancoDeDados.IniciarTransacao(); _da.DeclaratorioAlterarSituacao(titulo, bancoDeDados); #region Atividades AtividadeInternoBus atividadeBus = new AtividadeInternoBus(); #region Título Valido if (titulo.Situacao.Id == (int)eTituloSituacao.Valido) { if (titulo.Atividades != null && titulo.Atividades.Count > 0) { foreach (Atividade atividade in titulo.Atividades) { if (VerificarDeclaratorioSituacao(atividade, eTituloSituacao.Valido, titulo.EmpreendimentoId.GetValueOrDefault(), bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Regular; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } #endregion #region Título Suspenso if (titulo.Situacao.Id == (int)eTituloSituacao.SuspensoDeclaratorio) { if (titulo.Atividades != null && titulo.Atividades.Count > 0) { foreach (Atividade atividade in titulo.Atividades) { if (VerificarDeclaratorioSituacao(atividade, eTituloSituacao.SuspensoDeclaratorio, titulo.EmpreendimentoId.GetValueOrDefault(), bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Suspensa; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } #endregion #region Título Encerrado if (titulo.Situacao.Id == (int)eTituloSituacao.EncerradoDeclaratorio) { if (titulo.Atividades != null && titulo.Atividades.Count > 0) { foreach (Atividade atividade in titulo.Atividades) { if (VerificarDeclaratorioSituacao(atividade, eTituloSituacao.EncerradoDeclaratorio, titulo.EmpreendimentoId.GetValueOrDefault(), bancoDeDados)) { atividade.SituacaoId = (int)eAtividadeSituacao.Irregular; atividadeBus.AlterarSituacao(atividade, bancoDeDados); } } } } #endregion #endregion #region Gerar Pdf de Titulo ArquivoBus arqBus = new ArquivoBus(eExecutorTipo.Interno); if (isGerarPdf && titulo.Modelo.Regra(eRegra.PdfGeradoSistema)) { TituloInternoBus bus = new TituloInternoBus(); titulo.ArquivoPdf.Nome = "Titulo.pdf"; titulo.ArquivoPdf.Extensao = ".pdf"; titulo.ArquivoPdf.ContentType = "application/pdf"; titulo.ArquivoPdf.Buffer = bus.GerarPdf(titulo, bancoDeDados); if (titulo.ArquivoPdf.Buffer != null) { arqBus.Salvar(titulo.ArquivoPdf); ArquivoDa _arquivoDa = new ArquivoDa(); _arquivoDa.Salvar(titulo.ArquivoPdf, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados); _da.SalvarPdfTitulo(titulo, bancoDeDados); } } #endregion #region Gerar/Enviar Email #region Gerar Email Email email = null; if (titulo.Situacao.Id == (int)eTituloSituacao.Valido && titulo.Modelo.Regra(eRegra.EnviarEmail)) { if (titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor != null) { string textoEmail = titulo.Modelo.Resposta(eRegra.EnviarEmail, eResposta.TextoEmail).Valor.ToString(); if (!String.IsNullOrWhiteSpace(textoEmail)) { Dictionary <String, String> emailKeys = new Dictionary <string, string>(); emailKeys.Add("[orgão sigla]", _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla)); emailKeys.Add("[data da conclusão]", titulo.Modelo.Regra(eRegra.Prazo) ? titulo.DataInicioPrazo.DataTexto : titulo.DataEmissao.DataTexto); emailKeys.Add("[nome do modelo]", titulo.Modelo.Nome); emailKeys.Add("[nome do subtipo]", titulo.Modelo.SubTipo); emailKeys.Add("[nº do título]", titulo.Numero.Texto); emailKeys.Add("[nº processo/documento do título]", titulo.Protocolo.Numero); emailKeys.Add("[nome do empreendimento]", titulo.EmpreendimentoTexto); foreach (string key in emailKeys.Keys) { textoEmail = textoEmail.Replace(key, emailKeys[key]); } email = new Email(); email.Assunto = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoSigla); email.Texto = textoEmail; email.Tipo = eEmailTipo.TituloConcluir; email.Codigo = titulo.Id; } } } #endregion if (email != null) { List <String> lstEmail = _da.ObterEmails(titulo.Id, bancoDeDados); if (lstEmail != null && lstEmail.Count > 0) { email.Destinatario = String.Join(", ", lstEmail.ToArray()); if (titulo.Modelo.Regra(eRegra.AnexarPDFTitulo)) { email.Anexos.Add(titulo.ArquivoPdf); } EmailBus emailBus = new EmailBus(); emailBus.Enviar(email, bancoDeDados); } } #endregion if (!Validacao.EhValido) { bancoDeDados.Rollback(); return; } #region Salvar A especificidade if (EspecificiadadeBusFactory.Possui(titulo.Modelo.Codigo.GetValueOrDefault())) { IEspecificidadeBus busEsp = EspecificiadadeBusFactory.Criar(titulo.Modelo.Codigo.GetValueOrDefault()); titulo.Especificidade = busEsp.Obter(titulo.Id) as Especificidade; titulo.Especificidade = titulo.ToEspecificidade(); busEsp.Salvar(titulo.Especificidade, bancoDeDados); List <DependenciaLst> lstDependencias = busEsp.ObterDependencias(titulo.Especificidade); if (isGerarPdf && lstDependencias != null && lstDependencias.Count > 0) { if (!lstDependencias.Exists(x => x.TipoId == (int)eTituloDependenciaTipo.Caracterizacao && x.DependenciaTipo == (int)eCaracterizacao.Dominialidade)) { lstDependencias.Add(new DependenciaLst() { TipoId = (int)eTituloDependenciaTipo.Caracterizacao, DependenciaTipo = (int)eCaracterizacao.Dominialidade }); } _da.Dependencias(titulo.Id, titulo.Modelo.Id, titulo.EmpreendimentoId.GetValueOrDefault(), lstDependencias); } } #endregion #region Histórico _da.Historico.Gerar(titulo.Id, eHistoricoArtefato.titulo, eHistoricoAcao.alterarsituacao, bancoDeDados); _da.Consulta.Gerar(titulo.Id, eHistoricoArtefato.titulo, bancoDeDados); #endregion bancoDeDados.Commit(); Validacao.Add(Mensagem.TituloAlterarSituacao.TituloAltSituacaoSucesso); } }
public static bool PossuiEspecificidade(this TituloModelo modelo) { int codigoDoModelo = (modelo.Codigo != null && modelo.Codigo.HasValue ? modelo.Codigo.Value : 0); return(EspecificiadadeBusFactory.Possui(codigoDoModelo)); }