using AutoMapper; using DigitalData.EmailProfiler.Application.Common.Dtos.EmailHistories; using DigitalData.EmailProfiler.Application.Interfaces.Repositories; using MediatR; namespace DigitalData.EmailProfiler.Application.EmailHistories.Queries; /// /// Query to get email history by profile with pagination. /// public record GetEmailHistoryByProfileQuery( int ProfileId, int PageNumber = 1, int PageSize = 50) : IRequest; /// /// Paged result for email history. /// public record EmailHistoryPagedResult( IEnumerable Items, int TotalCount, int PageNumber, int PageSize); public class GetEmailHistoryByProfileQueryHandler( IEmailHistoryRepository repository, IMapper mapper) : IRequestHandler { public async Task Handle( GetEmailHistoryByProfileQuery request, CancellationToken cancellationToken) { var (items, totalCount) = await repository.GetByProfileIdAsync( request.ProfileId, request.PageNumber, request.PageSize, cancellationToken); var dtos = mapper.Map>(items); return new EmailHistoryPagedResult( dtos, totalCount, request.PageNumber, request.PageSize); } }