using MediatR; using EnvelopeGenerator.Application.Receivers.Queries; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace EnvelopeGenerator.Server.Controllers; /// /// Controller für die Verwaltung von Empfängern. /// /// /// Dieser Controller bietet Endpunkte für das Abrufen von Empfängern basierend auf E-Mail-Adresse oder Signatur. /// [Route("api/[controller]")] [ApiController] [Authorize] public class ReceiverController : ControllerBase { private readonly IMediator _mediator; /// /// Initialisiert eine neue Instanz des -Controllers. /// /// Mediator für Anfragen. public ReceiverController(IMediator mediator) { _mediator = mediator; } /// /// 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] [Authorize(AuthenticationSchemes = AuthScheme.Sender)] public async Task Get([FromQuery] ReadReceiverQuery? receiver = null, [FromQuery] bool onlyEmailAddress = false) { var result = await _mediator.Send(receiver ?? new ReadReceiverQuery()); if (result is null) return NotFound(); else if (onlyEmailAddress) return Ok(result.Select(r => r.EmailAddress).ToList()); else return Ok(result); } }