using DigitalData.Core.Abstraction.Application.DTO; using DigitalData.Core.API; using EnvelopeGenerator.Application.Receivers.Queries; using EnvelopeGenerator.Domain.Entities; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using EnvelopeGenerator.Application.Receivers.Commands; using EnvelopeGenerator.Application.Common.Dto.Receiver; using EnvelopeGenerator.Application.Common.Interfaces.Services; namespace EnvelopeGenerator.GeneratorAPI.Controllers; /// /// Controller für die Verwaltung von Empfängern. /// /// /// Dieser Controller bietet Endpunkte für CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) /// sowie zusätzliche Funktionen wie das Abrufen von Empfängern basierend auf E-Mail-Adresse oder Signatur. /// [Route("api/[controller]")] [ApiController] [Authorize] [Obsolete("Use MediatR")] public class ReceiverController : CRUDControllerBaseWithErrorHandling { /// /// Initialisiert eine neue Instanz des -Controllers. /// /// Der Logger für die Protokollierung. /// Der Dienst für Empfängeroperationen. public ReceiverController(ILogger logger, IReceiverService service) : base(logger, service) { } /// /// Ruft eine Liste von Empfängern ab, basierend auf den angegebenen Abfrageparametern. /// /// Die Abfrageparameter, einschließlich E-Mail-Adresse und Signatur. /// Eine Liste von Empfängern oder ein Fehlerstatus. [HttpGet] public async Task Get([FromQuery] ReadReceiverQuery receiver) { if (receiver.Id is null && receiver.EmailAddress is null && receiver.Signature is null) return await base.GetAll(); if (receiver.Id is int id) return await _service.ReadByIdAsync(id).ThenAsync( Success: Ok, Fail: IActionResult (msg, ntc) => { return NotFound(); }); return await _service.ReadByAsync(emailAddress: receiver.EmailAddress, signature: receiver.Signature).ThenAsync( Success: Ok, Fail: IActionResult (msg, ntc) => { return NotFound(); }); } #region REMOVED ENDPOINTS /// /// Diese Methode ist deaktiviert und wird nicht verwendet. /// [NonAction] public override Task GetAll() => base.GetAll(); /// /// Diese Methode ist deaktiviert und wird nicht verwendet. /// [NonAction] public override Task Delete([FromRoute] int id) => base.Delete(id); /// /// Diese Methode ist deaktiviert und wird nicht verwendet. /// [NonAction] public override Task Update(UpdateReceiverCommand updateDto) => base.Update(updateDto); /// /// Diese Methode ist deaktiviert und wird nicht verwendet. /// [NonAction] public override Task Create(CreateReceiverCommand createDto) { return base.Create(createDto); } /// /// Diese Methode ist deaktiviert und wird nicht verwendet. /// [NonAction] public override Task GetById([FromRoute] int id) { return base.GetById(id); } #endregion }