Exemplo n.º 1
0
        public async Task <IActionResult> Put(string id, UserPutResourceModel user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var updatedUser = await editUserService.EditUserAsync(unitOfWork, id, user);

            await unitOfWork.CompleteAsync();

            if (updatedUser == null)
            {
                return(BadRequest());
            }
            return(Ok(updatedUser));
        }
        public async Task <User> EditUserAsync(IUnitOfWork unitOfWork, string userId, UserPutResourceModel userPutResourceModel)
        {
            Photo photo        = new Photo();
            var   profilePhoto = userPutResourceModel.ProfilePhoto;

            if (profilePhoto != null)
            {
                var pathInsideTheWwwRoot = "Images/" + Guid.NewGuid() + Path.GetFileName(profilePhoto.FileName);
                var fileName             = Path.Combine(hostingEnvironment.WebRootPath, pathInsideTheWwwRoot);
                await profilePhoto.CopyToAsync(new FileStream(fileName, FileMode.Create));

                photo = new Photo()
                {
                    //Url = fileName
                    Url = "/" + pathInsideTheWwwRoot
                };
            }
            var userToUpdate = await unitOfWork.UserRepository.GetByIdAsync(userId, includeProperties : "ProfilePhoto");

            if (userToUpdate == null)
            {
                return(await Task.FromResult <User>(null));
            }
            if (photo.Url != "" && userToUpdate.ProfilePhoto != null)
            {
                await unitOfWork.PhotoRepository.DeleteAsync(userToUpdate.ProfilePhoto.Id); //deleting user's previous ProfilePhoto
            }
            userToUpdate.FirstName    = userPutResourceModel.FirstName;
            userToUpdate.LastName     = userPutResourceModel.LastName;
            userToUpdate.Email        = userPutResourceModel.Email;
            userToUpdate.DateOfBirth  = userPutResourceModel.DateOfBirth;
            userToUpdate.Country      = userPutResourceModel.Country;
            userToUpdate.City         = userPutResourceModel.City;
            userToUpdate.ProfilePhoto = photo;
            userToUpdate.Bio          = userPutResourceModel.Bio;
            //Password = userPutResourceModel.Password,
            userToUpdate.Interests    = userPutResourceModel.Interests;
            userToUpdate.BankAccounts = userPutResourceModel.BankAccounts;

            unitOfWork.UserRepository.Update(userToUpdate);
            if (photo.Url != "")
            {
                await unitOfWork.PhotoRepository.InsertAsync(photo);
            }
            return(userToUpdate);
        }