- Changed `_sqlExecutor` type in `CreateEnvelopeCommandHandler` to non-generic `ISQLExecutor`. - Updated `Handle` method to use `CreateEnvelopeAsync` for simplified parameter handling. - Restructured `CreateEnvelopeSQL` to implement `ISQL<Envelope>` with a raw SQL command for creating envelopes. - Added `SetDappeTypeMap<TModel>` method in `DependencyExtensions` for Dapper type mappings. - Improved overall code structure for better separation of concerns and maintainability.
60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
using Dapper;
|
|
using EnvelopeGenerator.Application.Contracts.SQLExecutor;
|
|
using EnvelopeGenerator.Domain.Entities;
|
|
|
|
namespace EnvelopeGenerator.Application.SQL;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class CreateEnvelopeSQL : ISQL<Envelope>
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string Raw => @"
|
|
USE [DD_ECM];
|
|
DECLARE @OUT_UID varchar(36);
|
|
|
|
EXEC [dbo].[PRSIG_API_CREATE_ENVELOPE]
|
|
@USER_ID = @UserId,
|
|
@TITLE = @Title,
|
|
@TFAEnabled = @TfaEnabled,
|
|
@MESSAGE = @Message,
|
|
@OUT_UID = @OUT_UID OUTPUT;
|
|
|
|
SELECT TOP(1) *
|
|
FROM [dbo].[TBSIG_ENVELOPE]
|
|
WHERE [ENVELOPE_UUID] = @OUT_UID;
|
|
";
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public static class Extension
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <typeparam name="TEntity"></typeparam>
|
|
/// <param name="executor"></param>
|
|
/// <param name="userId"></param>
|
|
/// <param name="title"></param>
|
|
/// <param name="message"></param>
|
|
/// <param name="tfaEnabled"></param>
|
|
/// <param name="cancellation"></param>
|
|
/// <returns></returns>
|
|
public static async Task<TEntity?> CreateEnvelopeAsync<TEntity>(this ISQLExecutor executor, int userId, string title = "", string message = "", bool tfaEnabled = false, CancellationToken cancellation = default)
|
|
where TEntity : class
|
|
{
|
|
var parameters = new DynamicParameters();
|
|
parameters.Add("@UserId", userId);
|
|
parameters.Add("@Title", title);
|
|
parameters.Add("@TfaEnabled", tfaEnabled ? 1 : 0);
|
|
parameters.Add("@Message", message);
|
|
|
|
var envelopes = await executor.Execute<TEntity, CreateEnvelopeSQL>(parameters, cancellation);
|
|
return envelopes.FirstOrDefault();
|
|
}
|
|
} |