// material-ui import { Dialog, DialogTitle, DialogContent, DialogActions, Typography, Grid, Stack, TextField, FormLabel, Button, Checkbox, RadioGroup, Radio, FormControlLabel } from '@mui/material'; import * as UrlUtils from "utils/ApiPathConst"; import * as HttpUtils from "utils/HttpUtils"; import FileList from "components/FileList" import MainCard from "components/MainCard"; import * as React from "react"; import * as yup from 'yup'; import { useParams } from "react-router-dom"; import { useFormik } from 'formik'; import { useNavigate } from "react-router-dom"; import * as DateUtils from "utils/DateUtils" import Loadable from 'components/Loadable'; import { notifyActionSuccess } from 'utils/CommonFunction'; import { PNSPS_BUTTON_THEME } from "themes/buttonConst"; import { ThemeProvider } from "@emotion/react"; import { FormattedMessage, useIntl } from "react-intl"; import { isDummyLoggedIn } from "utils/Utils" const UploadFileTable = Loadable(React.lazy(() => import('./UploadFileTable'))); //import * as ProofStatus from "utils/statusUtils/ProofStatus"; // ==============================|| DASHBOARD - DEFAULT ||============================== // const FormPanel = ({ formData }) => { const intl = useIntl(); const { locale } = intl; const [data, setData] = React.useState({}); const [paymentMethod, set_paymentMethod] = React.useState(""); const [attachments, setAttachments] = React.useState([]); const [actionValue, setActionValue] = React.useState(true); const [warningTitle, setWarningTitle] = React.useState(""); const [isWarningPopUp, setIsWarningPopUp] = React.useState(false); const [warningText, setWarningText] = React.useState(""); const navigate = useNavigate() const params = useParams(); const tabelStyle = { border: "2px solid gray", borderCollapse: "collapse", padding: "right" } React.useEffect(() => { if (formData) { setData(formData); if (isDummyLoggedIn()) { set_paymentMethod("demandNote") } } }, [formData]); const formik = useFormik({ enableReinitialize: true, initialValues: data, validationSchema: yup.object().shape({ vaild: yup.string().max(255, intl.formatMessage({ id: 'requireLoginPassword' })).required(intl.formatMessage({ id: 'requireLoginPassword' })), }), onSubmit: values => { if (isOverTime() && !isDummyLoggedIn()) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'MSG.proofOutOfTime' })); setIsWarningPopUp(true); return; } let pm = paymentMethod; if (!isDummyLoggedIn()) { if (pm == "demandNote") { pm = isOverDnReviseDeadline() ? "" : pm; } else if (pm == "office") { pm = isOverNpgoReviseDeadline() ? "" : pm; } } if (actionValue == false && isOverReviseDeadline() && !isDummyLoggedIn()) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'MSG.overReviseDeadline' })); setIsWarningPopUp(true); return; } else if (formData.creditor == false && pm == "") { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'MSG.plzSelectPaymentMethod' })); setIsWarningPopUp(true); return; } if (!actionValue) { if (!attachments || attachments.length <= 0) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'requireFile' })); setIsWarningPopUp(true); return; } } // console.log(values); HttpUtils.postWithFiles({ url: UrlUtils.REPLY_PROOF, params: { id: data.id, action: actionValue, vaild: values.vaild, paymentMethod: pm }, files: attachments ? attachments : [], onSuccess: function (responseData) { if (responseData.msg) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: responseData.msg })); setIsWarningPopUp(true); return; } if (responseData.id == params.id) { notifyActionSuccess(intl.formatMessage({ id: "submitted" })) navigate("/proof/pay/" + params.id); } else { navigate("/proof/search"); } }, onFail: function (response) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'actionFail' })); setIsWarningPopUp(true); console.log(response); }, onError: function (error) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'actionFail' })); setIsWarningPopUp(true); console.log(error); } }); } }); const readFile = (event) => { let file = event.target.files[0]; if (file) { if (!file.name.toLowerCase().substr(file.name.length - 4).includes(".pdf")) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'requireValidFileWithPdfFormat' })); setIsWarningPopUp(true); document.getElementById("uploadFileBtn").value = ""; return; } if (file.size >= (10 * 1024 * 1034)) { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'fileSizeWarning' })); setIsWarningPopUp(true); return; } file['id'] = attachments.length; setAttachments([ ...attachments, file ]); document.getElementById("uploadFileBtn").value = ""; } } const isOverTime = () => { let proofPaymentDeadline = DateUtils.convertToDate(formData?.proofPaymentDeadline); if (!proofPaymentDeadline) return true; let current = new Date(); return current.getTime() > proofPaymentDeadline; } const isOverReviseDeadline = () => { // if (paymentMethod == "demandNote") return isOverDnReviseDeadline(); // if (paymentMethod == "office") return isOverNpgoReviseDeadline(); //online payment let reviseDeadline = DateUtils.convertToDate(formData?.reviseDeadline); // reviseDeadline?.setTime(reviseDeadline?.getTime() + (14 * 60 * 60 * 1000));// 14:00 if (!reviseDeadline) return true; let current = new Date(); return current.getTime() > reviseDeadline; } const isOverDnReviseDeadline = () => { let reviseDeadline = DateUtils.convertToDate(formData?.closingDateOff); reviseDeadline?.setTime(reviseDeadline?.getTime() + (17 * 60 * 60 * 1000));// 17:00 if (!reviseDeadline) return true; let current = new Date(); return current.getTime() > reviseDeadline; } const isOverNpgoReviseDeadline = () => { let reviseDeadline = DateUtils.convertToDate(formData?.closingDate); reviseDeadline?.setTime(reviseDeadline?.getTime() + (12 * 60 * 60 * 1000));// 12:00 if (!reviseDeadline) return true; let current = new Date(); return current.getTime() > reviseDeadline; } return (
{ formik.values.replyDate ? :  { locale === 'en' ? DateUtils.dateValue(formik.values.replyDate) : DateUtils.datetimeStr_Cht(formik.values.replyDate) } : {formik.values.action ? ( ) : ( )} {/* { locale === 'en' ? ProofStatus.getStatusText_Eng(formik.values).text : ProofStatus.getStatusText_Cht(formik.values).text } */} { formik.values.action ? null : } : ( isOverTime() ? : { setActionValue(event.target.value === "true" ? true : false); }} > } label={intl.formatMessage({ id: 'proofErrorFree' })} /> } label={intl.formatMessage({ id: 'proofWithError' })} /> { actionValue && formData.creditor == false ? isDummyLoggedIn() ?
{ set_paymentMethod("demandNote") }} />
{ setWarningTitle(intl.formatMessage({ id: "payDn" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.
{ set_paymentMethod("office") }} />
{ setWarningTitle(intl.formatMessage({ id: "payNPGO" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m.
:
{ set_paymentMethod("online") }} />
{ setWarningTitle(intl.formatMessage({ id: "payOnline" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} {DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}
{isOverDnReviseDeadline() ? <> : { set_paymentMethod("demandNote") }} /> }
{ setWarningTitle(intl.formatMessage({ id: "payDn" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.
{ isOverNpgoReviseDeadline() ? <> : { set_paymentMethod("office") }} /> }
{ setWarningTitle(intl.formatMessage({ id: "payDn" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m.
: actionValue ? <> : <> { isOverReviseDeadline() ? : <> = (formik.values.groupType === "Private Bill" ? 2 : 1)} onChange={(event) => { readFile(event) }} /> } } { actionValue == false && isOverReviseDeadline() ? <> : }
) }
setIsWarningPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} > {warningTitle} {warningText}
); }; export default FormPanel;