Пример #1
0
        private List <NotificacaoPushResponse> ProcessaEnvioNotificacoes(NotificacaoPushRequest parametros)
        {
            using (MiniProfiler.Current.Step("Processando envio de notificações")) {
                var notificacoesProcessar = _notificacaoRepository.GetNotificacoesAProcessar(EStatusEnvioNotificacao.Processando);
                var retorno = new List <NotificacaoPushResponse> ();

                foreach (var notificacao in notificacoesProcessar)
                {
                    var notificacaoResult = new NotificacaoPushResponse {
                        NotificacaoId = notificacao.IdNotificacao
                    };
                    try {
                        var seletivas = ConfiguraNotificacao(notificacao, parametros);
                        notificacaoResult.OneSignalResponse = SendSeletivasList(seletivas, (Aplicacoes)notificacao.AplicacaoId);
                        notificacaoResult.Sucesso           = true;
                    } catch (Exception ex) {
                        notificacaoResult.Sucesso = false;
                        notificacaoResult.Erro    = ex.Message;
                    }
                    retorno.Add(notificacaoResult);
                    notificacao.StatusEnvio = IsNotificacaoRecorrente(notificacao.TipoNotificacao.Id) ? EStatusEnvioNotificacao.NaoEnviado : EStatusEnvioNotificacao.Enviado;
                    _notificacaoRepository.UpdateNotificacao(notificacao);
                }
                return(retorno);
            }
        }
Пример #2
0
        public NotificacaoPushRequest ValidaDataString(NotificacaoPushRequest parametros)
        {
            using (MiniProfiler.Current.Step("Validando data string")) {
                if (parametros.ParametrosAvaliacaoAula == null)
                {
                    parametros.ParametrosAvaliacaoAula = new ParametrosAvaliacaoAula();
                }
                if (parametros.ParametrosPrimeiraAula == null)
                {
                    parametros.ParametrosPrimeiraAula = new ParametrosPrimeiraAula();
                }
                if (!string.IsNullOrEmpty(parametros.ParametrosAvaliacaoAula.DataString))
                {
                    DateTime data;
                    DateTime.TryParse(parametros.ParametrosAvaliacaoAula.DataString, out data);

                    parametros.ParametrosAvaliacaoAula.Data = data;
                }
                if (!string.IsNullOrEmpty(parametros.ParametrosPrimeiraAula.DataString))
                {
                    DateTime data;
                    DateTime.TryParse(parametros.ParametrosPrimeiraAula.DataString, out data);

                    parametros.ParametrosPrimeiraAula.Data = data;
                }

                return(parametros);
            }
        }
Пример #3
0
        public List <NotificacaoPushResponse> ProcessaNotificacoesPush(NotificacaoPushRequest parametros)
        {
            using (MiniProfiler.Current.Step("Processando notificações push")) {
                parametros = ValidaDataString(parametros);

                ProcessaAgendamentoNotificacao(parametros);
                var resultEnvio = ProcessaEnvioNotificacoes(parametros);

                return(resultEnvio);
            }
        }
Пример #4
0
        private bool ProcessaAgendamentoNotificacao(NotificacaoPushRequest parametros)
        {
            using (MiniProfiler.Current.Step("processando agendamento notificação")) {
                var  listNotificacoesPendentes = _notificacaoRepository.GetNotificacoesAProcessar(EStatusEnvioNotificacao.NaoEnviado);
                bool bResult = true;

                foreach (var notificacaoPendente in listNotificacoesPendentes)
                {
                    try {
                        var devicesInscritos = new List <DeviceNotificacao> ();

                        switch ((ETipoNotificacao)notificacaoPendente.TipoNotificacao.Id)
                        {
                        case ETipoNotificacao.DuvidasAcademicas:
                            devicesInscritos = GetDevicesNotificacaoDuvidasAcademicas();
                            break;

                        case ETipoNotificacao.AvaliacaoAula:
                            devicesInscritos = GetDevicesNotificacaoAvaliacaoAula(notificacaoPendente, parametros.ParametrosAvaliacaoAula);
                            break;

                        case ETipoNotificacao.PrimeiraAula:
                            devicesInscritos = GetDevicesNotificacaoPrimeiraAula(notificacaoPendente, parametros.ParametrosPrimeiraAula);
                            break;

                        case ETipoNotificacao.SimuladoOnline:

                        default:
                            var alunos = GetAlunosNotificacao(notificacaoPendente);

                            devicesInscritos = alunos.Select(x => x.Devices.LastOrDefault())
                                               .Select(x => new DeviceNotificacao {
                                DeviceToken = x.Token, NotificacaoId = notificacaoPendente.IdNotificacao
                            })
                                               .ToList();
                            break;
                        }
                        if (devicesInscritos.Any())
                        {
                            CriaFilaDevicesNotificacao(devicesInscritos);
                        }

                        notificacaoPendente.StatusEnvio = EStatusEnvioNotificacao.Processando;

                        _notificacaoRepository.UpdateNotificacao(notificacaoPendente);
                    } catch {
                        throw;
                    }
                }
                return(bResult);
            }
        }
        public void ConfiguraNotificacao_NotificacaoSimulado_NotificacoesComMesmaMensagem()
        {
            var parametros      = new NotificacaoPushRequest();
            var notificacao     = NotificacaoEntityTestData.GetNotificacaoSimulado();
            var devicesDataTest = NotificacaoEntityTestData.GetListDevicesNotificacao(5000);

            var notificacaoDataMock = Substitute.For <INotificacaoData>();

            notificacaoDataMock.GetDevicesNotificacaoFila(notificacao.IdNotificacao).Returns(devicesDataTest);


            var seletivas = new NotificacaoBusiness(notificacaoDataMock,
                                                    new AccessEntity(),
                                                    new AlunoEntity(),
                                                    new NotificacaoDuvidasAcademicasEntity(),
                                                    new MenuBusiness(new MenuEntity(), new PessoaEntity(), new BlackListEntity())
                                                    ).ConfiguraNotificacao(notificacao, parametros);


            Assert.IsTrue(seletivas.All(x => x.Mensagem == notificacao.Texto));
            Assert.IsTrue(seletivas.All(x => x.Titulo == notificacao.Titulo));
        }
        public void ConfiguraNotificacao_NotificacaoSimulado_NotificacoesSeparadasPeloLimiteDevices()
        {
            var parametros      = new NotificacaoPushRequest();
            var notificacao     = NotificacaoEntityTestData.GetNotificacaoSimulado();
            var devicesDataTest = NotificacaoEntityTestData.GetListDevicesNotificacao(5000);


            var notificacaoDataMock = Substitute.For <INotificacaoData>();

            notificacaoDataMock.GetDevicesNotificacaoFila(notificacao.IdNotificacao).Returns(devicesDataTest);


            var seletivas = new NotificacaoBusiness(notificacaoDataMock,
                                                    new AccessEntity(),
                                                    new AlunoEntity(),
                                                    new NotificacaoDuvidasAcademicasEntity(),
                                                    new MenuBusiness(new MenuEntity(), new PessoaEntity(), new BlackListEntity())
                                                    ).ConfiguraNotificacao(notificacao, parametros);


            Assert.IsTrue(seletivas.Count == 3);
        }
Пример #7
0
        public List <NotificacaoSeletiva> ConfiguraNotificacao(Notificacao notificacao, NotificacaoPushRequest parametros)
        {
            using (MiniProfiler.Current.Step("Configurando notificação")) {
                var seletivas = new List <NotificacaoSeletiva> ();
                var devices   = _notificacaoRepository.GetDevicesNotificacaoFila(notificacao.IdNotificacao);
                if (devices.Any())
                {
                    switch ((ETipoNotificacao)notificacao.TipoNotificacao.Id)
                    {
                    case ETipoNotificacao.AvaliacaoAula:
                        seletivas = SetNotificacoesAvaliacao(devices, notificacao, parametros.ParametrosAvaliacaoAula);
                        break;

                    case ETipoNotificacao.PrimeiraAula:
                        seletivas = SetNotificacoesPrimeiraAula(devices, notificacao);
                        break;

                    case ETipoNotificacao.SimuladoOnline:
                        seletivas = SetNotificacoesSimulado(devices, notificacao);
                        break;

                    default:
                        seletivas = SetNotificacoesSeletivas(devices, notificacao);
                        break;
                    }
                }
                return(seletivas);
            }
        }