From c2d5bd65aad4ba53ae7b4e065ac5c402a7f59f4c Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 11 Feb 2026 11:57:47 +0100 Subject: [PATCH] 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. --- .../Queries/ReadEmailTemplateQuery.cs | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/EnvelopeGenerator.Application/EmailTemplates/Queries/ReadEmailTemplateQuery.cs b/EnvelopeGenerator.Application/EmailTemplates/Queries/ReadEmailTemplateQuery.cs index a64f4778..11c97cfa 100644 --- a/EnvelopeGenerator.Application/EmailTemplates/Queries/ReadEmailTemplateQuery.cs +++ b/EnvelopeGenerator.Application/EmailTemplates/Queries/ReadEmailTemplateQuery.cs @@ -13,7 +13,7 @@ namespace EnvelopeGenerator.Application.EmailTemplates.Queries; /// Stellt eine Abfrage dar, um eine E-Mail-Vorlage zu lesen. /// Diese Klasse erbt von . /// -public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest +public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest> { /// /// Die eindeutige Kennung der E-Mail-Vorlage (optional). @@ -34,12 +34,17 @@ public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest public EmailTemplateType? Type { get; set; } + + /// + /// + /// + public string? LangCode { get; set; } } /// /// /// -public class ReadEmailTemplateQueryHandler : IRequestHandler +public class ReadEmailTemplateQueryHandler : IRequestHandler> { private readonly IMapper _mapper; @@ -65,14 +70,21 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler /// /// - public async Task Handle(ReadEmailTemplateQuery request, CancellationToken cancel) + public async Task> 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; + + if (request.Id is int id) + query = query.Where(temp => temp.Id == id); + + 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.FirstOrDefaultAsync(cancel) ?? throw new NotFoundException(); + var entity = await query.ToListAsync(cancel); - return _mapper.Map(entity); + return _mapper.Map>(entity); } } \ No newline at end of file