protected virtual void AddTracksToPlaylist(Playlist playlist)
 {
     AppendToPlaylist(playlist);
 }
 protected virtual async void AppendToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         try
         {
             var changedPlaylist = await this.DataService.AppendToPlaylist(playlist);
             if (changedPlaylist != null)
             {
                 //Refreshing all the playlist entry views
                 Messenger.Default.Send<PlaylistEntryChangeMessage>(new PlaylistEntryChangeMessage { Playlist = changedPlaylist });
             }
         }
         catch(Exception exception)
         {
             this.DialogService.ShowDialog(exception.Message);
         }
     }
 }
 private async void SaveNewPlaylist()
 {
     if (!string.IsNullOrEmpty(this.PlaylistName))
     {
         this.ErrorMessage = string.Empty;
         BSE.Tunes.Data.TunesUser user = this.m_accountService.User;
         if (user != null && !string.IsNullOrEmpty(user.UserName))
         {
             Playlist playlist = new Playlist
             {
                 Name = this.PlaylistName,
                 UserName = user.UserName,
                 Guid = Guid.NewGuid()
             };
             try
             {
                 playlist = await this.m_dataService.InsertPlaylist(playlist);
                 this.ErrorMessage = string.Empty;
                 this.PlaylistName = string.Empty;
                 if (this.PlaylistInserted != null)
                 {
                     this.PlaylistInserted(this, new PlaylistChangedEventArgs(playlist));
                 }
                 this.IsOpen = false;
             }
             catch (PlaylistExistsException)
             {
                 this.ErrorMessage = string.Format(CultureInfo.CurrentCulture, this.m_resourceService.GetString("IDS_NewPlaylistDialog_PlayListAlreadyExistsExceptionMessage"), this.PlaylistName);
             }
             catch (Exception exception)
             {
                 this.ErrorMessage = exception.Message;
             }
         }
     }
 }
 private void AddEntriesToPlaylist(Playlist playlist, ObservableCollection<PlaylistEntry> playlistEntries)
 {
     if (playlist != null && playlistEntries != null)
     {
         foreach (var entry in playlistEntries)
         {
             if (entry != null)
             {
                 playlist.Entries.Add(new PlaylistEntry
                 {
                     PlaylistId = playlist.Id,
                     TrackId = entry.TrackId,
                     Guid = Guid.NewGuid()
                 });
             }
         }
         this.AppendToPlaylist(playlist);
     }
 }
        public Playlist GetPlaylistById(int playlistId, string userName)
        {
            Playlist playlist = null;
            if (string.IsNullOrEmpty(userName) == false)
            {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append("SELECT p.ListId, p.ListName, p.User, p.Guid, pe.EntryId, pe.sortorder, pe.Guid as EntryGuid, t.LiedID, t.Lied, t.Dauer, a.Guid as AlbumId, i.Interpret FROM tunesEntities.playlist AS p");
                stringBuilder.Append(" LEFT JOIN tunesEntities.playlistentries AS pe ON p.ListId = pe.PlaylistId");
                stringBuilder.Append(" LEFT JOIN tunesEntities.lieder AS t ON pe.LiedId = t.LiedID");
                stringBuilder.Append(" LEFT JOIN tunesEntities.titel AS a ON t.TitelID = a.TitelID");
                stringBuilder.Append(" LEFT JOIN tunesEntities.interpreten AS i ON a.InterpretID = i.InterpretID");
                stringBuilder.Append(" WHERE p.ListId = @playlistId");
                stringBuilder.Append(" AND p.User = @userName");

                string sql = stringBuilder.ToString();
                using (System.Data.EntityClient.EntityConnection entityConnection =
                        new System.Data.EntityClient.EntityConnection(this.ConnectionString))
                {
                    try
                    {
                        entityConnection.Open();
                        using (EntityCommand entityCommand = entityConnection.CreateCommand())
                        {
                            EntityParameter trackIdParam = new EntityParameter();
                            trackIdParam.ParameterName = "playlistId";
                            trackIdParam.Value = playlistId;
                            entityCommand.Parameters.Add(trackIdParam);

                            EntityParameter user = new EntityParameter();
                            user.ParameterName = "userName";
                            user.Value = userName;
                            entityCommand.Parameters.Add(user);

                            entityCommand.CommandText = sql;
                            // Execute the command.
                            using (EntityDataReader dataReader = entityCommand.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
                            {
                                // Start reading results.
                                while (dataReader.Read())
                                {
                                    if (playlist == null)
                                    {
                                        playlist = new Playlist
                                        {
                                            Id = dataReader.GetInt32("ListId", false, 0),
                                            Name = dataReader.GetString("ListName", false, string.Empty),
                                            UserName = dataReader.GetString("User", false, string.Empty),
											Guid = dataReader.GetGuid("Guid", false, Guid.Empty),
                                        };
                                    }
                                    int entryId = dataReader.GetInt32("EntryId", true, 0);
                                    if (entryId > 0)
                                    {
                                        PlaylistEntry entry = new PlaylistEntry
                                        {
                                            Id = entryId,
                                            SortOrder = dataReader.GetInt32("sortorder", true, 0),
											Guid = dataReader.GetGuid("EntryGuid", true, Guid.Empty),
											TrackId = dataReader.GetInt32("LiedID", true, 0),
                                            Name = dataReader.GetString("Lied", true, string.Empty),
                                            Duration = dataReader.GetTimeSpan("Dauer", true, TimeSpan.MinValue),
											AlbumId = dataReader.GetGuid("AlbumId", false, Guid.Empty),
											Artist = dataReader.GetString("Interpret", true, string.Empty)
                                        };
                                        playlist.Entries.Add(entry);
                                    }
                                }
                            }
                        }
                    }
                    finally
                    {
                        entityConnection.Close();
                    }
                }
            }
            return playlist;
        }
 public PlaylistChangedEventArgs(Playlist playlist)
 {
     this.Playlist = playlist;
 }
 protected virtual void AddSelectedToPlaylist(Playlist playlist)
 {
 }
 public Playlist AppendToPlaylist(Playlist playlist)
 {
     if (playlist != null && playlist.Entries != null)
     {
         List<PlaylistEntry> entries = new List<PlaylistEntry>(playlist.Entries);
         using (TunesEntities tunesEntity = new TunesEntities(this.ConnectionString))
         {
             if (tunesEntity != null)
             {
                 int sortOrder = tunesEntity.playlistentries.Where(pe => pe.PlaylistId == playlist.Id).Count();
                 entries.ForEach((playlistEntry) =>
                     {
                         if (playlistEntry != null)
                         {
                             tunesEntity.playlistentries.Add(new PlaylistEntryEntity
                             {
                                 Guid = playlistEntry.Guid,
                                 LiedId = playlistEntry.TrackId,
                                 PlaylistId = playlist.Id,
                                 sortorder = sortOrder,
                                 Timestamp = DateTime.Now
                             });
                         }
                     });
                 tunesEntity.SaveChanges();
             }
         }
     }
     return playlist = this.GetPlaylistById(playlist.Id, playlist.UserName);
 }
 private void AddTracksToPlaylist(Playlist playlist, ObservableCollection<Track> tracks)
 {
     if (playlist != null && tracks != null)
     {
         foreach (var track in tracks)
         {
             if (track != null)
             {
                 playlist.Entries.Add(new PlaylistEntry
                 {
                     PlaylistId = playlist.Id,
                     TrackId = track.Id,
                     Guid = Guid.NewGuid()
                 });
             }
         }
         this.AppendToPlaylist(playlist);
     }
 }
 protected override void AddTracksToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         playlist.Entries.Clear();
         playlist.Entries.Add(new PlaylistEntry
         {
             PlaylistId = playlist.Id,
             TrackId = this.CurrentTrack.Id,
             Guid = Guid.NewGuid()
         });
         base.AddTracksToPlaylist(playlist);
     }
 }
 protected override void AddSelectedToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         var selectedItems = this.SelectedItems;
         if (selectedItems != null)
         {
             var tracks = new ObservableCollection<Track>(selectedItems.Cast<Track>());
             if (tracks != null)
             {
                 this.AddTracksToPlaylist(playlist, tracks);
             }
         }
     }
     this.SelectedItems.Clear();
 }
 protected override void AddAllToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         var tracks = new ObservableCollection<Track>(this.Album.Tracks);
         if (tracks != null)
         {
             this.AddTracksToPlaylist(playlist, tracks);
         }
     }
 }
