diff --git a/EnvelopeGenerator.Application/Envelope/Commands/CreateEnvelope.cs b/EnvelopeGenerator.Application/Envelope/Commands/CreateEnvelope.cs
index 8dafdc01..60138a30 100644
--- a/EnvelopeGenerator.Application/Envelope/Commands/CreateEnvelope.cs
+++ b/EnvelopeGenerator.Application/Envelope/Commands/CreateEnvelope.cs
@@ -1,12 +1,62 @@
using MediatR;
+using System.ComponentModel.DataAnnotations;
namespace EnvelopeGenerator.Application.Envelope.Commands;
-public record CreateEnvelopeCommand(EnvelopeCreateDto Envelope) : IRequest;
+#region DTOs
+///
+/// Signaturposition auf einem Dokument.
+///
+/// X-Position
+/// Y-Position
+/// Seite, auf der sie sich befindet
+public record Signature([Required] int X, [Required] int 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.
+///
+/// Unterschriften auf Dokumenten.
+/// Der Name, mit dem der Käufer angesprochen werden soll. Bei Null oder keinem Wert wird der zuletzt verwendete Name verwendet.
+/// Sollte mit Vorwahl geschrieben werden
+public record ReceiverGetOrCreateDto([Required] IEnumerable Signatures, string? Name = null, string? PhoneNumber = null)
+{
+ private string _emailAddress;
+
+ ///
+ /// E-Mail-Adresse des Empfängers.
+ ///
+ [Required]
+ public required string EmailAddress { get => _emailAddress.ToLower(); init => _emailAddress.ToLower(); }
+};
+
+///
+/// DTO für die Erstellung eines Dokuments.
+///
+public record DocumentCreateDto(byte[]? DataAsByte = null, string? DataAsBase64 = null);
+#endregion
+
+///
+/// Befehl zur Erstellung eines Umschlags.
+///
+public record CreateEnvelopeCommand(
+ [Required] string Title,
+ [Required] string Message,
+ [Required] DocumentCreateDto Document,
+ [Required] IEnumerable Receivers
+ string Language = "de-DE",
+ DateTime? ExpiresWhen = null,
+ DateTime? ExpiresWarningWhen = null,
+ int ContractType = (int)Common.Constants.ContractType.Contract,
+ bool TFAEnabled = false,
+ ) : IRequest;
+
+///
+/// Handler für den CreateEnvelopeCommand.
+///
public class CreateEnvelopeCommandHandler : IRequestHandler
{
- public Task Handle(CreateEnvelopeCommand request, CancellationToken cancellationToken)
+ public Task Handle(CreateEnvelopeCommand request, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
diff --git a/EnvelopeGenerator.Application/Envelope/Commands/EnvelopeCreateDto.cs b/EnvelopeGenerator.Application/Envelope/Commands/EnvelopeCreateDto.cs
deleted file mode 100644
index 80176ad6..00000000
--- a/EnvelopeGenerator.Application/Envelope/Commands/EnvelopeCreateDto.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace EnvelopeGenerator.Application.Envelope.Commands;
-
-public class EnvelopeCreateDto
-{
- [Required]
- public required string Title { get; init; }
-
- [Required]
- public required string Message { get; init; }
-
- public string Language { get; init; } = "de-DE";
-
- public DateTime? ExpiresWhen { get; init; }
-
- public DateTime? ExpiresWarningWhen { get; init; }
-
- public int? ContractType { get; init; } = (int)Common.Constants.ContractType.Contract;
-
- public bool TFAEnabled { get; init; } = false;
-}