Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }