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); } }
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); } }
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); } }
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); }
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); } }