public void SaveUserData(User user, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException(nameof(userData)); } if (item == null) { throw new ArgumentNullException(nameof(item)); } cancellationToken.ThrowIfCancellationRequested(); var keys = item.GetUserDataKeys(); var userId = user.InternalId; foreach (var key in keys) { Repository.SaveUserData(userId, key, userData, cancellationToken); } var cacheKey = GetCacheKey(userId, item.Id); _userData.AddOrUpdate(cacheKey, userData, (k, v) => userData); UserDataSaved?.Invoke(this, new UserDataSaveEventArgs { Keys = keys, UserData = userData, SaveReason = reason, UserId = user.Id, Item = item }); }
public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException("userData"); } if (item == null) { throw new ArgumentNullException("item"); } if (userId == Guid.Empty) { throw new ArgumentNullException("userId"); } cancellationToken.ThrowIfCancellationRequested(); var keys = item.GetUserDataKeys(); foreach (var key in keys) { try { await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false); var newValue = userData; lock (_userData) { _userData[GetCacheKey(userId, key)] = newValue; } } catch (Exception ex) { _logger.ErrorException("Error saving user data", ex); throw; } } EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs { Keys = keys, UserData = userData, SaveReason = reason, UserId = userId, Item = item }, _logger); }
/// <summary> /// Saves the user data. /// </summary> /// <param name="userId">The user id.</param> /// <param name="item">The item.</param> /// <param name="userData">The user data.</param> /// <param name="reason">The reason.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.ArgumentNullException">userData /// or /// cancellationToken /// or /// userId /// or /// key</exception> public async Task SaveUserData(Guid userId, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException("userData"); } if (item == null) { throw new ArgumentNullException("item"); } if (userId == Guid.Empty) { throw new ArgumentNullException("userId"); } cancellationToken.ThrowIfCancellationRequested(); var key = item.GetUserDataKey(); try { await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false); var newValue = userData; // Once it succeeds, put it into the dictionary to make it available to everyone else _userData.AddOrUpdate(GetCacheKey(userId, key), newValue, delegate { return newValue; }); } catch (Exception ex) { _logger.ErrorException("Error saving user data", ex); throw; } EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs { Key = key, UserData = userData, SaveReason = reason, UserId = userId, Item = item }, _logger); }
public void SaveUserData(Guid userId, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException("userData"); } if (item == null) { throw new ArgumentNullException("item"); } if (userId.Equals(Guid.Empty)) { throw new ArgumentNullException("userId"); } cancellationToken.ThrowIfCancellationRequested(); var keys = item.GetUserDataKeys(); foreach (var key in keys) { Repository.SaveUserData(userId, key, userData, cancellationToken); } var cacheKey = GetCacheKey(userId, item.Id); _userData.AddOrUpdate(cacheKey, userData, (k, v) => userData); EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs { Keys = keys, UserData = userData, SaveReason = reason, UserId = userId, Item = item }, _logger); }
public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException("userData"); } if (item == null) { throw new ArgumentNullException("item"); } if (userId == Guid.Empty) { throw new ArgumentNullException("userId"); } cancellationToken.ThrowIfCancellationRequested(); var keys = item.GetUserDataKeys(); foreach (var key in keys) { await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false); } var cacheKey = GetCacheKey(userId, item.Id); _userData.AddOrUpdate(cacheKey, userData, (k, v) => userData); EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs { Keys = keys, UserData = userData, SaveReason = reason, UserId = userId, Item = item }, _logger); }
/// <summary> /// Saves the user data. /// </summary> /// <param name="userId">The user id.</param> /// <param name="item">The item.</param> /// <param name="userData">The user data.</param> /// <param name="reason">The reason.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> /// <exception cref="System.ArgumentNullException">userData /// or /// cancellationToken /// or /// userId /// or /// key</exception> public async Task SaveUserData(Guid userId, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException("userData"); } if (item == null) { throw new ArgumentNullException("item"); } if (userId == Guid.Empty) { throw new ArgumentNullException("userId"); } cancellationToken.ThrowIfCancellationRequested(); var key = item.GetUserDataKey(); try { await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false); var newValue = userData; // Once it succeeds, put it into the dictionary to make it available to everyone else _userData.AddOrUpdate(GetCacheKey(userId, key), newValue, delegate { return(newValue); }); } catch (Exception ex) { _logger.ErrorException("Error saving user data", ex); throw; } EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs { Key = key, UserData = userData, SaveReason = reason, UserId = userId, Item = item }, _logger); }
public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { if (userData == null) { throw new ArgumentNullException("userData"); } if (item == null) { throw new ArgumentNullException("item"); } if (userId == Guid.Empty) { throw new ArgumentNullException("userId"); } cancellationToken.ThrowIfCancellationRequested(); var keys = item.GetUserDataKeys(); foreach (var key in keys) { try { await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { _logger.ErrorException("Error saving user data", ex); throw; } } var cacheKey = GetCacheKey(userId, item.Id); _userData.AddOrUpdate(cacheKey, userData, (k, v) => userData); EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs { Keys = keys, UserData = userData, SaveReason = reason, UserId = userId, Item = item }, _logger); }
public void SaveUserData(Guid userId, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken) { var user = _userManager.GetUserById(userId); SaveUserData(user, item, userData, reason, cancellationToken); }