- By typing your name below and submitting this form, you confirm the information you provide above is correct.
+ By typing your name below and submitting this form, you confirm the information you provide above is correct.
{
-
The personal information is collected under s.26 (a) and (c) of the Freedom of Information and Protection of Privacy Act for the purpose of administering the Motor Vehicle Act. If you have any questions about the collection, use and disclosure of the information collected contact RoadSafetyBC at PO Box 9254 Stn Prov Govt, Victoria, BC V8W 9J2. Phone (250) 387-7747.
+
The personal information is collected under s.26 (a) and (c) of the Freedom of Information and Protection of Privacy Act for the purpose of administering the Motor Vehicle Act. If you have any questions about the collection, use and disclosure of the information collected contact RoadSafetyBC at PO Box 9254 Stn Prov Govt, Victoria, BC V8W 9J2. Phone (250) 387-7747.
diff --git a/web_app/src/app/form1/page.tsx b/web_app/src/app/form1/page.tsx
index d1d62eff..df0845e0 100644
--- a/web_app/src/app/form1/page.tsx
+++ b/web_app/src/app/form1/page.tsx
@@ -1,18 +1,19 @@
-'use client'
+'use client';
+
import React, { CSSProperties, useRef, useState } from 'react';
-import CustomAccordion from '../components/Accordion';
-import Step1 from './steps/step1';
-import Step2 from './steps/step2';
-import Step3 from './steps/step3';
-import Step4 from '../components/step4';
import { Button, Grid, Typography } from '@mui/material';
import CloseIcon from '@mui/icons-material/Close';
import ArrowForward from '@mui/icons-material/ArrowForward';
import { Step1Data, Step2Data, Step3Data, Step4Data } from '../interfaces';
-import { generatePDF } from '../components/GeneratePDF';
import { postForm1, sendEmail } from './actions';
import dayjs from 'dayjs';
import { useRouter } from 'next/navigation';
+import CustomAccordion from '../components/Accordion';
+import Step1 from './steps/step1';
+import Step2 from './steps/step2';
+import Step3 from './steps/step3';
+import Step4 from '../components/step4';
+import generatePDFWithHeaderFooter from '../components/PDFGenerator';
export default function Page() {
@@ -64,85 +65,63 @@ export default function Page() {
const submitDataAfterValidation = async () => {
let form1SubmitOk = false;
- setIsLoading(true);
- setIsExpanded(true);
-
- setProgress(20); // Initial progress
+
try {
- let response = await postForm1(step1Data, step2Data, step3Data, step4Data);
- if (!response.data.is_success) {
- setMessage(response.data.error + ". " + apiSubmitErrorMsg);
- setProgress(30); // Complete progress with error
+ const formContentElement = document.getElementsByClassName('formContent')[0] as HTMLElement;
+ const file = generatePDFWithHeaderFooter(formContentElement, 'Notice of Driving Prohibition Application for Review');
+
+ setIsLoading(true);
+ setIsExpanded(true);
+
+ setProgress(20); // Initial progress
+ try {
+ let response = await postForm1(step1Data, step2Data, step3Data, step4Data);
+ if (!response.data.is_success) {
+ setMessage(response.data.error + ". " + apiSubmitErrorMsg);
+ setProgress(30); // Complete progress with error
+ setIsLoading(false);
+ return;//stop going further?
+ } else {
+ form1SubmitOk = true;
+ }
+ console.log("posting xml done!! ");
+ } catch (error) {
+ setMessage(apiSubmitErrorMsg);
+ setProgress(100); // Complete progress with error
setIsLoading(false);
- return;//stop going further?
- } else {
- form1SubmitOk = true;
+ return;
}
- console.log("posting xml done!! ");
- } catch (error) {
+ console.log("after posting xml");
+
+ setProgress(80);
+ let reader = new FileReader();
+
+ reader.onload = async function (e) {
+ // The file converted into text base64
+ console.log("isArrayBuffer ", reader.result instanceof ArrayBuffer);
+ console.log("reader.result", reader.result?.toString().slice(0, 50));
+ let fileContent = '';
+ fileContent = reader.result?.toString().split('base64,')[1] || '';
+ let result = await sendEmail(step2Data.consentFile, step2Data.consentFileName, fileContent, step1Data, step2Data);
+ console.log("email sent and form1SubmitOK? ", result, form1SubmitOk);
+ if (result === 202 && form1SubmitOk) {
+ setProgress(100);
+ router.push('/form1/acknowledgement');
+ } else {
+ setMessage(pdfEmailSubmitError);
+ setProgress(100);
+ setIsLoading(false);
+ }
+ };
+ // callback to reader.onload
+ if (file || file !== undefined)
+ reader.readAsDataURL(file);
+ } catch (error) {
setMessage(apiSubmitErrorMsg);
setProgress(100); // Complete progress with error
setIsLoading(false);
return;
}
- console.log("after posting xml");
-
- let pdfList = [
- { id: 'page1img1', pageNumber: 1 },// Before You Begin display block
- { id: 'summarystep1', pageNumber: 1 }, // Step 1 header
- { id: 'page1img2', pageNumber: 1 }, //Step 1 Info Part 1
- { id: 'page2img1', pageNumber: 2 }, //Step 1 Info Part 2
- { id: 'summarystep2', pageNumber: 2 },// Step 2 Header
- { id: 'page2img2', pageNumber: 2 },//Step 2 Info Part 1
- { id: 'page3img1', pageNumber: 3 },//Step 2 Info Part 2
- { id: 'page3img2', pageNumber: 3 },//Step 2 Info Part 3
- { id: 'page4img1', pageNumber: 4 }, //Step 2 Info Part 4
- { id: 'summarystep3', pageNumber: 5 }, // Step 3 Header
- ];
-
- if (step1Data.controlIsUl)
- pdfList.push({ id: 'ulControlBlock', pageNumber: 5 }, { id: 'step4', pageNumber: 6 });
- else if (step1Data.controlIsIrp)
- pdfList.push({ id: 'irpControlBlock', pageNumber: 5 }, { id: 'revOption', pageNumber: 6 }, { id: 'step4', pageNumber: 7 });
- else if (step1Data.controlIsAdp) {
- pdfList.push({ id: 'adp-burden-of-proof-text', pageNumber: 5 });
- pdfList.push({ id: 'page5img1', pageNumber: 5 });
- pdfList.push({ id: 'page5img2', pageNumber: 6 });
- pdfList.push({ id: 'page5img3', pageNumber: 7 });
- pdfList.push({ id: "page5img4", pageNumber: 8 });
- pdfList.push({ id: 'step4', pageNumber: 8 });
- }
- // setTimeout(async () => {
- // const pdf = await generatePDF(pdfList, 'Notice of Driving Prohibition Application for Review');
- // pdf?.save('Notice of Driving Prohibition Application for Review.pdf');
- // }, 500);
-
- let fileContent = '';
- const pdf = await generatePDF(pdfList, 'Notice of Driving Prohibition Application for Review');
- const file = pdf?.output('blob');
- setProgress(80);
- console.log("pdf file gen size:", file?.size);
- let reader = new FileReader();
-
- reader.onload = async function (e) {
- // The file converted into text base64
- console.log("isArrayBuffer ", reader.result instanceof ArrayBuffer);
- console.log("reader.result", reader.result?.toString().slice(0, 50));
- fileContent = reader.result?.toString().split('base64,')[1] || '';
- let result = await sendEmail(step2Data.consentFile, step2Data.consentFileName, fileContent, step1Data, step2Data);
- console.log("email sent and form1SubmitOK? ", result, form1SubmitOk);
- if (result === 202 && form1SubmitOk) {
- setProgress(100);
- router.push('/form1/acknowledgement');
- } else {
- setMessage(pdfEmailSubmitError);
- setProgress(100);
- setIsLoading(false);
- }
- };
- // callback to reader.onload
- if (file || file !== undefined)
- reader.readAsDataURL(file);
}
const clearData = (event: React.MouseEvent