public async Task <ImageFile> AddAsync(Image image) { var libraryDirectory = FileService.GetFileInfo(image.ImageFile.LibraryFullName).Directory.FullName; if (!libraryDirectory.EndsWith("\\")) { libraryDirectory += "\\"; } var filePath = FileSystemInfo.FileSystemInfo.RootDirectory + libraryDirectory + FileSystemInfo.FileSystemInfo.ImagesDirectory + Guid.NewGuid().ToString() + ImageExtensionHelper.ExtensionToString(image.ImageFile.Extension); var path = await Task.Run(() => FileService.AddFile(filePath, image.ImageContent)); var fileInfo = FileService.GetFileInfo(path); var imageFile = ImageFileBuilder .StartBuilding() .WithName(image.ImageFile.Name) .WithExtension(image.ImageFile.Extension) .WithFullName(path) .WithLibraryFullName(image.ImageFile.LibraryFullName) .WithCreationTime(fileInfo.CreationTimeUtc) .WithLastAccessTime(fileInfo.LastAccessTimeUtc) .WithLastWriteTime(fileInfo.LastWriteTimeUtc) .WithSize(fileInfo.Length) .WithTags(new List <Tag>()) .Build(); Logger.LogInformation("New added image: " + imageFile.FullName); return(imageFile); }
private async Task WriteLibraryToFileStreamAsync(FileStream fileStream, Library entity) { if (fileStream == null) { throw new Exception("File creation error"); } // write all owners in one string string owners = ""; for (int i = 0; i < entity.Owners.Count - 1; i++) { owners += entity.Owners[i].ToString() + ','; } owners += entity.Owners[entity.Owners.Count - 1].ToString(); // create library element var libraryElement = new XElement("library", new XAttribute("name", entity.Name), new XAttribute("description", entity.Description), new XAttribute("owners", owners)); // create tags elements var tagsElement = new XElement("tags"); foreach (var t in entity.Tags) { var tagElement = new XElement("tag", new XAttribute("name", t.Name), new XAttribute("description", t.Description), new XAttribute("color", t.Color)); tagsElement.Add(tagElement); } libraryElement.Add(tagsElement); // create images elements var imagesElement = new XElement("images"); foreach (var i in entity.Images) { // write all tags to one string string tags = ""; for (int it = 0; it < i.Tags.Count - 1; it++) { tags += i.Tags[it].Name + ','; } tags += i.Tags[i.Tags.Count - 1].Name; var imageFileElement = new XElement("imageFile", new XAttribute("name", i.Name), new XAttribute("extension", ImageExtensionHelper.ExtensionToString(i.Extension)), new XAttribute("source", i.FullName), new XAttribute("tags", tags)); imagesElement.Add(imageFileElement); } libraryElement.Add(imagesElement); // save elements to the file try { using (var streamWriter = new StreamWriter(fileStream)) { var xmlWriter = new XmlTextWriter(streamWriter); xmlWriter.Formatting = Formatting.Indented; xmlWriter.Indentation = 4; await Task.Run(() => libraryElement.Save(xmlWriter)); } } catch (Exception e) { Logger.LogError(e, e.Message); } }
public async Task <ImageFile> UpdateAsync(ImageFile entity) { if (!FileService.FileExists(entity.FullName)) { throw new ContentNotFoundException("Couldn't find specified file."); } await Task.Run(() => FileService.RenameFile(entity.FullName, entity.Name + ImageExtensionHelper.ExtensionToString(entity.Extension))); var oldFileInfo = await Task.Run(() => FileService.GetFileInfo(entity.FullName)); var newFileInfo = await Task.Run(() => FileService.GetFileInfo(oldFileInfo.Directory.FullName + "\\" + entity.Name + ImageExtensionHelper.ExtensionToString(entity.Extension))); var imageFile = ImageFileBuilder .StartBuilding() .WithName(newFileInfo.Name) .WithExtension(newFileInfo.Extension) .WithFullName(newFileInfo.FullName) .WithLibraryFullName(entity.LibraryFullName) .WithCreationTime(newFileInfo.CreationTimeUtc) .WithLastAccessTime(newFileInfo.LastAccessTimeUtc) .WithLastWriteTime(newFileInfo.LastWriteTimeUtc) .WithSize(newFileInfo.Length) .WithTags(entity.Tags) .Build(); Logger.LogInformation("Updated imagefile info: " + imageFile.FullName); return(imageFile); }