diff --git a/Controllers/Managers/CoverArtManager.cs b/Controllers/Managers/CoverArtManager.cs index 3994299..039049a 100644 --- a/Controllers/Managers/CoverArtManager.cs +++ b/Controllers/Managers/CoverArtManager.cs @@ -43,6 +43,31 @@ namespace Icarus.Controllers.Managers Console.WriteLine("Nothing wrong here"); Console.WriteLine($"song cover art id {song.CoverArtId}"); } + public void DeleteCoverArtFromDatabase(CoverArt coverArt, + CoverArtRepository coverArtRepository) + { + _logger.Info("Attempting to delete cover art from the database"); + coverArtRepository.DeleteCoverArt(coverArt); + } + public void DeleteCoverArt(CoverArt coverArt) + { + try + { + var stockCoverArtPath = _rootCoverArtPath + "/CoverArt.png"; + if (!string.Equals(stockCoverArtPath, coverArt.ImagePath, + StringComparison.CurrentCultureIgnoreCase)) + { + _logger.Info("Song does not contain the stock cover art"); + File.Delete(coverArt.ImagePath); + _logger.Info("Cover art deleted from the database"); + } + } + catch (Exception ex) + { + var msg = ex.Message; + _logger.Error(msg, "An error occurred"); + } + } public CoverArt SaveCoverArt(Song song) { diff --git a/Controllers/Managers/SongManager.cs b/Controllers/Managers/SongManager.cs index 8e16233..c5f4eb6 100644 --- a/Controllers/Managers/SongManager.cs +++ b/Controllers/Managers/SongManager.cs @@ -160,8 +160,10 @@ namespace Icarus.Controllers.Managers return successful; } - public void DeleteSong(Song song, SongRepository songStore, AlbumRepository albumStore, - ArtistRepository artistStore, GenreRepository genreStore, YearRepository yearStore) + public void DeleteSong(Song song, SongRepository songStore, + AlbumRepository albumStore, ArtistRepository artistStore, + GenreRepository genreStore, YearRepository yearStore, + CoverArtRepository coverStore) { try { @@ -171,7 +173,12 @@ namespace Icarus.Controllers.Managers throw new Exception("Failed to delete the song"); } + var coverMgr = new CoverArtManager(_config.GetValue( + "CoverArtPath")); + var coverArt = coverStore.GetCoverArt(song); + coverMgr.DeleteCoverArt(coverArt); + coverMgr.DeleteCoverArtFromDatabase(coverArt, coverStore); DeleteSongFromDatabase(song, songStore, albumStore, artistStore, genreStore, yearStore); } @@ -799,9 +806,7 @@ namespace Icarus.Controllers.Managers return false; } - var result = DoesSongExistOnFilesystem(song); - - return result; + return DoesSongExistOnFilesystem(song); } private bool DoesSongExistOnFilesystem(Song song) { diff --git a/Controllers/v1/SongDataController.cs b/Controllers/v1/SongDataController.cs index d778a76..9b2cd6b 100644 --- a/Controllers/v1/SongDataController.cs +++ b/Controllers/v1/SongDataController.cs @@ -127,27 +127,11 @@ namespace Icarus.Controllers.V1 [Authorize("delete:songs")] public IActionResult Delete(int id) { - SongRepository context = HttpContext.RequestServices - .GetService(typeof(SongRepository)) as SongRepository; - - AlbumRepository albumStore = HttpContext.RequestServices - .GetService(typeof(AlbumRepository)) as AlbumRepository; - - ArtistRepository artistStore = HttpContext.RequestServices - .GetService(typeof(ArtistRepository)) as ArtistRepository; - - GenreRepository genreStore = HttpContext.RequestServices - .GetService(typeof(GenreRepository)) as GenreRepository; - - YearRepository yearStore = HttpContext.RequestServices - .GetService(typeof(YearRepository)) as YearRepository; - - CoverArtRepository coverArtRepository = HttpContext.RequestServices - .GetService(typeof(CoverArtRepository)) as CoverArtRepository; + Initialize(); var songMetaData = new Song{ Id = id }; Console.WriteLine($"Id {songMetaData.Id}"); - songMetaData = context.GetSong(songMetaData); + songMetaData = _songRepository.GetSong(songMetaData); if (string.IsNullOrEmpty(songMetaData.Title)) { @@ -158,8 +142,10 @@ namespace Icarus.Controllers.V1 { _logger.LogInformation("Starting process of deleting song from the filesystem and database"); - _songMgr.DeleteSong(songMetaData, context, albumStore, - artistStore, genreStore, yearStore); + _songMgr.DeleteSong(songMetaData, _songRepository, + _albumRepository, _artistRepository, + _genreRepository, _yearRepository, + _coverArtRepository); return Ok(); }