Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
        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);
            }
        }