Functional
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NLog;
|
||||
|
||||
namespace Icarus.Controllers.Managers
|
||||
@@ -8,6 +9,8 @@ namespace Icarus.Controllers.Managers
|
||||
{
|
||||
#region Fields
|
||||
protected static Logger _logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
|
||||
protected IConfiguration _config;
|
||||
protected string _connectionString;
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System.IO;
|
||||
|
||||
using Icarus.Constants;
|
||||
using Icarus.Controllers.Utilities;
|
||||
using Icarus.Database.Contexts;
|
||||
using Icarus.Models;
|
||||
using Icarus.Types;
|
||||
|
||||
@@ -13,36 +16,39 @@ namespace Icarus.Controllers.Managers
|
||||
{
|
||||
#region Fields
|
||||
private string _rootCoverArtPath;
|
||||
private CoverArtContext _coverArtContext;
|
||||
private byte[] _stockCoverArt = null;
|
||||
#endregion
|
||||
|
||||
|
||||
#region Constructors
|
||||
public CoverArtManager(string rootPath)
|
||||
public CoverArtManager(IConfiguration config)
|
||||
{
|
||||
_rootCoverArtPath = rootPath;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
_rootCoverArtPath = _config.GetValue<string>("CoverArtPath");
|
||||
Initialize();
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Methods
|
||||
public void SaveCoverArtToDatabase(ref Song song, ref CoverArt coverArt,
|
||||
CoverArtRepository coverArtRepository)
|
||||
public void SaveCoverArtToDatabase(ref Song song, ref CoverArt coverArt)
|
||||
{
|
||||
_logger.Info("Saving cover art record to the database");
|
||||
coverArtRepository.SaveCoverArt(coverArt);
|
||||
_coverArtContext.Add(coverArt);
|
||||
var songTitle = coverArt.SongTitle;
|
||||
|
||||
coverArt = coverArtRepository.GetCoverArt(CoverArtField.SongTitle,
|
||||
coverArt);
|
||||
coverArt = _coverArtContext.CoverArtImages.FirstOrDefault(cov => cov.SongTitle.Equals(songTitle));
|
||||
|
||||
song.CoverArtId = coverArt.CoverArtId;
|
||||
song.CoverArtID = coverArt.CoverArtID;
|
||||
}
|
||||
public void DeleteCoverArtFromDatabase(CoverArt coverArt,
|
||||
CoverArtRepository coverArtRepository)
|
||||
public void DeleteCoverArtFromDatabase(CoverArt coverArt)
|
||||
{
|
||||
_logger.Info("Attempting to delete cover art from the database");
|
||||
coverArtRepository.DeleteCoverArt(coverArt);
|
||||
|
||||
_coverArtContext.Remove(coverArt);
|
||||
_coverArtContext.SaveChanges();
|
||||
}
|
||||
public void DeleteCoverArt(CoverArt coverArt)
|
||||
{
|
||||
@@ -109,8 +115,15 @@ namespace Icarus.Controllers.Managers
|
||||
return null;
|
||||
}
|
||||
|
||||
public CoverArt GetCoverArt(Song song)
|
||||
{
|
||||
return _coverArtContext.CoverArtImages.FirstOrDefault(cov => cov.SongTitle.Equals(song.Title));
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
_coverArtContext = new CoverArtContext(_connectionString);
|
||||
|
||||
if (System.IO.File.Exists(DirectoryPaths.CoverArtPath))
|
||||
_stockCoverArt = File.ReadAllBytes(DirectoryPaths.CoverArtPath);
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ namespace Icarus.Controllers.Managers
|
||||
public class DirectoryManager : BaseManager
|
||||
{
|
||||
#region Fields
|
||||
private IConfiguration _config;
|
||||
private Song _song;
|
||||
private string _rootSongDirectory;
|
||||
private string _songDirectory;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
@@ -19,12 +20,11 @@ namespace Icarus.Controllers.Managers
|
||||
public class SongManager : BaseManager
|
||||
{
|
||||
#region Fields
|
||||
private IConfiguration _config;
|
||||
private string _connectionString;
|
||||
private string _tempDirectoryRoot;
|
||||
private string _archiveDirectoryRoot;
|
||||
private string _compressedSongFilename;
|
||||
private string _message;
|
||||
private SongContext _songContext;
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
try
|
||||
{
|
||||
var oldSongRecord = songStore.GetSong(song);
|
||||
var oldSongRecord = _songContext.RetrieveRecord(song);
|
||||
song.SongPath = oldSongRecord.SongPath;
|
||||
|
||||
MetadataRetriever updateMetadata = new MetadataRetriever();
|
||||
@@ -86,16 +86,16 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
var updatedSong = updateMetadata.UpdatedSongRecord;
|
||||
|
||||
var updatedAlbum = UpdateAlbumInDatabase(oldSongRecord, updatedSong)
|
||||
oldSongRecord.AlbumId = updatedAlbum.AlbumId;
|
||||
var updatedAlbum = UpdateAlbumInDatabase(oldSongRecord, updatedSong);
|
||||
oldSongRecord.AlbumID = updatedAlbum.AlbumID;
|
||||
|
||||
var updatedArtist = UpdateArtistInDatabase(oldSongRecord, updatedSong);
|
||||
oldSongRecord.ArtistId = updatedArtist.ArtistId;
|
||||
oldSongRecord.ArtistID = updatedArtist.ArtistID;
|
||||
|
||||
var updatedGenre = UpdateGenreInDatabase(oldSongRecord, updatedSong);
|
||||
Console.WriteLine($"Old Genre Id {oldSongRecord.GenreId}");
|
||||
oldSongRecord.GenreId = updatedGenre.GenreId;
|
||||
Console.WriteLine($"Updated Genre Id {updatedGenre.GenreId}");
|
||||
Console.WriteLine($"Old Genre Id {oldSongRecord.GenreID}");
|
||||
oldSongRecord.GenreID = updatedGenre.GenreID;
|
||||
Console.WriteLine($"Updated Genre ID {updatedGenre.GenreID}");
|
||||
|
||||
UpdateSongInDatabase(ref oldSongRecord, ref updatedSong, ref result);
|
||||
|
||||
@@ -148,9 +148,9 @@ namespace Icarus.Controllers.Managers
|
||||
}
|
||||
_logger.Info("Song deleted from the filesystem");
|
||||
|
||||
var coverMgr = new CoverArtManager(_config.GetValue<string>(
|
||||
"CoverArtPath"));
|
||||
var coverArt = coverStore.GetCoverArt(song);
|
||||
var coverMgr = new CoverArtManager(_config);
|
||||
// var coverArt = coverStore.GetCoverArt(song);
|
||||
var coverArt = coverMgr.GetCoverArt(song);
|
||||
coverMgr.DeleteCoverArt(coverArt);
|
||||
|
||||
coverMgr.DeleteCoverArtFromDatabase(coverArt);
|
||||
@@ -205,7 +205,7 @@ namespace Icarus.Controllers.Managers
|
||||
_logger.Info("Song successfully saved to filesystem");
|
||||
}
|
||||
|
||||
var coverMgr = new CoverArtManager(_config.GetValue<string>("CoverArtPath"));
|
||||
var coverMgr = new CoverArtManager(_config);
|
||||
var coverArt = coverMgr.SaveCoverArt(song);
|
||||
|
||||
coverMgr.SaveCoverArtToDatabase(ref song, ref coverArt);//,
|
||||
@@ -298,13 +298,13 @@ namespace Icarus.Controllers.Managers
|
||||
{
|
||||
try
|
||||
{
|
||||
_connectionString = _config.GetConnectionString("IcarusDev");
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
_songContext = new SongContext(_connectionString);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error Occurred: {ex.Message}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@ namespace Icarus.Controllers.Managers
|
||||
var info = "Saving Song to DB";
|
||||
Console.WriteLine(info);
|
||||
_logger.Info(info);
|
||||
songStore.SaveSong(song);
|
||||
_songContext.Add(song);
|
||||
}
|
||||
private void SaveAlbumToDatabase(ref Song song)//, AlbumRepository albumStore)
|
||||
{
|
||||
@@ -331,24 +331,26 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
album.Title = song.AlbumTitle;
|
||||
album.AlbumArtist = song.Artist;
|
||||
var albumTitle = song.AlbumTitle;
|
||||
AlbumContext albumContext = new AlbumContext(_connectionString);
|
||||
|
||||
if (!albumStore.DoesAlbumExist(song))
|
||||
if (!(albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(albumTitle)) != null))
|
||||
{
|
||||
album.SongCount = 1;
|
||||
albumStore.SaveAlbum(album);
|
||||
album = albumStore.GetAlbum(song);
|
||||
Console.WriteLine($"Album Id {album.AlbumId}");
|
||||
albumContext.Add(album);
|
||||
album = albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(albumTitle));
|
||||
Console.WriteLine($"Album Id {album.AlbumID}");
|
||||
}
|
||||
else
|
||||
{
|
||||
var albumRetrieved = albumStore.GetAlbum(song);
|
||||
album.AlbumId = albumRetrieved.AlbumId;
|
||||
var albumRetrieved = albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(albumTitle));
|
||||
album.AlbumID = albumRetrieved.AlbumID;
|
||||
album.SongCount = albumRetrieved.SongCount + 1;
|
||||
|
||||
albumStore.UpdateAlbum(album);
|
||||
albumContext.Update(album);
|
||||
}
|
||||
|
||||
song.AlbumId = album.AlbumId;
|
||||
song.AlbumID = album.AlbumID;
|
||||
}
|
||||
private void SaveArtistToDatabase(ref Song song)//, ArtistRepository artistStore)
|
||||
{
|
||||
@@ -358,23 +360,26 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
artist.Name = song.Artist;
|
||||
artist.SongCount = 1;
|
||||
var artistTitle = artist.Name;
|
||||
ArtistContext artistContext = new ArtistContext(_connectionString);
|
||||
|
||||
if (!artistStore.DoesArtistExist(song))
|
||||
if (!(artistContext.Artists.FirstOrDefault(art => art.Name.Equals(artistTitle)) != null))
|
||||
{
|
||||
artist.SongCount = 1;
|
||||
artistStore.SaveArtist(artist);
|
||||
artist = artistStore.GetArtist(song);
|
||||
artistContext.Add(artist);
|
||||
artist = artistContext.Artists.FirstOrDefault(art => art.Name.Equals(artistTitle));
|
||||
}
|
||||
else
|
||||
{
|
||||
var artistRetrieved = artistStore.GetArtist(song);
|
||||
artist.ArtistId = artistRetrieved.ArtistId;
|
||||
var artistRetrieved = artistContext.Artists.FirstOrDefault(art => art.Name.Equals(artistTitle));
|
||||
artist.ArtistID = artistRetrieved.ArtistID;
|
||||
artist.SongCount = artistRetrieved.SongCount + 1;
|
||||
|
||||
artistStore.UpdateArtist(artist);
|
||||
artistContext.Update(artist);
|
||||
artistContext.SaveChanges();
|
||||
}
|
||||
|
||||
song.ArtistId = artist.ArtistId;
|
||||
song.ArtistID = artist.ArtistID;
|
||||
}
|
||||
private void SaveGenreToDatabase(ref Song song)//, GenreRepository genreStore)
|
||||
{
|
||||
@@ -386,26 +391,30 @@ namespace Icarus.Controllers.Managers
|
||||
SongCount = 1
|
||||
};
|
||||
|
||||
if (!genreStore.DoesGenreExist(song))
|
||||
var genreName = song.Genre;
|
||||
var genreContext = new GenreContext(_connectionString);
|
||||
|
||||
if (! (genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(genreName)) != null))
|
||||
{
|
||||
genreStore.SaveGenre(genre);
|
||||
genreContext.Add(genre);
|
||||
Console.WriteLine("Going to find genre");
|
||||
genre = genreStore.GetGenre(song);
|
||||
var genreDump = $"Genre id {genre.GenreId} GenreName {genre.GenreName}" +
|
||||
genre = genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(genreName));
|
||||
var genreDump = $"Genre ID {genre.GenreID} GenreName {genre.GenreName}" +
|
||||
$" Genre song Count {genre.SongCount}";
|
||||
Console.WriteLine(genreDump);
|
||||
_logger.Info(genreDump);
|
||||
}
|
||||
else
|
||||
{
|
||||
var genreRetrieved = genreStore.GetGenre(song);
|
||||
genre.GenreId = genreRetrieved.GenreId;
|
||||
var genreRetrieved = genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(genreName));
|
||||
genre.GenreID = genreRetrieved.GenreID;
|
||||
genre.SongCount = genreRetrieved.SongCount + 1;
|
||||
|
||||
genreStore.UpdateGenre(genre);
|
||||
genreContext.Update(genre);
|
||||
genreContext.SaveChanges();
|
||||
}
|
||||
|
||||
song.GenreId = genre.GenreId;
|
||||
song.GenreID = genre.GenreID;
|
||||
}
|
||||
|
||||
|
||||
@@ -446,7 +455,9 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
private Album UpdateAlbumInDatabase(Song oldSongRecord, Song newSongRecord)//, AlbumRepository albumStore)
|
||||
{
|
||||
var albumRecord = albumStore.GetAlbum(oldSongRecord, true);
|
||||
var albumContext = new AlbumContext(_connectionString);
|
||||
|
||||
var albumRecord = albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(oldSongRecord.AlbumTitle));
|
||||
var oldAlbumTitle = oldSongRecord.AlbumTitle;
|
||||
var oldAlbumArtist = oldSongRecord.Artist;
|
||||
var newAlbumTitle = newSongRecord.AlbumTitle;
|
||||
@@ -469,7 +480,7 @@ namespace Icarus.Controllers.Managers
|
||||
info = "Change to the song's album";
|
||||
_logger.Info(info);
|
||||
|
||||
if (!albumStore.DoesAlbumExist(newSongRecord))
|
||||
if (!(albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(newSongRecord.AlbumTitle)) != null))
|
||||
{
|
||||
_logger.Info("Creating new album record");
|
||||
|
||||
@@ -479,25 +490,28 @@ namespace Icarus.Controllers.Managers
|
||||
AlbumArtist = newAlbumArtist
|
||||
};
|
||||
|
||||
albumStore.SaveAlbum(newAlbumRecord);
|
||||
albumContext.Add(newAlbumRecord);
|
||||
|
||||
return albumStore.GetAlbum(newSongRecord, true);
|
||||
return albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(oldSongRecord.AlbumTitle));
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Info("Updating existing album record");
|
||||
|
||||
var existingAlbumRecord = albumStore.GetAlbum(newSongRecord);
|
||||
var existingAlbumRecord = albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(newSongRecord.AlbumTitle));
|
||||
existingAlbumRecord.AlbumArtist = newAlbumArtist;
|
||||
|
||||
albumStore.UpdateAlbum(existingAlbumRecord);
|
||||
albumContext.Update(existingAlbumRecord);
|
||||
albumContext.SaveChanges();
|
||||
|
||||
return existingAlbumRecord;
|
||||
}
|
||||
}
|
||||
private Artist UpdateArtistInDatabase(Song oldSongRecord, Song newSongRecord)//, ArtistRepository artistStore)
|
||||
{
|
||||
var oldArtistRecord = artistStore.GetArtist(oldSongRecord, true);
|
||||
var artistContext = new ArtistContext(_connectionString);
|
||||
|
||||
var oldArtistRecord = artistContext.Artists.FirstOrDefault(art => art.Name.Equals(oldSongRecord.AlbumTitle));
|
||||
var oldArtistName = oldArtistRecord.Name;
|
||||
var newArtistName = newSongRecord.Artist;
|
||||
|
||||
@@ -513,10 +527,11 @@ namespace Icarus.Controllers.Managers
|
||||
{
|
||||
_logger.Info("Deleting artist record that no longer has any songs");
|
||||
|
||||
artistStore.DeleteArtist(oldArtistRecord);
|
||||
artistContext.Remove(oldArtistRecord);
|
||||
artistContext.SaveChanges();
|
||||
}
|
||||
|
||||
if (!artistStore.DoesArtistExist(newSongRecord))
|
||||
if (!(artistContext.Artists.FirstOrDefault(art => art.Name.Equals(oldSongRecord.AlbumTitle)) != null))
|
||||
{
|
||||
_logger.Info("Creating new artist record");
|
||||
|
||||
@@ -525,24 +540,26 @@ namespace Icarus.Controllers.Managers
|
||||
Name = newArtistName
|
||||
};
|
||||
|
||||
artistStore.SaveArtist(newArtistRecord);
|
||||
artistContext.Add(newArtistRecord);
|
||||
|
||||
return artistStore.GetArtist(newSongRecord, true);
|
||||
return artistContext.Artists.FirstOrDefault(art => art.Name.Equals(newSongRecord.AlbumTitle));
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Info("Updating existing artist record");
|
||||
|
||||
var existingArtistRecord = artistStore.GetArtist(newSongRecord);
|
||||
var existingArtistRecord = artistContext.Artists.FirstOrDefault(art => art.Name.Equals(newSongRecord.AlbumTitle));
|
||||
|
||||
artistStore.UpdateArtist(existingArtistRecord);
|
||||
artistContext.Update(existingArtistRecord);
|
||||
artistContext.SaveChanges();
|
||||
|
||||
return existingArtistRecord;
|
||||
}
|
||||
}
|
||||
private Genre UpdateGenreInDatabase(Song oldSongRecord, Song newSongRecord)//, GenreRepository genreStore)
|
||||
{
|
||||
var oldGenreRecord = genreStore.GetGenre(oldSongRecord, true);
|
||||
var genreContext = new GenreContext(_connectionString);
|
||||
var oldGenreRecord = genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(oldSongRecord.Genre));
|
||||
var oldGenreName = oldGenreRecord.GenreName;
|
||||
var newGenreName = newSongRecord.Genre;
|
||||
|
||||
@@ -558,10 +575,11 @@ namespace Icarus.Controllers.Managers
|
||||
{
|
||||
_logger.Info("Deleting genre record");
|
||||
|
||||
genreStore.DeleteGenre(oldGenreRecord);
|
||||
genreContext.Remove(oldGenreRecord);
|
||||
genreContext.SaveChanges();
|
||||
}
|
||||
|
||||
if (!genreStore.DoesGenreExist(newSongRecord))
|
||||
if (!(genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(oldSongRecord.Genre)) != null))
|
||||
{
|
||||
_logger.Info("Creating new genre record");
|
||||
|
||||
@@ -570,18 +588,19 @@ namespace Icarus.Controllers.Managers
|
||||
GenreName = newGenreName
|
||||
};
|
||||
|
||||
genreStore.SaveGenre(newGenreRecord);
|
||||
genreContext.Add(newGenreRecord);
|
||||
|
||||
return genreStore.GetGenre(newSongRecord, true);
|
||||
return genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(newGenreRecord.GenreName));
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Info("Updating existing genre record");
|
||||
|
||||
var existingGenreRecord = genreStore.GetGenre(newSongRecord);
|
||||
var existingGenreRecord = genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(oldGenreRecord.GenreName));
|
||||
|
||||
genreStore.UpdateGenre(existingGenreRecord);
|
||||
return genreStore.GetGenre(existingGenreRecord);
|
||||
genreContext.Update(existingGenreRecord);
|
||||
genreContext.SaveChanges();
|
||||
return genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(existingGenreRecord.GenreName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -598,14 +617,15 @@ namespace Icarus.Controllers.Managers
|
||||
Year = oldSongRecord.Year,
|
||||
Filename = oldSongRecord.Filename,
|
||||
SongPath = oldSongRecord.SongPath,
|
||||
ArtistId = oldSongRecord.ArtistId,
|
||||
AlbumId = oldSongRecord.AlbumId,
|
||||
GenreId = oldSongRecord.GenreId,
|
||||
YearId = oldSongRecord.YearId
|
||||
ArtistID = oldSongRecord.ArtistID,
|
||||
AlbumID = oldSongRecord.AlbumID,
|
||||
GenreID = oldSongRecord.GenreID
|
||||
|
||||
};
|
||||
var artistOrAlbumChanged = false;
|
||||
|
||||
var songContext = new SongContext(_connectionString);
|
||||
|
||||
if (!SongRecordChanged(oldSongRecord, newSongRecord))
|
||||
{
|
||||
_logger.Info("No change to the song record");
|
||||
@@ -674,10 +694,13 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
_logger.Info("Saving song metadata to the database");
|
||||
|
||||
if (songStore.DoesSongExist(newSongRecord))
|
||||
songStore.UpdateSong(updatedSongRecord);
|
||||
if (songContext.Songs.FirstOrDefault(sng => sng.Title.Equals(updatedSongRecord.Title)) != null)
|
||||
{
|
||||
songContext.Update(updatedSongRecord);
|
||||
songContext.SaveChanges();
|
||||
}
|
||||
else
|
||||
songStore.SaveSong(updatedSongRecord);
|
||||
songContext.Add(updatedSongRecord);
|
||||
|
||||
newSongRecord = updatedSongRecord;
|
||||
|
||||
@@ -700,42 +723,57 @@ namespace Icarus.Controllers.Managers
|
||||
}
|
||||
private void DeleteAlbumFromDatabase(Song song)// AlbumRepository albumStore)
|
||||
{
|
||||
if (!albumStore.DoesAlbumExist(song))
|
||||
var albumContext = new AlbumContext(_connectionString);
|
||||
|
||||
if (!(albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(song.AlbumTitle)) != null))
|
||||
{
|
||||
_logger.Info("Cannot delete the album record because it does not exist");
|
||||
return;
|
||||
}
|
||||
|
||||
var album = albumStore.GetAlbum(song, true);
|
||||
var album = albumContext.Albums.FirstOrDefault(alb => alb.Title.Equals(song.AlbumTitle));
|
||||
|
||||
if (album.SongCount <= 1)
|
||||
albumStore.DeleteAlbum(album);
|
||||
{
|
||||
albumContext.Remove(album);
|
||||
albumContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
private void DeleteArtistFromDatabase(Song song)//, ArtistRepository artistStore)
|
||||
{
|
||||
if (!artistStore.DoesArtistExist(song))
|
||||
var artistContext = new ArtistContext(_connectionString);
|
||||
|
||||
if (!(artistContext.Artists.FirstOrDefault(art => art.Name.Equals(song.Artist)) != null))
|
||||
{
|
||||
_logger.Info("Cannot delete the artist record because it does not exist");
|
||||
return;
|
||||
}
|
||||
|
||||
var artist = artistStore.GetArtist(song, true);
|
||||
var artist = artistContext.Artists.FirstOrDefault(art => art.Name.Equals(song.Artist));
|
||||
|
||||
if (artist.SongCount <= 1)
|
||||
artistStore.DeleteArtist(artist);
|
||||
{
|
||||
artistContext.Remove(artist);
|
||||
artistContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
private void DeleteGenreFromDatabase(Song song)//, GenreRepository genreStore)
|
||||
{
|
||||
if (!genreStore.DoesGenreExist(song))
|
||||
var genreContext = new GenreContext(_connectionString);
|
||||
|
||||
if (!(genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(song.Genre)) != null))
|
||||
{
|
||||
_logger.Info("Cannot delete the genre record because it does not exist");
|
||||
return;
|
||||
}
|
||||
|
||||
var genre = genreStore.GetGenre(song, true);
|
||||
var genre = genreContext.Genres.FirstOrDefault(gnr => gnr.GenreName.Equals(song.Genre));
|
||||
|
||||
if (genre.SongCount <= 1)
|
||||
genreStore.DeleteGenre(genre);
|
||||
{
|
||||
genreContext.Remove(genre);
|
||||
genreContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ namespace Icarus.Controllers.Managers
|
||||
public class TokenManager : BaseManager
|
||||
{
|
||||
#region Fields
|
||||
private IConfiguration _config;
|
||||
private string _clientId;
|
||||
private string _clientSecret;
|
||||
private string _audience;
|
||||
@@ -64,7 +63,7 @@ namespace Icarus.Controllers.Managers
|
||||
|
||||
return new LoginResult
|
||||
{
|
||||
UserId = user.Id, Username = user.Username, Token = tokenResult.AccessToken,
|
||||
UserID = user.UserID, Username = user.Username, Token = tokenResult.AccessToken,
|
||||
TokenType = tokenResult.TokenType, Expiration = tokenResult.Expiration,
|
||||
Message = "Successfully retrieved token"
|
||||
};
|
||||
|
||||
@@ -46,17 +46,16 @@ namespace Icarus.Controllers.Utilities
|
||||
public static void PrintMetadata(Song song)
|
||||
{
|
||||
Console.WriteLine("\n\nMetadata of the song:");
|
||||
Console.WriteLine($"Id: {song.Id}");
|
||||
Console.WriteLine($"ID: {song.SongID}");
|
||||
Console.WriteLine($"Title: {song.Title}");
|
||||
Console.WriteLine($"Artist: {song.Artist}");
|
||||
Console.WriteLine($"Album: {song.AlbumTitle}");
|
||||
Console.WriteLine($"Genre: {song.Genre}");
|
||||
Console.WriteLine($"Year: {song.Year}");
|
||||
Console.WriteLine($"Duration: {song.Duration}");
|
||||
Console.WriteLine($"AlbumId: {song.AlbumId}");
|
||||
Console.WriteLine($"ArtistId: {song.ArtistId}");
|
||||
Console.WriteLine($"GenreId: {song.GenreId}");
|
||||
Console.WriteLine($"YearId: {song.YearId}");
|
||||
Console.WriteLine($"AlbumID: {song.AlbumID}");
|
||||
Console.WriteLine($"ArtistID: {song.ArtistID}");
|
||||
Console.WriteLine($"GenreID: {song.GenreID}");
|
||||
Console.WriteLine($"Song Path: {song.SongPath}");
|
||||
Console.WriteLine($"Filename: {song.Filename}");
|
||||
Console.WriteLine("\n");
|
||||
@@ -237,7 +236,7 @@ namespace Icarus.Controllers.Utilities
|
||||
{
|
||||
_updatedSong = new Song
|
||||
{
|
||||
Id = song.Id,
|
||||
SongID = song.SongID,
|
||||
Title = song.Title,
|
||||
AlbumTitle = song.AlbumTitle,
|
||||
Artist = song.Artist,
|
||||
@@ -271,7 +270,7 @@ namespace Icarus.Controllers.Utilities
|
||||
Console.WriteLine($"\n\n{message}");
|
||||
Console.WriteLine($"Title: {song.Title}");
|
||||
Console.WriteLine($"Artist: {song.Artist}");
|
||||
Console.WriteLine($"Album: {song.Album}");
|
||||
Console.WriteLine($"Album: {song.AlbumTitle}");
|
||||
Console.WriteLine($"Genre: {song.Genre}");
|
||||
Console.WriteLine($"Year: {song.Year}");
|
||||
Console.WriteLine($"Duration: {song.Duration}\n\n");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@@ -19,6 +20,8 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
#region Fields
|
||||
private readonly ILogger<AlbumController> _logger;
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -27,9 +30,11 @@ namespace Icarus.Controllers.V1
|
||||
|
||||
|
||||
#region Constructors
|
||||
public AlbumController(ILogger<AlbumController> logger)
|
||||
public AlbumController(ILogger<AlbumController> logger, IConfiguration config)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -41,10 +46,9 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
List<Album> albums = new List<Album>();
|
||||
|
||||
AlbumRepository albumStoreContext = HttpContext.RequestServices
|
||||
.GetService(typeof(AlbumRepository)) as AlbumRepository;
|
||||
var albumContext = new AlbumContext(_connectionString);
|
||||
|
||||
albums = albumStoreContext.GetAlbums();
|
||||
albums = albumContext.Albums.ToList();
|
||||
|
||||
if (albums.Count > 0)
|
||||
return Ok(albums);
|
||||
@@ -58,15 +62,14 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
Album album = new Album
|
||||
{
|
||||
AlbumId = id
|
||||
AlbumID = id
|
||||
};
|
||||
|
||||
AlbumRepository albumStoreContext = HttpContext.RequestServices
|
||||
.GetService(typeof(AlbumRepository)) as AlbumRepository;
|
||||
var albumContext = new AlbumContext(_connectionString);
|
||||
|
||||
if (albumStoreContext.DoesAlbumExist(album))
|
||||
if (albumContext.DoesRecordExist(album))
|
||||
{
|
||||
album = albumStoreContext.GetAlbum(album);
|
||||
album = albumContext.RetrieveRecord(album);
|
||||
|
||||
return Ok(album);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using Icarus.Models;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Database.Contexts;
|
||||
|
||||
namespace Icarus.Controllers.V1
|
||||
{
|
||||
@@ -19,6 +19,8 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
#region Fields
|
||||
private readonly ILogger<ArtistController> _logger;
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -27,9 +29,11 @@ namespace Icarus.Controllers.V1
|
||||
|
||||
|
||||
#region Constructors
|
||||
public ArtistController(ILogger<ArtistController> logger)
|
||||
public ArtistController(ILogger<ArtistController> logger, IConfiguration config)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -39,10 +43,9 @@ namespace Icarus.Controllers.V1
|
||||
[Authorize("read:artists")]
|
||||
public IActionResult Get()
|
||||
{
|
||||
ArtistRepository artistStoreContext = HttpContext.RequestServices
|
||||
.GetService(typeof(ArtistRepository)) as ArtistRepository;
|
||||
var artistContext = new ArtistContext(_connectionString);
|
||||
|
||||
var artists = artistStoreContext.GetArtists();
|
||||
var artists = artistContext.Artists.ToList();
|
||||
|
||||
if (artists.Count > 0)
|
||||
return Ok(artists);
|
||||
@@ -56,15 +59,14 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
Artist artist = new Artist
|
||||
{
|
||||
ArtistId = id
|
||||
ArtistID = id
|
||||
};
|
||||
|
||||
ArtistRepository artistStoreContext = HttpContext.RequestServices
|
||||
.GetService(typeof(ArtistRepository)) as ArtistRepository;
|
||||
var artistContext = new ArtistContext(_connectionString);
|
||||
|
||||
if (artistStoreContext.DoesArtistExist(artist))
|
||||
if (artistContext.DoesRecordExist(artist))
|
||||
{
|
||||
artist = artistStoreContext.GetArtist(artist);
|
||||
artist = artistContext.RetrieveRecord(artist);
|
||||
|
||||
return Ok(artist);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -9,7 +10,7 @@ using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using Icarus.Controllers.Managers;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Database.Contexts;
|
||||
using Icarus.Models;
|
||||
|
||||
namespace Icarus.Controllers.V1
|
||||
@@ -20,26 +21,27 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
#region Fields
|
||||
private readonly ILogger<CoverArtController> _logger;
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
#endregion
|
||||
|
||||
|
||||
#region Constructors
|
||||
public CoverArtController(ILogger<CoverArtController> logger)
|
||||
public CoverArtController(ILogger<CoverArtController> logger, IConfiguration config)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region HTTP Routes
|
||||
public async Task<IActionResult> Get()
|
||||
public IActionResult Get()
|
||||
{
|
||||
var coverArtRepository = HttpContext
|
||||
.RequestServices
|
||||
.GetService(
|
||||
typeof(CoverArtRepository)) as CoverArtRepository;
|
||||
var coverArtContext = new CoverArtContext(_connectionString);
|
||||
|
||||
var coverArtRecords = coverArtRepository.GetCoverArtRecords();
|
||||
var coverArtRecords = coverArtContext.CoverArtImages.ToList();
|
||||
|
||||
if (coverArtRecords == null)
|
||||
{
|
||||
@@ -51,26 +53,22 @@ namespace Icarus.Controllers.V1
|
||||
_logger.LogInformation("Found cover art records");
|
||||
return Ok(coverArtRecords);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
[Authorize("download:cover_art")]
|
||||
public async Task<IActionResult> Get(int id)
|
||||
{
|
||||
var coverArt = new CoverArt { CoverArtId = id };
|
||||
var coverArt = new CoverArt { CoverArtID = id };
|
||||
|
||||
var coverArtRepository = HttpContext
|
||||
.RequestServices
|
||||
.GetService(
|
||||
typeof(CoverArtRepository)) as CoverArtRepository;
|
||||
var coverArtContext = new CoverArtContext(_connectionString);
|
||||
|
||||
coverArt = coverArtRepository.GetCoverArt(coverArt);
|
||||
coverArt = coverArtContext.RetrieveRecord(coverArt);
|
||||
|
||||
if (coverArt != null)
|
||||
{
|
||||
_logger.LogInformation("Found cover art record");
|
||||
var coverArtBytes = System.IO.File.ReadAllBytes(
|
||||
var coverArtBytes = await System.IO.File.ReadAllBytesAsync(
|
||||
coverArt.ImagePath);
|
||||
|
||||
return File(coverArtBytes, "application/x-msdownload",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@@ -7,7 +8,7 @@ using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using Icarus.Models;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Database.Contexts;
|
||||
|
||||
namespace Icarus.Controllers.V1
|
||||
{
|
||||
@@ -17,6 +18,8 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
#region Fields
|
||||
private readonly ILogger<GenreController> _logger;
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -25,9 +28,11 @@ namespace Icarus.Controllers.V1
|
||||
|
||||
|
||||
#region Constructors
|
||||
public GenreController(ILogger<GenreController> logger)
|
||||
public GenreController(ILogger<GenreController> logger, IConfiguration config)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -39,10 +44,9 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
var genres = new List<Genre>();
|
||||
|
||||
var genreStore = HttpContext.RequestServices
|
||||
.GetService(typeof(GenreRepository)) as GenreRepository;
|
||||
var genreStore = new GenreContext(_connectionString);
|
||||
|
||||
genres = genreStore.GetGenres();
|
||||
genres = genreStore.Genres.ToList();
|
||||
|
||||
if (genres.Count > 0)
|
||||
return Ok(genres);
|
||||
@@ -56,15 +60,14 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
var genre = new Genre
|
||||
{
|
||||
GenreId = id
|
||||
GenreID = id
|
||||
};
|
||||
|
||||
var genreStore = HttpContext.RequestServices
|
||||
.GetService(typeof(GenreRepository)) as GenreRepository;
|
||||
var genreStore = new GenreContext(_connectionString);
|
||||
|
||||
if (genreStore.DoesGenreExist(genre))
|
||||
if (genreStore.DoesRecordExist(genre))
|
||||
{
|
||||
genre = genreStore.GetGenre(genre);
|
||||
genre = genreStore.RetrieveRecord(genre);
|
||||
|
||||
return Ok(genre);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ using Microsoft.Extensions.Logging;
|
||||
using Icarus.Controllers.Managers;
|
||||
using Icarus.Controllers.Utilities;
|
||||
using Icarus.Models;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Database.Contexts;
|
||||
|
||||
namespace Icarus.Controllers.V1
|
||||
{
|
||||
@@ -20,6 +20,7 @@ namespace Icarus.Controllers.V1
|
||||
public class LoginController : ControllerBase
|
||||
{
|
||||
#region Fields
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
private ILogger<LoginController> _logger;
|
||||
#endregion
|
||||
@@ -32,8 +33,9 @@ namespace Icarus.Controllers.V1
|
||||
#region Contructors
|
||||
public LoginController(IConfiguration config, ILogger<LoginController> logger)
|
||||
{
|
||||
_config = config;
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -41,8 +43,7 @@ namespace Icarus.Controllers.V1
|
||||
#region HTTP endpoints
|
||||
public IActionResult Post([FromBody] User user)
|
||||
{
|
||||
UserRepository context = HttpContext.RequestServices
|
||||
.GetService(typeof(UserRepository)) as UserRepository;
|
||||
var context = new UserContext(_connectionString);
|
||||
|
||||
_logger.LogInformation("Starting process of validating credentials");
|
||||
|
||||
@@ -54,9 +55,9 @@ namespace Icarus.Controllers.V1
|
||||
Username = user.Username
|
||||
};
|
||||
|
||||
if (context.DoesUserExist(user))
|
||||
if (context.Users.FirstOrDefault(usr => usr.Username.Equals(user.Username)) != null)
|
||||
{
|
||||
user = context.RetrieveUser(user);
|
||||
user = context.Users.FirstOrDefault(usr => usr.Username.Equals(user.Username));
|
||||
|
||||
var validatePass = new PasswordEncryption();
|
||||
var validated = validatePass.VerifyPassword(user, password);
|
||||
|
||||
@@ -19,6 +19,7 @@ namespace Icarus.Controllers.V1
|
||||
public class RegisterController : ControllerBase
|
||||
{
|
||||
#region Fields
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
#endregion
|
||||
|
||||
@@ -31,6 +32,7 @@ namespace Icarus.Controllers.V1
|
||||
public RegisterController(IConfiguration config)
|
||||
{
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -40,11 +42,14 @@ namespace Icarus.Controllers.V1
|
||||
PasswordEncryption pe = new PasswordEncryption();
|
||||
user.Password = pe.HashPassword(user);
|
||||
user.EmailVerified = false;
|
||||
user.Status = "Registered";
|
||||
user.DateCreated = DateTime.Now;
|
||||
|
||||
var context = new UserContext(_config.GetConnectionString("DefaultConnection"));
|
||||
UserContext context = null;
|
||||
|
||||
try
|
||||
{
|
||||
context = new UserContext(_config.GetConnectionString("DefaultConnection"));
|
||||
context.Add(user);
|
||||
context.SaveChanges();
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ using Microsoft.Extensions.Configuration;
|
||||
using Icarus.Controllers.Managers;
|
||||
using Icarus.Controllers.Utilities;
|
||||
using Icarus.Models;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Database.Contexts;
|
||||
|
||||
namespace Icarus.Controllers.V1
|
||||
{
|
||||
@@ -22,6 +22,7 @@ namespace Icarus.Controllers.V1
|
||||
public class SongCompressedDataController : ControllerBase
|
||||
{
|
||||
#region Fields
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
private string _songTempDir;
|
||||
private string _archiveDir;
|
||||
@@ -35,9 +36,10 @@ namespace Icarus.Controllers.V1
|
||||
#region Constructor
|
||||
public SongCompressedDataController(IConfiguration config)
|
||||
{
|
||||
_config = config;
|
||||
_songTempDir = _config.GetValue<string>("TemporaryMusicPath");
|
||||
_archiveDir = _config.GetValue<string>("ArchivePath");
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -47,15 +49,14 @@ namespace Icarus.Controllers.V1
|
||||
[Authorize("download:songs")]
|
||||
public async Task<IActionResult> Get(int id)
|
||||
{
|
||||
SongRepository context = HttpContext.RequestServices
|
||||
.GetService(typeof(SongRepository)) as SongRepository;
|
||||
var context = new SongContext(_connectionString);
|
||||
|
||||
SongCompression cmp = new SongCompression(_archiveDir);
|
||||
|
||||
Console.WriteLine($"Archive directory root: {_archiveDir}");
|
||||
|
||||
Console.WriteLine("Starting process of retrieving comrpessed song");
|
||||
SongData song = await cmp.RetrieveCompressedSong(context.GetSong(id));
|
||||
SongData song = await cmp.RetrieveCompressedSong(context.RetrieveRecord(new Song{ SongID = id }));
|
||||
|
||||
return File(song.Data, "application/x-msdownload", cmp.CompressedSongFilename);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ using Microsoft.Extensions.Logging;
|
||||
using Icarus.Controllers.Managers;
|
||||
using Icarus.Controllers.Utilities;
|
||||
using Icarus.Models;
|
||||
using Icarus.Database.Repositories;
|
||||
using Icarus.Database.Contexts;
|
||||
|
||||
namespace Icarus.Controllers.V1
|
||||
{
|
||||
@@ -22,6 +22,7 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
#region Fields
|
||||
private readonly ILogger<SongController> _logger;
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
private SongManager _songMgr;
|
||||
#endregion
|
||||
@@ -35,6 +36,7 @@ namespace Icarus.Controllers.V1
|
||||
public SongController(IConfiguration config, ILogger<SongController> logger)
|
||||
{
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
_logger = logger;
|
||||
_songMgr = new SongManager(config);
|
||||
}
|
||||
@@ -49,10 +51,9 @@ namespace Icarus.Controllers.V1
|
||||
Console.WriteLine("Attemtping to retrieve songs");
|
||||
_logger.LogInformation("Attempting to retrieve songs");
|
||||
|
||||
SongRepository context = HttpContext.RequestServices
|
||||
.GetService(typeof(SongRepository)) as SongRepository;
|
||||
var context = new SongContext(_connectionString);
|
||||
|
||||
songs = context.GetAllSongs();
|
||||
songs = context.Songs.ToList();
|
||||
|
||||
if (songs.Count > 0)
|
||||
return Ok(songs);
|
||||
@@ -64,15 +65,14 @@ namespace Icarus.Controllers.V1
|
||||
[Authorize("read:song_details")]
|
||||
public IActionResult Get(int id)
|
||||
{
|
||||
SongRepository context = HttpContext.RequestServices
|
||||
.GetService(typeof(SongRepository)) as SongRepository;
|
||||
var context = new SongContext(_connectionString);
|
||||
|
||||
Song song = new Song { Id = id };
|
||||
song = context.GetSong(song);
|
||||
Song song = new Song { SongID = id };
|
||||
song = context.RetrieveRecord(song);
|
||||
|
||||
Console.WriteLine("Here");
|
||||
|
||||
if (song.Id != 0)
|
||||
if (song.SongID != 0)
|
||||
return Ok(song);
|
||||
else
|
||||
return NotFound();
|
||||
@@ -82,33 +82,19 @@ namespace Icarus.Controllers.V1
|
||||
[HttpPut("{id}")]
|
||||
public IActionResult Put(int id, [FromBody] Song song)
|
||||
{
|
||||
SongRepository context = HttpContext.RequestServices
|
||||
.GetService(typeof(SongRepository)) as SongRepository;
|
||||
var context = new SongContext(_connectionString);
|
||||
|
||||
ArtistRepository artistStore = HttpContext.RequestServices
|
||||
.GetService(typeof(ArtistRepository)) as ArtistRepository;
|
||||
|
||||
AlbumRepository albumStore = HttpContext.RequestServices
|
||||
.GetService(typeof(AlbumRepository)) as AlbumRepository;
|
||||
|
||||
GenreRepository genreStore = HttpContext.RequestServices
|
||||
.GetService(typeof(GenreRepository)) as GenreRepository;
|
||||
|
||||
YearRepository yearStore = HttpContext.RequestServices
|
||||
.GetService(typeof(YearRepository)) as YearRepository;
|
||||
|
||||
song.Id = id;
|
||||
song.SongID = id;
|
||||
Console.WriteLine("Retrieving filepath of song");
|
||||
_logger.LogInformation("Retrieving filepath of song");
|
||||
|
||||
if (!context.DoesSongExist(song))
|
||||
if (!context.DoesRecordExist(song))
|
||||
return NotFound(new SongResult
|
||||
{
|
||||
Message = "Song does not exist"
|
||||
});
|
||||
|
||||
var songRes = _songMgr.UpdateSong(song, context, albumStore, artistStore, genreStore,
|
||||
yearStore);
|
||||
var songRes = _songMgr.UpdateSong(song);
|
||||
|
||||
return Ok(songRes);
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace Icarus.Controllers.V1
|
||||
public class SongDataController : ControllerBase
|
||||
{
|
||||
#region Fields
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
private ILogger<SongDataController> _logger;
|
||||
private SongManager _songMgr;
|
||||
@@ -37,6 +38,7 @@ namespace Icarus.Controllers.V1
|
||||
public SongDataController(IConfiguration config, ILogger<SongDataController> logger)
|
||||
{
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
_logger = logger;
|
||||
_songTempDir = _config.GetValue<string>("TemporaryMusicPath");
|
||||
_songMgr = new SongManager(config, _songTempDir);
|
||||
@@ -50,7 +52,8 @@ namespace Icarus.Controllers.V1
|
||||
[Authorize("download:songs")]
|
||||
public async Task<IActionResult> Get(int id)
|
||||
{
|
||||
var songMetaData = _songRepository.GetSong(id);
|
||||
var songContext = new SongContext(_connectionString);
|
||||
var songMetaData = songContext.RetrieveRecord(new Song { SongID = id});
|
||||
|
||||
SongData song = await _songMgr.RetrieveSong(songMetaData);
|
||||
|
||||
@@ -69,14 +72,13 @@ namespace Icarus.Controllers.V1
|
||||
var uploads = _songTempDir;
|
||||
Console.WriteLine($"Song Root Path {uploads}");
|
||||
_logger.LogInformation($"Song root path {uploads}");
|
||||
|
||||
foreach (var sng in songData)
|
||||
if (sng.Length > 0) {
|
||||
Console.WriteLine($"Song filename {sng.FileName}");
|
||||
_logger.LogInformation($"Song filename {sng.FileName}");
|
||||
|
||||
await _songMgr.SaveSongToFileSystem(sng, _songRepository,
|
||||
_albumRepository, _artistRepository,
|
||||
_genreRepository, _yearRepository, _coverArtRepository);
|
||||
await _songMgr.SaveSongToFileSystem(sng);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -90,9 +92,12 @@ namespace Icarus.Controllers.V1
|
||||
[Authorize("delete:songs")]
|
||||
public IActionResult Delete(int id)
|
||||
{
|
||||
var songContext = new SongContext(_connectionString);
|
||||
|
||||
var songMetaData = new Song{ SongID = id };
|
||||
Console.WriteLine($"Id {songMetaData.SongID}");
|
||||
songMetaData = _songRepository.GetSong(songMetaData);
|
||||
|
||||
songMetaData = songContext.RetrieveRecord(songMetaData);
|
||||
|
||||
if (string.IsNullOrEmpty(songMetaData.Title))
|
||||
{
|
||||
@@ -103,10 +108,7 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
_logger.LogInformation("Starting process of deleting song from the filesystem and database");
|
||||
|
||||
_songMgr.DeleteSong(songMetaData, _songRepository,
|
||||
_albumRepository, _artistRepository,
|
||||
_genreRepository, _yearRepository,
|
||||
_coverArtRepository);
|
||||
_songMgr.DeleteSong(songMetaData);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
#region Fields
|
||||
private ILogger<SongStreamController> _logger;
|
||||
private string _connectionString;
|
||||
private IConfiguration _config;
|
||||
#endregion
|
||||
|
||||
@@ -36,6 +37,7 @@ namespace Icarus.Controllers.V1
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_connectionString = _config.GetConnectionString("DefaultConnection");
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -56,7 +58,11 @@ namespace Icarus.Controllers.V1
|
||||
_logger.LogInformation("Starting to stream song...>");
|
||||
Console.WriteLine("Starting to streamsong...");
|
||||
|
||||
return File(stream, "application/octet-stream", filename);
|
||||
var file = await Task.Run(() => {
|
||||
return File(stream, "application/octet-stream", filename);
|
||||
});
|
||||
|
||||
return file;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user