using AutoMapper; using EnvelopeGenerator.Application.EmailTemplates; using EnvelopeGenerator.Application.EmailTemplates.Commands.Update; using EnvelopeGenerator.Application.EmailTemplates.Commands.Reset; using EnvelopeGenerator.Application.EmailTemplates.Queries.Read; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace EnvelopeGenerator.GeneratorAPI.Controllers; /// /// Controller for managing email templates. /// Steuerung zur Verwaltung von E-Mail-Vorlagen. /// [Route("api/[controller]")] [ApiController] [Authorize] public class EmailTemplateController : ControllerBase { private readonly IMapper _mapper; /// /// Initialisiert eine neue Instanz der -Klasse. /// /// /// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird. /// public EmailTemplateController(IMapper mapper) { _mapper = mapper; } /// /// 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 IActionResult Get([FromQuery] ReadEmailTemplateQuery? emailTemplate = null) { // Implementation logic here return Ok(); // Placeholder for actual implementation } /// /// Updates an email 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. /// /// Die E-Mail-Vorlagenabfrage. /// Der Aktualisierungsbefehl für die E-Mail-Vorlage. /// Wird auf Standardwert aktualisiert, wenn die Anfrage ohne http-Body gesendet wird. /// /// Gibt HTTP-Antwort zurück /// /// Sample request: /// PUT /api/EmailTemplate /// { /// "emailTemplateId": 123, /// "newContent": "Updated content" /// } /// /// 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 IActionResult Update([FromQuery] EmailTemplateQuery email, [FromBody] UpdateEmailTemplateCommand? update = null) { if (update is null) { var reset = _mapper.Map(email); // Logic for resetting the email template } else { update.EmailTemplateQuery = email; // Logic for updating the email template } return Ok(); // Placeholder for actual implementation } }