30 lines
1.3 KiB
C#
30 lines
1.3 KiB
C#
using Dapper;
|
|
using EnvelopeGenerator.Application.Common.SQL;
|
|
using EnvelopeGenerator.Application.Interfaces.SQLExecutor;
|
|
using EnvelopeGenerator.Domain.Entities;
|
|
using Microsoft.Data.SqlClient;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace EnvelopeGenerator.Infrastructure.Executor;
|
|
|
|
public class DocumentExecutor : SQLExecutor, IDocumentExecutor
|
|
{
|
|
public DocumentExecutor(IServiceProvider provider, IOptions<SQLExecutorParams> sqlExecutorParamsOptions) : base(provider, sqlExecutorParamsOptions)
|
|
{
|
|
}
|
|
|
|
public async Task<Document> CreateDocumentAsync(string base64, string envelope_uuid, CancellationToken cancellation = default)
|
|
{
|
|
using var connection = new SqlConnection(Params.ConnectionString);
|
|
var sql = Provider.GetRequiredService<DocumentCreateReadSQL>();
|
|
var formattedSql = string.Format(sql.Raw, envelope_uuid.ToSqlParam());
|
|
var param = DocumentCreateReadSQL.CreateParmas(base64);
|
|
await connection.OpenAsync(cancellation);
|
|
var documents = await connection.QueryAsync<Document>(formattedSql, param);
|
|
return documents.FirstOrDefault()
|
|
?? throw new InvalidOperationException($"Document creation failed. Parameters:" +
|
|
$"base64={base64}, envelope_uuid='{envelope_uuid}'.");
|
|
}
|
|
}
|