diff --git a/EnvelopeGenerator.Application/EnvelopeReports/ReadEnvelopeReportQuery.cs b/EnvelopeGenerator.Application/EnvelopeReports/ReadEnvelopeReportQuery.cs index 254fae87..e61ac78d 100644 --- a/EnvelopeGenerator.Application/EnvelopeReports/ReadEnvelopeReportQuery.cs +++ b/EnvelopeGenerator.Application/EnvelopeReports/ReadEnvelopeReportQuery.cs @@ -1,9 +1,15 @@ -using EnvelopeGenerator.Domain.Entities; +using AutoMapper; +using DigitalData.Core.Abstraction.Application.Repository; +using DigitalData.Core.Exceptions; +using EnvelopeGenerator.Domain.Entities; using MediatR; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; +using System.Text.Json.Serialization; using System.Threading.Tasks; namespace EnvelopeGenerator.Application.EnvelopeReports; @@ -11,4 +17,56 @@ namespace EnvelopeGenerator.Application.EnvelopeReports; /// /// /// -public record ReadEnvelopeReportQuery(int EnvelopeId) : IRequest; \ No newline at end of file +public record ReadEnvelopeReportQuery(int EnvelopeId) : IRequest> +{ + /// + /// + /// + [JsonIgnore] + [NotMapped] + public bool ThrowIfNotFound { get; init; } = true; +}; + +/// +/// +/// +public class ReadEnvelopeReportQueryHandler : IRequestHandler> +{ + /// + /// + /// + private readonly IRepository _repo; + + /// + /// + /// + private readonly IMapper _mapper; + + /// + /// + /// + /// + /// + public ReadEnvelopeReportQueryHandler(IRepository repo, IMapper mapper) + { + _repo = repo; + _mapper = mapper; + } + + /// + /// + /// + /// + /// + /// + public async Task> Handle(ReadEnvelopeReportQuery request, CancellationToken cancel = default) + { + var reports = await _repo.Where(r => r.EnvelopeId == request.EnvelopeId).ToListAsync(cancel); + var reportDtos = _mapper.Map>(reports); + + if(request.ThrowIfNotFound && !reportDtos.Any()) + throw new NotFoundException($"EnvelopeReport with EnvelopeId '{request.EnvelopeId}' was not found."); + + return reportDtos; + } +} \ No newline at end of file