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() }); }
// 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))); }