private async Task <List <GroupBookList <object> > > GetGroupedMoochBooks(string queryText) { try { List <GroupBookList <object> > BookGroups = new List <GroupBookList <object> >(); MoochBooksList instanceMoochBooks = new MoochBooksList(); ObservableCollection <MoochBooks> bookList = await instanceMoochBooks.GetMoochBooks(queryText); var query = from book in bookList orderby((MoochBooks)book).Title group book by((MoochBooks) book).Topics[0] into books select new { GroupName = books.Key, Items = books }; foreach (var books in query) { GroupBookList <object> info = new GroupBookList <object>(); info.Group = books.GroupName; foreach (var book in books.Items) { info.Add(book); } BookGroups.Add(info); } return(BookGroups); } catch (TaskCanceledException ex) { return(null); } }
private void resultsGridView_ItemClick(object sender, ItemClickEventArgs e) { var book = e.ClickedItem as MoochBooks; string bookID = book.id; string from = "mooch"; MoochBooksList bookList = new MoochBooksList(); Dictionary <string, string> parameter = new Dictionary <string, string>(); parameter.Add("bookID", bookID); parameter.Add("from", from); parameter.Add("queryText", bookList.GenerateQuery()); this.Frame.Navigate(typeof(BookDetail), parameter); }
protected async override void OnNavigatedTo(NavigationEventArgs args) { var queryText = args.Parameter as String; MoochBooksList instanceMoochBooks = new MoochBooksList(); ObservableCollection <MoochBooks> bookList = await instanceMoochBooks.GetMoochBooks(queryText); var requestedBooks = await GetGroupedMoochBooks(queryText); if (requestedBooks != null) { int countBooks = requestedBooks.Count; var totalItems = 0; var searchFilters = new List <Filter>(); SearchResult = new Dictionary <string, IEnumerable <MoochBooks> >(); if (countBooks > 0) { foreach (var groups in requestedBooks) { IEnumerable <MoochBooks> matchItems = bookList.Where(book => book.Title.ToLower().Contains(queryText) && book.Topics[0] == (string)groups.Group); int itemsNumber = matchItems.Count <MoochBooks>(); totalItems = totalItems + itemsNumber; } searchFilters.Add(new Filter("All", totalItems, true)); foreach (var groups in requestedBooks) { IEnumerable <MoochBooks> matchItems = bookList.Where(book => book.Title.ToLower().Contains(queryText) && book.Topics[0] == (string)groups.Group); int itemsNumber = matchItems.Count <MoochBooks>(); if (itemsNumber > 0) { SearchResult.Add(groups.Group.ToString(), matchItems); searchFilters.Add(new Filter(groups.Group.ToString(), itemsNumber, false)); totalItems = totalItems + itemsNumber; } } } else { VisualStateManager.GoToState(this, "NoResultsFound", true); } this.DefaultViewModel["QueryText"] = '\u201c' + queryText + '\u201d'; this.DefaultViewModel["Filters"] = searchFilters; this.DefaultViewModel["ShowFilters"] = searchFilters.Count > 1; } else { var popup = new Windows.UI.Popups.MessageDialog("Couldnt fetch books. Plaease check your internet connection."); popup.Commands.Add(new Windows.UI.Popups.UICommand("Try Again")); popup.Commands.Add(new Windows.UI.Popups.UICommand("Cancel")); popup.DefaultCommandIndex = 0; popup.CancelCommandIndex = 1; var results = await popup.ShowAsync(); if (results.Label == "Try Again") { OnNavigatedTo(args); } else { this.Frame.GoBack(); } } }