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.
|
/// Stellt eine Abfrage dar, um eine E-Mail-Vorlage zu lesen.
|
||||||
/// Diese Klasse erbt von <see cref="IEmailTemplateQuery"/>.
|
/// Diese Klasse erbt von <see cref="IEmailTemplateQuery"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest<EmailTemplateDto>
|
public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest<IEnumerable<EmailTemplateDto>>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Die eindeutige Kennung der E-Mail-Vorlage (optional).
|
/// 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.
|
/// 9 - DocumentRejected_REC_2 (für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public EmailTemplateType? Type { get; set; }
|
public EmailTemplateType? Type { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string? LangCode { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQuery, EmailTemplateDto>
|
public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQuery, IEnumerable<EmailTemplateDto>>
|
||||||
{
|
{
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
|
|
||||||
@@ -65,14 +70,21 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
|||||||
/// <param name="cancel"></param>
|
/// <param name="cancel"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="InvalidOperationException"></exception>
|
/// <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
|
var query = _repo.Query;
|
||||||
? _repo.Query.Where(temp => temp.Id == id)
|
|
||||||
: _repo.Query.Where(temp => temp.Name == request.Type!.ToString());
|
|
||||||
|
|
||||||
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