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"); } ///