From 041d98ca7800691a20f769ac17a8e97dbad08f16 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 28 Jan 2026 13:41:43 +0100 Subject: [PATCH] Refactor EnvelopeController to use MediatR exclusively Removed all usage of the obsolete IEnvelopeService from EnvelopeController, refactoring endpoints to use MediatR with ReadEnvelopeQuery. Simplified GetAsync and GetDocResultAsync logic, updated method signatures, and eliminated obsolete code paths and attributes. Cleaned up unused usings and updated constructor dependencies. --- .../Controllers/EnvelopeController.cs | 84 ++++--------------- 1 file changed, 18 insertions(+), 66 deletions(-) diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs index 6f8982e9..da74235b 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs @@ -1,11 +1,9 @@ -using DigitalData.Core.Abstraction.Application.DTO; -using EnvelopeGenerator.Application.Envelopes.Commands; +using EnvelopeGenerator.Application.Envelopes.Commands; using EnvelopeGenerator.Application.Envelopes.Queries; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; -using EnvelopeGenerator.Application.Common.Interfaces.Services; namespace EnvelopeGenerator.GeneratorAPI.Controllers; @@ -29,21 +27,16 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers; public class EnvelopeController : ControllerBase { private readonly ILogger _logger; - [Obsolete("Use MediatR")] - private readonly IEnvelopeService _envelopeService; private readonly IMediator _mediator; /// /// Erstellt eine neue Instanz des EnvelopeControllers. /// /// Der Logger, der für das Protokollieren von Informationen verwendet wird. - /// Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist. /// - [Obsolete("Use MediatR")] - public EnvelopeController(ILogger logger, IEnvelopeService envelopeService, IMediator mediator) + public EnvelopeController(ILogger logger, IMediator mediator) { _logger = logger; - _envelopeService = envelopeService; _mediator = mediator; } @@ -59,80 +52,39 @@ public class EnvelopeController : ControllerBase /// Ein unerwarteter Fehler ist aufgetreten. [Authorize] [HttpGet] - [Obsolete("Use MediatR")] public async Task GetAsync([FromQuery] ReadEnvelopeQuery envelope) { - if (User.GetId() is int intId) - return await _envelopeService.ReadByUserAsync(intId, min_status: envelope.Status?.Min, max_status: envelope.Status?.Max).ThenAsync( - Success: envelopes => - { - if (envelope.Id is int id) - envelopes = envelopes.Where(e => e.Id == id); - - if (envelope.Status is EnvelopeStatusQuery status) - envelopes = envelopes.Where(e => e.Status == status); - - if (envelope.Uuid is string uuid) - envelopes = envelopes.Where(e => e.Uuid == uuid); - - return envelopes.Any() ? Ok(envelopes) : NotFound(); - }, - Fail: IActionResult (msg, ntc) => - { - _logger.LogNotice(ntc); - return StatusCode(StatusCodes.Status500InternalServerError); - }); - else - { - _logger.LogError("Trotz erfolgreicher Autorisierung wurde die Benutzer-ID nicht als Ganzzahl erkannt. Dies könnte auf eine fehlerhafte Erstellung der Anspruchsliste zurückzuführen sein."); - return StatusCode(StatusCodes.Status500InternalServerError); - } + var result = await _mediator.Send(envelope.Authorize(User.GetId())); + return result.Any() ? Ok(result) : NotFound(); } /// /// Ruft das Ergebnis eines Dokuments basierend auf der ID ab. /// - /// Die eindeutige ID des Umschlags. + /// /// Gibt an, ob das Dokument inline angezeigt werden soll (true) oder als Download bereitgestellt wird (false). /// Eine IActionResult-Instanz, die das Dokument oder einen Fehlerstatus enthält. /// Das Dokument wurde erfolgreich abgerufen. /// Das Dokument wurde nicht gefunden oder ist nicht verfügbar. /// Ein unerwarteter Fehler ist aufgetreten. [HttpGet("doc-result")] - [Obsolete("Use MediatR")] - public async Task GetDocResultAsync([FromQuery] int id, [FromQuery] bool view = false) + public async Task GetDocResultAsync([FromQuery] ReadEnvelopeQuery query, [FromQuery] bool view = false) { - if (User.GetId() is int intId) - return await _envelopeService.ReadByUserAsync(intId).ThenAsync( - Success: envelopes => - { - var envelope = envelopes.Where(e => e.Id == id).FirstOrDefault(); + var envelopes = await _mediator.Send(query.Authorize(User.GetId())); + var envelope = envelopes.FirstOrDefault(); - if (envelope is null) - return NotFound("Envelope not available."); - else if (envelope?.DocResult is null) - return NotFound("The document has not been fully signed or the result has not yet been released."); - else - { - if (view) - { - Response.Headers.Append("Content-Disposition", "inline; filename=\"" + envelope.Uuid + ".pdf\""); - return File(envelope.DocResult, "application/pdf"); - } - else - return File(envelope.DocResult, "application/pdf", $"{envelope.Uuid}.pdf"); - } - }, - Fail: IActionResult (msg, ntc) => - { - _logger.LogNotice(ntc); - return StatusCode(StatusCodes.Status500InternalServerError); - }); - else + if (envelope is null) + return NotFound("Envelope not available."); + if (envelope.DocResult is null) + return NotFound("The document has not been fully signed or the result has not yet been released."); + + if (view) { - _logger.LogError("Trotz erfolgreicher Autorisierung wurde die Benutzer-ID nicht als Ganzzahl erkannt. Dies könnte auf eine fehlerhafte Erstellung der Anspruchsliste zurückzuführen sein."); - return StatusCode(StatusCodes.Status500InternalServerError); + Response.Headers.Append("Content-Disposition", "inline; filename=\"" + envelope.Uuid + ".pdf\""); + return File(envelope.DocResult, "application/pdf"); } + + return File(envelope.DocResult, "application/pdf", $"{envelope.Uuid}.pdf"); } ///