using EnvelopeGenerator.Application.Envelopes; using EnvelopeGenerator.Application.Receivers; using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.Application.EnvelopeHistories; /// /// Repräsentiert eine Abfrage für die Verlaufshistorie eines Umschlags. /// /// Die eindeutige Kennung des Umschlags. /// Die Abfrage, die den Umschlag beschreibt. /// Die Abfrage, die den Empfänger beschreibt. /// Die Abfrage, die den Status des Umschlags beschreibt. public record EnvelopeHistoryQuery(int EnvelopeId, TEnvelopeQuery? Envelope, TReceiverQuery? Receiver = null, StatusQuery? Status = null) where TEnvelopeQuery : EnvelopeQuery where TReceiverQuery : ReceiverQuery { /// /// Gibt den Referenztyp des Umschlags an. /// Wenn der Benutzer des Umschlags definiert ist, wird der Referenztyp als Empfänger betrachtet. /// Andernfalls, wenn ein Empfänger definiert ist, wird der Referenztyp ebenfalls als Empfänger betrachtet. /// Ist keiner von beiden definiert, wird der Referenztyp als System betrachtet. /// public ReferenceType ReferenceType => Envelope?.Sender is not null ? ReferenceType.Receiver : Receiver is not null ? ReferenceType.Receiver : ReferenceType.System; }