Fix exception while setting Chapter Ratings when no reviews are found fixes #3843

This commit is contained in:
Amelia 2025-06-19 11:45:28 +02:00
parent 46d5bf2a83
commit 11d058308f

View file

@ -1199,32 +1199,39 @@ public class ExternalMetadataService : IExternalMetadataService
#region Rating #region Rating
var averageCriticRating = metadata.CriticReviews.Average(r => r.Rating); // C# can't make the implicit conversation here
var averageUserRating = metadata.UserReviews.Average(r => r.Rating); float? averageCriticRating = metadata.CriticReviews.Count > 0 ? metadata.CriticReviews.Average(r => r.Rating) : null;
float? averageUserRating = metadata.UserReviews.Count > 0 ? metadata.UserReviews.Average(r => r.Rating) : null;
var existingRatings = await _unitOfWork.ChapterRepository.GetExternalChapterRatings(chapter.Id); var existingRatings = await _unitOfWork.ChapterRepository.GetExternalChapterRatings(chapter.Id);
_unitOfWork.ExternalSeriesMetadataRepository.Remove(existingRatings); _unitOfWork.ExternalSeriesMetadataRepository.Remove(existingRatings);
chapter.ExternalRatings = chapter.ExternalRatings = [];
[
new ExternalRating if (averageUserRating != null)
{
chapter.ExternalRatings.Add(new ExternalRating
{ {
AverageScore = (int) averageUserRating, AverageScore = (int) averageUserRating,
Provider = ScrobbleProvider.Cbr, Provider = ScrobbleProvider.Cbr,
Authority = RatingAuthority.User, Authority = RatingAuthority.User,
ProviderUrl = metadata.IssueUrl, ProviderUrl = metadata.IssueUrl,
},
new ExternalRating });
chapter.AverageExternalRating = averageUserRating.Value;
}
if (averageCriticRating != null)
{
chapter.ExternalRatings.Add(new ExternalRating
{ {
AverageScore = (int) averageCriticRating, AverageScore = (int) averageCriticRating,
Provider = ScrobbleProvider.Cbr, Provider = ScrobbleProvider.Cbr,
Authority = RatingAuthority.Critic, Authority = RatingAuthority.Critic,
ProviderUrl = metadata.IssueUrl, ProviderUrl = metadata.IssueUrl,
}, });
]; }
chapter.AverageExternalRating = averageUserRating;
madeModification = averageUserRating > 0f || averageCriticRating > 0f || madeModification; madeModification = averageUserRating > 0f || averageCriticRating > 0f || madeModification;