// material-ui import { FormControl, Button, Grid, Typography, FormLabel, TextField, OutlinedInput, Stack, Dialog, DialogTitle, DialogContent, DialogActions, InputAdornment, Autocomplete } from '@mui/material'; import { isGranted, delBugMode, getPaymentMethod} from "auth/utils"; const MainCard = Loadable(lazy(() => import('components/MainCard'))); import { useForm } from "react-hook-form"; import { useEffect, useState, lazy } from "react"; import Loadable from 'components/Loadable'; import * as ComboData from "utils/ComboData"; const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); import * as HttpUtils from "utils/HttpUtils" import * as DateUtils from "utils/DateUtils" import { CHECK_CREATE_PROOF, UPDATE_GLDREMARKS, APPLICATION_UPDATE_PAYMENT_MEANS} from "utils/ApiPathConst" import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; import DoneIcon from '@mui/icons-material/Done'; import CloseIcon from '@mui/icons-material/Close'; import EditNoteIcon from '@mui/icons-material/EditNote'; import DownloadIcon from '@mui/icons-material/Download'; import ReplayIcon from '@mui/icons-material/Replay'; import { notifyDownloadSuccess } from 'utils/CommonFunction'; import { isGrantedAny } from "auth/utils"; import { useIntl } from "react-intl"; // ==============================|| DASHBOARD - DEFAULT ||============================== // const ApplicationDetailCard = ( { applicationDetailData, setStatus, setUploadStatus } ) => { const [currentApplicationDetailData, setCurrentApplicationDetailData] = useState({}); const [companyName, setCompanyName] = useState({}); const [orgDetail, setOrgDetail] = useState({}); const [verified, setVerified] = useState(null); const [fileDetail, setfileDetail] = useState({}); const [proofId, setProofId] = useState(null); const [onReady, setOnReady] = useState(false); const [showPaymentMeans, setShowPaymentMeans] = useState(false); const [paymentMeans, setPaymentMeans] = useState(ComboData.paymentMeans[0]); const [oldPaymentMeans, setOldPaymentMeans] = useState(""); const [isPaymentMeansPopUp, setIsPaymentMeansPopUp] = useState(false); const { register, handleSubmit } = useForm() const intl = useIntl(); const [isWarningPopUp, setIsWarningPopUp] = useState(false); const [warningText, setWarningText] = useState(""); const [remarksPopUp, setRemarksPopUp] = useState(false); const [onDownload, setOnDownload] = useState(false); useEffect(() => { //if user data from parent are not null // console.log(applicationDetailData) if (Object.keys(applicationDetailData).length > 0) { loadApplicationDetail() } }, [applicationDetailData]); useEffect(() => { //if state data are ready and assign to different field // console.log(currentApplicationDetailData) if (Object.keys(currentApplicationDetailData).length > 0) { setOnReady(true); } }, [currentApplicationDetailData]); const loadApplicationDetail = () => { setCurrentApplicationDetailData(applicationDetailData.data); setOrgDetail(applicationDetailData.orgDetail?.data); setCompanyName(applicationDetailData.companyName); setVerified(applicationDetailData.userData.verifiedBy ? true : false) setfileDetail(applicationDetailData.fileDetail); setProofId(applicationDetailData.proofId); if (applicationDetailData.data.status == 'submitted'||applicationDetailData.data.status == 'reviewed'||applicationDetailData.data.status == 'confirmed'){ setShowPaymentMeans(true) if (applicationDetailData.data.paymentMethod!=null){ setOldPaymentMeans(applicationDetailData.data.paymentMethod) } } // setReload(false) } const doPaymentMeans = () => { setIsPaymentMeansPopUp(false); console.log(oldPaymentMeans) console.log(paymentMeans.type) if(paymentMeans?.type!=oldPaymentMeans){ HttpUtils.post({ url: APPLICATION_UPDATE_PAYMENT_MEANS + "/" + currentApplicationDetailData.id, params: { paymentMeans: paymentMeans.type }, onSuccess: function () { location.reload(); } }); } } const onDownloadClick = () => () => { setOnDownload(true) HttpUtils.fileDownload({ fileId: fileDetail?.id, skey: fileDetail?.skey, filename: fileDetail?.filename, onResponse:()=>{ setOnDownload(false) notifyDownloadSuccess() }, onError:()=>{ setOnDownload(false) } }); setUploadStatus(true) }; const reSubmitClick = () => () => { setStatus("resubmit") }; const notAcceptedClick = () => () => { setStatus("notAccepted") }; const paidClick = () => () => { setStatus("paid") }; const setCompleteDisable = () => { if (delBugMode) return false; return (new Date()).getTime() < DateUtils.convertToDate(applicationDetailData.gazetteIssueDetail.issueDate).getTime(); } const complatedClick = () => () => { let issueDate = DateUtils.convertToDate(applicationDetailData.gazetteIssueDetail.issueDate); let current = new Date(); if (delBugMode) { setStatus("complete") } else if (current.getTime() >= issueDate.getTime()) { setStatus("complete") } }; const withdrawnClick = () => () => { setStatus("withdraw") }; const doPublish = () => () => { setStatus("publish") } const revokeClick = () => () => { setStatus("revoke") }; const onProofClick = () => { if (applicationDetailData.data.groupNo) { HttpUtils.get({ url: CHECK_CREATE_PROOF + "/" + currentApplicationDetailData.id, onSuccess: function (responeData) { if (responeData.success == true) { window.open("/proof/create/" + currentApplicationDetailData.id, "_blank", "noreferrer"); window.addEventListener("focus", onFocus) } else { let msg = responeData.msg; if (msg === "haveActiveProof") { msg = "Action Failed: There is already a pending payment and proofreading record for client review." } else if (msg === "haveProofed") { msg = "Action Failed: Already proofed." } setWarningText(msg); setIsWarningPopUp(true); } } }); } else { setWarningText("Please generate Gazette Code before Create Proof."); setIsWarningPopUp(true); } } const onFocus = () => { location.reload(); window.removeEventListener("focus", onFocus) } const onSubmit = (data) => { // console.log(data) const gldRemarks = data.makeRemarks if (gldRemarks != null && gldRemarks != currentApplicationDetailData.gldRemarks) { HttpUtils.post({ url: UPDATE_GLDREMARKS + "/" + currentApplicationDetailData.id, params: { gldRemarks: gldRemarks }, onSuccess: function () { location.reload(); }, onError: (error) => { alert(error) } }); } else { setRemarksPopUp(false) } }; return ( !onReady ? : {verified && currentApplicationDetailData.status !== "notAccepted" ? isGrantedAny("MAINTAIN_APPLICATION") ? {currentApplicationDetailData.status === "reviewed" && isGranted("MAINTAIN_PROOF") ? : null } { !(orgDetail?.creditor) && currentApplicationDetailData.creditor && currentApplicationDetailData.status === "published" ? <> : <> } {currentApplicationDetailData.status === "submitted" || currentApplicationDetailData.status == "reviewed" ? <> { proofId == null || proofId == 0? : null } : (currentApplicationDetailData.status == "confirmed" && currentApplicationDetailData.creditor == 1) ? <> : (currentApplicationDetailData.status == "confirmed" && currentApplicationDetailData.creditor == 0) ? <> : ( (currentApplicationDetailData.status == "paid" && currentApplicationDetailData.creditor == 0) ? <> : null ) } : null : null } Application Details
Application No: Status: {StatusUtils.getStatusByTextEng(currentApplicationDetailData.status, currentApplicationDetailData.creditor)} { currentApplicationDetailData.reason ? Reason: {currentApplicationDetailData.reason} : "" } Applicant: {currentApplicationDetailData.orgId === null ? : companyName.enCompanyName=="GLD"? : } Contact Phone: -} /> Contact Person: Contact Fax: -} /> Manuscript File: {fileDetail?.filename} {showPaymentMeans? Payment Means: {currentApplicationDetailData.paymentMethod!=null?intl.formatMessage({ id: getPaymentMethod(currentApplicationDetailData.paymentMethod)}):""} :null } Remarks: {isGrantedAny(["MAINTAIN_APPLICATION","MAINTAIN_PAYMENT"]) ? :null }
setIsWarningPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} > Warning {warningText}
setRemarksPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} >
Remarks {/* */}
setIsPaymentMeansPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} > Payment Means options} options={ComboData.paymentMeans} value={paymentMeans} getOptionLabel={(option) => option.label} inputValue={paymentMeans?.label ? paymentMeans?.label : ""} onChange={(event, newValue) => { setPaymentMeans(newValue); }} renderInput={(params) => ( )} InputLabelProps={{ shrink: true, }} disableClearable={true} />
); }; export default ApplicationDetailCard;