Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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
        }