Exemple #1
0
        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,
            }));
        }
Exemple #2
0
        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());
        }
Exemple #3
0
        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."));
        }