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.
This commit is contained in:
@@ -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 EnvelopeGenerator.Application.Envelopes.Queries;
|
||||||
using MediatR;
|
using MediatR;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using EnvelopeGenerator.Application.Common.Interfaces.Services;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||||
|
|
||||||
@@ -29,21 +27,16 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
|||||||
public class EnvelopeController : ControllerBase
|
public class EnvelopeController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<EnvelopeController> _logger;
|
private readonly ILogger<EnvelopeController> _logger;
|
||||||
[Obsolete("Use MediatR")]
|
|
||||||
private readonly IEnvelopeService _envelopeService;
|
|
||||||
private readonly IMediator _mediator;
|
private readonly IMediator _mediator;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Erstellt eine neue Instanz des EnvelopeControllers.
|
/// Erstellt eine neue Instanz des EnvelopeControllers.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param>
|
/// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param>
|
||||||
/// <param name="envelopeService">Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.</param>
|
|
||||||
/// <param name="mediator"></param>
|
/// <param name="mediator"></param>
|
||||||
[Obsolete("Use MediatR")]
|
public EnvelopeController(ILogger<EnvelopeController> logger, IMediator mediator)
|
||||||
public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService, IMediator mediator)
|
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_envelopeService = envelopeService;
|
|
||||||
_mediator = mediator;
|
_mediator = mediator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,81 +52,40 @@ public class EnvelopeController : ControllerBase
|
|||||||
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Obsolete("Use MediatR")]
|
|
||||||
public async Task<IActionResult> GetAsync([FromQuery] ReadEnvelopeQuery envelope)
|
public async Task<IActionResult> GetAsync([FromQuery] ReadEnvelopeQuery envelope)
|
||||||
{
|
{
|
||||||
if (User.GetId() is int intId)
|
var result = await _mediator.Send(envelope.Authorize(User.GetId()));
|
||||||
return await _envelopeService.ReadByUserAsync(intId, min_status: envelope.Status?.Min, max_status: envelope.Status?.Max).ThenAsync(
|
return result.Any() ? Ok(result) : NotFound();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ruft das Ergebnis eines Dokuments basierend auf der ID ab.
|
/// Ruft das Ergebnis eines Dokuments basierend auf der ID ab.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id">Die eindeutige ID des Umschlags.</param>
|
/// <param name="query"></param>
|
||||||
/// <param name="view">Gibt an, ob das Dokument inline angezeigt werden soll (true) oder als Download bereitgestellt wird (false).</param>
|
/// <param name="view">Gibt an, ob das Dokument inline angezeigt werden soll (true) oder als Download bereitgestellt wird (false).</param>
|
||||||
/// <returns>Eine IActionResult-Instanz, die das Dokument oder einen Fehlerstatus enthält.</returns>
|
/// <returns>Eine IActionResult-Instanz, die das Dokument oder einen Fehlerstatus enthält.</returns>
|
||||||
/// <response code="200">Das Dokument wurde erfolgreich abgerufen.</response>
|
/// <response code="200">Das Dokument wurde erfolgreich abgerufen.</response>
|
||||||
/// <response code="404">Das Dokument wurde nicht gefunden oder ist nicht verfügbar.</response>
|
/// <response code="404">Das Dokument wurde nicht gefunden oder ist nicht verfügbar.</response>
|
||||||
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
||||||
[HttpGet("doc-result")]
|
[HttpGet("doc-result")]
|
||||||
[Obsolete("Use MediatR")]
|
public async Task<IActionResult> GetDocResultAsync([FromQuery] ReadEnvelopeQuery query, [FromQuery] bool view = false)
|
||||||
public async Task<IActionResult> GetDocResultAsync([FromQuery] int id, [FromQuery] bool view = false)
|
|
||||||
{
|
{
|
||||||
if (User.GetId() is int intId)
|
var envelopes = await _mediator.Send(query.Authorize(User.GetId()));
|
||||||
return await _envelopeService.ReadByUserAsync(intId).ThenAsync(
|
var envelope = envelopes.FirstOrDefault();
|
||||||
Success: envelopes =>
|
|
||||||
{
|
|
||||||
var envelope = envelopes.Where(e => e.Id == id).FirstOrDefault();
|
|
||||||
|
|
||||||
if (envelope is null)
|
if (envelope is null)
|
||||||
return NotFound("Envelope not available.");
|
return NotFound("Envelope not available.");
|
||||||
else if (envelope?.DocResult is null)
|
if (envelope.DocResult is null)
|
||||||
return NotFound("The document has not been fully signed or the result has not yet been released.");
|
return NotFound("The document has not been fully signed or the result has not yet been released.");
|
||||||
else
|
|
||||||
{
|
|
||||||
if (view)
|
if (view)
|
||||||
{
|
{
|
||||||
Response.Headers.Append("Content-Disposition", "inline; filename=\"" + envelope.Uuid + ".pdf\"");
|
Response.Headers.Append("Content-Disposition", "inline; filename=\"" + envelope.Uuid + ".pdf\"");
|
||||||
return File(envelope.DocResult, "application/pdf");
|
return File(envelope.DocResult, "application/pdf");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return File(envelope.DocResult, "application/pdf", $"{envelope.Uuid}.pdf");
|
return File(envelope.DocResult, "application/pdf", $"{envelope.Uuid}.pdf");
|
||||||
}
|
}
|
||||||
},
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
|
|||||||
Reference in New Issue
Block a user