using AutoMapper;
using Dapper;
using EnvelopeGenerator.Application.Contracts.SQLExecutor;
using EnvelopeGenerator.Domain.Entities;
using MediatR;
using Microsoft.Data.SqlClient;
namespace EnvelopeGenerator.Application.Envelopes.Commands;
///
///
///
public class CreateEnvelopeCommandHandler : IRequestHandler
{
private readonly ISQLExecutor _sqlExecutor;
private readonly IMapper _mapper;
///
///
///
///
///
public CreateEnvelopeCommandHandler(ISQLExecutor sqlExecutor, IMapper mapper)
{
_sqlExecutor = sqlExecutor;
_mapper = mapper;
}
///
///
///
///
///
///
public async Task Handle(CreateEnvelopeCommand request, CancellationToken cancellationToken)
{
var parameters = new DynamicParameters();
parameters.Add("@UserId", request.UserId);
parameters.Add("@Title", request.Title);
parameters.Add("@TfaEnabled", request.TFAEnabled ? 1 : 0);
parameters.Add("@Message", request.Message);
var envelopes = await _sqlExecutor.Execute(parameters, cancellationToken);
return _mapper.Map(envelopes.FirstOrDefault());
}
}