public async Task <IActionResult> ChangeProfileImage([FromForm] ProfileImageChangeViewModel profileImageChangeViewModel) { if (profileImageChangeViewModel != null) { var user = await userManager.GetUserAsync(HttpContext.User); AccountResponse response = await accountServices.ChangeProfileImageAsync(user, profileImageChangeViewModel); if (response.ResponseStatus == Status.Success) { return(Ok(response.Message)); } else { return(StatusCode(StatusCodes.Status400BadRequest, response.Message)); } } return(StatusCode(StatusCodes.Status400BadRequest)); }
public async Task <AccountResponse> ChangeProfileImageAsync(User user, ProfileImageChangeViewModel profileImageChangeViewModel) { if (user != null) { if (profileImageChangeViewModel.profileImage != null) { var fileExtension = Path.GetExtension(profileImageChangeViewModel.profileImage.FileName); var fileContent = convertFormFileToByteArray(profileImageChangeViewModel.profileImage); Domain.Models.File profileImage = new Domain.Models.File { FileExtension = fileExtension, FileContent = fileContent, User = user, UserId = user.Id }; // remove previous profile image var previousProfileImage = await appDb.Files.Where(x => x.UserId == user.Id && x.Id == user.FileAvatarId).FirstOrDefaultAsync(); if (previousProfileImage != null) { appDb.Files.Remove(previousProfileImage); await appDb.SaveChangesAsync(); } // add new profile image await appDb.Files.AddAsync(profileImage); await appDb.SaveChangesAsync(); user.FileAvatarId = profileImage.Id; await appDb.SaveChangesAsync(); return(new AccountResponse { ResponseStatus = Status.Success, Message = "Succesfully changed profile image" }); } } return(new AccountResponse { ResponseStatus = Status.Error, Message = "User not found" }); }