예제 #1
0
        public void ToMessage()
        {
            var translator = new NotificationRegistrationConverter();

            var id   = NotificationId.Create(typeof(InteractionExtensionsTest.IMockNotificationSetWithTypedEventHandler).GetEvent("OnMyEvent"));
            var data = new NotificationRegistrationData
            {
                Id             = new MessageId(),
                InResponseTo   = new MessageId(),
                Sender         = new EndpointId("a"),
                NotificationId = NotificationIdExtensions.Serialize(id),
            };
            var msg = translator.ToMessage(data);

            Assert.IsInstanceOf(typeof(RegisterForNotificationMessage), msg);
            Assert.AreSame(data.Id, msg.Id);
            Assert.AreSame(data.Sender, msg.Sender);
            Assert.AreEqual(id, ((RegisterForNotificationMessage)msg).Notification);
        }
예제 #2
0
        public Task <int> Handle(NotificationRegistrationDataCommand request, CancellationToken cancellationToken)
        {
            var existingRegistration =
                _context.NotificationRegistrationData
                .FirstOrDefault(data => data.ObserverId == request.ObserverId && data.ChannelName == request.ChannelName);

            if (existingRegistration != null)
            {
                existingRegistration.Token = request.Token;
            }
            else
            {
                var notificationReg = new NotificationRegistrationData
                {
                    ObserverId  = request.ObserverId,
                    ChannelName = request.ChannelName,
                    Token       = request.Token
                };

                _context.NotificationRegistrationData.Add(notificationReg);
            }

            return(_context.SaveChangesAsync(cancellationToken));
        }