public async Task <ActionResult <PostImageDTO> > PostPostImage(CreatePostImageDTO newImage) { var image = await _postImage.Create(newImage, UserClaimsGetters.GetUserId(User)); if (image != null) { return(Ok()); } return(BadRequest()); }
/// <summary> /// Creates a new PostImage and puts it in the database. If it's successfuly added then it transfers the image from the transfer bucket to the storage bucket. /// </summary> /// <param name="postImage">The CreatePostImageDTO to create the new entity</param> /// <param name="userId">The user's id</param> /// <returns>If successful: the new ImageDTO</returns> public async Task <PostImageDTO> Create(CreatePostImageDTO postImage, string userId) { var timeNow = DateTime.UtcNow; PostImage newImage = new PostImage() { UserId = userId, CloudStorageKey = $"{Guid.NewGuid()}{postImage.ImageExtention}", Created = timeNow, Modified = timeNow }; _context.Entry(newImage).State = EntityState.Added; var success = await _context.SaveChangesAsync(); if (success > 0) { await _s3Provider.MoveImageFromTransferBucketToStorageBucket(postImage.TransferKey, newImage.CloudStorageKey); } return(postImage); }