public async Task <ActionResult <PhotoDto> > AddPhoto(IFormFile file) { // username uzimamo iz tokena, umjesto da nam ga podvale sa klijenta... ClaimsPrincipal.User { get; } var user = await _userRepository.GetUserByUsernameAsync(User.GetUsernameFromClaimsPrincipal()); var result = await _photoService.AddPhotoAsync(file); if (result.Error != null) { return(BadRequest(result.Error.Message)); } var photo = new Photo { Url = result.SecureUrl.AbsoluteUri, PublicId = result.PublicId }; if (user.Photos.Count == 0) { photo.IsMain = true; } user.Photos.Add(photo); if (await _userRepository.SaveAllAsync()) { return(CreatedAtRoute("GetUser", new { username = user.UserName }, _mapper.Map <PhotoDto>(photo))); } return(BadRequest("Problem adding photo...")); }
public async Task <ActionResult> SetMainPhoto(int photoId) { // username uzimamo iz tokena, umjesto da nam ga podvale sa klijenta... ClaimsPrincipal.User { get; } var user = await _userRepository.GetUserByUsernameAsync(User.GetUsernameFromClaimsPrincipal()); var photo = user.Photos.FirstOrDefault(p => p.Id == photoId); if (photo.IsMain) { return(BadRequest("This is already your main photo...")); } var currentMain = user.Photos.FirstOrDefault(p => p.IsMain); if (currentMain != null) { currentMain.IsMain = false; } photo.IsMain = true; if (await _userRepository.SaveAllAsync()) { return(NoContent()); } return(BadRequest("Failed to set main photo.")); }
public async Task <ActionResult> UpdateUser(MemberUpdateDto memberUpdateDto) { // username uzimamo iz tokena, umjesto da nam ga podvale sa klijenta... ClaimsPrincipal.User { get; } var username = User.GetUsernameFromClaimsPrincipal(); var user = await _userRepository.GetUserByUsernameAsync(username); _mapper.Map(memberUpdateDto, user); _userRepository.Update(user); if (await _userRepository.SaveAllAsync()) { return(NoContent()); } else { return(BadRequest("Failed to upadte user.")); } }
public async Task <ActionResult> DeletePhoto(int photoId) { // username uzimamo iz tokena, umjesto da nam ga podvale sa klijenta... ClaimsPrincipal.User { get; } var user = await _userRepository.GetUserByUsernameAsync(User.GetUsernameFromClaimsPrincipal()); var photoForDelete = user.Photos.FirstOrDefault(p => p.Id == photoId); if (photoForDelete == null) { return(NotFound()); } if (photoForDelete.IsMain) { return(BadRequest("You cannot delete your main photo.")); } if (photoForDelete.PublicId != null) { var deletionResult = await _photoService.DeletePhotoAsync(photoForDelete.PublicId); if (deletionResult.Error != null) { return(BadRequest(deletionResult.Error.Message)); } } user.Photos.Remove(photoForDelete); if (await _userRepository.SaveAllAsync()) { return(Ok()); } else { return(BadRequest("Failed to delete photo.")); } }