using AutoMapper; using MediatR; using Microsoft.Extensions.DependencyInjection; using DigitalData.Core.Abstraction.Application.Repository; using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Application.Common.Dto; using EnvelopeGenerator.Application.Common.Interfaces.SQLExecutor; namespace EnvelopeGenerator.Application.Envelopes.Commands; /// /// /// public class CreateEnvelopeCommandHandler : IRequestHandler { private readonly IServiceProvider _provider; private IEnvelopeExecutor Executor => _provider.GetRequiredService(); private IRepository Repository => _provider.GetRequiredService>(); private readonly IMapper _mapper; /// /// /// /// /// public CreateEnvelopeCommandHandler(IServiceProvider provider, IMapper mapper) { _provider = provider; _mapper = mapper; } /// /// /// /// /// /// public async Task Handle(CreateEnvelopeCommand request, CancellationToken cancel) { var envelope = request.UseSQLExecutor ? await Executor.CreateEnvelopeAsync(request.UserId, request.Title, request.Message, request.TFAEnabled, cancel) : await Repository.CreateAsync(request, cancel); return _mapper.Map(envelope); } }