public async Task <GetUserNotificationSettingsResponse> Handle(GetUserNotificationSettingsQuery message, CancellationToken cancellationToken)
        {
            var userSettings = (await _userRepository.GetUserSetting(message.UserRef)).ToList();

            if (!userSettings.Any())
            {
                _logger.Info($"No settings found for user {message.UserRef}");
                await _userRepository.AddSettings(message.UserRef);

                userSettings = (await _userRepository.GetUserSetting(message.UserRef)).ToList();
                _logger.Info($"Created default settings for user {message.UserRef}");
            }

            return(new GetUserNotificationSettingsResponse
            {
                NotificationSettings =
                    userSettings.Select(
                        m =>
                        new UserNotificationSetting
                {
                    UserRef = m.UserRef,
                    ReceiveNotifications =
                        m.ReceiveNotifications,
                }).ToList()
            });
        }
예제 #2
0
        // Get comma separated list of the user unit settings or return default if not set yet.
        public string GetUserSettingsOrCreate(string userName)
        {
            // Get settings for user.
            var currentUserSettings = GetSelectedUnitsList(userName);

            // If no settings found update user to default settings.
            if (currentUserSettings is null)
            {
                var allUnitsIds  = _unitRepository.GetAllUnitIds();
                var userSettings = _userSettingsRepository.AddSettings(new UserSetting {
                    UserName = userName
                });
                _unitSelectionRepository.AddSettings(userSettings.Id, allUnitsIds);
                currentUserSettings = GetSelectedUnitsList(userName);
            }

            // Get unit selection for setting id.
            var unitIdList = currentUserSettings.Select(u => u.SelectedUnitId).ToArray();

            // Return as a comma separated list of unit names.
            return(string.Join(", ", _unitRepository.GetAllUnits().Where(u => unitIdList.Contains(u.Id)).Select(u => u.Name)));
        }