374 lines
19 KiB
JavaScript
374 lines
19 KiB
JavaScript
import _ from "lodash";
|
|
import useTranslation from "next-translate/useTranslation";
|
|
import { useRouter } from "next/router";
|
|
import { useDropzone } from "react-dropzone";
|
|
import RepComplete from "./representationComplete";
|
|
import RepLPAQuestionnaireCheck from "./representationLPAQuestionnaireCheck";
|
|
|
|
const RepCompleteSubmit = (props) => {
|
|
let { t } = useTranslation();
|
|
|
|
const router = useRouter();
|
|
const { locale } = router;
|
|
const {
|
|
formObj,
|
|
appellantApplicantRepresentationArr,
|
|
setRepresentationCapacity,
|
|
setRepresentationSubmit,
|
|
currentView,
|
|
setSubmitBack,
|
|
setRepresentationSubmitConfirmation,
|
|
setRepresentationMessageSent,
|
|
setRepresentationReset,
|
|
} = props;
|
|
const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
|
|
const files = acceptedFiles.map((file) => (
|
|
<li key={file.path}>
|
|
{file.path} - {file.size} bytes
|
|
</li>
|
|
));
|
|
|
|
const repFormData = formObj.representationForm.values;
|
|
|
|
const getThumbnailIconByExtension = (blobName) => {
|
|
let fileType = blobName.slice(blobName.lastIndexOf(".") + 1);
|
|
|
|
switch (fileType) {
|
|
case "html":
|
|
return "/assets/images/documenttypes/html.png";
|
|
break;
|
|
case "txt":
|
|
return "/assets/images/documenttypes/txt.png";
|
|
break;
|
|
case "doc":
|
|
return "/assets/images/documenttypes/doc.png";
|
|
break;
|
|
case "pdf":
|
|
return "/assets/images/documenttypes/pdf.png";
|
|
break;
|
|
case "docx":
|
|
return "/assets/images/documenttypes/docx.png";
|
|
break;
|
|
case "csv":
|
|
return "/assets/images/documenttypes/csv.png";
|
|
break;
|
|
case "xlsx":
|
|
return "/assets/images/documenttypes/xlsx.png";
|
|
break;
|
|
|
|
case "zip":
|
|
return "/assets/images/documenttypes/zip.png";
|
|
break;
|
|
case "jpeg":
|
|
case "jpg":
|
|
return "/assets/images/documenttypes/jpg.png";
|
|
case "png":
|
|
return "/assets/images/documenttypes/png.png";
|
|
break;
|
|
default:
|
|
return "/assets/images/documenttypes/txt.png";
|
|
break;
|
|
}
|
|
};
|
|
|
|
function bytesToSize(bytes) {
|
|
var sizes = ["Bytes", "KB", "MB", "GB", "TB"];
|
|
if (bytes == 0) return "0 Byte";
|
|
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
|
|
return Math.round(bytes / Math.pow(1024, i), 2) + " " + sizes[i];
|
|
}
|
|
|
|
console.log("///////// formObj:", formObj);
|
|
|
|
return (
|
|
<>
|
|
{currentView.representationSubmitConfirmation == true ? (
|
|
<RepComplete
|
|
props={props}
|
|
setRepresentationMessageSent={setRepresentationMessageSent}
|
|
setRepresentationReset={setRepresentationReset}
|
|
/>
|
|
) : (
|
|
<div id="rep-appellant">
|
|
<div className="govuk-grid-column-full">
|
|
<div className="govuk-grid-row govuk-body">
|
|
<h1 className="govuk-heading-m ">Submit</h1>
|
|
<dl className="govuk-summary-list ">
|
|
<h2 className="govuk-heading-m govuk-!-margin-top-9">
|
|
Your representation:
|
|
</h2>
|
|
<div className="govuk-summary-list__row">
|
|
<dt className="govuk-summary-list__key">
|
|
{t(
|
|
"case:representation-representation-type"
|
|
)}
|
|
</dt>
|
|
|
|
<dd className="govuk-summary-list__value">
|
|
{repFormData.representationType}
|
|
</dd>
|
|
|
|
<dd className="govuk-summary-list__actions">
|
|
<a
|
|
className="govuk-link"
|
|
href="#"
|
|
onClick={() => {
|
|
setSubmitBack();
|
|
}}
|
|
>
|
|
{t("newappeal:change-link-label")}
|
|
<span className="govuk-visually-hidden">
|
|
{" "}
|
|
{/* {FieldsTranslations(
|
|
rows[0].value
|
|
)} */}
|
|
</span>
|
|
</a>
|
|
</dd>
|
|
</div>
|
|
{_.has(
|
|
repFormData,
|
|
"representationOnBehalfOf"
|
|
) && (
|
|
<>
|
|
<div className="govuk-summary-list__row">
|
|
<dt className="govuk-summary-list__key">
|
|
{t(
|
|
"case:representation-onbehalfof"
|
|
)}
|
|
</dt>
|
|
|
|
<dd className="govuk-summary-list__value">
|
|
{
|
|
repFormData.representationOnBehalfOf
|
|
}
|
|
</dd>
|
|
|
|
<dd className="govuk-summary-list__actions">
|
|
<a
|
|
className="govuk-link"
|
|
href="#"
|
|
onClick={() => {
|
|
setSubmitBack();
|
|
}}
|
|
>
|
|
{t(
|
|
"newappeal:change-link-label"
|
|
)}
|
|
<span className="govuk-visually-hidden">
|
|
{" "}
|
|
{/* {FieldsTranslations(
|
|
rows[0].value
|
|
)} */}
|
|
</span>
|
|
</a>
|
|
</dd>
|
|
</div>
|
|
{repFormData.representationOnBehalfOf ==
|
|
"Yes" && (
|
|
<div className="govuk-summary-list__row">
|
|
<dt className="govuk-summary-list__key">
|
|
{t(
|
|
"case:representation-onbehalfof-details"
|
|
)}
|
|
</dt>
|
|
|
|
<dd className="govuk-summary-list__value">
|
|
{
|
|
repFormData.representationOnBehalfOf_details
|
|
}
|
|
</dd>
|
|
|
|
<dd className="govuk-summary-list__actions">
|
|
<a
|
|
className="govuk-link"
|
|
href="#"
|
|
onClick={() => {
|
|
setSubmitBack();
|
|
}}
|
|
>
|
|
{t(
|
|
"newappeal:change-link-label"
|
|
)}
|
|
<span className="govuk-visually-hidden">
|
|
{" "}
|
|
{/* {FieldsTranslations(
|
|
rows[0].value
|
|
)} */}
|
|
</span>
|
|
</a>
|
|
</dd>
|
|
</div>
|
|
)}
|
|
</>
|
|
)}
|
|
<div className="govuk-summary-list__row">
|
|
<dt className="govuk-summary-list__key">
|
|
{t("case:representation-comments")}
|
|
</dt>
|
|
|
|
<dd className="govuk-summary-list__value">
|
|
<span
|
|
className="multiline-elipsis"
|
|
dangerouslySetInnerHTML={{
|
|
__html: repFormData.representationComments,
|
|
}}
|
|
/>
|
|
</dd>
|
|
|
|
<dd className="govuk-summary-list__actions">
|
|
<a
|
|
className="govuk-link"
|
|
href="#"
|
|
onClick={() => {
|
|
setSubmitBack();
|
|
}}
|
|
>
|
|
{t("newappeal:change-link-label")}
|
|
<span className="govuk-visually-hidden">
|
|
{" "}
|
|
{/* {FieldsTranslations(
|
|
rows[0].value
|
|
)} */}
|
|
</span>
|
|
</a>
|
|
</dd>
|
|
</div>
|
|
<div className="govuk-summary-list__row">
|
|
<dt className="govuk-summary-list__key">
|
|
{t("case:representation-files")}
|
|
</dt>
|
|
|
|
<dd className="govuk-summary-list__value">
|
|
{formObj.representationForm.values
|
|
.representationDocuments.length > 0
|
|
? formObj.representationForm.values.representationDocuments.map(
|
|
(blob, i) => (
|
|
<div
|
|
key={
|
|
blob.name +
|
|
"_" +
|
|
i
|
|
}
|
|
className="govuk-!-margin-bottom-5 fileThumb "
|
|
>
|
|
<img
|
|
src={getThumbnailIconByExtension(
|
|
blob.name
|
|
)}
|
|
alt={blob.name}
|
|
width="50"
|
|
/>
|
|
|
|
<span className="govuk-body govuk-!-font-size-14 govuk-!-padding-left-5">
|
|
{blob.name} (
|
|
{bytesToSize(
|
|
blob.size
|
|
)}
|
|
)
|
|
</span>
|
|
</div>
|
|
)
|
|
)
|
|
: ""}{" "}
|
|
</dd>
|
|
|
|
<dd className="govuk-summary-list__actions">
|
|
<a
|
|
className="govuk-link"
|
|
href="#"
|
|
onClick={() => {
|
|
setSubmitBack();
|
|
}}
|
|
>
|
|
{t("newappeal:change-link-label")}
|
|
<span className="govuk-visually-hidden">
|
|
{" "}
|
|
{/* {FieldsTranslations(
|
|
rows[0].value
|
|
)} */}
|
|
</span>
|
|
</a>
|
|
</dd>
|
|
</div>
|
|
<RepLPAQuestionnaireCheck
|
|
props={props}
|
|
formObj={formObj}
|
|
setSubmitBack={setSubmitBack}
|
|
/>
|
|
</dl>
|
|
<p>
|
|
The gathering and subsequent processing of the
|
|
personal data supplied by you in this form, is
|
|
in accordance with the terms of our registration
|
|
under the Data Protection Act 2018.
|
|
</p>
|
|
|
|
<p>
|
|
The Planning Inspectorate takes its data
|
|
protection responsibilities for the information
|
|
you provide us with very seriously. To find out
|
|
more about how we use and manage your personal
|
|
data, please go to our privacy notice.
|
|
</p>
|
|
|
|
<p>
|
|
I confirm that all sections of this form have
|
|
been fully completed and that the details are
|
|
correct to the best of my knowledge.
|
|
</p>
|
|
|
|
<div className="govuk-form-group">
|
|
<label
|
|
className="govuk-label govuk-body-m"
|
|
htmlFor="representationType"
|
|
>
|
|
I confirm I have read the above.
|
|
</label>
|
|
{/* <Field
|
|
name="representationType"
|
|
component={RenderPickList}
|
|
datafieldname="representationType"
|
|
optionsArr={appellantApplicantRepresentationArr}
|
|
/> */}
|
|
</div>
|
|
</div>
|
|
<div className="govuk-grid-row">
|
|
<div className="govuk-button-group">
|
|
<button
|
|
type="submit"
|
|
className="govuk-button"
|
|
data-module="govuk-button"
|
|
// onClick={() => {
|
|
// setRepresentationSubmitConfirmation();
|
|
// setRepresentationSubmit(true);
|
|
// }}
|
|
>
|
|
{t("common:continue-button")}
|
|
</button>
|
|
{/* <a
|
|
onClick={() => {
|
|
setRepresentationSubmit(false);
|
|
}}
|
|
className="govuk-button"
|
|
>
|
|
Continue
|
|
</a> */}
|
|
|
|
<a
|
|
onClick={() => setSubmitBack()}
|
|
className="govuk-link"
|
|
>
|
|
{t("case:summary-back-button-label")}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default RepCompleteSubmit;
|