MyBookmark/Modules.Library.Application/Queries/Anime/AnimeTitle/AnimeTitleListQuery.cs
2024-11-27 03:22:03 +03:00

27 lines
1.1 KiB
C#

using MediatR;
using Modules.Library.Application.Gateways;
using Modules.Rating.Api.Querirs;
using Modules.User.Application;
namespace Modules.Library.Application.Queries.Anime.AnimeTitle;
public class AnimeTitleListQuery : IRequest<List<Models.Anime.Title>>
{
}
public class AnimeTitleListQueryHandler(IAnimeTitleGateway titleGateway, UserContext userContext, 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 user = await userContext.GetUserInfo(cancellationToken);
var rates = await mediator.Send(new ObjectRatingListQuery { ObjectIds = titles.Select(q => q.Id), SubjectId = user.Id, }, cancellationToken);
rates.ForEach(q =>
{
var title = titles.First(x => x.Id == q.ObjectId);
title.Rate = q.ObjectRatePercentage;
title.MyRate = q.SubjectRatePercentage;
});
return titles;
}
}