Exemplo n.º 1
0
        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..."));
        }
Exemplo n.º 2
0
        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."));
        }
Exemplo n.º 3
0
        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."));
            }
        }
Exemplo n.º 4
0
        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."));
            }
        }