Example #1
0
        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);
        }
Example #2
0
        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);
        }