using AutoMapper; using DigitalData.Core.Abstraction.Application.Repository; using DigitalData.Core.Exceptions; using MediatR; using Microsoft.EntityFrameworkCore; using ReC.Application.Common.Dto; using ReC.Domain.Entities; namespace ReC.Application.OutResults.Queries; public record ReadOutResQuery : IRequest> { public long? ProfileId { get; init; } public long? ActionId { get; init; } } public class ReadOutResHandler(IRepository repo, IMapper mapper) : IRequestHandler> { public async Task> Handle(ReadOutResQuery request, CancellationToken cancel) { var q = repo.Query; if(request.ActionId is long actionId) q = q.Where(res => res.ActionId == actionId); if(request.ProfileId is long profileId) q = q.Where(res => res.Action!.ProfileId == profileId); var resList = await q.ToListAsync(cancel); if (resList.Count == 0) throw new NotFoundException(); return mapper.Map>(resList); } }