using MediatR;
using EnvelopeGenerator.Application.Receivers.Queries;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.GeneratorAPI.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]
public async Task Get([FromQuery] ReadReceiverQuery receiver)
{
if (!receiver.HasAnyCriteria)
{
var all = await _mediator.Send(new ReadReceiverQuery());
return Ok(all);
}
var result = await _mediator.Send(receiver);
return result is null ? NotFound() : Ok(result);
}
}