using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes; using EnvelopeGenerator.Application.Envelopes.Queries.Read; using EnvelopeGenerator.Application.Receivers.Queries.Read; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries.Read; /// /// Repräsentiert die Antwort für das Lesen eines Envelope-Empfängers. /// /// /// Diese Klasse enthält Informationen über einen spezifischen Empfänger eines Umschlags (Envelope). /// Sie verknüpft die Empfängerinformationen mit den zugehörigen Umschlagsdaten und bietet zusätzliche Metadaten. /// /// Die eindeutige Kennung des Benutzers, der den Empfänger erstellt hat. /// Der Status des Empfängers als numerischer Wert. public record ReadEnvelopeReceiverResponse(int UserId, int Status) { /// /// Gibt die zusammengesetzte Kennung des Empfängers zurück, bestehend aus der Umschlags-ID und der Empfänger-ID. /// /// /// Diese Eigenschaft kombiniert die eindeutige Kennung des Umschlags (EnvelopeId) und die des Empfängers (ReceiverId) /// zu einer einzigen, leicht zugänglichen Struktur. /// [NotMapped] public (int Envelope, int Receiver) Id => (Envelope: EnvelopeId, Receiver: ReceiverId); /// /// Die eindeutige Kennung des zugehörigen Umschlags. /// [Required] public int EnvelopeId { get; init; } /// /// Die eindeutige Kennung des Empfängers. /// [Required] public int ReceiverId { get; init; } /// /// Die Reihenfolge des Empfängers innerhalb des Umschlags. /// public int Sequence { get; init; } /// /// Der Name des Empfängers. Kann als Platzhalter verwendet werden. /// [TemplatePlaceholder("[NAME_RECEIVER]")] public string? Name { get; init; } /// /// Die Berufsbezeichnung des Empfängers. /// public string? JobTitle { get; init; } /// /// Der Firmenname des Empfängers. /// public string? CompanyName { get; init; } /// /// Eine private Nachricht, die mit dem Empfänger verknüpft ist. /// public string? PrivateMessage { get; init; } /// /// Das Datum und die Uhrzeit, wann der Empfänger hinzugefügt wurde. /// public DateTime AddedWhen { get; init; } /// /// Das Datum und die Uhrzeit, wann der Empfänger zuletzt geändert wurde (falls vorhanden). /// public DateTime? ChangedWhen { get; init; } /// /// Gibt an, ob der Empfänger eine Telefonnummer hat. /// public bool HasPhoneNumber { get; init; } /// /// Die zugehörigen Umschlagsdaten. /// [Required] public required ReadEnvelopeResponse Envelope { get; init; } /// /// Die Liste der Empfängerinformationen. /// [Required] public IEnumerable Receiver { get; init; } = new List(); }