using Harmonia.Core.Data; namespace Harmonia.Core.Playlists; public class PlaylistRepository : JsonFileRepository, IPlaylistRepository { protected override string DirectoryName => Path.Combine("Playlists"); //public PlaylistRepository() //{ // List playlists = Get(); // foreach (Playlist playlist in playlists) // { // playlist.PlaylistUpdated += OnPlaylistUpdated; // } // if (playlists.Count == 0) // AddPlaylist(); //} //private void OnPlaylistUpdated(object? sender, PlaylistUpdatedEventArgs e) //{ // if (sender is not Playlist playlist) // return; // Save(playlist); //} public Playlist? GetPlaylist(PlaylistSong playlistSong) { return Get().FirstOrDefault(playlist => playlist.Songs.Contains(playlistSong)); } protected override string GetNewFileName() { for (int i = 0; i < 1000; i++) { string shortFileName = $"Playlist{i.ToString().PadLeft(3, '0')}.{Extension}"; string filePath = Path.Combine(DirectoryName, shortFileName); if (File.Exists(filePath) == false) return shortFileName; } throw new Exception("Unable to determine new fileName"); } //public event EventHandler? PlaylistAdded; //public event EventHandler? PlaylistRemoved; //public void AddPlaylist() //{ // Playlist playlist = new() // { // Name = "New Playlist" // }; // playlist.PlaylistUpdated += OnPlaylistUpdated; // Save(playlist); // PlaylistAdded?.Invoke(this, new(playlist)); //} //public void RemovePlaylist(Playlist playlist) //{ // playlist.PlaylistUpdated -= OnPlaylistUpdated; // Delete(playlist); // PlaylistRemoved?.Invoke(this, new(playlist)); //} }