diff --git a/EnvelopeGenerator.Web/Handler/FileHandler.cs b/EnvelopeGenerator.Web/Handler/FileHandler.cs index 2b9ada41..45902802 100644 --- a/EnvelopeGenerator.Web/Handler/FileHandler.cs +++ b/EnvelopeGenerator.Web/Handler/FileHandler.cs @@ -10,7 +10,44 @@ namespace EnvelopeGenerator.Web.Handler { public class FileHandler { - public async static Task HandleFileDownload(HttpContext ctx, DatabaseService database, LoggingService logging) + /// + /// URL: GET /api/envelope/{envelopeKey} + /// + /// Returns a + /// + /// + public static IResult HandleGetEnvelope(HttpContext ctx, DatabaseService database, LoggingService logging) + { + var logger = logging.LogConfig.GetLogger("FileHandler"); + + try + { + logger.Info("Handling envelope loading."); + + // Load Envelope from EnvelopeKey + string envelopeKey = EnsureValidEnvelopeKey(logger, ctx.Request); + EnvelopeResponse r = database.LoadEnvelope(envelopeKey); + + // Return the envelope and additional data as json + return Results.Json(r); + + } + catch (Exception e) + { + // Better error handling & reporting + logger.Error(e); + return Results.Problem(e.Message); + + } + } + + /// + /// URL: GET /api/document/{envelopeKey}?index={documentIndex} + /// + /// Returns a document for the supplied EnvelopeKey and Document Id / Index + /// + /// file buffer of the requested document + public async static Task HandleGetDocument(HttpContext ctx, DatabaseService database, LoggingService logging) { var logger = logging.LogConfig.GetLogger("FileHandler"); @@ -42,7 +79,7 @@ namespace EnvelopeGenerator.Web.Handler } } - public async static Task HandleFileUpload(HttpContext ctx, DatabaseService database, LoggingService logging) + public async static Task HandlePostDocument(HttpContext ctx, DatabaseService database, LoggingService logging) { var logger = logging.LogConfig.GetLogger("FileHandler"); @@ -72,13 +109,16 @@ namespace EnvelopeGenerator.Web.Handler } } - public async static Task HandleGetData(HttpContext ctx, DatabaseService database, LoggingService logging) + + + + public async static Task HandlePostEnvelope(HttpContext ctx, DatabaseService database, LoggingService logging) { var logger = logging.LogConfig.GetLogger("FileHandler"); try { - logger.Info("Handling file download."); + logger.Info("Handling envelope saving."); // Load Envelope from EnvelopeKey string envelopeKey = EnsureValidEnvelopeKey(logger, ctx.Request); @@ -88,57 +128,18 @@ namespace EnvelopeGenerator.Web.Handler int documentId = EnsureValidDocumentIndex(logger, ctx.Request); var document = GetDocument(r.Envelope, documentId); - // Load the document from disk - var bytes = await File.ReadAllBytesAsync(document.Filepath); - logger.Info("Serving file, size: [{0}]", bytes.Length); - - // Return the envelope and additional data as json - return Results.Json(r); + // TODO: Save annotations to database + return Results.Ok(); } catch (Exception e) { // Better error handling & reporting logger.Error(e); return Results.Problem(); + } - } - } - - public async static Task HandlePostData(HttpContext ctx, DatabaseService database, LoggingService logging) - { - var logger = logging.LogConfig.GetLogger("FileHandler"); - - try - { - logger.Info("Handling file download."); - - // Load Envelope from EnvelopeKey - string envelopeKey = EnsureValidEnvelopeKey(logger, ctx.Request); - EnvelopeResponse r = database.LoadEnvelope(envelopeKey); - - // Get the document Index - int documentId = EnsureValidDocumentIndex(logger, ctx.Request); - var document = GetDocument(r.Envelope, documentId); - } - catch (Exception e) - { - // Better error handling & reporting - logger.Error(e); - return Results.Problem(); - } - - var envelopeKey = ctx.Request.RouteValues["envelopeKey"] as string; - var documentIdString = ctx.Request.RouteValues["documentId"] as string; - - if (int.TryParse(documentIdString, out int documentId) == false) - { - return Results.Problem(); - } - - database.LoadDocument(documentId); - - return Results.Ok(); + } private static int EnsureValidDocumentIndex(Logger logger, HttpRequest request) @@ -192,8 +193,5 @@ namespace EnvelopeGenerator.Web.Handler return document; } - - - } } diff --git a/EnvelopeGenerator.Web/Pages/ShowEnvelope.razor b/EnvelopeGenerator.Web/Pages/ShowEnvelope.razor index 5091d399..177cb08c 100644 --- a/EnvelopeGenerator.Web/Pages/ShowEnvelope.razor +++ b/EnvelopeGenerator.Web/Pages/ShowEnvelope.razor @@ -15,7 +15,7 @@ if (firstRender) { var module = await JS.InvokeAsync("import", "./js/app.js"); - await module.InvokeVoidAsync("App.loadPDFFromUrl", "#container", EnvelopeReceiverId); + await module.InvokeVoidAsync("App.init", "#container", EnvelopeReceiverId); } } } diff --git a/EnvelopeGenerator.Web/Program.cs b/EnvelopeGenerator.Web/Program.cs index d2582264..125487fc 100644 --- a/EnvelopeGenerator.Web/Program.cs +++ b/EnvelopeGenerator.Web/Program.cs @@ -35,10 +35,10 @@ app.UseStaticFiles(); app.UseRouting(); // Add file download endpoint -app.MapGet("/api/document/{envelopeKey}", FileHandler.HandleFileDownload); -app.MapPost("/api/document/{envelopeKey}/{documentId}", FileHandler.HandleFileUpload); -app.MapGet("/api/envelope/{envelopeKey}", FileHandler.HandleGetData); -app.MapPost("/api/envelope/{envelopeKey}/{documentId}", FileHandler.HandlePostData); +app.MapGet("/api/document/{envelopeKey}", FileHandler.HandleGetDocument); +app.MapPost("/api/document/{envelopeKey}/{documentId}", FileHandler.HandlePostDocument); +app.MapGet("/api/envelope/{envelopeKey}", FileHandler.HandleGetEnvelope); +app.MapPost("/api/envelope/{envelopeKey}/{documentId}", FileHandler.HandlePostEnvelope); // Blazor plumbing app.MapBlazorHub(); diff --git a/EnvelopeGenerator.Web/Scripts/app.ts b/EnvelopeGenerator.Web/Scripts/app.ts index 1f86975f..d079f03a 100644 --- a/EnvelopeGenerator.Web/Scripts/app.ts +++ b/EnvelopeGenerator.Web/Scripts/app.ts @@ -21,43 +21,41 @@ export class App { // This function will be called in the ShowEnvelope.razor page // and will trigger loading of the Editor Interface - public static async loadPDFFromUrl(container: string, envelopeKey: string) { + public static async init(container: string, envelopeKey: string) { + + // Initialize classes + console.debug("Initializing classes..") App.UI = new UI(); App.Network = new Network(); App.Annotation = new Annotation(); - console.debug("Loading PSPDFKit.."); + // Load the envelope from the database + console.debug("Loading envelope from database..") + const envelopeObject: EnvelopeResponse = await App.Network.getEnvelope(envelopeKey); + + console.debug(envelopeObject) - const envelopeObject: EnvelopeResponse = await App.Network.loadData(envelopeKey); App.envelopeKey = envelopeKey; App.currentDocument = envelopeObject.envelope.documents[0]; + // Load the document from the filestore + console.debug("Loading document from filestore") let arrayBuffer try { - arrayBuffer = await App.Network.loadDocument(envelopeKey, App.currentDocument.id); + arrayBuffer = await App.Network.getDocument(envelopeKey, App.currentDocument.id); } catch (e) { console.error(e) } + // Load PSPDFKit + console.debug("Loading PSPDFKit..") App.Instance = await App.UI.loadPSPDFKit(arrayBuffer, container) - App.UI.configurePSPDFKit(this.Instance, App.handleClick) - - console.debug(envelopeObject.envelope); - console.debug("PSPDFKit configured!"); - - const annotations: any[] = []; - - App.currentDocument.elements.forEach(function (element: Element) { - console.log("Creating annotation for element", element.id) - - const [annotation, formField] = App.Annotation.createAnnotationFromElement(element) - annotations.push(annotation); - annotations.push(formField); - }) + App.UI.configurePSPDFKit(this.Instance, App.handleClick) + // Load annotations into PSPDFKit + console.debug("Loading annotations..") + const annotations = App.Annotation.createAnnotations(App.currentDocument) const createdAnnotations = await App.Instance.create(annotations) - - console.debug(createdAnnotations) } public static async handleClick(eventType: string) { @@ -121,7 +119,33 @@ export class App { } class Annotation { - public createAnnotationFromElement(element: Element): [annotation: WidgetAnnotation, formField: SignatureFormFieldType] { + public createAnnotations(document: Document): AnnotationsUnion[] { + const annotations: any[] = []; + + document.elements.forEach((element: Element) => { + console.log("Creating annotation for element", element.id) + + const [annotation, formField] = this.createAnnotationFromElement(element) + annotations.push(annotation); + annotations.push(formField); + }) + + return annotations; + } + + public async deleteAnnotations(instance: Instance): Promise { + let pageAnnotations = ( + await Promise.all(Array.from({ length: instance.totalPageCount }).map((_, pageIndex) => + instance.getAnnotations(pageIndex) + )) + ).flatMap((annotations) => + annotations.reduce((acc, annotation) => acc.concat(annotation), []) + ).filter((annotation) => !!annotation.isSignature); + //deleting all Annotations + return await instance.delete(pageAnnotations); + } + + private createAnnotationFromElement(element: Element): [annotation: WidgetAnnotation, formField: SignatureFormFieldType] { const id = PSPDFKit.generateInstantId() const width = this.inchToPoint(element.width) const height = this.inchToPoint(element.height) @@ -140,18 +164,6 @@ class Annotation { return [annotation, formField] } - public async deleteAnnotations(instance: Instance): Promise { - let pageAnnotations = ( - await Promise.all(Array.from({ length: instance.totalPageCount }).map((_, pageIndex) => - instance.getAnnotations(pageIndex) - )) - ).flatMap((annotations) => - annotations.reduce((acc, annotation) => acc.concat(annotation), []) - ).filter((annotation) => !!annotation.isSignature); - //deleting all Annotations - return await instance.delete(pageAnnotations); - } - private createSignatureAnnotation(id: string, width: number, height: number, top: number, left: number, pageIndex: number): WidgetAnnotation { const annotation = new PSPDFKit.Annotations.WidgetAnnotation({ id: id, @@ -169,20 +181,25 @@ class Annotation { } class Network { - // Makes a call to the supplied url and fetches the binary response as an array buffer - public loadDocument(envelopeKey: string, documentId: number): Promise { - return fetch(`/api/file/${envelopeKey}?id=${documentId}`, { credentials: "include" }) - .then(res => res.arrayBuffer()); - } - - // Makes a call to the supplied url and fetches the json response as an object - public loadData(envelopeKey): Promise { + public getEnvelope(envelopeKey: string): Promise { return fetch(`/api/envelope/${envelopeKey}`, { credentials: "include" }) .then(res => res.json()); } + public getDocument(envelopeKey: string, documentId: number): Promise { + return fetch(`/api/document/${envelopeKey}?index=${documentId}`, { credentials: "include" }) + .then(res => res.arrayBuffer()); + } + public postDocument(envelopeKey: string, documentId: number, buffer: ArrayBuffer): Promise { - return fetch(`/api/upload/${envelopeKey}/${documentId}`, { credentials: "include", method: "POST", body: buffer }) + return fetch(`/api/document/${envelopeKey}/${documentId}`, { credentials: "include", method: "POST", body: buffer }) + .then(res => res.json()); + } + + + + public postEnvelope(envelopeKey: string, documentId: number, buffer: ArrayBuffer): Promise { + return fetch(`/api/envelope/${envelopeKey}/${documentId}`, { credentials: "include", method: "POST", body: buffer }) .then(res => res.json()); } } @@ -236,6 +253,8 @@ class UI { const toolbarItems = this.getToolbarItems(instance, handler) instance.setToolbarItems(toolbarItems) + + console.debug("PSPDFKit configured!"); } public getToolbarItems(instance: Instance, handler: any): ToolbarItem[] { diff --git a/EnvelopeGenerator.Web/wwwroot/js/app.js b/EnvelopeGenerator.Web/wwwroot/js/app.js index 463c230d..3054773f 100644 --- a/EnvelopeGenerator.Web/wwwroot/js/app.js +++ b/EnvelopeGenerator.Web/wwwroot/js/app.js @@ -44,25 +44,31 @@ var App = /** @class */ (function () { } // This function will be called in the ShowEnvelope.razor page // and will trigger loading of the Editor Interface - App.loadPDFFromUrl = function (container, envelopeKey) { + App.init = function (container, envelopeKey) { return __awaiter(this, void 0, void 0, function () { var envelopeObject, arrayBuffer, e_1, _a, annotations, createdAnnotations; return __generator(this, function (_b) { switch (_b.label) { case 0: + // Initialize classes + console.debug("Initializing classes.."); App.UI = new UI(); App.Network = new Network(); App.Annotation = new Annotation(); - console.debug("Loading PSPDFKit.."); - return [4 /*yield*/, App.Network.loadData(envelopeKey)]; + // Load the envelope from the database + console.debug("Loading envelope from database.."); + return [4 /*yield*/, App.Network.getEnvelope(envelopeKey)]; case 1: envelopeObject = _b.sent(); + console.debug(envelopeObject); App.envelopeKey = envelopeKey; App.currentDocument = envelopeObject.envelope.documents[0]; + // Load the document from the filestore + console.debug("Loading document from filestore"); _b.label = 2; case 2: _b.trys.push([2, 4, , 5]); - return [4 /*yield*/, App.Network.loadDocument(envelopeKey, App.currentDocument.id)]; + return [4 /*yield*/, App.Network.getDocument(envelopeKey, App.currentDocument.id)]; case 3: arrayBuffer = _b.sent(); return [3 /*break*/, 5]; @@ -71,24 +77,19 @@ var App = /** @class */ (function () { console.error(e_1); return [3 /*break*/, 5]; case 5: + // Load PSPDFKit + console.debug("Loading PSPDFKit.."); _a = App; return [4 /*yield*/, App.UI.loadPSPDFKit(arrayBuffer, container)]; case 6: _a.Instance = _b.sent(); App.UI.configurePSPDFKit(this.Instance, App.handleClick); - console.debug(envelopeObject.envelope); - console.debug("PSPDFKit configured!"); - annotations = []; - App.currentDocument.elements.forEach(function (element) { - console.log("Creating annotation for element", element.id); - var _a = App.Annotation.createAnnotationFromElement(element), annotation = _a[0], formField = _a[1]; - annotations.push(annotation); - annotations.push(formField); - }); + // Load annotations into PSPDFKit + console.debug("Loading annotations.."); + annotations = App.Annotation.createAnnotations(App.currentDocument); return [4 /*yield*/, App.Instance.create(annotations)]; case 7: createdAnnotations = _b.sent(); - console.debug(createdAnnotations); return [2 /*return*/]; } }); @@ -198,21 +199,16 @@ export { App }; var Annotation = /** @class */ (function () { function Annotation() { } - Annotation.prototype.createAnnotationFromElement = function (element) { - var id = PSPDFKit.generateInstantId(); - var width = this.inchToPoint(element.width); - var height = this.inchToPoint(element.height); - var top = this.inchToPoint(element.top) - (height / 2); - var left = this.inchToPoint(element.left) - (width / 2); - var page = element.page - 1; - var annotation = this.createSignatureAnnotation(id, width, height, top, left, page); - console.log(annotation); - var formField = new SignatureFormField({ - name: id, - annotationIds: List([annotation.id]) + Annotation.prototype.createAnnotations = function (document) { + var _this = this; + var annotations = []; + document.elements.forEach(function (element) { + console.log("Creating annotation for element", element.id); + var _a = _this.createAnnotationFromElement(element), annotation = _a[0], formField = _a[1]; + annotations.push(annotation); + annotations.push(formField); }); - console.log(formField); - return [annotation, formField]; + return annotations; }; Annotation.prototype.deleteAnnotations = function (instance) { return __awaiter(this, void 0, void 0, function () { @@ -234,6 +230,22 @@ var Annotation = /** @class */ (function () { }); }); }; + Annotation.prototype.createAnnotationFromElement = function (element) { + var id = PSPDFKit.generateInstantId(); + var width = this.inchToPoint(element.width); + var height = this.inchToPoint(element.height); + var top = this.inchToPoint(element.top) - (height / 2); + var left = this.inchToPoint(element.left) - (width / 2); + var page = element.page - 1; + var annotation = this.createSignatureAnnotation(id, width, height, top, left, page); + console.log(annotation); + var formField = new SignatureFormField({ + name: id, + annotationIds: List([annotation.id]) + }); + console.log(formField); + return [annotation, formField]; + }; Annotation.prototype.createSignatureAnnotation = function (id, width, height, top, left, pageIndex) { var annotation = new PSPDFKit.Annotations.WidgetAnnotation({ id: id, @@ -251,18 +263,20 @@ var Annotation = /** @class */ (function () { var Network = /** @class */ (function () { function Network() { } - // Makes a call to the supplied url and fetches the binary response as an array buffer - Network.prototype.loadDocument = function (envelopeKey, documentId) { - return fetch("/api/file/".concat(envelopeKey, "?id=").concat(documentId), { credentials: "include" }) - .then(function (res) { return res.arrayBuffer(); }); - }; - // Makes a call to the supplied url and fetches the json response as an object - Network.prototype.loadData = function (envelopeKey) { + Network.prototype.getEnvelope = function (envelopeKey) { return fetch("/api/envelope/".concat(envelopeKey), { credentials: "include" }) .then(function (res) { return res.json(); }); }; + Network.prototype.getDocument = function (envelopeKey, documentId) { + return fetch("/api/document/".concat(envelopeKey, "?index=").concat(documentId), { credentials: "include" }) + .then(function (res) { return res.arrayBuffer(); }); + }; Network.prototype.postDocument = function (envelopeKey, documentId, buffer) { - return fetch("/api/upload/".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(); }); + }; + Network.prototype.postEnvelope = function (envelopeKey, documentId, buffer) { + return fetch("/api/envelope/".concat(envelopeKey, "/").concat(documentId), { credentials: "include", method: "POST", body: buffer }) .then(function (res) { return res.json(); }); }; return Network; @@ -339,6 +353,7 @@ var UI = /** @class */ (function () { }); }); var toolbarItems = this.getToolbarItems(instance, handler); instance.setToolbarItems(toolbarItems); + console.debug("PSPDFKit configured!"); }; UI.prototype.getToolbarItems = function (instance, handler) { var customItems = this.getCustomItems(handler); diff --git a/EnvelopeGenerator.Web/wwwroot/js/app.js.map b/EnvelopeGenerator.Web/wwwroot/js/app.js.map index 5c464fd5..59ffc7e8 100644 --- a/EnvelopeGenerator.Web/wwwroot/js/app.js.map +++ b/EnvelopeGenerator.Web/wwwroot/js/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sourceRoot":"","sources":["../../Scripts/app.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"app.js","sourceRoot":"","sources":["../../Scripts/app.ts"],"names":[],"mappings":"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"} \ No newline at end of file