Refactor email template query to support multiple results
ReadEmailTemplateQuery now returns a collection of EmailTemplateDto, with optional filtering by Id, Type, and new LangCode property. Query handler updated to return all matching templates instead of a single result, and NotFoundException handling was removed.
This commit is contained in:
@@ -13,7 +13,7 @@ namespace EnvelopeGenerator.Application.EmailTemplates.Queries;
|
||||
/// Stellt eine Abfrage dar, um eine E-Mail-Vorlage zu lesen.
|
||||
/// Diese Klasse erbt von <see cref="IEmailTemplateQuery"/>.
|
||||
/// </summary>
|
||||
public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest<EmailTemplateDto>
|
||||
public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest<IEnumerable<EmailTemplateDto>>
|
||||
{
|
||||
/// <summary>
|
||||
/// Die eindeutige Kennung der E-Mail-Vorlage (optional).
|
||||
@@ -34,12 +34,17 @@ public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest<EmailTempla
|
||||
/// 9 - DocumentRejected_REC_2 (für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
||||
/// </summary>
|
||||
public EmailTemplateType? Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string? LangCode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQuery, EmailTemplateDto>
|
||||
public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQuery, IEnumerable<EmailTemplateDto>>
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
|
||||
@@ -65,14 +70,21 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
||||
/// <param name="cancel"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
public async Task<EmailTemplateDto> Handle(ReadEmailTemplateQuery request, CancellationToken cancel)
|
||||
public async Task<IEnumerable<EmailTemplateDto>> Handle(ReadEmailTemplateQuery request, CancellationToken cancel)
|
||||
{
|
||||
var query = request.Id is int id
|
||||
? _repo.Query.Where(temp => temp.Id == id)
|
||||
: _repo.Query.Where(temp => temp.Name == request.Type!.ToString());
|
||||
var query = _repo.Query;
|
||||
|
||||
var entity = await query.FirstOrDefaultAsync(cancel) ?? throw new NotFoundException();
|
||||
if (request.Id is int id)
|
||||
query = query.Where(temp => temp.Id == id);
|
||||
|
||||
return _mapper.Map<EmailTemplateDto>(entity);
|
||||
if (request.Type is EmailTemplateType type)
|
||||
query = query.Where(temp => temp.Name == type.ToString());
|
||||
|
||||
if (request.LangCode is string langCode)
|
||||
query = query.Where(temp => temp.LangCode == langCode);
|
||||
|
||||
var entity = await query.ToListAsync(cancel);
|
||||
|
||||
return _mapper.Map<IEnumerable<EmailTemplateDto>>(entity);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user