This commit is contained in:
Steven Hildreth 2018-12-29 22:34:32 -06:00
parent 70d754aa5f
commit 4860d9a185
2 changed files with 26 additions and 4 deletions

View file

@ -412,6 +412,20 @@ namespace Roadie.Api.Services
.Distinct()
.ToArray();
}
int[] genreArtistIds = new int[0];
var isFilteredToGenre = false;
if(!string.IsNullOrEmpty(request.Filter) && request.Filter.StartsWith(":genre", StringComparison.OrdinalIgnoreCase))
{
var genreFilter = request.Filter.Replace(":genre ", "");
genreArtistIds = (from ag in this.DbContext.ArtistGenres
join g in this.DbContext.Genres on ag.GenreId equals g.Id
where g.Name.Contains(genreFilter)
select ag.ArtistId)
.Distinct()
.ToArray();
isFilteredToGenre = true;
request.Filter = null;
}
var onlyWithReleases = onlyIncludeWithReleases ?? true;
var result = (from a in this.DbContext.Artists
where (!onlyWithReleases || a.ReleaseCount > 0)
@ -420,6 +434,7 @@ namespace Roadie.Api.Services
where (request.FilterValue == "" || (a.Name.Contains(request.FilterValue) || a.SortName.Contains(request.FilterValue) || a.AlternateNames.Contains(request.FilterValue)))
where (!request.FilterFavoriteOnly || favoriteArtistIds.Contains(a.Id))
where (request.FilterToLabelId == null || labelArtistIds.Contains(a.Id))
where (!isFilteredToGenre || genreArtistIds.Contains(a.Id))
select new ArtistList
{
DatabaseId = a.Id,

View file

@ -181,12 +181,18 @@ namespace Roadie.Api.Services
).ToArray();
}
int[] genreReleaseIds = new int[0];
if (!string.IsNullOrEmpty(request.FilterByGenre))
var isFilteredToGenre = false;
if (!string.IsNullOrEmpty(request.FilterByGenre) || (!string.IsNullOrEmpty(request.Filter) && request.Filter.StartsWith(":genre", StringComparison.OrdinalIgnoreCase)))
{
var genreFilter = request.FilterByGenre ?? (request.Filter ?? string.Empty).Replace(":genre ", "", StringComparison.OrdinalIgnoreCase);
genreReleaseIds = (from rg in this.DbContext.ReleaseGenres
join g in this.DbContext.Genres on rg.GenreId equals g.Id
where g.Name == request.FilterByGenre
select rg.ReleaseId).ToArray();
where g.Name.Contains(genreFilter)
select rg.ReleaseId)
.Distinct()
.ToArray();
request.Filter = null;
isFilteredToGenre = true;
}
if (request.FilterFromYear.HasValue || request.FilterToYear.HasValue)
{
@ -213,7 +219,7 @@ namespace Roadie.Api.Services
where (request.FilterToArtistId == null || r.Artist.RoadieId == request.FilterToArtistId)
where (request.FilterToCollectionId == null || collectionReleaseIds.Contains(r.Id))
where (!request.FilterFavoriteOnly || favoriteReleaseIds.Contains(r.Id))
where (request.FilterByGenre == null || genreReleaseIds.Contains(r.Id))
where (!isFilteredToGenre || genreReleaseIds.Contains(r.Id))
where (request.FilterFromYear == null || r.ReleaseDate != null && r.ReleaseDate.Value.Year <= request.FilterFromYear)
where (request.FilterToYear == null || r.ReleaseDate != null && r.ReleaseDate.Value.Year >= request.FilterToYear)
where (request.FilterValue == "" || (r.Title.Contains(request.FilterValue) || r.AlternateNames.Contains(request.FilterValue)))
@ -879,6 +885,7 @@ namespace Roadie.Api.Services
Text = track.Title,
Value = track.RoadieId.ToString()
};
t.MediaNumber = rm.MediaNumber;
t.CssClass = string.IsNullOrEmpty(track.Hash) ? "Missing" : "Ok";
t.TrackArtist = track.TrackArtist != null ? ArtistList.FromDataArtist(track.TrackArtist, this.MakeArtistThumbnailImage(track.TrackArtist.RoadieId)) : null;
t.TrackPlayUrl = $"{ this.HttpContext.BaseUrl }/play/track/{ t.Id}.mp3";