public void SearchMedia() { //Search database for user query //Open database connection var conn = GetDatabaseConnection(); conn.Open(); var command = conn.CreateCommand(); //Get search string string field = SearchMediaField.TitleOfSelectedItem; string search = SearchMediaSearch.StringValue; command.CommandText = string.Format("SELECT * FROM media WHERE {0} LIKE '{1}';", field, search); //Get IDs of matching results SQLiteDataReader reader = command.ExecuteReader(); List <string> recordIDs = new List <string>(); while (reader.Read()) { string ID = reader.GetString(0); recordIDs.Add(ID); } conn.Close(); //Get media records and update table var DataSource = new MediaTableDataSource(); foreach (string ID in recordIDs) { var record = new MediaModel(); record.Load(conn, ID); DataSource.MediaRecords.Add(record); } MediaTable.DataSource = DataSource; MediaTable.Delegate = new MediaTableDelegate(this, DataSource); MediaTable.ReloadData(); }
partial void GoodreadsSyncClicked(NSObject sender) { //Sync with goodreads account //Get sync options string syncType = GoodreadsSyncType.TitleOfSelectedItem; bool force; var conn = GetDatabaseConnection(); if (ForceSyncOption.State.ToString() == "On") { force = true; } else { force = false; } //Pull from goodreads if (syncType == "Pull") { //Pull completed books var pulledBooks = goodreads.Pull("read"); foreach (MediaModel Book in pulledBooks) { Book.Create(conn, force); } //Pull in progress books pulledBooks = goodreads.Pull("currently-reading"); foreach (MediaModel Book in pulledBooks) { Book.Create(conn, force); } //Pull wish list books pulledBooks = goodreads.Pull("to-read"); foreach (MediaModel Book in pulledBooks) { Book.Create(conn, force); } } //Push to goodreads else { //Push edited books to goodreads var editedBookIDs = new List <string>(); var editedBooks = new List <MediaModel>(); //Get IDs of edited books var command = conn.CreateCommand(); command.CommandText = string.Format("SELECT * FROM media WHERE media='Book' AND edited=1;"); conn.Open(); SQLiteDataReader reader = command.ExecuteReader(); while (reader.Read()) { string ID = reader.GetString(0); editedBookIDs.Add(ID); } conn.Close(); //Get edited books foreach (string ID in editedBookIDs) { var book = new MediaModel(); book.Load(conn, ID); editedBooks.Add(book); } //Push media foreach (MediaModel book in editedBooks) { //Add media without goodreads id if (book.GoodreadsBookID == "X") { var res = goodreads.PushNew(book); book.GoodreadsBookID = res.bookID; book.GoodreadsReviewID = res.reviewID; book.Edited = false; } //Add media with existing id else { goodreads.PushExisting(book); book.Edited = false; } } } SearchMedia(); //refresh search }