using EnvelopeGenerator.Application.Envelopes.Commands; using MediatR; using System.ComponentModel.DataAnnotations; namespace EnvelopeGenerator.Application.EnvelopeReceivers.Commands; /// /// Befehl zur Erstellung eines Umschlags. /// public record CreateEnvelopeReceiverCommand : CreateEnvelopeCommand, IRequest { /// /// Das mit dem Umschlag verknüpfte Dokument. Dies ist ein Pflichtfeld. /// [Required] public required DocumentCreateCommand Document { get; set; } /// /// Eine Sammlung von Empfängern, die den Umschlag erhalten. Dies ist ein Pflichtfeld. /// [Required] public List Receivers { get; set; } = new(); } #region Subcommands /// /// Signaturposition auf einem Dokument. /// /// X-Position /// Y-Position /// Seite, auf der sie sich befindet public record Signature([Required] double X, [Required] double Y, [Required] int Page); /// /// DTO für Empfänger, die erstellt oder abgerufen werden sollen. /// Wenn nicht, wird sie erstellt und mit einer Signatur versehen. /// public class ReceiverGetOrCreateCommand { /// /// Unterschriften auf Dokumenten. /// [Required] public List Signatures { get; init; } = new(); /// /// Der Name, mit dem der Empfänger angesprochen werden soll. /// Bei Null oder keinem Wert wird der zuletzt verwendete Name verwendet. /// public string? Salution { get; init; } /// /// Sollte mit Vorwahl geschrieben werden /// public string? PhoneNumber { get; init; } private string _emailAddress = string.Empty; /// /// E-Mail-Adresse des Empfängers. /// [Required] public string EmailAddress { get => _emailAddress.ToLower(); init => _emailAddress = value.ToLower(); } } /// /// DTO zum Erstellen eines Dokuments. /// public record DocumentCreateCommand() { /// /// Die Dokumentdaten im Base64-String-Format. Wird verwendet, wenn das Dokument als Base64-codierter String bereitgestellt wird. /// [Required] public required string DataAsBase64 { get; init; } }; #endregion