using AutoMapper; using EnvelopeGenerator.Application.EmailTemplates.Commands; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using MediatR; using EnvelopeGenerator.Application.Common.Dto; using DigitalData.Core.Abstraction.Application.Repository; using EnvelopeGenerator.Domain.Entities; using Microsoft.EntityFrameworkCore; using EnvelopeGenerator.Domain.Constants; using EnvelopeGenerator.Application.EmailTemplates.Queries; namespace EnvelopeGenerator.API.Controllers; /// /// Controller for managing temp templates. /// Steuerung zur Verwaltung von E-Mail-Vorlagen. /// /// /// Initialisiert eine neue Instanz der -Klasse. /// /// /// Die Mediator-Instanz, die zum Senden von Befehlen und Abfragen verwendet wird. /// [Route("api/[controller]")] [ApiController] [Authorize(Policy = AuthPolicy.Sender)] public class EmailTemplateController(IMediator mediator) : ControllerBase { /// /// Ruft E-Mail-Vorlagen basierend auf der angegebenen Abfrage ab. /// Gibt alles zurück, wenn keine Id- oder Typ-Informationen eingegeben wurden. /// /// Die Abfrageparameter zum Abrufen von E-Mail-Vorlagen. /// /// Gibt HTTP-Antwort zurück /// /// Sample request: /// GET /api/EmailTemplate?emailTemplateId=123 /// /// Wenn die E-Mail-Vorlagen erfolgreich abgerufen werden. /// Wenn die Abfrageparameter ungültig sind. /// Wenn der Benutzer nicht authentifiziert ist. /// Wenn die gesuchte Abfrage nicht gefunden wird. [HttpGet] public async Task Get([FromQuery] ReadEmailTemplateQuery emailTemplate, CancellationToken cancel) { var result = await mediator.Send(emailTemplate, cancel); return Ok(result); } /// /// Updates an temp template or resets it if no update command is provided. /// Aktualisiert eine E-Mail-Vorlage oder setzt sie zurück, wenn kein Aktualisierungsbefehl angegeben ist. /// /// /// /// /// Wenn die E-Mail-Vorlage erfolgreich aktualisiert oder zurückgesetzt wird. /// Wenn die Abfrage ohne einen String gesendet wird. /// Wenn der Benutzer nicht authentifiziert ist. /// Wenn die gesuchte Abfrage nicht gefunden wird. [HttpPut] public async Task Update([FromBody] UpdateEmailTemplateCommand update, CancellationToken cancel) { await mediator.Send(update, cancel); return Ok(); } }