Refactor DocumentCreateCommand and enhance validation
Updated the `DocumentCreateCommand` record to include a nullable `DataAsBase64` property for better encapsulation. Enhanced the `EnvelopeReceiverController` with logic to validate document data, ensuring that either `DataAsBase64` or `DataAsByte` is provided, but not both. Introduced a new static method `IsBase64String` to validate base64 string format.
This commit is contained in:
parent
cc86e5fadd
commit
f2a09ea10e
@ -39,8 +39,11 @@ public record ReceiverGetOrCreateCommand([Required] IEnumerable<Signature> Signa
|
|||||||
/// <param name="DataAsByte">
|
/// <param name="DataAsByte">
|
||||||
/// Die Dokumentdaten im Byte-Array-Format. Wird verwendet, wenn das Dokument als Roh-Binärdaten bereitgestellt wird.
|
/// Die Dokumentdaten im Byte-Array-Format. Wird verwendet, wenn das Dokument als Roh-Binärdaten bereitgestellt wird.
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <param name="DataAsBase64">
|
public record DocumentCreateCommand(byte[]? DataAsByte = null)
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
/// Die Dokumentdaten im Base64-String-Format. Wird verwendet, wenn das Dokument als Base64-codierter String bereitgestellt wird.
|
/// Die Dokumentdaten im Base64-String-Format. Wird verwendet, wenn das Dokument als Base64-codierter String bereitgestellt wird.
|
||||||
/// </param>
|
/// </summary>
|
||||||
public record DocumentCreateCommand(byte[]? DataAsByte = null, string? DataAsBase64 = null);
|
public string? DataAsBase64 { get; set; }
|
||||||
|
};
|
||||||
#endregion
|
#endregion
|
||||||
@ -37,6 +37,8 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
|
|
||||||
private readonly IEnvelopeReceiverExecutor _erExecutor;
|
private readonly IEnvelopeReceiverExecutor _erExecutor;
|
||||||
|
|
||||||
|
private readonly IDocumentExecutor _documentExecutor;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Konstruktor für den EnvelopeReceiverController.
|
/// Konstruktor für den EnvelopeReceiverController.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -46,7 +48,7 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
/// <param name="mapper"></param>
|
/// <param name="mapper"></param>
|
||||||
/// <param name="envelopeExecutor"></param>
|
/// <param name="envelopeExecutor"></param>
|
||||||
/// <param name="erExecutor"></param>
|
/// <param name="erExecutor"></param>
|
||||||
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor)
|
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_erService = envelopeReceiverService;
|
_erService = envelopeReceiverService;
|
||||||
@ -54,6 +56,7 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
_envelopeExecutor = envelopeExecutor;
|
_envelopeExecutor = envelopeExecutor;
|
||||||
_erExecutor = erExecutor;
|
_erExecutor = erExecutor;
|
||||||
|
_documentExecutor = documentExecutor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -211,6 +214,20 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Add document
|
#region Add document
|
||||||
|
if(request.Document.DataAsBase64 is null)
|
||||||
|
if (request.Document.DataAsByte is null)
|
||||||
|
return BadRequest("No document data is found");
|
||||||
|
else
|
||||||
|
request.Document.DataAsBase64 = Convert.ToBase64String(request.Document.DataAsByte);
|
||||||
|
else if (request.Document.DataAsByte is not null)
|
||||||
|
return BadRequest("Document data cannot be assigned as both byte data and base64 string.");
|
||||||
|
else if (!IsBase64String(request.Document.DataAsBase64))
|
||||||
|
return BadRequest("Document data is not a base64 string");
|
||||||
|
|
||||||
|
var document = await _documentExecutor.CreateDocumentAsync(request.Document.DataAsBase64, envelope.Uuid, cancel);
|
||||||
|
|
||||||
|
if(document is null)
|
||||||
|
return StatusCode(StatusCodes.Status500InternalServerError, "Document creation is failed.");
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -222,4 +239,26 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="input"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool IsBase64String(string input)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(input))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Convert.FromBase64String(input);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user