/// <summary> /// /// </summary> public override UtilRetorno gerarNotificacao(object Origem) { List <EventoInscricao> listaInscricoes = (List <EventoInscricao>)Origem; var ORetorno = UtilRetorno.newInstance(false); var idEvento = listaInscricoes.FirstOrDefault()?.idEvento; var tituloEvento = listaInscricoes.FirstOrDefault()?.Evento.titulo; var OMensagem = this.MensagemEmailConsultaBL.listar(IdentificacaoMensagemEmailConst.EVENTO_ENVIO_CERTIFICADO).FirstOrDefault(x => x.idReferencia == idEvento) ?? new MensagemEmail(); if (OMensagem.corpoEmail.isEmpty()) { ConfiguracaoNotificacao OConfiguracao = ConfiguracaoNotificacaoBL.getInstance.carregar(); OMensagem.corpoEmail = OConfiguracao.corpoEmailEnvioCerficadoEvento; } if (OMensagem.titulo.isEmpty()) { OMensagem.titulo = EventoEmailsConst.tituloEmailEnvioCertificado; } if (OMensagem.corpoEmail.isEmpty()) { OMensagem.corpoEmail = EventoEmailsConst.corpoEmailEnvioCertificado; } var ONotificacao = new NotificacaoSistema(); ONotificacao.flagEmail = true; ONotificacao.flagTodosAssociados = false; ONotificacao.flagAssociadosEspecificos = true; ONotificacao.flagSistema = false; ONotificacao.flagMobile = false; ONotificacao.idTipoNotificacao = TipoNotificacaoConst.CERTIFICADO_EVENTO; ONotificacao.titulo = OMensagem.titulo; ONotificacao.notificacao = OMensagem.corpoEmail; ONotificacao.dtProgramacaoEnvio = DateTime.Now; ONotificacao.titulo = ONotificacao.titulo.Replace("#TITULO_EVENTO#", tituloEvento); var flagSucesso = this.NotificacaoSistemaCadastroBL.salvar(ONotificacao); if (!flagSucesso) { ORetorno.flagError = true; ORetorno.listaErros.Add("Houve algum problema ao gerar o e-mail de envio de certificado. Tente novamente mais tarde."); return(ORetorno); } TarefaSistema OTarefaSistema = this.gerarTarefa(ONotificacao); this.vincularDestinos(listaInscricoes, ONotificacao, OTarefaSistema); return(ORetorno); }
public ActionResult gerarBoletos() { int idContribuicao = UtilRequest.getInt32("idContribuicao"); int[] idsAssociados = UtilRequest.getListInt("idsAssociados").ToArray(); var ViewModel = new PainelCobrancaVM(); ViewModel.carregarDadosContribuicao(idContribuicao, idsAssociados); StringBuilder msgRetorno = new StringBuilder(); if (ViewModel.listaIsentos.Count > 0) { foreach (var itemIsento in ViewModel.listaIsentos) { msgRetorno.AppendLine($"O associado {itemIsento.AssociadoContribuicao.nomeAssociado} não terá o boleto gerado pois é um associado isento."); } } if (ViewModel.listaQuitados.Count > 0) { foreach (var itemQuitado in ViewModel.listaQuitados) { msgRetorno.AppendLine($"O associado {itemQuitado.AssociadoContribuicao.nomeAssociado} não terá o boleto gerado pois é o pagamento já foi realizado."); } } var idsBoletosGerados = ViewModel.carregarBoletos().Select(x => x.idAssociadoContribuicao).ToList(); var listaPendentes = ViewModel.listaCobrancas.Where(x => !x.AssociadoContribuicao.flagQuitado() && !idsBoletosGerados.Contains(x.AssociadoContribuicao.id)).ToList(); if (!listaPendentes.Any()) { return(Json(new { error = true, message = "Não foi encontrada nenhuma cobrança em aberto para geração de boletos." }, JsonRequestBehavior.AllowGet)); } var OTarefa = new TarefaSistema(); OTarefa.idReferencia = idContribuicao; OTarefa.idUsuarioInicializacao = User.id(); OTarefa.titulo = idsAssociados.Length == 0 ? $"Geração de boletos de cobrança para todos os associados: {ViewModel.Contribuicao.descricao}" : $"Geração de boletos de cobrança para associados específicos: {ViewModel.Contribuicao.descricao}"; //Criar a nova tarefa no sistema var OTarefaGeracaoBL = TarefaGerarBoletosContribuicao.getInstance; var RetornoTarefa = OTarefaGeracaoBL.criar(OTarefa, false); if (RetornoTarefa.flagError) { return(Json(new { error = true, message = RetornoTarefa.listaErros.FirstOrDefault() }, JsonRequestBehavior.AllowGet)); } var listaNovosItens = listaPendentes.Select(x => new AssociadoContribuicaoBoletoGeracao { idOrganizacao = User.id(), idAssociadoContribuicao = x.AssociadoContribuicao.id, dtVencimento = x.AssociadoContribuicao.dtVencimentoOriginal, idUsuarioGeracao = User.id(), idTarefa = OTarefa.id }).ToList(); //Salvar a lista de contribuicoes que precisam ser geradas OAssociadoContribuicaoBoletoGeracaoBL.salvar(listaNovosItens); //Registro início do processamento OTarefaGeracaoBL.iniciarProcessamento(); //Realizar primeira execucao OTarefaGeracaoBL.executar(); return(Json(new { error = false, message = $"O sistema irá gerar boletos para {listaNovosItens.Count} cobranças. Isso poderá durar alguns minutos. Ao término da execução, você será notificado." }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// /// </summary> private void vincularDestinos(List <EventoInscricao> listaInscricoes, NotificacaoSistema ONotificacao, TarefaSistema OTarefaSistema) { var listaNotificacoesVinculadas = new List <NotificacaoSistemaEnvio>(); foreach (var OInscricao in listaInscricoes) { var listaEmail = new List <string>(); listaEmail.Add(OInscricao.emailPrincipal); listaEmail.Add(OInscricao.emailSecundario); foreach (var email in listaEmail) { var OEnvio = new NotificacaoSistemaEnvio(); OEnvio.idNotificacao = ONotificacao.id; OEnvio.idReferencia = OInscricao.id; OEnvio.nome = OInscricao.nomeInscrito; OEnvio.email = email; OEnvio.idTarefa = OTarefaSistema?.id; string parametrosPersonalizados = this.montarParametrosPersonalizados(OInscricao).abreviar(8000); OEnvio.personalizacao = parametrosPersonalizados; if (!UtilValidation.isEmail(OEnvio.email)) { OEnvio.flagExcluido = true; OEnvio.motivoExclusao = "O e-mail configurado não é válido."; } listaNotificacoesVinculadas.Add(OEnvio); } } this.NotificacaoSistemaCadastroBL.salvarDetalhesNotificacao(listaNotificacoesVinculadas); }