Exemple #13
0
        private void LoadData()
        {
            TunesUser user = this.m_accountService.User;
            if (user != null && !string.IsNullOrEmpty(user.UserName))
            {
                try
                {
                    var task = Task.Run(async () => await this.m_dataService.GetPlaylistByIdWithNumberOfEntries(this.PlaylistId, user.UserName));
                    task.Wait();

                    this.Playlist = task.Result;
                    this.FormatNumberOfEntriesString();
                }
                catch (Exception ex)
                {

                }
            }
        }
        public Playlist GetPlaylistByIdWithNumberOfEntries(int playlistId, string userName)
        {
            Playlist playlist = null;
            if (string.IsNullOrEmpty(userName) == false)
            {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append("SELECT p.ListId, p.ListName, p.guid, COUNT(pe.PlaylistId) as Number ");
				stringBuilder.Append(" FROM tunesEntities.playlist AS p");
                stringBuilder.Append(" LEFT JOIN tunesEntities.playlistentries AS pe ON p.ListId = pe.PlaylistId");
                stringBuilder.Append(" WHERE p.ListId = @playlistId");
                stringBuilder.Append(" AND p.User = @userName");
				stringBuilder.Append(" GROUP BY p.listid, p.ListName, p.guid");

                string sql = stringBuilder.ToString();
                using (System.Data.EntityClient.EntityConnection entityConnection =
                        new System.Data.EntityClient.EntityConnection(this.ConnectionString))
                {
                    try
                    {
                        entityConnection.Open();
                        using (EntityCommand entityCommand = entityConnection.CreateCommand())
                        {
                            EntityParameter id = new EntityParameter();
                            id.ParameterName = "playlistId";
                            id.Value = playlistId;
                            entityCommand.Parameters.Add(id);

                            EntityParameter user = new EntityParameter();
                            user.ParameterName = "userName";
                            user.Value = userName;
                            entityCommand.Parameters.Add(user);

                            entityCommand.CommandText = sql;
                            // Execute the command.
                            using (EntityDataReader dataReader = entityCommand.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
                            {
                                if (dataReader.Read() == true)
                                {
                                    playlist = new Playlist
                                    {
                                        Id = dataReader.GetInt32("ListId", false, 0),
                                        Name = dataReader.GetString("ListName", false, string.Empty),
										Guid = dataReader.GetGuid("guid", false, Guid.Empty),
										NumberEntries = dataReader.GetInt32("Number", false, 0)
                                    };
                                }
                            }
                        }
                    }
						catch(Exception ex)
					{
					}
                    finally
                    {
                        entityConnection.Close();
                    }
                }
            }
            return playlist;
        }
 protected virtual void AddAllToPlaylist(Playlist playlist)
 {
 }
 public Playlist InsertPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         PlaylistEntity entity = new PlaylistEntity
         {
             ListId = playlist.Id,
             ListName = playlist.Name,
             User = playlist.UserName,
             guid = playlist.Guid.ToString(),
             Timestamp = DateTime.Now
         };
         using (TunesEntities tunesEntity = new TunesEntities(this.ConnectionString))
         {
             PlaylistEntity playlistEntity = tunesEntity.playlist.FirstOrDefault(pl => pl.ListId == playlist.Id);
             if (playlistEntity == null)
             {
                 if (tunesEntity.playlist.FirstOrDefault(
                     pl => string.Compare(pl.ListName, entity.ListName) == 0 && string.Compare(pl.User, entity.User) == 0) != null)
                 {
                     string playlistExistsExceptionMessage = string.Format(CultureInfo.InvariantCulture, SRResources.PlaylistExistsException, playlist.Name);
                     throw new PlaylistExistsException(playlistExistsExceptionMessage);
                 }
                 tunesEntity.playlist.Add(entity);
             }
             tunesEntity.SaveChanges();
             playlist = new Playlist
             {
                 Id = entity.ListId,
                 Name = entity.ListName,
                 UserName = entity.User,
                 Guid = new Guid(entity.guid)
             };
         }
     }
     return playlist;
 }
 private void AddToPlaylist(Playlist playlist, InsertMode insertMode)
 {
     if (playlist != null)
     {
         switch (insertMode)
         {
             case InsertMode.All:
                 this.AddAllToPlaylist(playlist);
                 break;
             default:
                 this.AddSelectedToPlaylist(playlist);
                 break;
         }
     }
 }
 public bool UpdatePlaylistEntries(Playlist playlist)
 {
     bool hasUpdated = false;
     if (playlist != null && playlist.Entries != null)
     {
         List<PlaylistEntry> entries = new List<PlaylistEntry>(playlist.Entries);
         using (TunesEntities tunesEntity = new TunesEntities(this.ConnectionString))
         {
             if (tunesEntity != null)
             {
                 var entr = tunesEntity.playlistentries.Where((e) => e.PlaylistId == playlist.Id).ToList();
                 entr.ForEach((e) =>
                 {
                     if (e != null)
                     {
                         tunesEntity.playlistentries.Remove(e);
                     }
                 });
                 foreach (var e in playlist.Entries)
                 {
                     if (e != null)
                     {
                         PlaylistEntryEntity entity = new PlaylistEntryEntity
                         {
                             Guid = e.Guid,
                             LiedId = e.TrackId,
                             PlaylistId = playlist.Id,
                             Timestamp = DateTime.Now,
                             sortorder = e.SortOrder
                         };
                         tunesEntity.playlistentries.Add(entity);
                     }
                 }
                 tunesEntity.SaveChanges();
                 hasUpdated = true;
             }
         }
     }
     return hasUpdated;
 }
 protected override void AddAllToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         this.AddEntriesToPlaylist(playlist, this.Entries);
     }
 }
        public Playlist[] GetPlaylistsByUserName(string userName, int limit)
        {
            Playlist[] playlists = null;
            if (!string.IsNullOrEmpty(userName))
            {
                bool hasLimit = false;
                if (limit > 0)
                {
                    hasLimit = true;
                }

                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append("SELECT p.ListId, p.ListName, p.User, p.guid FROM tunesEntities.playlist AS p");
                stringBuilder.Append(" WHERE p.User = @userName");
                stringBuilder.Append(" ORDER BY p.ListName");
                if (hasLimit)
                {
                    stringBuilder.Append(" LIMIT @limit ");
                }
                string sql = stringBuilder.ToString();

                using (System.Data.EntityClient.EntityConnection entityConnection =
                    new System.Data.EntityClient.EntityConnection(this.ConnectionString))
                {
                    try
                    {
                        entityConnection.Open();
                        using (EntityCommand entityCommand = entityConnection.CreateCommand())
                        {
                            EntityParameter user = new EntityParameter();
                            user.ParameterName = "userName";
                            user.Value = userName;
                            entityCommand.Parameters.Add(user);

                            EntityParameter limitParam = new EntityParameter();
                            limitParam.ParameterName = "limit";
                            limitParam.Value = limit;
                            entityCommand.Parameters.Add(limitParam);

                            List<Playlist> playlistCollection = null;
                            entityCommand.CommandText = sql;
                            // Execute the command.
                            using (EntityDataReader dataReader = entityCommand.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
                            {
                                // Start reading results.
                                while (dataReader.Read())
                                {
                                    if (playlistCollection == null)
                                    {
                                        playlistCollection = new List<Playlist>();
                                    }

                                    Playlist playlist = new Playlist
                                    {
                                        Id = dataReader.GetInt32("ListId", false, 0),
                                        Name = dataReader.GetString("ListName", false, string.Empty),
                                        UserName = dataReader.GetString("User", false, string.Empty),
                                        Guid = dataReader.GetGuid("guid", true, Guid.Empty)
                                    };
                                    playlistCollection.Add(playlist);
                                }
                            }
                            if (playlistCollection != null)
                            {
                                playlists = playlistCollection.ToArray();

                            }
                        }
                    }
                    finally
                    {
                        entityConnection.Close();
                    }
                }
            }
            return playlists;
        }
 protected override void AddSelectedToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         var selectedItems = this.SelectedItems;
         if (selectedItems != null)
         {
             var playlistEntries = new ObservableCollection<PlaylistEntry>(selectedItems.Cast<PlaylistEntry>());
             if (playlistEntries != null)
             {
                 this.AddEntriesToPlaylist(playlist, playlistEntries);
             }
         }
     }
     this.SelectedItems.Clear();
 }
 protected override void AddTracksToPlaylist(Playlist playlist)
 {
     if (playlist != null)
     {
         var playlistEntries = this.SelectedEntries;
         if (playlistEntries.Count == 0)
         {
             playlistEntries = this.Entries;
         }
         if (playlistEntries != null)
         {
             foreach (var entry in playlistEntries)
             {
                 if (entry != null)
                 {
                     playlist.Entries.Add(new PlaylistEntry
                     {
                         PlaylistId = playlist.Id,
                         TrackId = entry.TrackId,
                         Guid = Guid.NewGuid()
                     });
                 }
             }
         }
         base.AddTracksToPlaylist(playlist);
     }
 }
 private void SaveNewPlaylist()
 {
     if (!string.IsNullOrEmpty(this.PlaylistName))
     {
         this.ErrorMessage = string.Empty;
         TunesUser user = this.m_accountService.User;
         if (user != null && !string.IsNullOrEmpty(user.UserName))
         {
             Playlist playlist = new Playlist
             {
                 Name = this.PlaylistName,
                 UserName = user.UserName,
                 Guid = Guid.NewGuid()
             };
             try
             {
                 var task = Task.Run(async () => await this.m_dataService.InsertPlaylist(playlist));
                 task.Wait();
                 this.ErrorMessage = string.Empty;
                 this.PlaylistName = string.Empty;
                 if (this.PlaylistInserted != null)
                 {
                     this.PlaylistInserted(this, new PlaylistChangedEventArgs(task.Result));
                 }
                 this.IsOpen = false;
             }
             catch (AggregateException aggregateException)
             {
                 foreach (var innerException in aggregateException.Flatten().InnerExceptions)
                 {
                     PlaylistExistsException playlistExistsException = innerException as PlaylistExistsException;
                     if (playlistExistsException != null)
                     {
                         this.ErrorMessage = string.Format(CultureInfo.CurrentCulture, this.m_resourceService.GetString("IDS_NewPlaylistDialog_PlayListAlreadyExistsExceptionMessage"), this.PlaylistName);
                         return;
                     }
                 }
             }
         }
     }
 }