Verbesserung von EnvelopeReceiverController mit neuen Funktionen

Die Klasse EnvelopeReceiverController wurde aktualisiert, um die Funktionalität und Dokumentation zu verbessern. Es wurde eine neue using-Direktive hinzugefügt und die Namespace-Deklaration verschoben. Einführung der XML-Dokumentation in deutscher Sprache für mehr Klarheit. Die GetEnvelopeReceiver-Methode wurde so geändert, dass sie einen ReadEnvelopeReceiverQuery-Parameter akzeptiert, wodurch ihre Signatur verbessert wurde. Verbesserte Fehlerbehandlung und Protokollierung bei allen Methoden. GetSecretAsync hinzugefügt, um geheime Informationen nach UUID abzurufen. CreateAsync wurde aktualisiert, um die createEnvelopeQuery über den Mediator zu senden und einen akzeptierten Status zurückzugeben.
This commit is contained in:
Developer 02 2025-04-10 16:07:08 +02:00
parent e7bc43b339
commit ec76014ce7

View File

@ -1,12 +1,19 @@
using DigitalData.Core.DTO;
using EnvelopeGenerator.Application.Contracts.Services;
using EnvelopeGenerator.Application.EnvelopeReceivers.Commands.Create;
using EnvelopeGenerator.Application.EnvelopeReceivers.Queries.Read;
using MediatR;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.GeneratorAPI.Controllers
{
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
/// <summary>
/// Controller für die Verwaltung von Umschlagempfängern.
/// </summary>
/// <remarks>
/// Dieser Controller bietet Endpunkte für das Abrufen und Verwalten von Umschlagempfängerdaten.
/// </remarks>
[Route("api/[controller]")]
[Authorize]
[ApiController]
@ -18,6 +25,12 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
private readonly IMediator _mediator;
/// <summary>
/// Konstruktor für den EnvelopeReceiverController.
/// </summary>
/// <param name="logger">Logger-Instanz zur Protokollierung von Informationen und Fehlern.</param>
/// <param name="envelopeReceiverService">Service zur Verwaltung von Umschlagempfängern.</param>
/// <param name="mediator">Mediator-Instanz zur Verarbeitung von Befehlen und Abfragen.</param>
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator)
{
_logger = logger;
@ -25,8 +38,17 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
_mediator = mediator;
}
/// <summary>
/// Ruft eine Liste von Umschlagempfängern basierend auf den angegebenen Abfrageparametern ab.
/// </summary>
/// <param name="envelopeReceiver">Die Abfrageparameter, die den Status und andere Filterkriterien enthalten.</param>
/// <returns>Eine HTTP-Antwort mit der Liste der gefundenen Umschlagempfänger oder einem Fehlerstatus.</returns>
/// <remarks>
/// Dieser Endpunkt ermöglicht es, Umschlagempfänger basierend auf dem Benutzernamen und optionalen Statusfiltern abzurufen.
/// Wenn der Benutzername nicht ermittelt werden kann, wird ein Serverfehler zurückgegeben.
/// </remarks>
[HttpGet]
public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] int? min_status = null, [FromQuery] int? max_status = null, [FromQuery] int[]? ignore_status = null)
public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] ReadEnvelopeReceiverQuery envelopeReceiver)
{
try
{
@ -39,9 +61,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
return StatusCode(StatusCodes.Status500InternalServerError);
}
ignore_status ??= Array.Empty<int>();
return await _erService.ReadByUsernameAsync(username: username, min_status: min_status, max_status: max_status, ignore_statuses: ignore_status).ThenAsync(
return await _erService.ReadByUsernameAsync(username: username, min_status: envelopeReceiver.Status.Min, max_status: envelopeReceiver.Status.Min, ignore_statuses: envelopeReceiver.Status.Ignore ?? Array.Empty<int>()).ThenAsync(
Success: Ok,
Fail: IActionResult (msg, ntc) =>
{
@ -56,6 +76,15 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
}
}
/// <summary>
/// Ruft den Namen des letzten verwendeten Empfängers basierend auf der angegebenen E-Mail-Adresse ab.
/// </summary>
/// <param name="mail">Die E-Mail-Adresse des Empfängers.</param>
/// <returns>Eine HTTP-Antwort mit dem Namen des Empfängers oder einem Fehlerstatus.</returns>
/// <remarks>
/// Dieser Endpunkt ermöglicht es, den Namen des letzten Empfängers abzurufen, der mit der angegebenen E-Mail-Adresse verknüpft ist.
/// Wenn kein Empfänger gefunden wird, wird ein leerer String zurückgegeben.
/// </remarks>
[HttpGet("receiver-name/{mail}")]
public async Task<IActionResult> GetReceiverName([FromRoute] string mail)
{
@ -79,6 +108,15 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
}
}
/// <summary>
/// Ruft geheime Informationen basierend auf der angegebenen UUID ab.
/// </summary>
/// <param name="uuid">Die eindeutige Kennung (UUID), die verwendet wird, um die geheimen Informationen abzurufen.</param>
/// <returns>Eine HTTP-Antwort mit den geheimen Informationen oder einem Fehlerstatus.</returns>
/// <remarks>
/// Dieser Endpunkt ermöglicht es, geheime Informationen zu einem Umschlagempfänger basierend auf der UUID abzurufen.
/// Wenn keine Informationen gefunden werden, wird ein entsprechender Fehlerstatus zurückgegeben.
/// </remarks>
[HttpGet("secret")]
[Authorize]
public async Task<IActionResult> GetSecretAsync([FromQuery] string uuid)
@ -150,4 +188,3 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
return Accepted();
}
}
}