public async Task <bool> UpdateImageAsync(int userId, UpdateDto_Image imageUpdate) { var user = await GetByIdAsync(userId); DbEntity_Image image; try { image = await GetImageAsync(user); } catch (NotFoundException) { var newImage = Mapper.Map <DbEntity_Image>(imageUpdate); await _ksuGdcContext.Images.AddAsync(newImage); var userImage = new DbEntity_UserImage() { UserId = user.UserId, ImageId = newImage.ImageId }; await _ksuGdcContext.UserImages.AddAsync(userImage); return(true); } Mapper.Map(imageUpdate, image); _ksuGdcContext.Images.Update(image); return(true); }
public async Task <IActionResult> UpdateImage([FromRoute] int userId, [FromForm] IFormFile image) { try { if (!ModelState.IsValid) { return(BadRequest(new ErrorResponse(ModelState))); } if (image == null || image.Length == 0) { return(BadRequest(new ErrorResponse("A valid image is required."))); } var contentType = image.ContentType.Trim().ToLower(); if (!contentType.StartsWith("image/", StringComparison.CurrentCulture)) { return(BadRequest(new ErrorResponse("Uploaded file must be an image"))); } var stream = new MemoryStream(); await image.OpenReadStream().CopyToAsync(stream); var imageUpdate = new UpdateDto_Image() { Name = "user_profile", Data = stream.ToArray(), ContentType = contentType }; await _userService.UpdateImageAsync(userId, imageUpdate); await _userService.SaveChangesAsync(); return(Ok()); } catch (NotFoundException ex) { return(NotFound(ex.Message)); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError)); } }