Example #1
0
        private RegistrationDescription CriaRegistration(RegistroNotificacaoViewModel model)
        {
            RegistrationDescription registration;

            switch (model.Plataforma)
            {
            case PlataformaNotificacao.WNS:
                var template = @"<toast><visual><binding template=""ToastText01""><text id=""1"">$(message)</text></binding></visual></toast>";
                registration = new WindowsTemplateRegistrationDescription(model.Handle, template);
                break;

            case PlataformaNotificacao.GCM:
                template     = "{\"data\":{\"message\":\"$(message)\"}}";
                registration = new GcmTemplateRegistrationDescription(model.Handle, template);
                break;

            case PlataformaNotificacao.APNS:
                template     = "{\"aps\":{\"alert\":\"$(message)\"}}";
                registration = new AppleTemplateRegistrationDescription(model.Handle, template);
                break;

            default:
                throw new InvalidOperationException();
            }
            return(registration);
        }
Example #2
0
        public async Task <IActionResult> InscreveAsync([FromBody] RegistroNotificacaoViewModel model)
        {
            var user = GetUser();
            var channelRegistrations = await notification.Hub.GetRegistrationsByChannelAsync(model.Handle, 10);

            foreach (var r in channelRegistrations.Skip(1))
            {
                await notification.Hub.DeleteRegistrationAsync(r);
            }

            var registration = channelRegistrations.FirstOrDefault() ?? CriaRegistration(model);

            registration.RegistrationId = registration.RegistrationId ?? await notification.Hub.CreateRegistrationIdAsync();

            registration.Tags = new HashSet <string> {
                $"matricula:{user.Inscricao.Matricula}"
            };
            await notification.Hub.CreateOrUpdateRegistrationAsync(registration);

            return(Ok());
        }
Example #3
0
        public async Task <IActionResult> DesinscreveAsync([FromBody] RegistroNotificacaoViewModel model)
        {
            await notification.Hub.DeleteRegistrationsByChannelAsync(model.Handle);

            return(Ok());
        }