using MediatR; using Microsoft.EntityFrameworkCore; using MinAttest.Contracts.Attests; using MinAttest.Contracts.Persons; using MinAttest.Application.Abstractions; namespace MinAttest.Application.Features.Persons.Queries; public record GetPersonQuery(Guid Id) : IRequest; public class GetPersonQueryHandler(IAppDbContext db) : IRequestHandler { public async Task Handle(GetPersonQuery request, CancellationToken cancellationToken) { var person = await db.Persons .Where(p => p.Id == request.Id) .Select(p => new PersonResponse( p.Id, p.NationalIdHash, p.Email, p.Phone, p.Attests .Select(a => new AttestSummary( a.Id, a.Employer != null ? a.Employer.Name : string.Empty, a.Title, a.From, a.To, a.Status == Domain.Entities.AttestStatus.Issued )) .ToList() )) .FirstOrDefaultAsync(cancellationToken); return person; } }