private async Task EnviarNotificacaoImediataAsync(NotificacaoSgpDto notificacao) { var dataEnvio = TimeZoneInfo.ConvertTimeToUtc(notificacao.DataEnvio); var agora = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now); if (dataEnvio > agora) { return; } notificacao.InserirCategoria(); List <int> grupos = notificacao.ObterGrupoLista(); string bodyUTF8 = UtilString.EncodeUTF8("Você recebeu uma nova mensagem da SME. Clique aqui para visualizar os detalhes."); Dictionary <string, string> dicionarioNotificacao = new Dictionary <String, String> { ["Titulo"] = notificacao.Titulo, ["Mensagem"] = notificacao.Mensagem, ["categoriaNotificacao"] = notificacao.CategoriaNotificacao, ["Id"] = notificacao.Id.ToString(), ["CriadoEm"] = notificacao.CriadoEm.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), ["click_action"] = "FLUTTER_NOTIFICATION_CLICK", }; var Notificacao = new Notification { Title = notificacao.Titulo, Body = bodyUTF8, }; await EnviarNotificacao(notificacao, grupos, dicionarioNotificacao, Notificacao); }
public async Task <NotificacaoSgpDto> Executar(NotificacaoSgpDto notificacao) { try { notificacao.DataEnvio = notificacao.DataEnvio.Date; var dataEnvio = TimeZoneInfo.ConvertTimeToUtc(notificacao.DataEnvio).Date; var hoje = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).Date; notificacao.EnviadoPushNotification = (hoje >= dataEnvio); await mediator.Send(new CriarNotificacaoCommand(mapper.Map <Notificacao>(notificacao))); if (notificacao.EnviadoPushNotification) { notificacao.InserirCategoria(); await EnviarNotificacaoImediataAsync(notificacao); } return(notificacao); } catch (Exception ex) { Console.WriteLine(ex); throw; } }
private async Task EnviarComunicadoDRE(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification Notificacao) { var data = new Dictionary <String, String>(dicionarioNotificacao); var topico = "DRE-" + notificacao.CodigoDre; data.Add("CodigoDre", "DRE-" + topico); await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, Notificacao, data))); }
private async Task EnviarComunicadoTurmas(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification Notificacao) { foreach (var turma in notificacao.Turmas) { var data = new Dictionary <String, String>(dicionarioNotificacao); var topico = "TUR-" + turma; data.Add("CodigoTurma", "TUR-" + turma); await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, Notificacao, data))); } }
public async Task <NotificacaoSgpDto> Executar(NotificacaoSgpDto notificacao) { await mediator.Send(new CriarNotificacaoCommand(mapper.Map <Notificacao>(notificacao))); notificacao.InserirCategoria(); await EnviarNotificacaoImediataAsync(notificacao); return(notificacao); }
private async Task EnviarComunicadoUEModalidade(NotificacaoSgpDto notificacao, List <int> grupos, Dictionary <string, string> dicionarioNotificacao, Notification Notificacao) { foreach (var grupo in grupos) { var data = new Dictionary <String, String>(dicionarioNotificacao); var topico = "UE-" + notificacao.CodigoUe + "-MOD-" + grupo; data.Add("CodigoUe", "UE-" + notificacao.CodigoUe); await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, Notificacao, data))); } }
private async Task EnviarComunicadoDRE_ANO(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification notificacaoFirebase) { var data = new Dictionary <String, String>(dicionarioNotificacao); var seriesResumidas = notificacao.ObterSeriesResumidas(); foreach (var serieResumida in seriesResumidas) { var topico = $"SERIERESUMIDA-{serieResumida}-DRE-{notificacao.CodigoDre}"; await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, notificacaoFirebase, data))); } }
private async Task EnviarNotificacao(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification notificacaoFirebase) { switch (notificacao.TipoComunicado) { case TipoComunicado.SME: await EnviarNotificacaoSME(notificacao.ObterModalidades(), dicionarioNotificacao, notificacaoFirebase); break; case TipoComunicado.SME_ANO: await EnviarNotificacaoSerieResumida(notificacao, dicionarioNotificacao, notificacaoFirebase); break; case TipoComunicado.DRE: await EnviarComunicadoDRE(notificacao, dicionarioNotificacao, notificacaoFirebase); break; case TipoComunicado.DRE_ANO: await EnviarComunicadoDRE_ANO(notificacao, dicionarioNotificacao, notificacaoFirebase); break; case TipoComunicado.UE: await EnviarComunicadoUE(notificacao, dicionarioNotificacao, notificacaoFirebase); break; case TipoComunicado.UEMOD: if (notificacao.ObterSeriesResumidas().Any()) { await EnviarNotificacaoSerieResumida(notificacao, dicionarioNotificacao, notificacaoFirebase); } else { await EnviarComunicadoUEModalidade(notificacao, dicionarioNotificacao, notificacaoFirebase); } break; case TipoComunicado.TURMA: await EnviarComunicadoTurmas(notificacao, dicionarioNotificacao, notificacaoFirebase); break; case TipoComunicado.ALUNO: await EnviarComunicadoAlunos(notificacao, dicionarioNotificacao, notificacaoFirebase); break; default: break; } }
public async Task <AtualizacaoNotificacaoResposta> Executar(NotificacaoSgpDto notificacao) { var resultado = await mediator.Send(new AtualizarNotificacaoCommand(notificacao.Id, notificacao.Titulo, notificacao.Mensagem, notificacao.DataExpiracao, notificacao.AlteradoPor)); if (resultado == null) { throw new NegocioException("Não foi possível atualizar o comunicado na base do Escola Aqui!"); } return(resultado); }
private async Task EnviarComunicadoUEModalidade(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification Notificacao) { var modalidades = notificacao.ObterModalidades(); foreach (var modalidade in modalidades) { var data = new Dictionary <String, String>(dicionarioNotificacao); var topico = $"UE-{notificacao.CodigoUe}-MOD-{modalidade}"; data.Add("CodigoUe", "UE-" + notificacao.CodigoUe); await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, Notificacao, data))); } }
public async Task EnviarNotificacaoImediataAsync(NotificacaoSgpDto notificacao) { notificacao.InserirCategoria(); Dictionary <string, string> dicionarioNotificacao = montarNotificacao(notificacao); var notificacaoFirebase = new Notification { Title = notificacao.Titulo, Body = UtilString.EncodeUTF8("Você recebeu uma nova mensagem da SME. Clique aqui para visualizar os detalhes.").Replace("�", "ê"), }; await EnviarNotificacao(notificacao, dicionarioNotificacao, notificacaoFirebase); }
private async Task AlteraFlagEnviado(NotificacaoSgpDto notificacao) { var atualizaDto = new AtualizarNotificacaoDto { EnviadoPushNotification = true, AlteradoEm = DateTime.Now, AlteradoPor = "worker", DataExpiracao = notificacao.DataExpiracao, Id = notificacao.Id, Mensagem = notificacao.Mensagem, Titulo = notificacao.Titulo }; await notificacaoRepository.Atualizar(atualizaDto); }
private static Dictionary <string, string> montarNotificacao(NotificacaoSgpDto notificacao) { var mensagem = Regex.Replace(notificacao.Mensagem, @"<(.|\n)*?>", string.Empty); return(new Dictionary <String, String> { ["Titulo"] = notificacao.Titulo, ["Mensagem"] = mensagem.Length > 256 ? mensagem.Substring(0, 256) : mensagem, ["categoriaNotificacao"] = notificacao.CategoriaNotificacao, ["Id"] = notificacao.Id.ToString(), ["CriadoEm"] = notificacao.CriadoEm.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), ["click_action"] = "FLUTTER_NOTIFICATION_CLICK", }); }
private async Task EnviarComunicadoAlunos(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification Notificacao) { foreach (var aluno in notificacao.Alunos) { var data = new Dictionary <String, String>(dicionarioNotificacao); var topico = "ALU-" + aluno; data.Add("CodigoAluno", topico); data.Add("CodigoEOL", aluno); await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, Notificacao, data))); } }
private async Task EnviarNotificacaoSerieResumida(NotificacaoSgpDto notificacao, Dictionary <string, string> dicionarioNotificacao, Notification notificacaoFirebase) { var data = new Dictionary <String, String>(dicionarioNotificacao); var modalidades = notificacao.ObterModalidades(); var seriesResumidas = notificacao.ObterSeriesResumidas(); foreach (var serieResumida in seriesResumidas) { foreach (var modalidade in modalidades) { var topico = $"SERIERESUMIDA-{serieResumida}-MOD-{modalidade}"; await mediator.Send(new EnviarNotificacaoPorGrupoCommand(MontaMensagem(topico, notificacaoFirebase, data))); } } }
private async Task EnviarNotificacao(NotificacaoSgpDto notificacao, List <int> grupos, Dictionary <string, string> dicionarioNotificacao, Notification Notificacao) { switch (notificacao.TipoComunicado) { case TipoComunicado.SME: await EnviarNotificacaoSME(grupos, dicionarioNotificacao, Notificacao); break; case TipoComunicado.DRE: await EnviarComunicadoDRE(notificacao, dicionarioNotificacao, Notificacao); break; case TipoComunicado.UE: await EnviarComunicadoUE(notificacao, dicionarioNotificacao, Notificacao); break; case TipoComunicado.UEMOD: await EnviarComunicadoUEModalidade(notificacao, grupos, dicionarioNotificacao, Notificacao); break; case TipoComunicado.TURMA: await EnviarComunicadoTurmas(notificacao, dicionarioNotificacao, Notificacao); break; case TipoComunicado.ALUNO: await EnviarComunicadoAlunos(notificacao, dicionarioNotificacao, Notificacao); break; default: break; } }
//[ChaveIntegracaoFiltro] public async Task <ObjectResult> Atualizar([FromBody] NotificacaoSgpDto notificacao, [FromServices] IAtualizarNotificacaoUseCase atualizarNotificacaoUseCase) { return(Ok(await atualizarNotificacaoUseCase.Executar(notificacao))); }
public async Task <NotificacaoSgpDto> Executar(NotificacaoSgpDto notificacao) { var resultado = await mediator.Send(new AtualizarNotificacaoCommand(mapper.Map <Notificacao>(notificacao))); return(mapper.Map <NotificacaoSgpDto>(resultado)); }
private async Task EnviaPushNotification(NotificacaoSgpDto notificacao) { await criarNotificacaoUseCase.EnviarNotificacaoImediataAsync(notificacao); }