diff --git a/WatchIt.Common/WatchIt.Common.Model/Genres/GenreQueryParameters.cs b/WatchIt.Common/WatchIt.Common.Model/Genres/GenreQueryParameters.cs index f5efe40..9b2658c 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Genres/GenreQueryParameters.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Genres/GenreQueryParameters.cs @@ -21,9 +21,9 @@ public class GenreQueryParameters : QueryParameters public override bool IsMeetingConditions(GenreResponse item) => ( - TestString(item.Name, Name) + TestStringWithRegex(item.Name, Name) && - TestString(item.Description, Description) + TestStringWithRegex(item.Description, Description) ); #endregion diff --git a/WatchIt.Common/WatchIt.Common.Model/Genres/GenreResponse.cs b/WatchIt.Common/WatchIt.Common.Model/Genres/GenreResponse.cs index 357d0d0..022fa80 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Genres/GenreResponse.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Genres/GenreResponse.cs @@ -1,12 +1,22 @@ using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; +using WatchIt.Common.Query; namespace WatchIt.Common.Model.Genres; -public class GenreResponse : Genre +public class GenreResponse : Genre, IQueryOrderable { #region PROPERTIES + [JsonIgnore] + public static IDictionary> OrderableProperties { get; } = new Dictionary> + { + { "id", x => x.Id }, + { "name", x => x.Name }, + { "description", x => x.Description } + }; + + [JsonPropertyName("id")] public long Id { get; set; } diff --git a/WatchIt.Common/WatchIt.Common.Model/Media/MediaQueryParameters.cs b/WatchIt.Common/WatchIt.Common.Model/Media/MediaQueryParameters.cs new file mode 100644 index 0000000..db968ba --- /dev/null +++ b/WatchIt.Common/WatchIt.Common.Model/Media/MediaQueryParameters.cs @@ -0,0 +1,84 @@ +using Microsoft.AspNetCore.Mvc; +using WatchIt.Common.Query; + +namespace WatchIt.Common.Model.Media; + +public class MediaQueryParameters : QueryParameters +{ + #region PROPERTIES + + [FromQuery(Name = "type")] + public MediaType? Type { get; set; } + + [FromQuery(Name = "title")] + public string? Title { get; set; } + + [FromQuery(Name = "original_title")] + public string? OriginalTitle { get; set; } + + [FromQuery(Name = "description")] + public string? Description { get; set; } + + [FromQuery(Name = "release_date")] + public DateOnly? ReleaseDate { get; set; } + + [FromQuery(Name = "release_date_from")] + public DateOnly? ReleaseDateFrom { get; set; } + + [FromQuery(Name = "release_date_to")] + public DateOnly? ReleaseDateTo { get; set; } + + [FromQuery(Name = "length")] + public short? Length { get; set; } + + [FromQuery(Name = "length_from")] + public short? LengthFrom { get; set; } + + [FromQuery(Name = "length_to")] + public short? LengthTo { get; set; } + + [FromQuery(Name = "rating_average")] + public double? RatingAverage { get; set; } + + [FromQuery(Name = "rating_average_from")] + public double? RatingAverageFrom { get; set; } + + [FromQuery(Name = "rating_average_to")] + public double? RatingAverageTo { get; set; } + + [FromQuery(Name = "rating_count")] + public double? RatingCount { get; set; } + + [FromQuery(Name = "rating_count_from")] + public double? RatingCountFrom { get; set; } + + [FromQuery(Name = "rating_count_to")] + public double? RatingCountTo { get; set; } + + #endregion + + + + #region PUBLIC METHODS + + public override bool IsMeetingConditions(MediaResponse item) => + ( + Test(item.Type, Type) + && + TestStringWithRegex(item.Title, Title) + && + TestStringWithRegex(item.OriginalTitle, OriginalTitle) + && + TestStringWithRegex(item.Description, Description) + && + TestComparable(item.ReleaseDate, ReleaseDate, ReleaseDateFrom, ReleaseDateTo) + && + TestComparable(item.Length, Length, LengthFrom, LengthTo) + && + TestComparable(item.Rating.Average, RatingAverage, RatingAverageFrom, RatingAverageTo) + && + TestComparable(item.Rating.Count, RatingCount, RatingCountFrom, RatingCountTo) + ); + + #endregion +} \ No newline at end of file diff --git a/WatchIt.Common/WatchIt.Common.Model/Media/MediaResponse.cs b/WatchIt.Common/WatchIt.Common.Model/Media/MediaResponse.cs index 325cfb9..4ee0ba9 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Media/MediaResponse.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Media/MediaResponse.cs @@ -1,17 +1,36 @@ using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; +using WatchIt.Common.Model.Rating; +using WatchIt.Common.Query; namespace WatchIt.Common.Model.Media; -public class MediaResponse : Media +public class MediaResponse : Media, IQueryOrderable { #region PROPERTIES + [JsonIgnore] + public static IDictionary> OrderableProperties { get; } = new Dictionary> + { + { "id", x => x.Id }, + { "title", x => x.Title }, + { "original_title", x => x.OriginalTitle }, + { "description", x => x.Description }, + { "release_date", x => x.ReleaseDate }, + { "length", x => x.Length }, + { "rating.average", x => x.Rating.Average }, + { "rating.count", x => x.Rating.Count } + }; + + [JsonPropertyName("id")] public long Id { get; set; } [JsonPropertyName("type")] public MediaType Type { get; set; } + + [JsonPropertyName("rating")] + public RatingResponse Rating { get; set; } #endregion @@ -32,6 +51,7 @@ public class MediaResponse : Media ReleaseDate = media.ReleaseDate; Length = media.Length; Type = mediaType; + Rating = new RatingResponse(media.RatingMedia); } #endregion diff --git a/WatchIt.Common/WatchIt.Common.Model/Movies/MovieQueryParameters.cs b/WatchIt.Common/WatchIt.Common.Model/Movies/MovieQueryParameters.cs index bffef31..ce0ad56 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Movies/MovieQueryParameters.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Movies/MovieQueryParameters.cs @@ -43,6 +43,24 @@ public class MovieQueryParameters : QueryParameters [FromQuery(Name = "budget_to")] public decimal? BudgetTo { get; set; } + [FromQuery(Name = "rating_average")] + public double? RatingAverage { get; set; } + + [FromQuery(Name = "rating_average_from")] + public double? RatingAverageFrom { get; set; } + + [FromQuery(Name = "rating_average_to")] + public double? RatingAverageTo { get; set; } + + [FromQuery(Name = "rating_count")] + public double? RatingCount { get; set; } + + [FromQuery(Name = "rating_count_from")] + public double? RatingCountFrom { get; set; } + + [FromQuery(Name = "rating_count_to")] + public double? RatingCountTo { get; set; } + #endregion @@ -51,17 +69,21 @@ public class MovieQueryParameters : QueryParameters public override bool IsMeetingConditions(MovieResponse item) => ( - TestString(item.Title, Title) + TestStringWithRegex(item.Title, Title) && - TestString(item.OriginalTitle, OriginalTitle) + TestStringWithRegex(item.OriginalTitle, OriginalTitle) && - TestString(item.Description, Description) + TestStringWithRegex(item.Description, Description) && TestComparable(item.ReleaseDate, ReleaseDate, ReleaseDateFrom, ReleaseDateTo) && TestComparable(item.Length, Length, LengthFrom, LengthTo) && TestComparable(item.Budget, Budget, BudgetFrom, BudgetTo) + && + TestComparable(item.Rating.Average, RatingAverage, RatingAverageFrom, RatingAverageTo) + && + TestComparable(item.Rating.Count, RatingCount, RatingCountFrom, RatingCountTo) ); #endregion diff --git a/WatchIt.Common/WatchIt.Common.Model/Movies/MovieResponse.cs b/WatchIt.Common/WatchIt.Common.Model/Movies/MovieResponse.cs index 9c73e0e..78a230c 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Movies/MovieResponse.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Movies/MovieResponse.cs @@ -1,15 +1,35 @@ using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; +using WatchIt.Common.Model.Rating; +using WatchIt.Common.Query; using WatchIt.Database.Model.Media; namespace WatchIt.Common.Model.Movies; -public class MovieResponse : Movie +public class MovieResponse : Movie, IQueryOrderable { #region PROPERTIES + [JsonIgnore] + public static IDictionary> OrderableProperties { get; } = new Dictionary> + { + { "id", x => x.Id }, + { "title", x => x.Title }, + { "original_title", x => x.OriginalTitle }, + { "description", x => x.Description }, + { "release_date", x => x.ReleaseDate }, + { "length", x => x.Length }, + { "budget", x => x.Budget }, + { "rating.average", x => x.Rating.Average }, + { "rating.count", x => x.Rating.Count } + }; + + [JsonPropertyName("id")] public long Id { get; set; } + + [JsonPropertyName("rating")] + public RatingResponse Rating { get; set; } #endregion @@ -30,6 +50,7 @@ public class MovieResponse : Movie ReleaseDate = mediaMovie.Media.ReleaseDate; Length = mediaMovie.Media.Length; Budget = mediaMovie.Budget; + Rating = new RatingResponse(mediaMovie.Media.RatingMedia); } #endregion diff --git a/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoQueryParameters.cs b/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoQueryParameters.cs index 99145b5..b9d2794 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoQueryParameters.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoQueryParameters.cs @@ -1,5 +1,7 @@ +using System.Text.Json.Serialization; using Microsoft.AspNetCore.Mvc; using WatchIt.Common.Model.Media; +using WatchIt.Common.Model.Series; using WatchIt.Common.Query; namespace WatchIt.Common.Model.Photos; @@ -34,11 +36,11 @@ public class PhotoQueryParameters : QueryParameters public override bool IsMeetingConditions(PhotoResponse item) => ( - TestString(item.MimeType, MimeType) + TestStringWithRegex(item.MimeType, MimeType) && - TestBoolean(item.Background is not null, IsBackground) + Test(item.Background is not null, IsBackground) && - TestBoolean(item.Background is not null && item.Background.IsUniversalBackground, IsUniversalBackground) + Test(item.Background is not null && item.Background.IsUniversalBackground, IsUniversalBackground) && TestComparable(item.UploadDate, UploadDate, UploadDateFrom, UploadDateTo) ); diff --git a/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoResponse.cs b/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoResponse.cs index 0b3b6d5..b715235 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoResponse.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Photos/PhotoResponse.cs @@ -1,13 +1,25 @@ using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; +using WatchIt.Common.Query; using WatchIt.Database.Model.Media; namespace WatchIt.Common.Model.Photos; -public class PhotoResponse : Photo +public class PhotoResponse : Photo, IQueryOrderable { #region PROPERTIES + [JsonIgnore] + public static IDictionary> OrderableProperties { get; } = new Dictionary> + { + { "id", x => x.Id }, + { "media_id", x => x.MediaId }, + { "mime_type", x => x.MimeType }, + { "is_background", x => x.Background is not null }, + { "is_universal_background", x => x.Background is not null && x.Background.IsUniversalBackground } + }; + + [JsonPropertyName("id")] public Guid Id { get; set; } diff --git a/WatchIt.Common/WatchIt.Common.Model/Rating/RatingResponse.cs b/WatchIt.Common/WatchIt.Common.Model/Rating/RatingResponse.cs index b2b374c..2139fba 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Rating/RatingResponse.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Rating/RatingResponse.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; +using WatchIt.Database.Model.Rating; namespace WatchIt.Common.Model.Rating; @@ -7,11 +8,11 @@ public class RatingResponse { #region PROPERTIES - [JsonPropertyName("rating_average")] - public required double RatingAverage { get; set; } + [JsonPropertyName("average")] + public required double Average { get; set; } - [JsonPropertyName("rating_count")] - public required long RatingCount { get; set; } + [JsonPropertyName("count")] + public required long Count { get; set; } #endregion @@ -21,12 +22,15 @@ public class RatingResponse [JsonConstructor] public RatingResponse() {} - + + [SetsRequiredMembers] + public RatingResponse(IEnumerable ratingMedia) : this(ratingMedia.Any() ? ratingMedia.Average(x => x.Rating) : 0, ratingMedia.Count()) {} + [SetsRequiredMembers] public RatingResponse(double ratingAverage, long ratingCount) { - RatingAverage = ratingAverage; - RatingCount = ratingCount; + Average = ratingAverage; + Count = ratingCount; } #endregion diff --git a/WatchIt.Common/WatchIt.Common.Model/Series/SeriesQueryParameters.cs b/WatchIt.Common/WatchIt.Common.Model/Series/SeriesQueryParameters.cs index d8797be..acb9e99 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Series/SeriesQueryParameters.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Series/SeriesQueryParameters.cs @@ -37,6 +37,24 @@ public class SeriesQueryParameters : QueryParameters [FromQuery(Name = "has_ended")] public bool? HasEnded { get; set; } + [FromQuery(Name = "rating_average")] + public double? RatingAverage { get; set; } + + [FromQuery(Name = "rating_average_from")] + public double? RatingAverageFrom { get; set; } + + [FromQuery(Name = "rating_average_to")] + public double? RatingAverageTo { get; set; } + + [FromQuery(Name = "rating_count")] + public double? RatingCount { get; set; } + + [FromQuery(Name = "rating_count_from")] + public double? RatingCountFrom { get; set; } + + [FromQuery(Name = "rating_count_to")] + public double? RatingCountTo { get; set; } + #endregion @@ -45,17 +63,21 @@ public class SeriesQueryParameters : QueryParameters public override bool IsMeetingConditions(SeriesResponse item) => ( - TestString(item.Title, Title) + TestStringWithRegex(item.Title, Title) && - TestString(item.OriginalTitle, OriginalTitle) + TestStringWithRegex(item.OriginalTitle, OriginalTitle) && - TestString(item.Description, Description) + TestStringWithRegex(item.Description, Description) && TestComparable(item.ReleaseDate, ReleaseDate, ReleaseDateFrom, ReleaseDateTo) && TestComparable(item.Length, Length, LengthFrom, LengthTo) && - TestBoolean(item.HasEnded, HasEnded) + Test(item.HasEnded, HasEnded) + && + TestComparable(item.Rating.Average, RatingAverage, RatingAverageFrom, RatingAverageTo) + && + TestComparable(item.Rating.Count, RatingCount, RatingCountFrom, RatingCountTo) ); #endregion diff --git a/WatchIt.Common/WatchIt.Common.Model/Series/SeriesResponse.cs b/WatchIt.Common/WatchIt.Common.Model/Series/SeriesResponse.cs index 2e44003..862d6e0 100644 --- a/WatchIt.Common/WatchIt.Common.Model/Series/SeriesResponse.cs +++ b/WatchIt.Common/WatchIt.Common.Model/Series/SeriesResponse.cs @@ -1,15 +1,35 @@ using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; +using WatchIt.Common.Model.Rating; +using WatchIt.Common.Query; using WatchIt.Database.Model.Media; namespace WatchIt.Common.Model.Series; -public class SeriesResponse : Series +public class SeriesResponse : Series, IQueryOrderable { #region PROPERTIES + [JsonIgnore] + public static IDictionary> OrderableProperties { get; } = new Dictionary> + { + { "id", x => x.Id }, + { "title", x => x.Title }, + { "original_title", x => x.OriginalTitle }, + { "description", x => x.Description }, + { "release_date", x => x.ReleaseDate }, + { "length", x => x.Length }, + { "has_ended", x => x.HasEnded }, + { "rating.average", x => x.Rating.Average }, + { "rating.count", x => x.Rating.Count } + }; + + [JsonPropertyName("id")] public long Id { get; set; } + + [JsonPropertyName("rating")] + public RatingResponse Rating { get; set; } #endregion @@ -30,6 +50,7 @@ public class SeriesResponse : Series ReleaseDate = mediaSeries.Media.ReleaseDate; Length = mediaSeries.Media.Length; HasEnded = mediaSeries.HasEnded; + Rating = new RatingResponse(mediaSeries.Media.RatingMedia); } #endregion diff --git a/WatchIt.Common/WatchIt.Common.Query/IQueryOrderable.cs b/WatchIt.Common/WatchIt.Common.Query/IQueryOrderable.cs new file mode 100644 index 0000000..4d4cdae --- /dev/null +++ b/WatchIt.Common/WatchIt.Common.Query/IQueryOrderable.cs @@ -0,0 +1,9 @@ +using System.Text.Json.Serialization; + +namespace WatchIt.Common.Query; + +public interface IQueryOrderable +{ + [JsonIgnore] + public static abstract IDictionary> OrderableProperties { get; } +} \ No newline at end of file diff --git a/WatchIt.Common/WatchIt.Common.Query/QueryParameters.cs b/WatchIt.Common/WatchIt.Common.Query/QueryParameters.cs index 7934cdc..77cf1ec 100644 --- a/WatchIt.Common/WatchIt.Common.Query/QueryParameters.cs +++ b/WatchIt.Common/WatchIt.Common.Query/QueryParameters.cs @@ -52,14 +52,18 @@ public abstract class QueryParameters #region PRIVATE METHODS - protected static bool TestBoolean(bool property, bool? query) => + protected static bool Test(T? property, T? query) => ( query is null || - property == query + ( + property is not null + && + property.Equals(query) + ) ); - protected static bool TestString(string? property, string? regexQuery) => + protected static bool TestStringWithRegex(string? property, string? regexQuery) => ( string.IsNullOrEmpty(regexQuery) || @@ -108,7 +112,7 @@ public abstract class QueryParameters -public abstract class QueryParameters : QueryParameters where T : class +public abstract class QueryParameters : QueryParameters where T : IQueryOrderable { #region PUBLIC METHODS @@ -120,22 +124,9 @@ public abstract class QueryParameters : QueryParameters where T : class if (OrderBy is not null) { - PropertyInfo[] properties = typeof(T).GetProperties(); - foreach (PropertyInfo property in properties) + if (T.OrderableProperties.TryGetValue(OrderBy, out Func? orderFunc)) { - JsonPropertyNameAttribute? attribute = property.GetCustomAttributes(true).FirstOrDefault(); - if (attribute is not null && attribute.Name == OrderBy) - { - if (Order == "asc") - { - data = data.OrderBy(property.GetValue); - } - else - { - data = data.OrderByDescending(property.GetValue); - } - break; - } + data = Order == "asc" ? data.OrderBy(orderFunc) : data.OrderByDescending(orderFunc); } } if (After is not null) diff --git a/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor b/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor index cb879cc..566d09b 100644 --- a/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor +++ b/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor @@ -13,10 +13,10 @@
- @(_rating is not null && _rating.RatingCount > 0 ? _rating.RatingAverage : "--")/10 - @if (_rating is not null && _rating.RatingCount > 0) + @(Rating.Count > 0 ? Rating.Average : "--")/10 + @if (Rating.Count > 0) { - @(_rating.RatingCount) + @(Rating.Count) }
diff --git a/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor.cs index 3b72748..bd6713f 100644 --- a/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor.cs +++ b/WatchIt.Website/WatchIt.Website/Components/ListItemComponent.razor.cs @@ -11,8 +11,8 @@ public partial class ListItemComponent : ComponentBase [Parameter] public required long Id { get; set; } [Parameter] public required string Name { get; set; } [Parameter] public string? AdditionalNameInfo { get; set; } + [Parameter] public required RatingResponse Rating { get; set; } [Parameter] public required Func, Task> PictureDownloadingTask { get; set; } - [Parameter] public required Func, Task> RatingDownloadingTask { get; set; } [Parameter] public int PictureHeight { get; set; } = 150; #endregion @@ -24,7 +24,6 @@ public partial class ListItemComponent : ComponentBase private bool _loaded; private Picture? _picture; - private RatingResponse? _rating; #endregion @@ -42,7 +41,6 @@ public partial class ListItemComponent : ComponentBase endTasks.AddRange( [ PictureDownloadingTask(Id, picture => _picture = picture), - RatingDownloadingTask(Id, rating => _rating = rating) ]); await Task.WhenAll(endTasks); diff --git a/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor b/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor index 4903e4d..929a974 100644 --- a/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor +++ b/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor @@ -32,8 +32,8 @@ + Rating="@(RatingSource(_items[i]))" + PictureDownloadingTask="@(PictureDownloadingTask)"/> diff --git a/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor.cs b/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor.cs index d115cac..2e93844 100644 --- a/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor.cs +++ b/WatchIt.Website/WatchIt.Website/Components/SearchPage/SearchResultComponent.razor.cs @@ -14,10 +14,10 @@ public partial class SearchResultComponent : ComponentBase where [Parameter] public required Func IdSource { get; set; } [Parameter] public required Func NameSource { get; set; } [Parameter] public Func AdditionalNameInfoSource { get; set; } = _ => null; + [Parameter] public required Func RatingSource { get; set; } [Parameter] public required string UrlIdTemplate { get; set; } [Parameter] public required Func>, Task> ItemDownloadingTask { get; set; } [Parameter] public required Func, Task> PictureDownloadingTask { get; set; } - [Parameter] public required Func, Task> RatingDownloadingTask { get; set; } #endregion diff --git a/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor b/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor index ef9ff93..6c144cc 100644 --- a/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor +++ b/WatchIt.Website/WatchIt.Website/Pages/MediaPage.razor @@ -137,7 +137,7 @@ else

