Exemplo n.º 1
0
        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);
        }