public async Task DeleteSongAsync(Song song) { // remove it from artist and albums songs var artist = Artists.FirstOrDefault(p => p.Songs.Contains(song)); var album = Albums.FirstOrDefault(p => p.Songs.Contains(song)); if (album != null) { album.Songs.Remove(song); if (album.Songs.Count == 0) { await _sqlService.DeleteItemAsync(album); Albums.Remove(album); } } if (artist != null) { artist.Songs.Remove(song); if (artist.Songs.Count == 0) { await _sqlService.DeleteItemAsync(artist); Artists.Remove(artist); } } //good, now lets delete it from the db await _sqlService.DeleteItemAsync(song); Songs.Remove(song); }
public async Task DeleteFromQueueAsync(QueueSong songToRemove) { QueueSong previousModel; if (songToRemove == null) { return; } if (_lookupMap.TryGetValue(songToRemove.PrevId, out previousModel)) { previousModel.NextId = songToRemove.NextId; await _bgSqlService.UpdateItemAsync(previousModel); } if (_lookupMap.TryGetValue(songToRemove.ShufflePrevId, out previousModel)) { previousModel.ShuffleNextId = songToRemove.ShuffleNextId; await _bgSqlService.UpdateItemAsync(previousModel); } QueueSong nextModel; if (_lookupMap.TryGetValue(songToRemove.NextId, out nextModel)) { nextModel.PrevId = songToRemove.PrevId; await _bgSqlService.UpdateItemAsync(nextModel); } if (_lookupMap.TryGetValue(songToRemove.ShuffleNextId, out nextModel)) { nextModel.ShufflePrevId = songToRemove.ShufflePrevId; await _bgSqlService.UpdateItemAsync(nextModel); } await _dispatcher.RunAsync( () => { PlaybackQueue.Remove(songToRemove); ShufflePlaybackQueue.Remove(songToRemove); }); _lookupMap.TryRemove(songToRemove.Id, out songToRemove); // Delete from database await _bgSqlService.DeleteItemAsync(songToRemove); }
public async Task DeleteStationAsync(RadioStation station) { var songs = Songs.Where(p => p.RadioId == station.Id); foreach (var song in songs) { await DeleteSongAsync(song); } await _sqlService.DeleteItemAsync(station); Stations.Remove(station); }