Introduced IHasChangedWhen interface to EnvelopeReceiver and History. Added HasEmailAndName property to EnvelopeReceiver. Updated AutoMapperAuditingExtensions to map ChangedWhen to UTC. Removed redundant using statements and fixed formatting.
77 lines
3.3 KiB
C#
77 lines
3.3 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// Controller for managing temp templates.
|
|
/// Steuerung zur Verwaltung von E-Mail-Vorlagen.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Initialisiert eine neue Instanz der <see cref="EmailTemplateController"/>-Klasse.
|
|
/// </remarks>
|
|
/// <param name="mapper">
|
|
/// <param name="repository">
|
|
/// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird.
|
|
/// </param>
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
[Authorize(Policy = AuthPolicy.Sender)]
|
|
public class EmailTemplateController(IMapper mapper, IRepository<EmailTemplate> repository, IMediator mediator) : ControllerBase
|
|
{
|
|
/// <summary>
|
|
/// Ruft E-Mail-Vorlagen basierend auf der angegebenen Abfrage ab.
|
|
/// Gibt alles zurück, wenn keine Id- oder Typ-Informationen eingegeben wurden.
|
|
/// </summary>
|
|
/// <param name="emailTemplate">Die Abfrageparameter zum Abrufen von E-Mail-Vorlagen.</param>
|
|
/// <returns>Gibt HTTP-Antwort zurück</returns>
|
|
/// <remarks>
|
|
/// Sample request:
|
|
/// GET /api/EmailTemplate?emailTemplateId=123
|
|
/// </remarks>
|
|
/// <response code="200">Wenn die E-Mail-Vorlagen erfolgreich abgerufen werden.</response>
|
|
/// <response code="400">Wenn die Abfrageparameter ungültig sind.</response>
|
|
/// <response code="401">Wenn der Benutzer nicht authentifiziert ist.</response>
|
|
/// <response code="404">Wenn die gesuchte Abfrage nicht gefunden wird.</response>
|
|
[HttpGet]
|
|
public async Task<IActionResult> Get([FromQuery] ReadEmailTemplateQuery? emailTemplate = null)
|
|
{
|
|
if (emailTemplate is null || (emailTemplate.Id is null && emailTemplate.Type is null))
|
|
{
|
|
var temps = await repository.Query.ToListAsync();
|
|
return Ok(mapper.Map<IEnumerable<EmailTemplateDto>>(temps));
|
|
}
|
|
else
|
|
{
|
|
var temp = await mediator.Send(emailTemplate);
|
|
return temp is null ? NotFound() : Ok(temp);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="update"></param>
|
|
/// <param name="cancel"></param>
|
|
/// <returns></returns>
|
|
/// <response code="200">Wenn die E-Mail-Vorlage erfolgreich aktualisiert oder zurückgesetzt wird.</response>
|
|
/// <response code="400">Wenn die Abfrage ohne einen String gesendet wird.</response>
|
|
/// <response code="401">Wenn der Benutzer nicht authentifiziert ist.</response>
|
|
/// <response code="404">Wenn die gesuchte Abfrage nicht gefunden wird.</response>
|
|
[HttpPut]
|
|
public async Task<IActionResult> Update([FromBody] UpdateEmailTemplateCommand update, CancellationToken cancel)
|
|
{
|
|
await mediator.Send(update, cancel);
|
|
return Ok();
|
|
}
|
|
} |