public async Task <Image> CreateAsync(Entry entry, IFileInput file) { Ensure.NotNull(entry, "entry"); Ensure.NotNull(file, "file"); await validator.ValidateAsync(entry.UserId, file); (int width, int height)size = default; using (Stream imageContent = file.OpenReadStream()) size = resizeService.GetSize(imageContent); string imageId = Guid.NewGuid().ToString(); Image entity = new Image() { Id = imageId, Name = Path.GetFileNameWithoutExtension(file.FileName), FileName = imageId + Path.GetExtension(file.FileName), Created = DateTime.Now, When = entry.When, Entry = entry, OriginalWidth = size.width, OriginalHeight = size.height }; await dataContext.Images.AddAsync(entity); bool isOriginalStored = await freeLimits.IsOriginalImageStoredAsync(entry.UserId); if (isOriginalStored) { await CopyFileAsync(file, entry, entity); } using (Stream imageContent = file.OpenReadStream()) SetProperties(entity, imageContent); await dataContext.SaveChangesAsync(); using (Stream imageContent = file.OpenReadStream()) await ComputeOtherSizesAsync(entry, entity, imageContent, true); return(entity); }
private async Task CopyFileAsync(IFileInput file, Entry entry, Image image) { using (Stream source = file.OpenReadStream()) await fileStorage.SaveAsync(entry, image, source, ImageType.Original); }