diff --git a/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeQuery.cs b/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeQuery.cs index feae8002..7c7c735f 100644 --- a/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeQuery.cs +++ b/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeQuery.cs @@ -5,13 +5,14 @@ using AutoMapper; using DigitalData.Core.Abstraction.Application.Repository; using EnvelopeGenerator.Domain.Entities; using Microsoft.EntityFrameworkCore; +using DigitalData.Core.Exceptions; namespace EnvelopeGenerator.Application.Envelopes.Queries; /// /// Repräsentiert eine Abfrage für einen einzelnen Umschlag. /// -public record ReadSingleEnvelopeQuery : EnvelopeQueryBase, IRequest +public record ReadSingleEnvelopeQuery : EnvelopeQueryBase, IRequest { /// /// Optionaler Benutzerfilter; wenn gesetzt, werden nur Umschläge des Benutzers geladen. @@ -27,7 +28,7 @@ public record ReadSingleEnvelopeQuery : EnvelopeQueryBase, IRequest /// Verarbeitet und liefert ein einzelnes -Ergebnis. /// -public class ReadSingleEnvelopeQueryHandler : IRequestHandler +public class ReadSingleEnvelopeQueryHandler : IRequestHandler { private readonly IRepository _repository; private readonly IMapper _mapper; @@ -49,7 +50,7 @@ public class ReadSingleEnvelopeQueryHandler : IRequestHandler /// /// - public async Task Handle(ReadSingleEnvelopeQuery request, CancellationToken cancel) + public async Task Handle(ReadSingleEnvelopeQuery request, CancellationToken cancel) { var query = _repository.Query; @@ -61,11 +62,17 @@ public class ReadSingleEnvelopeQueryHandler : IRequestHandler e.Uuid == uuid); - - var envelope = await query + + var envelopes = await query .Include(e => e.Documents) - .FirstOrDefaultAsync(cancel); + .Take(2) + .ToListAsync(cancel); - return envelope is null ? null : _mapper.Map(envelope); + if (envelopes.Count > 1) + throw new BadRequestException($"Multiple envelopes found for the given criteria: Id={request.Id}, Uuid={request.Uuid}, UserId={request.UserId}"); + + return envelopes.SingleOrDefault() is Envelope envelope + ? _mapper.Map(envelope) + : throw new NotFoundException($"Envelope with Id={request.Id}, Uuid={request.Uuid} not found"); } -} +} \ No newline at end of file