Update signature handling and database connection management
- Changed `Signature` properties from `int` to `double` for precise positioning. - Added necessary using directives in `EnvelopeReceiverController.cs` for database operations. - Introduced a private `_cnnStr` field in `EnvelopeReceiverController` to store the connection string. - Updated the constructor to accept `IOptions<ConnectionString>` for dependency injection of the connection string. - Added a SQL command block to handle document element additions using a stored procedure. - Configured the `ConnectionString` class in `Program.cs` to bind the connection string from app settings. - Created a new `ConnectionString` class to manage the connection string value.
This commit is contained in:
@@ -7,9 +7,13 @@ using EnvelopeGenerator.Application.EnvelopeReceivers.Commands.Create;
|
||||
using EnvelopeGenerator.Application.EnvelopeReceivers.Queries.Read;
|
||||
using EnvelopeGenerator.Application.Envelopes.Queries.ReceiverName;
|
||||
using EnvelopeGenerator.Domain.Entities;
|
||||
using EnvelopeGenerator.GeneratorAPI.Models;
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Data;
|
||||
using System.Threading.Channels;
|
||||
|
||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||
@@ -39,6 +43,8 @@ public class EnvelopeReceiverController : ControllerBase
|
||||
|
||||
private readonly IDocumentExecutor _documentExecutor;
|
||||
|
||||
private readonly string _cnnStr;
|
||||
|
||||
/// <summary>
|
||||
/// Konstruktor für den EnvelopeReceiverController.
|
||||
/// </summary>
|
||||
@@ -48,7 +54,7 @@ public class EnvelopeReceiverController : ControllerBase
|
||||
/// <param name="mapper"></param>
|
||||
/// <param name="envelopeExecutor"></param>
|
||||
/// <param name="erExecutor"></param>
|
||||
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor)
|
||||
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor, IOptions<ConnectionString> csOpt)
|
||||
{
|
||||
_logger = logger;
|
||||
_erService = envelopeReceiverService;
|
||||
@@ -57,6 +63,7 @@ public class EnvelopeReceiverController : ControllerBase
|
||||
_envelopeExecutor = envelopeExecutor;
|
||||
_erExecutor = erExecutor;
|
||||
_documentExecutor = documentExecutor;
|
||||
_cnnStr = csOpt.Value.Value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -228,7 +235,45 @@ public class EnvelopeReceiverController : ControllerBase
|
||||
|
||||
if(document is null)
|
||||
return StatusCode(StatusCodes.Status500InternalServerError, "Document creation is failed.");
|
||||
#endregion
|
||||
|
||||
#region Add document element
|
||||
string sql = @"
|
||||
DECLARE @OUT_SUCCESS bit;
|
||||
|
||||
EXEC [dbo].[PRSIG_API_ADD_DOC_RECEIVER_ELEM]
|
||||
@DOC_ID = @DOC_ID,
|
||||
@RECEIVER_ID = @RECEIVER_ID,
|
||||
@POSITION_X = @POSITION_X,
|
||||
@POSITION_Y = @POSITION_Y,
|
||||
@PAGE = @PAGE,
|
||||
@OUT_SUCCESS = @OUT_SUCCESS OUTPUT;
|
||||
|
||||
SELECT @OUT_SUCCESS as [@OUT_SUCCESS];";
|
||||
|
||||
foreach(var rcv in res.SentRecipients)
|
||||
foreach(var sign in request.Receivers.Where(r => r.EmailAddress == rcv.EmailAddress).FirstOrDefault()?.Signatures ?? Array.Empty<Signature>())
|
||||
{
|
||||
using (SqlConnection conn = new(_cnnStr))
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
using SqlCommand cmd = new SqlCommand(sql, conn);
|
||||
cmd.CommandType = CommandType.Text;
|
||||
|
||||
cmd.Parameters.AddWithValue("@DOC_ID", document.Id);
|
||||
cmd.Parameters.AddWithValue("@RECEIVER_ID", rcv.Id);
|
||||
cmd.Parameters.AddWithValue("@POSITION_X", sign.X.ToString());
|
||||
cmd.Parameters.AddWithValue("@POSITION_Y", sign.Y.ToString());
|
||||
cmd.Parameters.AddWithValue("@PAGE", sign.Page.ToString());
|
||||
|
||||
using SqlDataReader reader = cmd.ExecuteReader();
|
||||
if (reader.Read())
|
||||
{
|
||||
bool outSuccess = reader.GetBoolean(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
return Ok(res);
|
||||
|
||||
Reference in New Issue
Block a user