From b3a2e1559aa598639b7386f992ae42d2969be4d5 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Mon, 7 Apr 2025 12:03:34 +0200 Subject: [PATCH] Refactor envelope handling and introduce new queries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructured the `CreateEnvelope` functionality by moving the `CreateEnvelopeCommand` and related DTOs to a new namespace. Der `EnvelopeReceiverController` wurde aktualisiert, um diese Änderungen widerzuspiegeln, und die Parameter wurden zur besseren Übersichtlichkeit umbenannt. Es wurden neue Abfragesätze für das Lesen von Umschlag-Empfängern und definierte Antwortstrukturen eingeführt, wodurch die Gesamtorganisation und die Wartbarkeit der Codebasis verbessert wurden. Übersetzt mit DeepL.com (kostenlose Version) --- .../CreateEnvelopeCommand.cs} | 17 ++----- .../EnvelopeReceiverQuery.cs | 16 +++++++ .../Queries/Read/ReadEnvelopeReceiverQuery.cs | 15 +++++++ .../Read/ReadEnvelopeReceiverResponse.cs | 45 +++++++++++++++++++ .../Envelopes/EnvelopeQuery.cs | 16 +++++++ .../Queries/Read/ReadEnvelopeQuery.cs | 5 +++ .../Queries/Read/ReadReceiverQuery.cs | 5 +++ .../Queries/Read/ReadReceiverResponse.cs | 5 +++ .../Receivers/ReceiverQuery.cs | 3 ++ .../Controllers/EnvelopeReceiverController.cs | 9 ++-- 10 files changed, 117 insertions(+), 19 deletions(-) rename EnvelopeGenerator.Application/EnvelopeReceivers/Commands/{CreateEnvelope.cs => Create/CreateEnvelopeCommand.cs} (83%) create mode 100644 EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs create mode 100644 EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs create mode 100644 EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverResponse.cs create mode 100644 EnvelopeGenerator.Application/Envelopes/EnvelopeQuery.cs create mode 100644 EnvelopeGenerator.Application/Envelopes/Queries/Read/ReadEnvelopeQuery.cs create mode 100644 EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverQuery.cs create mode 100644 EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverResponse.cs create mode 100644 EnvelopeGenerator.Application/Receivers/ReceiverQuery.cs diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Commands/CreateEnvelope.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Commands/Create/CreateEnvelopeCommand.cs similarity index 83% rename from EnvelopeGenerator.Application/EnvelopeReceivers/Commands/CreateEnvelope.cs rename to EnvelopeGenerator.Application/EnvelopeReceivers/Commands/Create/CreateEnvelopeCommand.cs index ff15f3b6..195c9db5 100644 --- a/EnvelopeGenerator.Application/EnvelopeReceivers/Commands/CreateEnvelope.cs +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Commands/Create/CreateEnvelopeCommand.cs @@ -1,7 +1,7 @@ using MediatR; using System.ComponentModel.DataAnnotations; -namespace EnvelopeGenerator.Application.EnvelopeReceivers.Commands; +namespace EnvelopeGenerator.Application.EnvelopeReceivers.Commands.Create; #region DTOs /// @@ -21,7 +21,7 @@ public record Signature([Required] int X, [Required] int Y, [Required] int Page) /// Sollte mit Vorwahl geschrieben werden public record ReceiverGetOrCreateDto([Required] IEnumerable Signatures, string? Name = null, string? PhoneNumber = null) { - private string _emailAddress; + private string _emailAddress = string.Empty; /// /// E-Mail-Adresse des Empfängers. @@ -49,15 +49,4 @@ public record CreateEnvelopeCommand( 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 = default) - { - throw new NotImplementedException(); - } -} + ) : IRequest; \ No newline at end of file diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs new file mode 100644 index 00000000..ce8fffd2 --- /dev/null +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs @@ -0,0 +1,16 @@ +using EnvelopeGenerator.Application.Envelopes.Queries.Read; +using EnvelopeGenerator.Application.Receivers.Queries.Read; + +namespace EnvelopeGenerator.Application.EnvelopeReceivers; + +/// +/// Stellt eine Abfrage zum Lesen eines Envelope-Empfängers dar. +/// +/// +/// +/// +/// +public record EnvelopeReceiverQuery( + int? MinStatus = null, + int? MaxStatus = null, + int[]? IgnoreStatus = null); \ No newline at end of file diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs new file mode 100644 index 00000000..d81b8579 --- /dev/null +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs @@ -0,0 +1,15 @@ +using EnvelopeGenerator.Application.Envelopes.Queries.Read; +using EnvelopeGenerator.Application.Receivers.Queries.Read; +using MediatR; + +namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries.Read; + +/// +/// Stellt eine Abfrage zum Lesen eines Envelope-Empfängers dar. +/// +public record ReadEnvelopeReceiverQuery : EnvelopeReceiverQuery, IRequest +{ + public ReadEnvelopeQuery? Envelope { get; init; } + + public ReadReceiverQuery? Receiver { get; init; } +}; \ No newline at end of file diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverResponse.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverResponse.cs new file mode 100644 index 00000000..69559533 --- /dev/null +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverResponse.cs @@ -0,0 +1,45 @@ +using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes; +using EnvelopeGenerator.Application.Receivers.Queries.Read; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries.Read; + +/// +/// Stellt eine Antwort auf die Abfrage zum Lesen eines Envelope-Empfängers dar. +/// +/// Der angeforderte Empfänger. +public record ReadEnvelopeReceiverResponse(int UserId, int Status) +{ + [NotMapped] + public (int Envelope, int Receiver) Id => (Envelope: EnvelopeId, Receiver: ReceiverId); + + [Required] + public int EnvelopeId { get; init; } + + [Required] + public int ReceiverId { get; init; } + + public int Sequence { get; init; } + + [TemplatePlaceholder("[NAME_RECEIVER]")] + public string? Name { get; init; } + + public string? JobTitle { get; init; } + + public string? CompanyName { get; init; } + + public string? PrivateMessage { get; init; } + + public DateTime AddedWhen { get; init; } + + public DateTime? ChangedWhen { get; init; } + + public bool HasPhoneNumber { get; init; } + + [Required] + public required ReadReceiverResponse Envelope { get; init; } + + [Required] + public required ReadReceiverResponse Receiver { get; init; } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Envelopes/EnvelopeQuery.cs b/EnvelopeGenerator.Application/Envelopes/EnvelopeQuery.cs new file mode 100644 index 00000000..5c91a622 --- /dev/null +++ b/EnvelopeGenerator.Application/Envelopes/EnvelopeQuery.cs @@ -0,0 +1,16 @@ +using MediatR; + +namespace EnvelopeGenerator.Application.Envelopes; + +/// +/// Repräsentiert eine Abfrage für Umschläge. +/// +/// Die eindeutige Kennung des Umschlags. +/// Die Kennung des Benutzers, der den Umschlag erstellt hat. +/// Der Status des Umschlags. +/// Die universell eindeutige Kennung des Umschlags. +public record EnvelopeQuery( + int? Id = null, + int? UserId = null, + int? Status = null, + string? Uuid = null) : IRequest; \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Envelopes/Queries/Read/ReadEnvelopeQuery.cs b/EnvelopeGenerator.Application/Envelopes/Queries/Read/ReadEnvelopeQuery.cs new file mode 100644 index 00000000..be21efc3 --- /dev/null +++ b/EnvelopeGenerator.Application/Envelopes/Queries/Read/ReadEnvelopeQuery.cs @@ -0,0 +1,5 @@ +namespace EnvelopeGenerator.Application.Envelopes.Queries.Read; + +public record ReadEnvelopeQuery : EnvelopeQuery +{ +} diff --git a/EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverQuery.cs b/EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverQuery.cs new file mode 100644 index 00000000..a93bf137 --- /dev/null +++ b/EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverQuery.cs @@ -0,0 +1,5 @@ +namespace EnvelopeGenerator.Application.Receivers.Queries.Read; + +public record ReadReceiverQuery : ReceiverQuery +{ +} diff --git a/EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverResponse.cs b/EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverResponse.cs new file mode 100644 index 00000000..11794a88 --- /dev/null +++ b/EnvelopeGenerator.Application/Receivers/Queries/Read/ReadReceiverResponse.cs @@ -0,0 +1,5 @@ +namespace EnvelopeGenerator.Application.Receivers.Queries.Read; + +public record ReadReceiverResponse +{ +} diff --git a/EnvelopeGenerator.Application/Receivers/ReceiverQuery.cs b/EnvelopeGenerator.Application/Receivers/ReceiverQuery.cs new file mode 100644 index 00000000..7b8b5f69 --- /dev/null +++ b/EnvelopeGenerator.Application/Receivers/ReceiverQuery.cs @@ -0,0 +1,3 @@ +namespace EnvelopeGenerator.Application.Receivers; + +public record ReceiverQuery(int? Id = null, string? EmailAddress = null, string? Signature = null); \ No newline at end of file diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs index 220c34fb..c73d791c 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs @@ -1,7 +1,6 @@ using DigitalData.Core.DTO; using EnvelopeGenerator.Application.Contracts.Services; -using EnvelopeGenerator.Application.EnvelopeReceivers.Commands; -using EnvelopeGenerator.Common.My.Resources; +using EnvelopeGenerator.Application.EnvelopeReceivers.Commands.Create; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -104,7 +103,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers /// /// Datenübertragungsobjekt mit Informationen zu Umschlägen, Empfängern und Unterschriften. /// - /// + /// /// Token to cancel the operation /// HTTP-Antwort /// @@ -145,9 +144,9 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers /// Es handelt sich um einen unerwarteten Fehler. Die Protokolle sollten überprüft werden. [Authorize] [HttpPost] - public async Task CreateAsync([FromBody] CreateEnvelopeCommand envelope, CancellationToken cancellationToken) + public async Task CreateAsync([FromBody] CreateEnvelopeCommand createEnvelopeQuery, CancellationToken cancellationToken) { - await _mediator.Send(envelope, cancellationToken); + await _mediator.Send(createEnvelopeQuery, cancellationToken); return Accepted(); } }