public List <NotificacaoSeletiva> SetNotificacoesAvaliacao(List <DeviceNotificacao> devices, Notificacao notificacao, ParametrosAvaliacaoAula parametros) { using (MiniProfiler.Current.Step("Alterando notificações de avaliação")) { List <NotificacaoSeletiva> notificacaoSeletivas = new List <NotificacaoSeletiva> (); DateTime dataMensagem = parametros.Data != default(DateTime) ? parametros.Data : DateTime.Today; var devicesInfoAgrupadas = devices.GroupBy(x => x.InfoAdicional).ToList(); var mensagem = notificacao.Texto.Replace("#DATA", dataMensagem.ToString("dd/MM/yyyy")); foreach (var item in devicesInfoAgrupadas) { var notificacaoSeletivaAvaliacao = new NotificacaoSeletiva() { NotificacaoTipoId = notificacao.TipoNotificacao, Titulo = notificacao.Titulo, Mensagem = mensagem, InfoAdicional = item.Key, DevicesUsuarios = item.Select(x => x.DeviceToken).ToList() }; notificacaoSeletivas.Add(notificacaoSeletivaAvaliacao); } return(notificacaoSeletivas); } }
public OneSignalNotificationResponse SendSeletiva(NotificacaoSeletiva notificacao, string chaveAppId, string chaveGcm) { using (MiniProfiler.Current.Step("enviando seletiva")) { IDictionary <string, string> additionalInfo = new Dictionary <string, string> (); additionalInfo.Add("notificacaoTipoId", (notificacao.NotificacaoTipoId.Id).ToString()); additionalInfo.Add("infoAdicional", notificacao.InfoAdicional); var oneSignalObject = new OneSignalNotification() { AppId = ConfigurationProvider.Get("Settings:" + chaveAppId), GcmKey = ConfigurationProvider.Get("Settings:" + chaveGcm), Message = new OneSignalMessage(notificacao.Mensagem), Title = new OneSignalMessage(notificacao.Titulo), Devices = notificacao.DevicesUsuarios, Data = additionalInfo, DelayedOption = UseInteligentDelivery(notificacao.NotificacaoTipoId.Id) ? "last-active" : "null" }; OneSignalNotificationResponse data = new OneSignalNotificationResponse(); using (var client = HttpCalls.CreateClient(ConfigurationProvider.Get("Settings:oneSignalUrl"))) { try { var response = HttpCalls.PostData(client, ConfigurationProvider.Get("Settings:oneSignalNotificationResource"), oneSignalObject); data.Sucesso = true; data.Message = response; } catch (Exception ex) { data.Sucesso = false; data.Message = ex.Message; } } return(data); } }
public List <NotificacaoSeletiva> SetNotificacoesSeletivas(List <DeviceNotificacao> devices, Notificacao notificacao) { using (MiniProfiler.Current.Step("Alterando notificações de seletivas")) { const int QUANTIDADE_LIMITE_DEVICES = 2000; List <NotificacaoSeletiva> lstNotificacaoSeletivas = new List <NotificacaoSeletiva> (); for (int i = 0; i < devices.Count; i += QUANTIDADE_LIMITE_DEVICES) { var notificacaoSeletiva = new NotificacaoSeletiva() { NotificacaoTipoId = notificacao.TipoNotificacao, Titulo = notificacao.Titulo, Mensagem = notificacao.Texto, InfoAdicional = notificacao.InfoAdicional, DevicesUsuarios = devices.Select(x => x.DeviceToken).Skip(i).Take(QUANTIDADE_LIMITE_DEVICES).ToList() }; lstNotificacaoSeletivas.Add(notificacaoSeletiva); } return(lstNotificacaoSeletivas); } }
public List <NotificacaoSeletiva> SetNotificacoesPrimeiraAula(List <DeviceNotificacao> devices, Notificacao notificacao) { using (MiniProfiler.Current.Step("Alterando notificações de primeira aula")) { List <NotificacaoSeletiva> notificacaoSeletivas = new List <NotificacaoSeletiva> (); var devicesInfoAgrupadas = devices.GroupBy(x => new { x.Titulo, x.Mensagem }).ToList(); foreach (var item in devicesInfoAgrupadas) { var notificacaoSeletivaAvaliacao = new NotificacaoSeletiva() { NotificacaoTipoId = notificacao.TipoNotificacao, Titulo = item.Key.Titulo, Mensagem = item.Key.Mensagem, DevicesUsuarios = item.Select(x => x.DeviceToken).ToList() }; notificacaoSeletivas.Add(notificacaoSeletivaAvaliacao); } return(notificacaoSeletivas); } }