private void OnEmployeeDeviceRegistered(EmployeeDeviceRegistered @event)
        {
            this.RemoveDeviceTokenFromPreviousEmployees(@event.DeviceToken);

            if (!this.deviceTokensByEmployeeId.TryGetValue(@event.EmployeeId, out var deviceTokens))
            {
                deviceTokens = new HashSet <string>();
                this.deviceTokensByEmployeeId.Add(@event.EmployeeId, deviceTokens);
            }

            deviceTokens.Add(@event.DeviceToken);
            this.deviceTypeByToken[@event.DeviceToken] = @event.DeviceType;
        }
        private void RegisterDevice(RegisterPushNotificationsDevice message)
        {
            if (!PushDeviceTypes.IsKnownType(message.DeviceType))
            {
                return;
            }

            var @event = new EmployeeDeviceRegistered(
                DateTimeOffset.Now,
                message.EmployeeId,
                message.DeviceId,
                message.DeviceType);

            this.Persist(@event, this.OnEmployeeDeviceRegistered);
        }