public PlaylistMemberAddStatus AddTracksToPlaylist(object selectedItemData)
{
PlaylistModel playlistModel = (PlaylistModel)selectedItemData;
- if(addingTrackList == null || addingTrackList.Count <= 0)
+
+ if (addingTrackList == null || addingTrackList.Count <= 0)
{
return PlaylistMemberAddStatus.PlaylistCreationFailed;
}
}
}
- bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, addingTrackList);
+ // Same track should not be allowed to be added multiple times in a playlist
+ List<string> updatedTrackList = TrackExistInPlaylist(addingTrackList, playlistModel);
+
+ bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, updatedTrackList);
return result ? PlaylistMemberAddStatus.Added : PlaylistMemberAddStatus.Failed;
}
+ private List<string> TrackExistInPlaylist(List<string> addingTrackList, PlaylistModel playlistModel)
+ {
+ PlaylistDetailViewModel playlistDetailViewModel = new PlaylistDetailViewModel(playlistModel.PlaylistId);
+
+ List<string> updatedTrackList = new List<string>();
+ foreach (string id in addingTrackList)
+ {
+ bool flag = true;
+
+ foreach (Track existingTrack in playlistDetailViewModel.ListViewModel)
+ {
+ if (id == existingTrack.Id)
+ {
+ flag = false;
+ break;
+ }
+ }
+ if (flag)
+ {
+ updatedTrackList.Add(id);
+ }
+ }
+ return updatedTrackList;
+ }
+
public bool IsPlaylistExists(string playlistName)
{
Playlist playlist = PlaylistManager.Instance.GetPlaylist(playlistName);