@@ -1,19 +1,35 @@
// material-ui
import * as React from 'react';
import {
Button
Button,
Grid,
Typography,
Stack,
Dialog, DialogTitle, DialogContent, DialogActions,
} from '@mui/material';
import * as UrlUtils from "utils/ApiPathConst";
import * as HttpUtils from "utils/HttpUtils";
import * as DateUtils from "utils/DateUtils";
import * as FormatUtils from "utils/FormatUtils";
import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils";
import { useNavigate } from "react-router-dom";
import { FiDataGrid } from "components/FiDataGrid";
import { notifyActionSuccess } from 'utils/CommonFunction';
import { FormattedMessage, useIntl } from "react-intl";
// ==============================|| EVENT TABLE ||============================== //
export default function SearchPublicNoticeTable({ recordList }) {
export default function SearchPublicNoticeTable({ recordList, reloadFunction }) {
const [rows, setRows] = React.useState(recordList);
const navigate = useNavigate()
const [selectedRowItems, setSelectedRowItems] = React.useState([]);
const [isConfirmPopUp, setIsConfirmPopUp] = React.useState(false);
const [isWarningPopUp, setIsWarningPopUp] = React.useState(false);
const intl = useIntl();
React.useEffect(() => {
setRows(recordList);
}, [recordList]);
@@ -57,7 +73,7 @@ export default function SearchPublicNoticeTable({ recordList }) {
headerName: 'Contact Person',
flex: 2,
renderCell: (params) => {
let company = params.row.enCompanyName != null?params.row.enCompanyName: params.row.chCompanyName;
let company = params.row.enCompanyName != null ? params.row.enCompanyName : params.row.chCompanyName;
company = company != null ? company : "";
/*
@@ -109,9 +125,55 @@ export default function SearchPublicNoticeTable({ recordList }) {
navigate('/application/' + params.id);
}
return (
<div style={{width: '100%' }}>
const doPublish = () => {
setIsConfirmPopUp(false);
let appIdList = [];
const datas = rows?.filter((row) =>
selectedRowItems.includes(row.id)
);
// console.log(datas)
for (var i = 0; i < datas?.length; i++) {
appIdList.push(datas[i].id);
}
if(appIdList.length<1){
setIsWarningPopUp(true);
}else{
HttpUtils.post({
url: UrlUtils.SET_PUBLIC_NOTICE_STATUS_PUBLISH_BULK,
params: {
ids: appIdList
},
onSuccess: () => {
reloadFunction()
notifyActionSuccess("Action Success!")
}
});
}
}
return (<>
<div style={{ width: '100%' }}>
<Grid container direction="row" justifyContent="flex-start" alignItems="center" sx={{ p: 1 }} >
<Button
variant="contained"
onClick={()=>setIsConfirmPopUp(true)}
>
Published
</Button>
</Grid>
<FiDataGrid
checkboxSelection
disableRowSelectionOnClick
onRowSelectionModelChange={(newSelection) => {
setSelectedRowItems(newSelection);
}}
isRowSelectable={(params) => {
return ((params.row.creditor === true && params.row.status == "confirmed") ||
(params.row.creditor === false && params.row.status == "paid"))
}}
rows={rows}
columns={columns}
customPageSize={10}
@@ -119,5 +181,63 @@ export default function SearchPublicNoticeTable({ recordList }) {
onRowDoubleClick={handleRowDoubleClick}
/>
</div>
<div>
<Dialog
open={isConfirmPopUp}
onClose={() => setIsConfirmPopUp(false)}
PaperProps={{
sx: {
minWidth: '40vw',
maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '30vw' },
maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '50vh' }
}
}}
>
<DialogTitle>
<Typography variant="h3" >
<FormattedMessage id="confirm" />
</Typography>
</DialogTitle>
<DialogContent style={{ display: 'flex', }}>
<Stack direction="column" justifyContent="space-between">
<Typography variant="h4" style={{ padding: '16px' }}>Please Confirm to mark selected application as Published.</Typography>
</Stack>
</DialogContent>
<DialogActions>
<Button onClick={() => setIsConfirmPopUp(false)} aria-label={intl.formatMessage({ id: 'close' })}>
<Typography variant="h5">
<FormattedMessage id="close" />
</Typography></Button>
<Button onClick={()=>doPublish()} aria-label={intl.formatMessage({ id: 'confirm' })}>
<Typography variant="h5">
<FormattedMessage id="confirm" />
</Typography></Button>
</DialogActions>
</Dialog>
</div>
<div>
<Dialog
open={isWarningPopUp}
onClose={() => setIsWarningPopUp(false)}
PaperProps={{
sx: {
minWidth: '40vw',
maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' },
maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' }
}
}}
>
<DialogTitle><Typography variant="h3">Warning</Typography></DialogTitle>
<DialogContent style={{ display: 'flex', }}>
<Typography variant="h4" style={{ padding: '16px' }}>{intl.formatMessage({ id: "MSG.plzSelectApp" })}</Typography>
</DialogContent>
<DialogActions>
<Button onClick={() => setIsWarningPopUp(false)}><Typography variant="h5">OK</Typography></Button>
</DialogActions>
</Dialog>
</div>
</>
);
}