public async Task <IActionResult> OnPostAsync() { if (ModelState.IsValid) { try { List <MultipartUploadMedia> UploadMedias = GetMultipartUploadMedias(); if (ModelState.IsValid) { List <TbsData> TbsDatas = await GetTbsDataAsync <List <TbsData> >(UploadMedias); SignRequestGenerationResponse = await GetSignRequestAsync <SignRequestGenerationResponse>(TbsDatas); // Save new sign-request in database List <DocumentStorageObject> DocumentStorageObjects = DocumentStorageObjectFactory.Create(UploadMedias); SignStorageObject SignStorageObject = SignStorageObjectFactory.Create(DocumentStorageObjects, TbsDatas, SignRequestGenerationResponse); SignSupportDatabase.Upsert(SignStorageObject); } } catch (SignSupportException Error) { SignSupportError = Error.SignSupportError; } catch (Exception Error) { GeneralError = ErrorHelper.GetError(Error); } } return(Page()); }
private SignCompletionRequest CreateSignCompletionRequest(SignStorageObject signStorageObject) { return(new SignCompletionRequest { EidSignResponse = SignResponseData.EidSignResponse, RelayState = SignResponseData.RelayState, TbsDatas = signStorageObject.TbsDatas }); }
private DocumentStorageObject getDocumentStorageObject(SignStorageObject signStorageObject, string file) { foreach (var documentStorageObject in signStorageObject.Documents) { if (documentStorageObject.FileName.Equals(file)) { return(documentStorageObject); } } throw ErrorHelper.GetException("Download failed", "file argument invalid!"); }
public IActionResult OnGet(string id) { try { SignStorageObject = SignStorageObjectFinder.Find(id); } catch (Exception Error) { GeneralError = ErrorHelper.GetError(Error); } return(Page()); }
public FileResult OnGet(string id, string file) { try { SignStorageObject signStorageObject = SignStorageObjectFinder.Find(id); DocumentStorageObject documentStorageObject = getDocumentStorageObject(signStorageObject, file); var response = new FileContentResult(documentStorageObject.SignedDocument, "application/octet-stream") { FileDownloadName = documentStorageObject.FileName }; return(response); } catch (Exception Error) { GeneralError = ErrorHelper.GetError(Error); return(null); } }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { GeneralError = ErrorHelper.GetError("Failed to complete signing, invalid response!"); return(Page()); } try { SignStorageObject SignStorageObject = SignStorageObjectFinder.Find(SignResponseData.RelayState); SignCompletionRequest SignCompletionRequest = CreateSignCompletionRequest(SignStorageObject); string RequestJson = Encoding.UTF8.GetString(JsonUtil.JsonSerialize <SignCompletionRequest>(SignCompletionRequest)); // Perform complete-signing request for each document foreach (var DocumentStorageObject in SignStorageObject.Documents) { byte[] OriginalDocument = DocumentStorageObject.OriginalDocument; MultipartUploadMedia UploadMedia = new MultipartUploadMedia(OriginalDocument, "document", DocumentStorageObject.FileName); byte[] SignedDocumentBytes = await CompleteDocumentSignatureAsync(UploadMedia, RequestJson); DocumentStorageObject.SignedDocument = SignedDocumentBytes; } // Store signed documents in database SignSupportDatabase.Upsert(SignStorageObject); return(Redirect("~/SignResult?id=" + SignResponseData.RelayState)); } catch (SignSupportException Error) { SignSupportError = Error.SignSupportError; } catch (Exception Error) { GeneralError = ErrorHelper.GetError(Error); } return(Page()); }