public async Task UpdatePreferenceBulk(string userId, UserPreferenceBulkPostRp resource) { var user = await _userRepository.GetUserById(_identityService.GetUserId()); if (user == null) { await _domainManagerService.AddNotFound($"The user with id {userId} does not exists."); return; } var claims = await _userManager.GetClaimsAsync(user); foreach (var item in resource.Items) { var preference = user.GetPreference(item.Name); if (preference == null) { await _domainManagerService.AddConflict($"The preference with name {item.Name} does not exists."); return; } user.UpdatePreference(item.Name, item.Value); if (item.Name.Equals("Theme", StringComparison.InvariantCultureIgnoreCase)) { var upThemeClaim = claims.FirstOrDefault(x => x.Type.Equals("up_theme")); await _userManager.RemoveClaimAsync(user, upThemeClaim); await _userManager.AddClaimAsync(user, new Claim("up_theme", item.Value)); } if (item.Name.Equals("Culture", StringComparison.InvariantCultureIgnoreCase)) { var upCultureClaim = claims.FirstOrDefault(x => x.Type.Equals("up_culture")); await _userManager.RemoveClaimAsync(user, upCultureClaim); await _userManager.AddClaimAsync(user, new Claim("up_culture", item.Value)); } if (item.Name.Equals("TimeZone", StringComparison.InvariantCultureIgnoreCase)) { var upTimezoneClaim = claims.FirstOrDefault(x => x.Type.Equals("up_timezone")); await _userManager.RemoveClaimAsync(user, upTimezoneClaim); await _userManager.AddClaimAsync(user, new Claim("up_timezone", item.Value)); } } _userRepository.Update(user); await _userRepository.SaveChanges(); }
public async Task <IActionResult> UpdatePreferences(string userId, [FromBody] UserPreferenceBulkPostRp resource) { if (!ModelState.IsValid) { return(this.BadRequest(ModelState)); } await _userPreferenceService.UpdatePreferenceBulk(userId, resource); if (DomainManager.HasNotFounds()) { return(this.Conflict(DomainManager.GetNotFounds())); } if (DomainManager.HasConflicts()) { return(this.Conflict(DomainManager.GetConflicts())); } return(this.Ok(this.DefaultResponse)); }