26 lines
1013 B
C#
26 lines
1013 B
C#
using MediatR;
|
|
using Modules.Library.Application.Gateways;
|
|
using Modules.Rating.Api.Querirs;
|
|
|
|
namespace Modules.Library.Application.Queries.Anime.AnimeTitle;
|
|
|
|
public class AnimeTitleListQuery : IRequest<List<Models.Anime.Title>>
|
|
{
|
|
public Guid? UserId { get; set; }
|
|
}
|
|
|
|
public class AnimeTitleListQueryHandler(IAnimeTitleGateway titleGateway, IMediator mediator) : IRequestHandler<AnimeTitleListQuery, List<Models.Anime.Title>>
|
|
{
|
|
public async Task<List<Models.Anime.Title>> Handle(AnimeTitleListQuery request, CancellationToken cancellationToken)
|
|
{
|
|
var titles = await titleGateway.GetList();
|
|
var rates = await mediator.Send(new ObjectRatingListQuery { ObjectIds = titles.Select(q => q.Id), SubjectId = request.UserId, }, cancellationToken);
|
|
rates.ForEach(q =>
|
|
{
|
|
var title = titles.First(x => x.Id == q.ObjectId);
|
|
title.Rate = q.ObjectRatePercentage;
|
|
title.MyRate = q.SubjectRatePercentage;
|
|
});
|
|
return titles;
|
|
}
|
|
} |