person controller and service created

This commit is contained in:
2024-10-02 16:09:11 +02:00
Unverified
parent 3cd282a2e9
commit 9a9e29ecf4
22 changed files with 387 additions and 20 deletions

View File

@@ -1,5 +1,6 @@
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
using WatchIt.Database.Model.Person;
using WatchIt.Database.Model.Rating;
namespace WatchIt.Common.Model.Rating;
@@ -24,14 +25,24 @@ public class RatingResponse
public RatingResponse() {}
[SetsRequiredMembers]
public RatingResponse(IEnumerable<RatingMedia> ratingMedia) : this(ratingMedia.Any() ? (decimal)ratingMedia.Average(x => x.Rating) : 0, ratingMedia.Count()) {}
[SetsRequiredMembers]
public RatingResponse(decimal ratingAverage, long ratingCount)
private RatingResponse(long ratingSum, long ratingCount)
{
Average = ratingAverage;
Average = ratingCount > 0 ? (decimal)ratingSum / ratingCount : 0;
Count = ratingCount;
}
public static RatingResponse Create(long ratingSum, long ratingCount) => new RatingResponse(ratingSum, ratingCount);
public static RatingResponse Create(IEnumerable<RatingMedia> ratingMedia) => new RatingResponse(ratingMedia.Sum(x => x.Rating), ratingMedia.Count());
public static RatingResponse Create(IEnumerable<PersonActorRole> personActorRoles, IEnumerable<PersonCreatorRole> personCreatorRoles)
{
IEnumerable<RatingPersonActorRole> ratingsActorRoles = personActorRoles.SelectMany(x => x.RatingPersonActorRole);
IEnumerable<RatingPersonCreatorRole> ratingsCreatorRoles = personCreatorRoles.SelectMany(x => x.RatingPersonCreatorRole);
long ratingSum = ratingsActorRoles.Sum(x => x.Rating) + ratingsCreatorRoles.Sum(x => x.Rating);
long ratingCount = ratingsActorRoles.Count() + ratingsCreatorRoles.Count();
return new RatingResponse(ratingSum, ratingCount);
}
#endregion
}