save annotation data as json and sent to server
This commit is contained in:
parent
8c629691d9
commit
dfadcff710
@ -5,6 +5,7 @@ using EnvelopeGenerator.Web.Services;
|
|||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using System.IO.Pipelines;
|
using System.IO.Pipelines;
|
||||||
using System.Reflection.Metadata.Ecma335;
|
using System.Reflection.Metadata.Ecma335;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Handler
|
namespace EnvelopeGenerator.Web.Handler
|
||||||
{
|
{
|
||||||
@ -128,6 +129,13 @@ namespace EnvelopeGenerator.Web.Handler
|
|||||||
int documentId = EnsureValidDocumentIndex(logger, ctx.Request);
|
int documentId = EnsureValidDocumentIndex(logger, ctx.Request);
|
||||||
var document = GetDocument(r.Envelope, documentId);
|
var document = GetDocument(r.Envelope, documentId);
|
||||||
|
|
||||||
|
var annotationData = EnsureValidAnnotationData(logger, ctx.Request);
|
||||||
|
|
||||||
|
if (annotationData == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("AnnotationData");
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Save annotations to database
|
// TODO: Save annotations to database
|
||||||
|
|
||||||
return Results.Ok();
|
return Results.Ok();
|
||||||
@ -182,6 +190,26 @@ namespace EnvelopeGenerator.Web.Handler
|
|||||||
return envelopeKey;
|
return envelopeKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static async Task<string> EnsureValidAnnotationData(Logger logger, HttpRequest request)
|
||||||
|
{
|
||||||
|
logger.Debug("Parsing AnnotationData..");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using MemoryStream ms = new();
|
||||||
|
await request.BodyReader.CopyToAsync(ms);
|
||||||
|
var bytes = ms.ToArray();
|
||||||
|
|
||||||
|
return Encoding.UTF8.GetString(bytes);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
logger.Error(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static EnvelopeDocument GetDocument(Common.Envelope envelope, int documentId)
|
private static EnvelopeDocument GetDocument(Common.Envelope envelope, int documentId)
|
||||||
{
|
{
|
||||||
var document = envelope.Documents.
|
var document = envelope.Documents.
|
||||||
|
|||||||
@ -36,9 +36,9 @@ app.UseRouting();
|
|||||||
|
|
||||||
// Add file download endpoint
|
// Add file download endpoint
|
||||||
app.MapGet("/api/document/{envelopeKey}", FileHandler.HandleGetDocument);
|
app.MapGet("/api/document/{envelopeKey}", FileHandler.HandleGetDocument);
|
||||||
app.MapPost("/api/document/{envelopeKey}/{documentId}", FileHandler.HandlePostDocument);
|
app.MapPost("/api/document/{envelopeKey}", FileHandler.HandlePostDocument);
|
||||||
app.MapGet("/api/envelope/{envelopeKey}", FileHandler.HandleGetEnvelope);
|
app.MapGet("/api/envelope/{envelopeKey}", FileHandler.HandleGetEnvelope);
|
||||||
app.MapPost("/api/envelope/{envelopeKey}/{documentId}", FileHandler.HandlePostEnvelope);
|
app.MapPost("/api/envelope/{envelopeKey}", FileHandler.HandlePostEnvelope);
|
||||||
|
|
||||||
// Blazor plumbing
|
// Blazor plumbing
|
||||||
app.MapBlazorHub();
|
app.MapBlazorHub();
|
||||||
|
|||||||
@ -71,15 +71,21 @@ export class App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async handleFinish(event: any) {
|
public static async handleFinish(event: any) {
|
||||||
|
|
||||||
await App.Instance.save();
|
await App.Instance.save();
|
||||||
|
|
||||||
|
// Export annotation data and save to database
|
||||||
const json = await App.Instance.exportInstantJSON()
|
const json = await App.Instance.exportInstantJSON()
|
||||||
|
|
||||||
console.log(json);
|
console.log(json);
|
||||||
|
console.log(JSON.stringify(json));
|
||||||
|
const result = await App.Network.postEnvelope(App.envelopeKey, App.currentDocument.id, JSON.stringify(json))
|
||||||
|
|
||||||
|
// Flatten the annotations and save the document to disk
|
||||||
|
/*
|
||||||
const buffer = await App.Instance.exportPDF({ flatten: true });
|
const buffer = await App.Instance.exportPDF({ flatten: true });
|
||||||
const result = await App.Network.postDocument(App.envelopeKey, App.currentDocument.id, buffer);
|
const result = await App.Network.postDocument(App.envelopeKey, App.currentDocument.id, buffer);
|
||||||
console.log(result)
|
console.log(result)
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async handleReset(event: any) {
|
public static async handleReset(event: any) {
|
||||||
@ -196,11 +202,18 @@ class Network {
|
|||||||
.then(res => res.json());
|
.then(res => res.json());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public postEnvelope(envelopeKey: string, documentId: number, jsonString: string): Promise<any> {
|
||||||
|
const options: RequestInit = {
|
||||||
|
credentials: "include",
|
||||||
|
method: "POST",
|
||||||
|
body: jsonString
|
||||||
|
}
|
||||||
|
|
||||||
|
return fetch(`/api/envelope/${envelopeKey}?index=${documentId}`, options)
|
||||||
public postEnvelope(envelopeKey: string, documentId: number, buffer: ArrayBuffer): Promise<any> {
|
.then(res => {
|
||||||
return fetch(`/api/envelope/${envelopeKey}/${documentId}`, { credentials: "include", method: "POST", body: buffer })
|
console.log(res)
|
||||||
.then(res => res.json());
|
res.json()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -122,7 +122,7 @@ var App = /** @class */ (function () {
|
|||||||
};
|
};
|
||||||
App.handleFinish = function (event) {
|
App.handleFinish = function (event) {
|
||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var json, buffer, result;
|
var json, result;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
case 0: return [4 /*yield*/, App.Instance.save()];
|
case 0: return [4 /*yield*/, App.Instance.save()];
|
||||||
@ -132,13 +132,17 @@ var App = /** @class */ (function () {
|
|||||||
case 2:
|
case 2:
|
||||||
json = _a.sent();
|
json = _a.sent();
|
||||||
console.log(json);
|
console.log(json);
|
||||||
return [4 /*yield*/, App.Instance.exportPDF({ flatten: true })];
|
console.log(JSON.stringify(json));
|
||||||
|
return [4 /*yield*/, App.Network.postEnvelope(App.envelopeKey, App.currentDocument.id, JSON.stringify(json))
|
||||||
|
// Flatten the annotations and save the document to disk
|
||||||
|
/*
|
||||||
|
const buffer = await App.Instance.exportPDF({ flatten: true });
|
||||||
|
const result = await App.Network.postDocument(App.envelopeKey, App.currentDocument.id, buffer);
|
||||||
|
console.log(result)
|
||||||
|
*/
|
||||||
|
];
|
||||||
case 3:
|
case 3:
|
||||||
buffer = _a.sent();
|
|
||||||
return [4 /*yield*/, App.Network.postDocument(App.envelopeKey, App.currentDocument.id, buffer)];
|
|
||||||
case 4:
|
|
||||||
result = _a.sent();
|
result = _a.sent();
|
||||||
console.log(result);
|
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -148,7 +152,7 @@ var App = /** @class */ (function () {
|
|||||||
return __awaiter(this, void 0, void 0, function () {
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
var result;
|
var result;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
if (confirm("Wollen Sie das Dokument und alle erstellten Signaturen zurücksetzen?")) {
|
if (confirm("Wollen Sie das Dokument und alle erstellten Signaturen zur<EFBFBD>cksetzen?")) {
|
||||||
result = App.Annotation.deleteAnnotations(App.Instance);
|
result = App.Annotation.deleteAnnotations(App.Instance);
|
||||||
}
|
}
|
||||||
return [2 /*return*/];
|
return [2 /*return*/];
|
||||||
@ -275,9 +279,17 @@ var Network = /** @class */ (function () {
|
|||||||
return fetch("/api/document/".concat(envelopeKey, "/").concat(documentId), { credentials: "include", method: "POST", body: buffer })
|
return fetch("/api/document/".concat(envelopeKey, "/").concat(documentId), { credentials: "include", method: "POST", body: buffer })
|
||||||
.then(function (res) { return res.json(); });
|
.then(function (res) { return res.json(); });
|
||||||
};
|
};
|
||||||
Network.prototype.postEnvelope = function (envelopeKey, documentId, buffer) {
|
Network.prototype.postEnvelope = function (envelopeKey, documentId, jsonString) {
|
||||||
return fetch("/api/envelope/".concat(envelopeKey, "/").concat(documentId), { credentials: "include", method: "POST", body: buffer })
|
var options = {
|
||||||
.then(function (res) { return res.json(); });
|
credentials: "include",
|
||||||
|
method: "POST",
|
||||||
|
body: jsonString
|
||||||
|
};
|
||||||
|
return fetch("/api/envelope/".concat(envelopeKey, "?index=").concat(documentId), options)
|
||||||
|
.then(function (res) {
|
||||||
|
console.log(res);
|
||||||
|
res.json();
|
||||||
|
});
|
||||||
};
|
};
|
||||||
return Network;
|
return Network;
|
||||||
}());
|
}());
|
||||||
@ -300,7 +312,7 @@ var UI = /** @class */ (function () {
|
|||||||
{
|
{
|
||||||
type: "custom",
|
type: "custom",
|
||||||
id: "button-reset",
|
id: "button-reset",
|
||||||
title: "Zurücksetzen",
|
title: "Zur<EFBFBD>cksetzen",
|
||||||
onPress: function () {
|
onPress: function () {
|
||||||
callback("RESET");
|
callback("RESET");
|
||||||
},
|
},
|
||||||
@ -309,7 +321,7 @@ var UI = /** @class */ (function () {
|
|||||||
{
|
{
|
||||||
type: "custom",
|
type: "custom",
|
||||||
id: "button-finish",
|
id: "button-finish",
|
||||||
title: "Abschließen",
|
title: "Abschlie<EFBFBD>en",
|
||||||
onPress: function () {
|
onPress: function () {
|
||||||
callback("FINISH");
|
callback("FINISH");
|
||||||
},
|
},
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user