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