public async Task <Itinerary> DeleteAsync(Itinerary entity) { foreach (var imageUrl in entity.ImageUrls.Where(_remoteFileStorageHandler.IsHostedFile)) { await _remoteFileStorageHandler.DeleteAsync(imageUrl); } _dbContext.Itineraries.Remove(entity); return(entity); }
public async Task <Tour> UpdateAsync(Tour tour, IFormFileCollection images) { Tour existingTour = await FindAsync(tour.ID); if (images.Any()) { foreach (var imageUri in existingTour.ImageUrls) { await _remoteFileStorageHandler.DeleteAsync(imageUri); } foreach (var file in images.AsEnumerable()) { using var stream = file.OpenReadStream(); string url = await _remoteFileStorageHandler.UploadAsync(stream, "jpg"); tour.ImageUrls.Add(url); } } else { tour.ImageUrls = existingTour.ImageUrls; } _dbContext.Tours.Update(tour); return(tour); }
public async Task <Post> UpdateAsync(Post post, IFormFile coverImg) { var existingPost = await FindAsync(post.ID); if (coverImg != null) { if (!string.IsNullOrEmpty(existingPost.CoverImgUrl)) { await _remoteFileStorageHandler.DeleteAsync(existingPost.CoverImgUrl); } using var stream = coverImg.OpenReadStream(); post.CoverImgUrl = await _remoteFileStorageHandler.UploadAsync(stream, "jpg"); } else { post.CoverImgUrl = existingPost.CoverImgUrl; } _doc.LoadHtml(post.Content); var imageUrls = await _doc.ProcessBase64Images(_remoteFileStorageHandler); post.ImageUrls.AddRange(imageUrls); post.Content = _doc.DocumentNode.InnerHtml; post.LastUpdated = DateTime.Now; foreach (var imageUrl in existingPost .GetUnusedImageUrls(post.ImageUrls) .Where(_remoteFileStorageHandler.IsHostedFile)) { await _remoteFileStorageHandler.DeleteAsync(imageUrl); } _dbContext.Posts.Update(post); return(post); }