using MediatR; using Modules.Rating.Api.Database.Entities; using Modules.Rating.Api.Models; using Modules.Rating.Api.Repositories; namespace Modules.Rating.Api.Querirs; public class ObjectRatingListQuery : IRequest> { public Guid? SubjectId { get; set; } public IEnumerable ObjectIds { get; set; } = []; } public class ObjectRatingListQueryHandler(RateRepository repository) : IRequestHandler> { public async Task> Handle(ObjectRatingListQuery request, CancellationToken cancellationToken) { if (request.ObjectIds.Count() == 0) return []; var rates = await repository.GetRates(request.ObjectIds, request.SubjectId); return rates.Select(q => new Models.Rate { ObjectId = q.ObjectId, ObjectRatePercentage = (ushort)Math.Round((decimal)q.Rate, 0), SubjectRatePercentage = q.SubjectRate.HasValue ? Convert.ToUInt16(q.SubjectRate) : null, }).ToList(); } }