feat(ReadEnvelopeReceiverQuery): add Key-property

This commit is contained in:
2025-08-21 17:36:18 +02:00
parent 59c93de8b7
commit 3a62f5317f
2 changed files with 54 additions and 16 deletions

View File

@@ -1,8 +1,10 @@
using EnvelopeGenerator.Application.Envelopes.Queries; using EnvelopeGenerator.Application.Dto.EnvelopeReceiver;
using MediatR; using EnvelopeGenerator.Application.Envelopes.Queries;
using EnvelopeGenerator.Domain; using EnvelopeGenerator.Application.Exceptions;
using EnvelopeGenerator.Application.Dto.EnvelopeReceiver;
using EnvelopeGenerator.Application.Receivers.Queries; using EnvelopeGenerator.Application.Receivers.Queries;
using EnvelopeGenerator.Domain;
using EnvelopeGenerator.Extensions;
using MediatR;
namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries; namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries;
@@ -37,22 +39,50 @@ namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries;
/// <remarks> /// <remarks>
/// Diese Abfrage kombiniert Informationen über einen Umschlag (<see cref="ReadEnvelopeQuery"/>) /// Diese Abfrage kombiniert Informationen über einen Umschlag (<see cref="ReadEnvelopeQuery"/>)
/// und einen Empfänger (<see cref="ReadReceiverQuery"/>), um eine vollständige Antwort /// und einen Empfänger (<see cref="ReadReceiverQuery"/>), um eine vollständige Antwort
/// (<see cref="ReadEnvelopeReceiverResponse"/>) zu generieren. /// (<see cref="EnvelopeReceiverDto"/>) zu generieren.
/// Die Antwort enthält Details wie den Status, die Zuordnung zwischen Umschlag und Empfänger /// Die Antwort enthält Details wie den Status, die Zuordnung zwischen Umschlag und Empfänger
/// sowie zusätzliche Metadaten. /// sowie zusätzliche Metadaten.
/// </remarks> /// </remarks>
/// <param name="Status">Umschlag oder Empfängerstatus.</param>
public record ReadEnvelopeReceiverQuery : IRequest<EnvelopeReceiverDto> public record ReadEnvelopeReceiverQuery : IRequest<EnvelopeReceiverDto>
{ {
/// <summary>
///
/// </summary>
public string? Key
{
get => Envelope?.Uuid is string uuid && Receiver?.Signature is string signature
? (uuid, signature).EncodeEnvelopeReceiverId()
: null;
init
{
if (value is null)
return;
(string? EnvelopeUuid, string? ReceiverSignature) = value.DecodeEnvelopeReceiverId();
if(string.IsNullOrEmpty(EnvelopeUuid) || string.IsNullOrEmpty(ReceiverSignature))
{
throw new BadRequestException("Der EnvelopeReceiverKey muss ein gültiger Base64-kodierter String sein, der die EnvelopeUuid und die ReceiverSignature enthält.");
}
Envelope = new ReadEnvelopeQuery()
{
Uuid = EnvelopeUuid
};
Receiver = new ReadReceiverQuery()
{
Signature = ReceiverSignature
};
}
}
/// <summary> /// <summary>
/// Der Umschlag, der mit dem Empfänger verknüpft ist. /// Der Umschlag, der mit dem Empfänger verknüpft ist.
/// </summary> /// </summary>
public ReadEnvelopeQuery? Envelope { get; init; } public ReadEnvelopeQuery? Envelope { get; set; }
/// <summary> /// <summary>
/// Der Empfänger, der mit dem Umschlag verknüpft ist. /// Der Empfänger, der mit dem Umschlag verknüpft ist.
/// </summary> /// </summary>
public ReadReceiverQuery? Receiver { get; init; } public ReadReceiverQuery? Receiver { get; set; }
/// <summary> /// <summary>
/// Abfrage des Status des Umschlags /// Abfrage des Status des Umschlags

View File

@@ -5,12 +5,20 @@ namespace EnvelopeGenerator.Application.Envelopes.Queries;
/// <summary> /// <summary>
/// Repräsentiert eine Abfrage für Umschläge. /// Repräsentiert eine Abfrage für Umschläge.
/// </summary> /// </summary>
/// <param name="Id">Die eindeutige Kennung des Umschlags.</param> public class ReadEnvelopeQuery : IRequest
/// <param name="Status">Der Status des Umschlags.</param>
/// <param name="Uuid">Die universell eindeutige Kennung des Umschlags.</param>
public record ReadEnvelopeQuery(
int? Id = null,
int? Status = null,
string? Uuid = null) : IRequest
{ {
}; /// <summary>
/// Die eindeutige Kennung des Umschlags.
/// </summary>
public int? Id { get; init; }
/// <summary>
/// Der Status des Umschlags.
/// </summary>
public int? Status { get; init; }
/// <summary>
/// Die universell eindeutige Kennung des Umschlags.
/// </summary>
public string? Uuid { get; init; }
}