private Genre GetGenreInCollectionById(XCollection<Genre> genres, int genreId) { Genre found = null; if (genres != null) { found = genres.FirstOrDefault(x => x.Id == genreId); if (found == null) { foreach (var genre in genres) { found = GetGenreInCollectionById(genre.Children, genreId); if (found != null) { break; } } } } return found; }
private async Task LoadBookmarks( Session session ) { XCollection<Bookmark> bookmarks = null; try { bookmarks = await _bookmarksProvider.GetBookmarks( session.Token ); } catch (CatalitNoCredentialException) { //ToDo: Do something? Message? } XCollection<Book> books = new XCollection<Book>(); foreach (var bookmark in bookmarks) { if( bookmark.Group != "0" ) { var exits = books.FirstOrDefault( x => x.Description.Hidden.DocumentInfo.Id == bookmark.ArtId ); if( exits != null ) { exits.BookmarksCount++; } else { var book = await _catalogProvider.GetBookByDocumentId( bookmark.ArtId, session.Token ); if( book != null ) { book.BookmarksCount = 1; books.Add( book ); } } } } //sort books by last opened int top = 0; var myBooksHistory = await _catalogProvider.GetBooksIdsFromHistory( session.Token ); foreach( var mybook in myBooksHistory ) { var inbookmarked = books.FirstOrDefault(x => x.Id == mybook ); if( inbookmarked != null ) { books.Remove( inbookmarked ); books.Insert( top, inbookmarked ); top++; } } BookmarkedBooks.Update( books ); BookmarkedBooksEmpty = BookmarkedBooks.Count == 0; if (bookmarks != null) { Bookmarks.Update(bookmarks); } }
private XCollection<Genre> GetGenresInCollectionByTokens(XCollection<Genre> genres, List<string> tokens) { XCollection<Genre> res = new XCollection<Genre>(); if (genres != null) { foreach (var genre in genres) { if(tokens.Contains( genre.Token ) && res.FirstOrDefault( x => x.Id == genre.Id ) == null) { res.Add( genre ); } var subcollection = GetGenresInCollectionByTokens(genre.Children, tokens); foreach (var subgenre in subcollection) { if(res.FirstOrDefault( x => x.Id == subgenre.Id ) == null) { res.Add(subgenre); } } } } return res; }