Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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)));
        }
Пример #4
0
 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)));
     }
 }
Пример #5
0
        public async Task <NotificacaoSgpDto> Executar(NotificacaoSgpDto notificacao)
        {
            await mediator.Send(new CriarNotificacaoCommand(mapper.Map <Notificacao>(notificacao)));

            notificacao.InserirCategoria();

            await EnviarNotificacaoImediataAsync(notificacao);

            return(notificacao);
        }
Пример #6
0
 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)));
     }
 }
Пример #7
0
        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)));
            }
        }
Пример #8
0
        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);
        }
Пример #10
0
        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)));
            }
        }
Пример #11
0
        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);
 }
Пример #13
0
        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",
            });
        }
Пример #14
0
        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)));
            }
        }
Пример #15
0
        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)));
                }
            }
        }
Пример #16
0
        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;
            }
        }
Пример #17
0
 //[ChaveIntegracaoFiltro]
 public async Task <ObjectResult> Atualizar([FromBody] NotificacaoSgpDto notificacao, [FromServices] IAtualizarNotificacaoUseCase atualizarNotificacaoUseCase)
 {
     return(Ok(await atualizarNotificacaoUseCase.Executar(notificacao)));
 }
Пример #18
0
        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);
 }