using Mapster; using MapsterMapper; using MediatR; using Microsoft.Extensions.Logging; using PracticeCalendar.Domain.Common.Interfaces; using PracticeCalendar.Domain.Entities; using PracticeCalendar.Domain.Entities.Specifications; namespace PracticeCalendar.Application.PracticeEvents.Queries.GetPracticeEvents { public record class GetPracticeEventsQuery : IRequest> { } public class GetPracticeEventsQueryHandler : IRequestHandler> { private readonly ILogger logger; private readonly IRepository eventsRepo; private readonly IMapper mapper; public GetPracticeEventsQueryHandler(IRepository eventsRepo, ILogger logger, IMapper mapper) { this.eventsRepo = eventsRepo; this.logger = logger; this.mapper = mapper; } public async Task> Handle(GetPracticeEventsQuery request, CancellationToken cancellationToken) { var spec = new PracticeEventsWithAttendees(); var evList = await eventsRepo.ListAsync(spec, cancellationToken); var lst = evList.Adapt>(mapper.Config); return lst; } } }