public UsersController(IUserRepository userRepository, UserRegister userRegister,
                        UserChangePassword userChangePassword, PhotoUser photoUser)
 {
     _userRepository     = userRepository;
     _userRegister       = userRegister;
     _userChangePassword = userChangePassword;
     _photoUser          = photoUser;
 }
예제 #2
0
        public async Task <PhotoUser> CreatePhotoUserAsync(Photo photo, User user)
        {
            var photoUser = new PhotoUser
            {
                Photo = photo,
                User  = user
            };

            await _context.PhotoUsers.AddAsync(photoUser);

            return(photoUser);
        }
예제 #3
0
        public PhotoUser CreatePhotoUser(Photo photo, User user)
        {
            var photoUser = new PhotoUser
            {
                Photo = photo,
                User  = user
            };

            _context.PhotoUsers.Add(photoUser);

            return(photoUser);
        }
        public async Task <ActionResult <PhotoUserDto> > AddPhotoUser([FromForm] PhotoUploadDto uploadDto)
        {
            var file = uploadDto.Avatar;

            var currentUser = await _userManager.Users
                              .Include(p => p.PhotoUsers)
                              .SingleOrDefaultAsync(u => u.Id == User.GetUserId());

            var result = await _photoService.AddPhotoAsync(file);

            if (result.Error != null)
            {
                return(BadRequest(result.Error.Message));
            }

            var photo = new PhotoUser
            {
                PhotoUserUrl = result.SecureUrl.AbsoluteUri,
                PublicId     = result.PublicId
            };

            if (currentUser.PhotoUsers.Count == 0)
            {
                photo.IsMain = true;
            }

            currentUser.PhotoUsers.Add(photo);

            var resultUser = await _userManager.UpdateAsync(currentUser);

            if (resultUser.Succeeded)
            {
                return(CreatedAtRoute("GetUser", new { id = currentUser.Id }, _mapper.Map <PhotoUserDto>(photo)));
            }
            return(BadRequest("Problem addding photo"));
        }
예제 #5
0
        public async Task <ActionResult <PhotoUserDto> > AddPhoto(IFormFile file, int userId)
        {
            var user = await _unitOfWork.UserRepository.GetUserByIdAsync(userId);

            if (user == null)
            {
                return(NotFound());
            }

            var result = await _photoService.AddPhotoAsync(file);

            if (result.Error != null)
            {
                return(BadRequest(result.Error.Message));
            }

            var photo = new PhotoUser
            {
                PhotoUserUrl = result.SecureUrl.AbsoluteUri,
                PublicId     = result.PublicId
            };

            if (user.PhotoUsers.Count == 0)
            {
                photo.IsMain = true;
            }

            user.PhotoUsers.Add(photo);

            if (await _unitOfWork.Complete())
            {
                return(_mapper.Map <PhotoUserDto>(photo));
            }

            return(BadRequest("Problem addding photo"));
        }
        public async Task <ActionResult <PhotoUserDto> > EditPhotoUser([FromForm] PhotoUploadDto uploadDto, int photoId)
        {
            //remove old photo
            var user = await _userManager.Users
                       .Include(p => p.PhotoUsers)
                       .SingleOrDefaultAsync(u => u.Id == User.GetUserId());

            var photo = user.PhotoUsers.FirstOrDefault(x => x.Id == photoId);

            if (photo == null)
            {
                return(NotFound());
            }

            if (photo.PublicId != null)
            {
                var result = await _photoService.DeletePhotoAsync(photo.PublicId);

                if (result.Error != null)
                {
                    return(BadRequest(result.Error.Message));
                }
            }

            user.PhotoUsers.Remove(photo);
            var resultDelete = await _userManager.UpdateAsync(user);

            if (resultDelete.Succeeded)
            {
                //add new photo
                var file        = uploadDto.Avatar;
                var afterAdding = await _photoService.AddPhotoAsync(file);

                if (afterAdding.Error != null)
                {
                    return(BadRequest(afterAdding.Error.Message));
                }

                var newPhoto = new PhotoUser
                {
                    PhotoUserUrl = afterAdding.SecureUrl.AbsoluteUri,
                    PublicId     = afterAdding.PublicId
                };

                if (user.PhotoUsers.Count == 0)
                {
                    newPhoto.IsMain = true;
                }

                user.PhotoUsers.Add(newPhoto);

                var resultUser = await _userManager.UpdateAsync(user);

                if (resultUser.Succeeded)
                {
                    return(new PhotoUserDto
                    {
                        Id = newPhoto.Id,
                        PhotoUserUrl = newPhoto.PhotoUserUrl,
                        IsMain = newPhoto.IsMain
                    });
                }
                return(BadRequest("Problem editding photo"));
            }

            return(BadRequest("Failed to delete the photo"));
        }