using AutoMapper; using EnvelopeGenerator.Application.Contracts.Repositories; using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Common; using MediatR; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; namespace EnvelopeGenerator.Application.EmailTemplates.Queries.Read; /// /// /// public class ReadEmailTemplateQueryHandler : IRequestHandler { private readonly IMapper _mapper; private readonly IEmailTemplateRepository _repository; /// /// Initialisiert eine neue Instanz der -Klasse. /// /// /// /// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird. /// public ReadEmailTemplateQueryHandler(IMapper mapper, IEmailTemplateRepository repository) { _mapper = mapper; _repository = repository; } /// /// /// /// /// /// /// public async Task Handle(ReadEmailTemplateQuery request, CancellationToken cancellationToken) { var temp = request.Id is int id ? await _repository.ReadByIdAsync(id) : request.Type is Constants.EmailTemplateType type ? await _repository.ReadByNameAsync(type) : throw new InvalidOperationException("Either a valid integer ID or a valid EmailTemplateType must be provided in the request."); var res = _mapper.Map(temp); return res; } }