Files
icarus/Controllers/Managers/CoverArtManager.cs
T
2019-08-11 23:24:23 -04:00

105 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Icarus.Constants;
using Icarus.Controllers.Utilities;
using Icarus.Database.Repositories;
using Icarus.Models;
using Icarus.Types;
namespace Icarus.Controllers.Managers
{
public class CoverArtManager : BaseManager
{
#region Fields
private string _rootCoverArtPath;
#endregion
#region Constructors
public CoverArtManager(string rootPath)
{
_rootCoverArtPath = rootPath;
Initialize();
}
#endregion
#region Methods
public void SaveCoverArtToDatabase(ref Song song, ref CoverArt coverArt,
CoverArtRepository coverArtRepository)
{
_logger.Info("Saving cover art record to the database");
coverArtRepository.SaveCoverArt(coverArt);
coverArt = coverArtRepository.GetCoverArt(CoverArtField.SongTitle,
coverArt);
song.CoverArtId = coverArt.CoverArtId;
_logger.Info("Cover art Process saving complete");
}
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)
{
var stockCoverArtPath = _rootCoverArtPath + "CoverArtPath.png";
DirectoryManager.delete_cover_art(coverArt.ImagePath, stockCoverArtPath);
}
public CoverArt SaveCoverArt(Song song)
{
var sng = SongManager.ConvertSongToSng(song);
var cov = ConvertCoverArtToCovArt(new CoverArt
{
SongTitle = song.Title,
ImagePath = _rootCoverArtPath
});
MetadataRetriever.update_cover_art(ref cov,
ref sng, _rootCoverArtPath);
return ConvertCovArtToCoverArt(cov);
}
public static CovArt ConvertCoverArtToCovArt(CoverArt cover)
{
return new CovArt
{
SongTitle = cover.SongTitle,
ImagePath = cover.ImagePath
};
}
public static CoverArt ConvertCovArtToCoverArt(CovArt cov)
{
return new CoverArt
{
SongTitle = cov.SongTitle,
ImagePath = cov.ImagePath
};
}
private void Initialize()
{
var stockCover = _rootCoverArtPath + "CoverArt.png";
DirectoryManager.copy_stock_cover_art(stockCover,
DirectoryPaths.CoverArtPath);
}
#region Testing
private void PrintCoverArtDetails(CoverArt cover)
{
Console.WriteLine("\nCover art");
Console.WriteLine($"Song Title: {cover.SongTitle}");
Console.WriteLine($"ImagePath: {cover.ImagePath}\n");
}
#endregion
#endregion
}
}