public async Task <IBook> AddBookAsync(IStorageFile file) { if (file == null) { throw new ArgumentNullException(nameof(file)); } var document = await DjvuDocument.LoadAsync(file); var bookDto = new EfBookDto { PageCount = document.PageCount, Title = Path.GetFileNameWithoutExtension(file.Name), LastOpeningTime = DateTime.Now }; _context.Books.Add(bookDto); await _context.SaveChangesAsync(); var booksFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Books", CreationCollisionOption.OpenIfExists); var bookFile = await file.CopyAsync(booksFolder, $"{bookDto.Id}.djvu", NameCollisionOption.ReplaceExisting); bookDto.BookPath = bookFile.Path; await _context.SaveChangesAsync(); var book = new EfBook(bookDto, _context, _books); await book.UpdateThumbnailAsync(); _books.Add(book); return(book); }
public EfBook(EfBookDto efBookDto, EfBooksContext context, ObservableCollection <IBook> books) { _efBookDto = efBookDto; _context = context; _books = books; var bookmarks = _efBookDto.Bookmarks.Select(bookmarkDto => new EfBookmark(bookmarkDto, _context)); _bookmarks = new ObservableCollection <IBookmark>(bookmarks); Bookmarks = new ReadOnlyObservableCollection <IBookmark>(_bookmarks); }