MyBookmark/Modules.Library.Application/Queries/Anime/AnimeTitle/AnimeTitleListQuery.cs
2024-10-21 01:52:41 +03:00

26 lines
994 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, });
rates.ForEach(q =>
{
var title = titles.First(x => x.Id == q.ObjectId);
title.Rate = q.ObjectRatePercentage;
title.MyRate = q.SubjectRatePercentage;
});
return titles;
}
}