private async Task <int> PlayEntity <T>(Device device, T entity) { var playlist = device.Playlist; playlist.Items.Clear(); playlist.Items.Clear(); PlaylistItem pli = null; switch (entity) { case MusicFile mf: pli = CreateNewPlaylistItem(mf); break; case Track t: pli = CreateNewPlaylistItem(t); break; case Work w: pli = CreateNewPlaylistItem(w); break; case Performance p: pli = CreateNewPlaylistItem(p); break; default: throw new Exception($"Entity type {entity.GetType().Name} is not playable"); } //var pli = CreateNewPlaylistItem(entity); playlist.AddPlaylistItem(pli); await musicDb.SaveChangesAsync(); await musicDb.FillPlaylistItemForRuntime(pli); await playManager.ClearPlaylist(device.KeyName); await playManager.AddPlaylistItem(device.KeyName, pli); return(await playManager.PlayNext(device.KeyName)); }