diff --git a/components/pdftemplates/finalComments_pdf.js b/components/pdftemplates/finalComments_pdf.js
new file mode 100644
index 00000000..32a0b61b
--- /dev/null
+++ b/components/pdftemplates/finalComments_pdf.js
@@ -0,0 +1,392 @@
+import ReactPDF, {
+ Document,
+ Page,
+ Text,
+ View,
+ Image,
+ StyleSheet,
+ PDFViewer,
+ Font,
+} from "@react-pdf/renderer";
+import { createElement } from "react";
+import Html from "react-pdf-html";
+
+import renderers, { renderBlock } from "react-pdf-html/dist/renderers";
+
+const styles = StyleSheet.create({
+ page: {
+ backgroundColor: "white",
+ padding: 20,
+ fontSize: 16,
+ paddingBottom: 50,
+ },
+ header: {
+ fontSize: 25,
+ fontFamily: "Helvetica",
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ subHeader: {
+ fontSize: 20,
+ },
+ logoImage: { width: "200pt" },
+ questionBullet: { width: "5%", fontSize: 12 },
+ questionText: { width: "30%", fontSize: 12 },
+ questionTextMid: { width: "80%", fontSize: 12 },
+ questionTextWide: { width: "95%", fontSize: 12, marginBottom: 5 },
+ questionAnswer: {
+ color: "#757575",
+ width: "65%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerMid: {
+ color: "#757575",
+ width: "20%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerWide: {
+ color: "#757575",
+ width: "95%",
+ fontSize: 12,
+ marginLeft: "5%",
+ border: 1,
+ borderColor: "#eee",
+ backgroundColor: "white",
+ padding: 5,
+ },
+
+ sectionContainer: {
+ backgroundColor: "#F8F8F8",
+ padding: 10,
+ marginTop: 20,
+ fontSize: 15,
+ },
+ pageNumber: {
+ position: "absolute",
+ fontSize: 12,
+ bottom: 20,
+ left: 0,
+ right: 0,
+ textAlign: "center",
+ color: "grey",
+ },
+
+ richArea: {
+ fontSize: 12,
+ color: "red",
+ flexDirection: "column",
+ },
+});
+// const renderer_1 = require("@react-pdf/renderer");
+// const renderPara = {
+// "p": ({ style, element, children }) =>
+// createElement(renderer_1.View, { style: style }, children),
+// };
+
+export const finalComments_pdf = ({ docProps }) => {
+ //console.log("----", docProps);
+ function formatDates(dateObj) {
+ var dateObj = new Date(dateObj);
+ var dd = String(dateObj.getDate()).padStart(2, "0");
+ var mm = String(dateObj.getMonth() + 1).padStart(2, "0"); //January is 0!
+ var yyyy = dateObj.getFullYear();
+
+ return dd + "/" + mm + "/" + yyyy;
+ }
+ let values = docProps;
+ return (
+
+
+
+
+
+
+ Final Comments
+
+
+
+ For Planning, Conservation area, Listed
+ Building and Advertisement
+ applications/appeals
+
+
+
+
+
+
+
+
+ Case details
+
+
+
+ 1.
+
+ PEDW reference:
+
+
+ {values.caseRef}
+
+
+
+ 2.
+
+ LPA reference:
+
+
+ {values.lpaRef}
+
+
+
+ 3.
+
+ Site address/grid ref:
+
+
+ 123 Big Street, Small Town, Little County,
+ XD23 54X
+
+
+
+ 4.
+
+ Case Type:
+
+
+ Planning applicaiton (s78)
+
+
+
+
+
+
+ Comments
+
+
+
+
+
+ 5.
+
+
+ Final Comments
+
+
+
+ {values.representationComments}
+
+
+
+
+
+
+
+
+
+ Supporting documents
+
+
+
+
+ 11.
+
+ List of attachec files
+
+
+
+ {values.LPAcaseFileAndReps}
+
+
+
+
+
+
+
+ Declaration
+
+
+
+
+
+ Signed:
+
+
+ {values.caseOfficer}
+
+
+
+
+ Date:
+
+
+ {formatDates(values.signedDate)}
+
+
+
+
+
+ On behalf of:
+
+
+ {values.onBehalfOfLPA}
+
+
+
+
+
+ * Article 11 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Regulation 7 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) (Wales) Regulations 2012
+
+
+ ** Article 12 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Section 67/73 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) Act 1990; Regulation 10 of The Town and
+ Country Planning (Listed Buildings and
+ Conservation Areas) (Wales) Regulations 2012
+
+
+
+
+
+ `${pageNumber} / ${totalPages}`
+ }
+ fixed
+ />
+
+
+
+ );
+};
diff --git a/components/pdftemplates/lpaQuestionnaire_pdf.js b/components/pdftemplates/lpaQuestionnaire_pdf.js
new file mode 100644
index 00000000..0939036b
--- /dev/null
+++ b/components/pdftemplates/lpaQuestionnaire_pdf.js
@@ -0,0 +1,1348 @@
+import ReactPDF, {
+ Document,
+ Page,
+ Text,
+ View,
+ Image,
+ StyleSheet,
+ PDFViewer,
+ Font,
+} from "@react-pdf/renderer";
+import Html from "react-pdf-html";
+
+const styles = StyleSheet.create({
+ page: {
+ backgroundColor: "white",
+ padding: 20,
+ fontSize: 16,
+ paddingBottom: 50,
+ },
+ header: {
+ fontSize: 25,
+ fontFamily: "Helvetica",
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ subHeader: {
+ fontSize: 20,
+ },
+ logoImage: { width: "200pt" },
+ questionBullet: { width: "5%", fontSize: 12 },
+ questionText: { width: "30%", fontSize: 12 },
+ questionTextMid: { width: "80%", fontSize: 12 },
+ questionTextWide: { width: "95%", fontSize: 12, marginBottom: 5 },
+ questionAnswer: {
+ color: "#757575",
+ width: "65%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerMid: {
+ color: "#757575",
+ width: "20%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerWide: {
+ color: "#757575",
+ width: "95%",
+ fontSize: 12,
+ marginLeft: "5%",
+ border: 1,
+ borderColor: "#eee",
+ backgroundColor: "white",
+ padding: 5,
+ },
+
+ sectionContainer: {
+ backgroundColor: "#F8F8F8",
+ padding: 10,
+ marginTop: 20,
+ fontSize: 15,
+ },
+ pageNumber: {
+ position: "absolute",
+ fontSize: 12,
+ bottom: 20,
+ left: 0,
+ right: 0,
+ textAlign: "center",
+ color: "grey",
+ },
+
+ richArea: {
+ fontSize: 12,
+ color: "red",
+ flexDirection: "column",
+ },
+});
+
+export const lpaQuestionnaire_pdf = ({ docProps }) => {
+ console.log(docProps);
+ function formatDates(dateObj) {
+ var dateObj = new Date(dateObj);
+ var dd = String(dateObj.getDate()).padStart(2, "0");
+ var mm = String(dateObj.getMonth() + 1).padStart(2, "0"); //January is 0!
+ var yyyy = dateObj.getFullYear();
+
+ return dd + "/" + mm + "/" + yyyy;
+ }
+ let values = docProps;
+
+ console.log("sdffhjdhjdjdgkj: ", values.procedureType);
+ return (
+
+
+
+
+
+
+ Local Planning Authority Questionnaire
+
+
+
+ For Planning, Conservation area, Listed
+ Building and Advertisement
+ applications/appeals
+
+
+
+
+
+
+
+
+ The LPA must send the completed questionnaire and
+ any attachments to PEDW.casework@gov.wales and the
+ appellant (or their agent) within 5 working days of
+ the start date specified in our start letter.
+
+
+
+
+ Case details
+
+
+
+ 1.
+
+ PEDW reference:
+
+
+ {values.caseRef}
+
+
+
+ 2.
+
+ LPA reference:
+
+
+ {values.lpaRef}
+
+
+
+ 3.
+
+ Site address/grid ref:
+
+
+ 123 Big Street, Small Town, Little County,
+ XD23 54X
+
+
+
+ 4.
+
+ Case Type:
+
+
+ Planning applicaiton (s78)
+
+
+
+
+
+
+
+ Appeal procedure and site visit
+
+
+
+
+
+
+ 5.
+
+
+ Which procedure do you consider the
+ appeal should follow?
+
+
+ {values.procedureType}
+
+
+ {values.procedureType !=
+ "Written representations" && (
+
+
+ {values.procedureTypeEvidence}
+
+
+ )}
+
+
+ 6.
+
+ Will the Inspector need to enter the appeal
+ site/property?
+
+
+ {values.enterToView}
+
+
+
+
+
+
+ 7.
+
+
+ Do you consider that the Inspector needs
+ to enter neighbouring private
+ land/property to view the site?
+
+
+ {values.enterNeighbouringLandToViewSite}
+
+
+
+ {values.enterNeighbouringLandToViewSite ==
+ "Yes" && (
+
+
+ {
+ values.enterNeighbouringLandToViewSiteEvidence
+ }
+
+
+ )}
+
+
+
+
+ 8.
+
+
+ If access to private land/buildings is
+ required, are you content for the
+ Inspector to visit the site on an
+ ‘access required’ basis, with only the
+ landowner or their representative
+ present?
+
+
+ {
+ values.enterNeighbouringLandAccessRequired
+ }
+
+
+ {values.enterNeighbouringLandAccessRequired !=
+ "Yes" && (
+
+
+ {
+ values.enterNeighbouringLandAccessRequiredEvidence
+ }
+
+
+ )}
+
+
+
+
+ 9.
+
+
+ Are you aware of any health and safety
+ issues which would need to be considered
+ when the Inspector visits the site?
+
+
+ {values.healthAndSafetyIssues}
+
+
+ {values.healthAndSafetyIssues == "Yes" && (
+
+
+ {
+ values.healthAndSafetyIssuesEvidence
+ }
+
+
+ )}
+
+
+
+
+ 10.
+
+
+
+ LPA contact for site visit, hearing or
+ inquiry arrangements:
+
+
+
+
+ {values.LPAcontactDetails}
+
+
+
+
+
+
+
+
+ Supporting documents
+
+
+
+
+ 11.
+
+ LPA case file and representations
+
+
+
+ {values.LPAcaseFileAndReps}
+
+
+
+
+ 12.
+
+ LPA’s adopted local development plan and
+ Proposals Map
+
+
+
+ {values.LPAldpAndMap}
+
+
+
+
+ 13.
+
+ Adopted local guidance relevant to the
+ proposal:
+
+
+
+ {values.LPAlocalGuidance}
+
+
+
+
+ 14.
+
+ If applicable, do you intend to submit a
+ full statement at the 4- week stage?
+
+
+ {values.LPAintentionToSubmitFullStatement}
+
+
+
+
+
+
+
+ Statutory considerations
+
+
+
+
+ 15.
+
+ Is all or part of the site within an Area of
+ Outstanding Natural Beauty?
+
+
+ {values.AONB}
+
+
+
+
+
+ 16.
+
+
+ Does the site include any public rights
+ of way?
+
+
+ {values.ROW}
+
+
+ {values.ROW == "Yes" && (
+
+
+ {values.ROWEvidence}
+
+
+ )}
+
+
+
+
+ 17.
+
+
+ Is all or part of the site within a
+ Conservation Area?
+
+
+ {values.conservationArea}{" "}
+
+
+ {values.conservationArea == "Yes" && (
+
+
+ {values.conservationAreaEvidence}
+
+
+ )}
+
+
+
+
+ 18.
+
+
+ Would the proposal involve works to, or
+ affect the setting of, a listed
+ building, Scheduled Monument or other
+ designated historic asset?
+
+
+ {values.affectListedBuilding}
+
+
+ {values.affectListedBuilding == "Yes" && (
+
+
+ {
+ values.affectListedBuildingEvidence
+ }
+
+
+ )}
+
+
+
+
+ 19.
+
+
+ Is any part of the site subject to a
+ Tree Preservation Order?
+
+
+ {values.TPO}
+
+
+ {values.TPO == "Yes" && (
+
+
+ {values.TPOEvidence}
+
+
+ )}
+
+
+
+
+ 20.
+
+
+ Is the site within or likely to affect
+ an International or National Designated
+ Site for nature conservation (as defined
+ in Planning Policy Wales)?
+
+
+ {values.natureConservationSite}
+
+
+ {values.natureConservationSite == "Yes" && (
+
+
+ {
+ values.natureConservationSiteEvidence
+ }
+
+
+ )}
+
+
+
+
+ 21.
+
+
+ Are any protected species likely to be
+ affected by the proposal?
+
+
+ {values.protectedSpecies}
+
+
+ {values.protectedSpecies == "Yes" && (
+
+
+ {values.protectedSpeciesEvidence}
+
+
+ )}
+
+
+ 22.
+
+ Does the case involve persons claiming
+ Gypsy/Traveller status, whether or not this
+ is accepted by the LPA?
+
+
+ {values.gypsyTravellerInvolvment}
+
+
+
+
+
+ 23.
+
+
+ Have you received comments or directions
+ from any government department/agency or
+ statutory undertaker, including in
+ response to a statutory notification or
+ consultation?
+
+
+ {values.governmentDepartmentComments}
+
+
+ {values.governmentDepartmentComments ==
+ "Yes" && (
+
+
+ {
+ values.governmentDepartmentCommentsEvidence
+ }
+
+
+ )}
+
+
+
+
+
+
+ Suggested considerations
+
+
+
+
+ 24.
+
+ Review the following standard conditions and
+ advise whether they would be necessary if
+ permission/consent is granted (not
+ applicable to Advertisement consent
+ proposals):
+
+
+
+ a)
+
+ The development shall begin not later than
+ five years from the date of this decision.
+
+
+ {
+ values.developmentNotBeginLaterThanFiveYears
+ }
+
+
+
+
+
+ b)
+
+
+ The development shall be carried out in
+ accordance with the following approved
+ plans and documents:
+ ............................ Reason: To
+ ensure the development is carried out in
+ accordance with the approved documents,
+ plans and drawings submitted with the
+ application.
+
+
+ {
+ values.developmentCarriedOutInAccordance
+ }
+
+
+ {values.developmentCarriedOutInAccordance ==
+ "Yes" && (
+
+
+ {
+ values.developmentCarriedOutInAccordanceEvidence
+ }
+
+
+ )}
+
+
+ c)
+
+ No development shall take place until a
+ scheme for biodiversity enhancement has been
+ submitted to and agreed in writing by the
+ local planning authority. Development shall
+ be carried out in accordance with the
+ approved details.
+
+
+ {values.developmentNotTakePlaceBiodiversity}
+
+
+
+ d)
+
+ No development shall take place until a
+ scheme to enable the provision of gigabit
+ capable broadband infrastructure from the
+ site boundary to the dwellings/buildings
+ hereby permitted has been submitted to and
+ agreed in writing by the local planning
+ authority. Development shall be carried out
+ in accordance with the approved details.
+ Reason: To support the roll-out of digital
+ communications infrastructure across Wales
+ in accordance with Policy 13 of Future
+ Wales.
+
+
+ {values.developmentNotTakePlaceBroadband}
+
+
+
+
+
+ 25.
+
+
+ Do you consider other conditions, or
+ amended versions of the above standard
+ conditions, to be necessary?
+
+
+ {values.developmentAnyOtherConditions}
+
+
+ {values.developmentAnyOtherConditions ==
+ "Yes" && (
+
+
+ {
+ values.developmentAnyOtherConditionsEvidence
+ }
+
+
+ )}
+
+
+
+
+
+
+ Before sending, have you attached or provided a
+ web link to:
+
+
+
+
+
+
+ 26.
+
+
+ A copy of the applicant’s certificate
+ confirming that they notified persons
+ with an interest in the land?*
+
+
+ {values.copyOfApplicantsCertificate}
+
+
+
+
+ {
+ values.copyOfApplicantsCertificateEvidence
+ }
+
+
+
+
+
+
+
+ 27.
+
+
+ Evidence of any publicity given to the
+ application, including site notices and
+ local advertisement?**
+
+
+ {values.advertismentGiven}
+
+
+
+
+
+ {values.advertismentGivenEvidence}
+
+
+
+
+
+
+
+ 28.
+
+
+ A copy of the letter with which you
+ notified people of the appeal AND a list
+ of the people you notified?
+
+
+ {
+ values.copyOfLetterOfAppealNotification
+ }
+
+
+
+
+ {
+ values.copyOfLetterOfAppealNotificationEvidence
+ }
+
+
+
+
+
+
+
+ 29.
+
+
+ The LPA’s Environmental Impact
+ Assessment Screening Opinion, if
+ applicable?
+
+
+ {values.lpaEIAOS}
+
+
+ {values.lpaEIAOS == "Yes" && (
+
+
+ {values.lpaEIAOSEvidence}
+
+
+ )}
+
+
+
+
+
+ 30.
+
+
+ Advertisement consent proposals only: A
+ true copy of the Discontinuance Notice
+ (if one has been issued)?
+
+
+ {
+ values.advertismentConsentDiscontinuanceNotice
+ }
+
+
+ {values.advertismentConsentDiscontinuanceNotice ==
+ "Yes" && (
+
+
+ {
+ values.advertismentConsentDiscontinuanceNoticeEvidence
+ }
+
+
+ )}
+
+
+
+
+
+ 31.
+
+
+ Details of other appeals or applications
+ relating to the site, or a nearby site,
+ which are still being considered by PEDW
+ or the Welsh Ministers?
+
+
+ {values.detailsOfOtherAppeals}
+
+
+ {values.detailsOfOtherAppeals == "Yes" && (
+
+
+ {
+ values.detailsOfOtherAppealsEvidence
+ }
+
+
+ )}
+
+
+
+
+
+ 32.
+
+
+ Details of any previous appeal decision
+ relating to the site or a nearby site
+ referred to by the LPA or applicant?
+
+
+ {values.detailsOfPreviousAppeals}
+
+
+ {values.detailsOfPreviousAppeals == "Yes" && (
+
+
+ {
+ values.detailsOfPreviousAppealsEvidence
+ }
+
+
+ )}
+
+
+
+
+
+ 33.
+
+
+ Any other relevant information that we
+ should know about?
+
+
+ {values.otherRelevantInformation}
+
+
+ {values.otherRelevantInformation == "Yes" && (
+
+
+ {
+ values.otherRelevantInformationEvidence
+ }
+
+
+ )}
+
+
+
+
+
+ Declaration
+
+
+
+
+
+ Signed:
+
+
+ {values.caseOfficer}
+
+
+
+
+ Date:
+
+
+ {formatDates(values.signedDate)}
+
+
+
+
+
+ On behalf of:
+
+
+ {values.onBehalfOfLPA}
+
+
+
+
+
+ * Article 11 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Regulation 7 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) (Wales) Regulations 2012
+
+
+ ** Article 12 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Section 67/73 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) Act 1990; Regulation 10 of The Town and
+ Country Planning (Listed Buildings and
+ Conservation Areas) (Wales) Regulations 2012
+
+
+
+
+
+ `${pageNumber} / ${totalPages}`
+ }
+ fixed
+ />
+
+
+
+ );
+};
diff --git a/components/pdftemplates/other_pdf.js b/components/pdftemplates/other_pdf.js
new file mode 100644
index 00000000..8640a721
--- /dev/null
+++ b/components/pdftemplates/other_pdf.js
@@ -0,0 +1,348 @@
+import ReactPDF, {
+ Document,
+ Page,
+ Text,
+ View,
+ Image,
+ StyleSheet,
+ PDFViewer,
+ Font,
+} from "@react-pdf/renderer";
+import { createElement } from "react";
+import Html from "react-pdf-html";
+
+import renderers, { renderBlock } from "react-pdf-html/dist/renderers";
+
+const styles = StyleSheet.create({
+ page: {
+ backgroundColor: "white",
+ padding: 20,
+ fontSize: 16,
+ paddingBottom: 50,
+ },
+ header: {
+ fontSize: 25,
+ fontFamily: "Helvetica",
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ subHeader: {
+ fontSize: 20,
+ },
+ logoImage: { width: "200pt" },
+ questionBullet: { width: "5%", fontSize: 12 },
+ questionText: { width: "30%", fontSize: 12 },
+ questionTextMid: { width: "80%", fontSize: 12 },
+ questionTextWide: { width: "95%", fontSize: 12, marginBottom: 5 },
+ questionAnswer: {
+ color: "#757575",
+ width: "65%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerMid: {
+ color: "#757575",
+ width: "20%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerWide: {
+ color: "#757575",
+ width: "95%",
+ fontSize: 12,
+ marginLeft: "5%",
+ border: 1,
+ borderColor: "#eee",
+ backgroundColor: "white",
+ padding: 5,
+ },
+
+ sectionContainer: {
+ backgroundColor: "#F8F8F8",
+ padding: 10,
+ marginTop: 20,
+ fontSize: 15,
+ },
+ pageNumber: {
+ position: "absolute",
+ fontSize: 12,
+ bottom: 20,
+ left: 0,
+ right: 0,
+ textAlign: "center",
+ color: "grey",
+ },
+
+ richArea: {
+ fontSize: 12,
+ color: "red",
+ flexDirection: "column",
+ },
+});
+// const renderer_1 = require("@react-pdf/renderer");
+// const renderPara = {
+// "p": ({ style, element, children }) =>
+// createElement(renderer_1.View, { style: style }, children),
+// };
+
+export const other_pdf = ({ docProps }) => {
+ //console.log("----", docProps);
+ function formatDates(dateObj) {
+ var dateObj = new Date(dateObj);
+ var dd = String(dateObj.getDate()).padStart(2, "0");
+ var mm = String(dateObj.getMonth() + 1).padStart(2, "0"); //January is 0!
+ var yyyy = dateObj.getFullYear();
+
+ return dd + "/" + mm + "/" + yyyy;
+ }
+ let values = docProps;
+ return (
+
+
+
+
+
+
+ Other
+
+
+
+ For Planning, Conservation area, Listed
+ Building and Advertisement
+ applications/appeals
+
+
+
+
+
+
+
+
+ Case details
+
+
+
+ 1.
+
+ PEDW reference:
+
+
+ {values.caseRef}
+
+
+
+ {/*
+ 4.
+
+ Case Type:
+
+
+ Planning applicaiton (s78)
+
+ */}
+
+
+
+
+ Comments
+
+
+
+
+
+ {values.representationComments}
+
+
+
+
+
+ {/*
+
+
+ Supporting documents
+
+
+
+
+ 11.
+
+ List of attached files
+
+
+
+ {values.LPAcaseFileAndReps}
+
+
+
+
+
+
+
+ Declaration
+
+
+
+
+
+ Signed:
+
+
+ {values.caseOfficer}
+
+
+
+
+ Date:
+
+
+ {formatDates(values.signedDate)}
+
+
+
+
+
+ On behalf of:
+
+
+ {values.onBehalfOfLPA}
+
+
+
+
+
+ * Article 11 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Regulation 7 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) (Wales) Regulations 2012
+
+
+ ** Article 12 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Section 67/73 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) Act 1990; Regulation 10 of The Town and
+ Country Planning (Listed Buildings and
+ Conservation Areas) (Wales) Regulations 2012
+
+
+ */}
+
+
+ `${pageNumber} / ${totalPages}`
+ }
+ fixed
+ />
+
+
+
+ );
+};
diff --git a/components/pdftemplates/statement_pdf.js b/components/pdftemplates/statement_pdf.js
new file mode 100644
index 00000000..fdef0c9d
--- /dev/null
+++ b/components/pdftemplates/statement_pdf.js
@@ -0,0 +1,390 @@
+import ReactPDF, {
+ Document,
+ Page,
+ Text,
+ View,
+ Image,
+ StyleSheet,
+ PDFViewer,
+ Font,
+} from "@react-pdf/renderer";
+import { createElement } from "react";
+import Html from "react-pdf-html";
+
+import renderers, { renderBlock } from "react-pdf-html/dist/renderers";
+
+const styles = StyleSheet.create({
+ page: {
+ backgroundColor: "white",
+ padding: 20,
+ fontSize: 16,
+ paddingBottom: 50,
+ },
+ header: {
+ fontSize: 25,
+ fontFamily: "Helvetica",
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ subHeader: {
+ fontSize: 20,
+ },
+ logoImage: { width: "200pt" },
+ questionBullet: { width: "5%", fontSize: 12 },
+ questionText: { width: "30%", fontSize: 12 },
+ questionTextMid: { width: "80%", fontSize: 12 },
+ questionTextWide: { width: "95%", fontSize: 12, marginBottom: 5 },
+ questionAnswer: {
+ color: "#757575",
+ width: "65%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerMid: {
+ color: "#757575",
+ width: "20%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerWide: {
+ color: "#757575",
+ width: "95%",
+ fontSize: 12,
+ marginLeft: "5%",
+ border: 1,
+ borderColor: "#eee",
+ backgroundColor: "white",
+ padding: 5,
+ },
+
+ sectionContainer: {
+ backgroundColor: "#F8F8F8",
+ padding: 10,
+ marginTop: 20,
+ fontSize: 15,
+ },
+ pageNumber: {
+ position: "absolute",
+ fontSize: 12,
+ bottom: 20,
+ left: 0,
+ right: 0,
+ textAlign: "center",
+ color: "grey",
+ },
+
+ richArea: {
+ fontSize: 12,
+ color: "red",
+ flexDirection: "column",
+ },
+});
+// const renderer_1 = require("@react-pdf/renderer");
+// const renderPara = {
+// "p": ({ style, element, children }) =>
+// createElement(renderer_1.View, { style: style }, children),
+// };
+
+export const statement_pdf = ({ docProps }) => {
+ //console.log("----", docProps);
+ function formatDates(dateObj) {
+ var dateObj = new Date(dateObj);
+ var dd = String(dateObj.getDate()).padStart(2, "0");
+ var mm = String(dateObj.getMonth() + 1).padStart(2, "0"); //January is 0!
+ var yyyy = dateObj.getFullYear();
+
+ return dd + "/" + mm + "/" + yyyy;
+ }
+ let values = docProps;
+ return (
+
+
+
+
+
+
+ Statement
+
+
+
+ For Planning, Conservation area, Listed
+ Building and Advertisement
+ applications/appeals
+
+
+
+
+
+
+
+
+ Case details
+
+
+
+ 1.
+
+ PEDW reference:
+
+
+ {values.caseRef}
+
+
+
+ 2.
+
+ LPA reference:
+
+
+ {values.lpaRef}
+
+
+
+ 3.
+
+ Site address/grid ref:
+
+
+ 123 Big Street, Small Town, Little County,
+ XD23 54X
+
+
+
+ 4.
+
+ Case Type:
+
+
+ Planning applicaiton (s78)
+
+
+
+
+
+
+ Comments
+
+
+
+
+
+ 5.
+
+
+ Stament
+
+
+ {values.representationComment}
+
+
+
+
+
+
+
+
+ Supporting documents
+
+
+
+
+ 11.
+
+ List of attached files
+
+
+
+ {values.LPAcaseFileAndReps}
+
+
+
+
+
+
+
+ Declaration
+
+
+
+
+
+ Signed:
+
+
+ {values.caseOfficer}
+
+
+
+
+ Date:
+
+
+ {formatDates(values.signedDate)}
+
+
+
+
+
+ On behalf of:
+
+
+ {values.onBehalfOfLPA}
+
+
+
+
+
+ * Article 11 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Regulation 7 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) (Wales) Regulations 2012
+
+
+ ** Article 12 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Section 67/73 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) Act 1990; Regulation 10 of The Town and
+ Country Planning (Listed Buildings and
+ Conservation Areas) (Wales) Regulations 2012
+
+
+
+
+
+ `${pageNumber} / ${totalPages}`
+ }
+ fixed
+ />
+
+
+
+ );
+};
diff --git a/components/pdftemplates/writtenStatement_pdf.js b/components/pdftemplates/writtenStatement_pdf.js
new file mode 100644
index 00000000..1bb9c864
--- /dev/null
+++ b/components/pdftemplates/writtenStatement_pdf.js
@@ -0,0 +1,390 @@
+import ReactPDF, {
+ Document,
+ Page,
+ Text,
+ View,
+ Image,
+ StyleSheet,
+ PDFViewer,
+ Font,
+} from "@react-pdf/renderer";
+import { createElement } from "react";
+import Html from "react-pdf-html";
+
+import renderers, { renderBlock } from "react-pdf-html/dist/renderers";
+
+const styles = StyleSheet.create({
+ page: {
+ backgroundColor: "white",
+ padding: 20,
+ fontSize: 16,
+ paddingBottom: 50,
+ },
+ header: {
+ fontSize: 25,
+ fontFamily: "Helvetica",
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
+ subHeader: {
+ fontSize: 20,
+ },
+ logoImage: { width: "200pt" },
+ questionBullet: { width: "5%", fontSize: 12 },
+ questionText: { width: "30%", fontSize: 12 },
+ questionTextMid: { width: "80%", fontSize: 12 },
+ questionTextWide: { width: "95%", fontSize: 12, marginBottom: 5 },
+ questionAnswer: {
+ color: "#757575",
+ width: "65%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerMid: {
+ color: "#757575",
+ width: "20%",
+ fontSize: 12,
+ padding: 5,
+ border: 1,
+ borderColor: "#eee",
+ paddingLeft: 10,
+ backgroundColor: "white",
+ },
+ questionAnswerWide: {
+ color: "#757575",
+ width: "95%",
+ fontSize: 12,
+ marginLeft: "5%",
+ border: 1,
+ borderColor: "#eee",
+ backgroundColor: "white",
+ padding: 5,
+ },
+
+ sectionContainer: {
+ backgroundColor: "#F8F8F8",
+ padding: 10,
+ marginTop: 20,
+ fontSize: 15,
+ },
+ pageNumber: {
+ position: "absolute",
+ fontSize: 12,
+ bottom: 20,
+ left: 0,
+ right: 0,
+ textAlign: "center",
+ color: "grey",
+ },
+
+ richArea: {
+ fontSize: 12,
+ color: "red",
+ flexDirection: "column",
+ },
+});
+// const renderer_1 = require("@react-pdf/renderer");
+// const renderPara = {
+// "p": ({ style, element, children }) =>
+// createElement(renderer_1.View, { style: style }, children),
+// };
+
+export const writtenStatement_pdf = ({ docProps }) => {
+ //console.log("----", docProps);
+ function formatDates(dateObj) {
+ var dateObj = new Date(dateObj);
+ var dd = String(dateObj.getDate()).padStart(2, "0");
+ var mm = String(dateObj.getMonth() + 1).padStart(2, "0"); //January is 0!
+ var yyyy = dateObj.getFullYear();
+
+ return dd + "/" + mm + "/" + yyyy;
+ }
+ let values = docProps;
+ return (
+
+
+
+
+
+
+ Written Statement
+
+
+
+ For Planning, Conservation area, Listed
+ Building and Advertisement
+ applications/appeals
+
+
+
+
+
+
+
+
+ Case details
+
+
+
+ 1.
+
+ PEDW reference:
+
+
+ {values.caseRef}
+
+
+
+ 2.
+
+ LPA reference:
+
+
+ {values.lpaRef}
+
+
+
+ 3.
+
+ Site address/grid ref:
+
+
+ 123 Big Street, Small Town, Little County,
+ XD23 54X
+
+
+
+ 4.
+
+ Case Type:
+
+
+ Planning applicaiton (s78)
+
+
+
+
+
+
+ Comments
+
+
+
+
+
+ 5.
+
+
+ Stament
+
+
+ {values.representationComment}
+
+
+
+
+
+
+
+
+ Supporting documents
+
+
+
+
+ 11.
+
+ List of attached files
+
+
+
+ {values.LPAcaseFileAndReps}
+
+
+
+
+
+
+
+ Declaration
+
+
+
+
+
+ Signed:
+
+
+ {values.caseOfficer}
+
+
+
+
+ Date:
+
+
+ {formatDates(values.signedDate)}
+
+
+
+
+
+ On behalf of:
+
+
+ {values.onBehalfOfLPA}
+
+
+
+
+
+ * Article 11 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Regulation 7 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) (Wales) Regulations 2012
+
+
+ ** Article 12 of The Town and Country Planning
+ (Development Management Procedure) (Wales) Order
+ 2012; Section 67/73 of The Town and Country
+ Planning (Listed Buildings and Conservation
+ Areas) Act 1990; Regulation 10 of The Town and
+ Country Planning (Listed Buildings and
+ Conservation Areas) (Wales) Regulations 2012
+
+
+
+
+
+ `${pageNumber} / ${totalPages}`
+ }
+ fixed
+ />
+
+
+
+ );
+};
diff --git a/components/utils/index.js b/components/utils/index.js
index bd4e5447..bafc989e 100644
--- a/components/utils/index.js
+++ b/components/utils/index.js
@@ -238,7 +238,7 @@ export const getProgressObj = (
};
const BuildRowObj = (rowXML, titleList) => {
- const rowObj = Object.keys(rowXML).map((key, index) => {
+ let rowObj = Object.keys(rowXML).map((key, index) => {
var doc = parser.parseFromString(rowXML[key].outerHTML, "text/xml");
if (_.isEmpty(rowXML[key].innerHTML)) {
("");
diff --git a/package.json b/package.json
index 2952c2f6..4257786f 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,7 @@
"private": true,
"scripts": {
"dev": "next dev",
+ "debugdev": "NODE_OPTIONS='--inspect' next dev",
"dev:app": "node ./server/server.js",
"build": "NODE_ENV=production node_modules/next/dist/bin/next build",
"start": "node_modules/next/dist/bin/next start",
@@ -19,6 +20,7 @@
"@azure/storage-queue": "^12.11.0",
"@next-auth/prisma-adapter": "^1.0.4",
"@prisma/client": "^5.0.0",
+ "@react-pdf/renderer": "^3.1.12",
"@redux-devtools/extension": "^3.2.5",
"applicationinsights": "^2.2.0",
"axios": "^0.24.0",
@@ -51,6 +53,7 @@
"ospoint": "^0.2.1",
"path": "^0.12.7",
"prop-types": "^15.8.1",
+ "raw-loader": "^4.0.2",
"react": "17.0.2",
"react-accessible-accordion": "^4.0.0",
"react-autosuggest": "^10.1.0",
@@ -60,6 +63,8 @@
"react-dropzone": "^11.5.1",
"react-idle-timer": "4.6.4",
"react-leaflet": "^3.2.5",
+ "react-pdf": "^7.3.3",
+ "react-pdf-html": "^1.1.18",
"react-quill": "^2.0.0",
"react-redux": "^7.2.6",
"redux": "^4.2.1",
@@ -81,4 +86,4 @@
"eslint-plugin-jsdoc": "^40.0.1",
"prisma": "^5.0.0"
}
-}
+}
\ No newline at end of file
diff --git a/pages/api/file/generatepdf.js b/pages/api/file/generatepdf.js
new file mode 100644
index 00000000..71a8e158
--- /dev/null
+++ b/pages/api/file/generatepdf.js
@@ -0,0 +1,262 @@
+/**
+ * @swagger
+ * /api/file/generatepdf:
+ * post:
+ * tags: [Azure Storage]
+ * summary: Phase 2
+ * description: Create reps pdf from text field
+ * consumes:
+ * - application/json
+ * requestBody:
+ * name: PDF
+ * description: PDF content body
+ * required: true
+ * content:
+ * 'application/json':
+ * schema:
+ * type: object
+ * properties:
+ * representationType:
+ * type: string
+ * example: "Questionnaire"
+ * representationQuestion1:
+ * type: string
+ * example: "question 111111"
+ * representationQuestion2:
+ * type: string
+ * example: "question 232222"
+ * representationCapacity:
+ * type: string
+ * example: "yes"
+ * representationDocuments:
+ * type: array
+ * example: [{}]
+ * pinswg_name:
+ * type: string
+ * example: "2023-8-24-1692882853853--REP_Bond"
+ * containerID:
+ * type: string
+ * example: "cljzkgyev0006f9tl4pk6u171"
+ * appealType:
+ * type: integer
+ * example: 846040000
+ * incidentID:
+ * type: string
+ * example: "50b533aa-43f1-ec11-aade-00224800be9c"
+ * caseRef:
+ * type: string
+ * example: "CAS-00764-L0Q9W2"
+ * parameters:
+ * - name: container
+ * in: query
+ * required: true
+ * example: cljzkgyev0006f9tl4pk6u171
+ * schema:
+ * type: string
+ * - name: casefolderID
+ * in: query
+ * required: true
+ * example: CAS-00764-L0Q9W2
+ * schema:
+ * type: string
+ * - name: hash
+ * in: query
+ * required: true
+ * example: 530b67db992ea277a236790be05b2e49bdd9dd02e6d790cc1c25f96cf39687cb
+ * schema:
+ * type: string
+
+ *
+ * responses:
+ * 200:
+ * description: Success
+ */
+
+import {
+ createContainer,
+ getContainers,
+ getBlobs,
+ createRepBlob,
+ uploadFile,
+ uploadPDFRepFiles,
+} from "../../../actions/azurestorage";
+import { hashAPIPath } from "../../../actions";
+
+import ReactPDF, {
+ Document,
+ Page,
+ Text,
+ View,
+ StyleSheet,
+ PDFViewer,
+} from "@react-pdf/renderer";
+import middleware from "../middleware/middleware";
+import nextConnect from "next-connect";
+import fs from "fs";
+import { lpaQuestionnaire_pdf } from "../../../components/pdftemplates/lpaQuestionnaire_pdf";
+import { finalComments_pdf } from "../../../components/pdftemplates/finalComments_pdf";
+import { statement_pdf } from "../../../components/pdftemplates/statement_pdf";
+import { writtenStatement_pdf } from "../../../components/pdftemplates/writtenStatement_pdf";
+import { other_pdf } from "../../../components/pdftemplates/other_pdf";
+
+// const ApiProxy = nextConnect();
+// ApiProxy.use(middleware);
+
+// ApiProxy.post(async (req, res) => {
+
+export default function handler(req, res) {
+ var checkHash = req.query.hash;
+
+ let reqBodyobj = JSON.parse(req.body);
+
+ console.log(
+ "//////////////////////\nreqBodyobj" +
+ req +
+ "\n//////////////////////\n"
+ );
+ console.log(
+ "//////////////////////\nreqBodyobj" +
+ req.body +
+ "\n//////////////////////\n"
+ );
+
+ var containerID = reqBodyobj.containerID;
+ var casefolderID = reqBodyobj.casefolderID;
+ var caseRef = reqBodyobj.caseRef;
+ var representationType = reqBodyobj.representationType;
+ var repRaiser = reqBodyobj.lastname;
+ //console.log("there are files:", Object.keys(req.files).length);
+
+ var checkquerypath = "/api/file/generatepdf";
+
+ //console.log("-------", checkHash);
+ // console.log(hashAPIPath(checkquerypath) == "?hash=" + checkHash);
+ //console.log(casefolderID, caseRef);
+ // Create Document Component
+
+ const MyDocument = (values) => {
+ switch (values.docProps.representationType) {
+ case "Questionnaire":
+ return lpaQuestionnaire_pdf(values);
+ break;
+ case "Final comments":
+ return finalComments_pdf(values);
+ break;
+ case "Statement":
+ return statement_pdf(values);
+ break;
+ case "Written statement":
+ return writtenStatement_pdf(values);
+ break;
+ case "Other":
+ return other_pdf(values);
+ break;
+ default:
+ return other_pdf(values);
+ }
+ };
+
+ let repCapacity = "";
+ switch (reqBodyobj.representationCapacity) {
+ case "Appellant":
+ repCapacity = "APPELLANT";
+ break;
+ case "Agent":
+ repCapacity = "AGENT";
+ break;
+ case "Interested Party/Person":
+ repCapacity = "IP";
+ break;
+ case "Land Owner":
+ repCapacity = "LO";
+ break;
+ case "LPA":
+ repCapacity = "LPA";
+ break;
+
+ default:
+ // code block
+ }
+
+ let repType = "";
+ switch (reqBodyobj.representationType) {
+ case "Statement":
+ repType = "STATE";
+ break;
+ case "Statement of common ground":
+ repType = "SCG";
+ break;
+ case "Written statement":
+ repType = "WS";
+ break;
+ case "Written statement of evidence":
+ repType = "WSE";
+ break;
+ case "Questionnaire":
+ repType = "QUEST";
+ break;
+ case "Final comments":
+ repType = "FC";
+ break;
+
+ case "Other":
+ repType = "OTHER";
+ break;
+
+ default:
+ // code block
+ }
+
+ const repDate = new Date();
+
+ let day = ("0" + repDate.getDate()).slice(-2);
+ let month = ("0" + (repDate.getMonth() + 1)).slice(-2);
+ let year = repDate.getFullYear();
+ let time =
+ ("0" + repDate.getHours()).slice(-2) +
+ "" +
+ ("0" + repDate.getMinutes()).slice(-2);
+
+ let repDateStamp = "";
+ repDateStamp = year + "" + month + day + "-" + time;
+
+ console.log(repDateStamp);
+ //if (hashAPIPath(checkquerypath) == "?hash=" + checkHash) {
+ // //createContainer(containerID).then((containerName) => {
+
+ // console.log("does this get folder name:", containerID, casefolderID);
+
+ console.log(
+ "///////////////////////////////////\n file created: \n" +
+ `tmp/${caseRef}_rep_${repDateStamp}_${repCapacity}_${repRaiser}_${repType}.pdf` +
+ "\n/////////////////////////"
+ );
+
+ createRepBlob(req.body, containerID, caseRef);
+
+ ReactPDF.render(
+
,
+ `tmp/${caseRef}_rep_${repDateStamp}_${repCapacity}_${repRaiser}_${repType}.pdf`
+ );
+
+ uploadPDFRepFiles(
+ `tmp/${caseRef}_rep_${repDateStamp}_${repCapacity}_${repRaiser}_${repType}.pdf`,
+ containerID,
+ caseRef,
+ repType
+ );
+
+ // to do upload file to storage account
+
+ // then remove from local folder
+
+ // fs.unlinkSync( `tmp/${caseRef}_rep_${repDateStamp}_${repCapacity}_${repRaiser}_${repType}.pdf`,);
+
+ return res.status(200).json({
+ data: "success",
+ path: `tmp/${caseRef}_rep_${repDateStamp}_${repCapacity}_${repRaiser}_${repType}.pdf`,
+ });
+ // } else {
+ // return res.status(400).json();
+ // }
+}
diff --git a/pages/api/file/getbloblist.js b/pages/api/file/getbloblist.js
index 392d3a14..17f05b56 100644
--- a/pages/api/file/getbloblist.js
+++ b/pages/api/file/getbloblist.js
@@ -54,10 +54,10 @@ ApiProxy.get(async (req, res) => {
if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) {
await getBlobs(containerName, casefolderID).then((data) => {
- return res.status(200).json({ files: data });
+ return res.status(200).json({ "value": [data] });
});
} else {
- return res.status(400).json();
+ return res.status(400).json({ "error": "ooops" });
}
});
diff --git a/pages/api/file/getrepsblob.js b/pages/api/file/getrepsblob.js
index 3c2823fb..730220ac 100644
--- a/pages/api/file/getrepsblob.js
+++ b/pages/api/file/getrepsblob.js
@@ -1,6 +1,37 @@
+/**
+ * @swagger
+ * /api/file/getrepsblob:
+ * get:
+ * tags: [Azure Storage]
+ * summary: Phase 2
+ * description: get reps blobs
+ * parameters:
+ * - name: container
+ * in: query
+ * required: true
+ * example: cl761h97h0008h11ycmu2qyfo
+ * schema:
+ * type: string
+ * - name: casefolderID
+ * in: query
+ * required: true
+ * example: TMP-AYJHX-SNW1H5
+ * schema:
+ * type: string
+ * - name: hash
+ * in: query
+ * required: true
+ * example: 372c59f86d62b57cc2a7981eeee7737c944d407c6a7f2ea9d85797bbfe9852c5
+ * schema:
+ * type: string
+ * responses:
+ * 200:
+ * description: Success
+ */
+
import {
downloadAllRepsFiles,
- getRepslobs,
+ getRepsBlobs,
} from "../../../actions/azurestorage";
import _ from "lodash";
import nextConnect from "next-connect";
@@ -17,23 +48,32 @@ ApiProxy.get(async (req, res) => {
var checkHash = req.query.hash;
var checkquerypath = "/api/file/getrepsblob?container=" + containerName;
+ // console.log("-----", casefolderID);
+ // console.log("-----", req.query);
+ // console.log("-----", checkquerypath);
+ // console.log("-----", hashAPIPath(checkquerypath));
+ // console.log("-----", checkHash);
+ // console.log(hashAPIPath(checkquerypath) == "&hash=" + checkHash);
+
if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) {
- const blobObj = await getRepslobs(containerName, casefolderID)
- .then((data) => {
- return downloadAllRepsFiles(containerName, data);
+ const blobObj = await getRepsBlobs(containerName, casefolderID)
+ .then(async (data) => {
+ console.log("----------xxxxxx------", data);
+ let result = await downloadAllRepsFiles(containerName, data);
+ return res.status(200).json(result);
})
- .then((data) => {
- return res.status(200).json(data);
+
+ .catch((error) => {
+ console.log(
+ "///////////////////////\ngetRepsFromBlob api in api route response: " +
+ error +
+ "\n///////////////////////\n"
+ );
+ console.log("API call error", error);
});
} else {
- return res.status(400).json();
+ return res.status(400).json({ msg: "error" });
}
});
-export const config = {
- api: {
- bodyParser: false,
- },
-};
-
export default ApiProxy;
diff --git a/pages/api/file/setupcontainer.js b/pages/api/file/setupcontainer.js
index 0781cebf..cff853cb 100644
--- a/pages/api/file/setupcontainer.js
+++ b/pages/api/file/setupcontainer.js
@@ -2,7 +2,6 @@ import {
createContainer,
getContainers,
getBlobs,
- createBlob,
uploadFile,
} from "../../../actions/azurestorage";
import { hashAPIPath } from "../../../actions";
diff --git a/pages/myportal/index.js b/pages/myportal/index.js
index a5133b72..628dec9c 100644
--- a/pages/myportal/index.js
+++ b/pages/myportal/index.js
@@ -297,7 +297,23 @@ export const getServerSideProps = wrapper.getServerSideProps(
const getDetails = (resultsObj, detailsType) => {
let detailsArr = [];
+ // console.log(
+ // "//////////////////////////////////\n",
+ // resultsObj,
+ // //"\n",
+ // detailsType,
+ // "\n//////////////////////////////////\n"
+ // );
+
resultsObj = resultsObj.value;
+
+ // console.log(
+ // "////////////////////////////////// resultsobj\n",
+ // detailsType,
+ // "\n",
+ // resultsObj.length + "\n//////////////////////////////////\n"
+ // );
+
if (detailsType == "myRepresentations") {
const repsObj = resultsObj.map((searchDetail, index) => {
//console.log(".......... ", searchDetail);
diff --git a/public/fonts/Roboto/LICENSE.txt b/public/fonts/Roboto/LICENSE.txt
new file mode 100644
index 00000000..75b52484
--- /dev/null
+++ b/public/fonts/Roboto/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/public/fonts/Roboto/Roboto-Black.ttf b/public/fonts/Roboto/Roboto-Black.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..0112e7da626ca2f959eca850c806779ba55dbfbd
GIT binary patch
literal 168060
zcma%k2VfLc*Y?~gyXo0YTS7@M^aRrA9qA?XmO$vegNPIb5fl^<5CrK(I-4;HHn1Q9
zw%8C56+{$$5kV1!WN-fG+}X*_^7?)M_xh5}mh7B+?&;?_cO)iBQUrdeQbLDz?H?*>
z<6b1mkpm=29^Rp6kKPAvJvmO2qu-RIQT03Y?%QVW<4Ycv
OM>G=LRlB87`JE~};C-n1P
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