- Global rating: @(_globalRating.RatingCount == 0 ? "no ratings" : $"{Math.Round(_globalRating.RatingAverage, 1)}/10") + Global rating: @(_globalRating.Count == 0 ? "no ratings" : $"{Math.Round(_globalRating.Average, 1)}/10")

diff --git a/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor b/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor index 48e98dc..c0bb6e3 100644 --- a/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor +++ b/WatchIt.Website/WatchIt.Website/Pages/SearchPage.razor @@ -37,10 +37,10 @@ IdSource="@(item => item.Id)" NameSource="@(item => item.Title)" AdditionalNameInfoSource="@(item => item.ReleaseDate.HasValue ? $" ({item.ReleaseDate.Value.Year})" : null)" - Query="@(new MovieQueryParameters { Title = DecodedQuery })" + RatingSource="@(item => item.Rating)" + Query="@(new MovieQueryParameters { Title = DecodedQuery, OrderBy = "rating.count" })" ItemDownloadingTask="@(MoviesWebAPIService.GetAllMovies)" - PictureDownloadingTask="@((id, action) => MediaWebAPIService.GetMediaPoster(id, action))" - RatingDownloadingTask="@((id, action) => MediaWebAPIService.GetMediaRating(id, action))"/> + PictureDownloadingTask="@((id, action) => MediaWebAPIService.GetMediaPoster(id, action))"/>
@@ -52,10 +52,10 @@ IdSource="@(item => item.Id)" NameSource="@(item => item.Title)" AdditionalNameInfoSource="@(item => item.ReleaseDate.HasValue ? $" ({item.ReleaseDate.Value.Year})" : null)" - Query="@(new SeriesQueryParameters { Title = DecodedQuery })" + RatingSource="@(item => item.Rating)" + Query="@(new SeriesQueryParameters { Title = DecodedQuery, OrderBy = "rating.count" })" ItemDownloadingTask="@(SeriesWebAPIService.GetAllSeries)" - PictureDownloadingTask="@((id, action) => MediaWebAPIService.GetMediaPoster(id, action))" - RatingDownloadingTask="@((id, action) => MediaWebAPIService.GetMediaRating(id, action))"/> + PictureDownloadingTask="@((id, action) => MediaWebAPIService.GetMediaPoster(id, action))"/>
}