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