using DigitalData.Core.Abstraction.Application.Repository; using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Application.Exceptions; using EnvelopeGenerator.Domain; using EnvelopeGenerator.Domain.Entities; using MediatR; namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Update; /// /// /// public class UpdateEmailTemplateCommandHandler : IRequestHandler { private readonly IRepository _repository; /// /// /// /// public UpdateEmailTemplateCommandHandler(IRepository repository) { _repository = repository; } /// /// /// /// /// /// /// /// [Obsolete("Use Read-method returning IReadQuery instead.")] public async Task Handle(UpdateEmailTemplateCommand request, CancellationToken cancel) { EmailTemplateDto? temp; if (request.EmailTemplateQuery?.Id is int id) { temp = await _repository.ReadOrDefaultAsync(t => t.Id == id, single: false, cancel); } else if (request!.EmailTemplateQuery!.Type is Constants.EmailTemplateType type) { temp = await _repository.ReadOrDefaultAsync(t => t.Name == type.ToString(), single: false, cancel); } else { throw new InvalidOperationException("Both id and type is null. Id: " + request.EmailTemplateQuery.Id +". Type: " + request.EmailTemplateQuery.Type.ToString()); } if (temp == null) { throw new NotFoundException(); } if (request.Body is not null) temp.Body = request.Body; if (request.Subject is not null) temp.Subject = request.Subject; await _repository.UpdateAsync(temp, t => t.Id == temp.Id, cancel); } }