Add documentstatus

This commit is contained in:
Jonathan Jenne
2023-10-11 11:10:38 +02:00
parent df3e01b921
commit 8d5e24c6a7
6 changed files with 145 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
using DigitalData.Modules.Logging;
using DigitalData.Modules.Database;
using DigitalData.Modules.Logging;
using EnvelopeGenerator.Common;
using EnvelopeGenerator.Common.My.Resources;
using EnvelopeGenerator.Web.Services;
@@ -9,7 +10,7 @@ using System.Text;
namespace EnvelopeGenerator.Web.Handler
{
public class FileHandler
public class FileHandler
{
/// <summary>
/// URL: GET /api/envelope/{envelopeKey}
@@ -17,7 +18,7 @@ namespace EnvelopeGenerator.Web.Handler
/// Returns a
/// </summary>
/// <returns></returns>
public static IResult HandleGetEnvelope(HttpContext ctx, DatabaseService database, LoggingService logging)
public IResult HandleGetEnvelope(HttpContext ctx, DatabaseService database, LoggingService logging)
{
var logger = logging.LogConfig.GetLogger("FileHandler");
@@ -48,7 +49,7 @@ namespace EnvelopeGenerator.Web.Handler
/// Returns a document for the supplied EnvelopeKey and Document Id / Index
/// </summary>
/// <returns>file buffer of the requested document</returns>
public async static Task<IResult> HandleGetDocument(HttpContext ctx, DatabaseService database, LoggingService logging)
public async Task<IResult> HandleGetDocument(HttpContext ctx, DatabaseService database, LoggingService logging)
{
var logger = logging.LogConfig.GetLogger("FileHandler");
@@ -80,7 +81,7 @@ namespace EnvelopeGenerator.Web.Handler
}
}
public async static Task<IResult> HandlePostDocument(HttpContext ctx, DatabaseService database, LoggingService logging)
public async Task<IResult> HandlePostDocument(HttpContext ctx, DatabaseService database, LoggingService logging)
{
var logger = logging.LogConfig.GetLogger("FileHandler");
@@ -113,7 +114,7 @@ namespace EnvelopeGenerator.Web.Handler
public async static Task<IResult> HandlePostEnvelope(HttpContext ctx, DatabaseService database, LoggingService logging)
public async Task<IResult> HandlePostEnvelope(HttpContext ctx, DatabaseService database, LoggingService logging)
{
var logger = logging.LogConfig.GetLogger("FileHandler");
@@ -129,14 +130,23 @@ namespace EnvelopeGenerator.Web.Handler
int documentId = EnsureValidDocumentIndex(logger, ctx.Request);
var document = GetDocument(r.Envelope, documentId);
var annotationData = EnsureValidAnnotationData(logger, ctx.Request);
string? annotationData = await EnsureValidAnnotationData(logger, ctx.Request);
if (annotationData == null)
{
throw new ArgumentNullException("AnnotationData");
}
// TODO: Save annotations to database
State state = GetState(logging.LogConfig, database.MSSQL);
DocumentStatusModel model = new(state);
model.InsertOrUpdate(new DocumentStatus()
{
EnvelopeId = r.Envelope.Id,
ReceiverId = r.ReceiverId,
Value = annotationData,
Status = Common.Constants.DocumentStatus.Signed
});
return Results.Ok();
}
@@ -145,12 +155,19 @@ namespace EnvelopeGenerator.Web.Handler
// Better error handling & reporting
logger.Error(e);
return Results.Problem();
}
}
}
private static int EnsureValidDocumentIndex(Logger logger, HttpRequest request)
private State GetState(LogConfig LogConfig, MSSQLServer Database)
{
return new State
{
LogConfig = LogConfig,
Database = Database,
};
}
private int EnsureValidDocumentIndex(Logger logger, HttpRequest request)
{
if (request.Query.TryGetValue("index", out StringValues documentIndexString))
{
@@ -169,7 +186,7 @@ namespace EnvelopeGenerator.Web.Handler
}
}
private static string EnsureValidEnvelopeKey(Logger logger, HttpRequest request)
private string EnsureValidEnvelopeKey(Logger logger, HttpRequest request)
{
logger.Debug("Parsing EnvelopeKey..");
var envelopeKey = request.RouteValues["envelopeKey"] as string;
@@ -190,7 +207,7 @@ namespace EnvelopeGenerator.Web.Handler
return envelopeKey;
}
private static async Task<string> EnsureValidAnnotationData(Logger logger, HttpRequest request)
private async Task<string?> EnsureValidAnnotationData(Logger logger, HttpRequest request)
{
logger.Debug("Parsing AnnotationData..");
@@ -210,7 +227,7 @@ namespace EnvelopeGenerator.Web.Handler
}
private static EnvelopeDocument GetDocument(Common.Envelope envelope, int documentId)
private EnvelopeDocument GetDocument(Common.Envelope envelope, int documentId)
{
var document = envelope.Documents.
Where(d => d.Id == documentId).

View File

@@ -1,5 +1,6 @@
using EnvelopeGenerator.Web.Handler;
using EnvelopeGenerator.Web.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
@@ -35,10 +36,12 @@ app.UseStaticFiles();
app.UseRouting();
// Add file download endpoint
app.MapGet("/api/document/{envelopeKey}", FileHandler.HandleGetDocument);
app.MapPost("/api/document/{envelopeKey}", FileHandler.HandlePostDocument);
app.MapGet("/api/envelope/{envelopeKey}", FileHandler.HandleGetEnvelope);
app.MapPost("/api/envelope/{envelopeKey}", FileHandler.HandlePostEnvelope);
FileHandler handler = new();
app.MapGet("/api/document/{envelopeKey}", handler.HandleGetDocument);
app.MapPost("/api/document/{envelopeKey}", handler.HandlePostDocument);
app.MapGet("/api/envelope/{envelopeKey}", handler.HandleGetEnvelope);
app.MapPost("/api/envelope/{envelopeKey}", handler.HandlePostEnvelope);
// Blazor plumbing
app.MapBlazorHub();