public bool insert(Playlist playlist) { // there must be no duplicated playlist name if (count(playlist.name) != 0) { return(false); } // the user account must be available to be added if (DataModel.accMdl.count(playlist.user.id) == 0) { return(false); } // create playlist first var dict = QueryBuilder.getDictionary(); dict.Add("name", playlist.name); dict.Add("account_id", playlist.user.id); int playlistID = (int)QueryBuilder.table(table) .insertGetID(dict); // add medias foreach (Media media in playlist.medias) { // create media int mediaID = DataModel.medMdl.insertGetId(media); // create relationship between media and playlist PlaylistMedia plmed = new PlaylistMedia(); plmed.playlist.id = playlistID; plmed.media.id = mediaID; DataModel.plmedMdl.insert(plmed); } return(true); }
private void btnSave_Click(object sender, EventArgs e) { // set playlist name newPL.name = input_playlistName.Text; // remote deleted media in old list List <int> dId = new List <int>(); foreach (Media m in oldPL.medias) { bool existed = false; for (int i = 0; i < newPL.medias.Count; i++) { if (newPL.medias[i].url.Equals(m.url)) { existed = true; break; } } if (!existed) { dId.Add(m.id); } } // delete medias in database foreach (int id in dId) { DataModel.plmedMdl.deleteByMedia(id); DataModel.medMdl.delete(id); } // remove duplicated medias in new list List <int> indices = new List <int>(); List <Media> updMds = new List <Media>(); foreach (Media i in oldPL.medias) { for (int j = 0; j < newPL.medias.Count; j++) { if (newPL.medias[j].url.Equals(i.url)) { if (!newPL.medias[j].name.Equals(i.name)) { updMds.Add(newPL.medias[j]); } indices.Add(j); } } } indices.Sort(); indices.Reverse(); foreach (int i in indices) { newPL.medias.RemoveAt(i); } // Update medias foreach (Media m in updMds) { DataModel.medMdl.update(m); } // Add media to database foreach (Media m in newPL.medias) { int mediaID = DataModel.medMdl.insertGetId(m); // Add relationship of media and playlist PlaylistMedia plm = new PlaylistMedia(); plm.media.id = mediaID; plm.playlist.id = newPL.id; DataModel.plmedMdl.insert(plm); } // Update name of playlist DataModel.plMdl.update(newPL); // Close window , notify parent window for update list gui.loadPlaylists(); Close(); }