using EnvelopeGenerator.Application.Contracts.Services; using EnvelopeGenerator.Application.EnvelopeHistories.Queries.Read; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.GeneratorAPI.Controllers; /// /// Dieser Controller stellt Endpunkte für den Zugriff auf die Umschlaghistorie bereit. /// [Route("api/[controller]")] [ApiController] [Authorize] public class HistoryController : ControllerBase { private readonly ILogger _logger; private readonly IEnvelopeHistoryService _service; /// /// Konstruktor für den HistoryController. /// /// Der Logger, der für das Protokollieren von Informationen verwendet wird. /// Der Dienst, der für die Verarbeitung der Umschlaghistorie verantwortlich ist. public HistoryController(ILogger logger, IEnvelopeHistoryService service) { _logger = logger; _service = service; } /// /// Ruft die gesamte Umschlaghistorie basierend auf den angegebenen Abfrageparametern ab. /// /// Die Abfrageparameter, die die Filterkriterien für die Umschlaghistorie definieren. /// Eine Liste von Historieneinträgen, die den angegebenen Kriterien entsprechen, oder nur der letzte Eintrag. /// Die Anfrage war erfolgreich, und die Umschlaghistorie wird zurückgegeben. /// Die Anfrage war ungültig oder unvollständig. /// Der Benutzer ist nicht authentifiziert. /// Der Benutzer hat keine Berechtigung, auf die Ressource zuzugreifen. /// Ein unerwarteter Fehler ist aufgetreten. [HttpGet] [Authorize] public async Task GetAllAsync([FromQuery] ReadEnvelopeHistoryQuery history) { ReferenceType? refTypEnum = history.ReferenceType; bool withReceiver = false; bool withSender = false; switch (refTypEnum) { case ReferenceType.Receiver: withReceiver = true; break; case ReferenceType.Sender: withSender = true; break; } var histories = await _service.ReadAsync( envelopeId: history.EnvelopeId, referenceType: refTypEnum, withSender: withSender, withReceiver: withReceiver); return Ok(histories); } }