public async Task <ActionResult <UserDto> > UpdatePreferences( [FromBody] UserPreferencesDto preferencesDto) { var userName = User.FindFirst(ClaimTypes.NameIdentifier).Value; if (userName == null) { return(Unauthorized()); } var user = await _userService.FindUserFromUserName(userName); if (user == null) { return(NotFound()); } var updateResult = await _userService.UpdateUserPreferences(user, preferencesDto); if (updateResult.IsFailed) { return(BadRequest()); } return(Ok(new UserDto { Id = user.Id, UserName = user.UserName, RealName = user.RealName, LastFmUrl = user.LastFmUrl, ProfilePicture = user.ProfilePicture, RegisteredAt = user.RegisteredAt, IanaTimezone = user.IanaTimezone, })); }
public async Task <Result> UpdateUserPreferences(Models.User user, UserPreferencesDto newPreferences) { TimeZoneInfo info; var validTimeZone = TZConvert.TryGetTimeZoneInfo(newPreferences.IanaTimezone, out info); if (!validTimeZone) { return(Results.Fail("Invalid time zone")); } user.IanaTimezone = newPreferences.IanaTimezone; await _context.SaveChangesAsync(); return(Results.Ok()); }
public async Task <ActionResult <UserPreferencesDto> > UpdatePreferences(UserPreferencesDto preferencesDto) { var existingPreferences = await _unitOfWork.UserRepository.GetPreferencesAsync(User.GetUsername()); existingPreferences.ReadingDirection = preferencesDto.ReadingDirection; existingPreferences.ScalingOption = preferencesDto.ScalingOption; existingPreferences.PageSplitOption = preferencesDto.PageSplitOption; existingPreferences.HideReadOnDetails = preferencesDto.HideReadOnDetails; _unitOfWork.UserRepository.Update(existingPreferences); if (await _unitOfWork.Complete()) { return(Ok(preferencesDto)); } return(BadRequest("There was an issue saving preferences.")); }