add reset pin and suspend

This commit is contained in:
unknown
2025-04-02 01:30:13 +07:00
parent 12c7670197
commit 2f138824ba

View File

@ -7,7 +7,10 @@ import UploadFileIcon from "@mui/icons-material/UploadFile";
import Divider from '@mui/material/Divider'; import Divider from '@mui/material/Divider';
import { initialMember } from "./Columns"; import { initialMember } from "./Columns";
import { apiConfig } from '@/config/api.config'; import { apiConfig } from '@/config/api.config';
import ConfirmDialog from '@/components/confirm';
import { toast } from 'sonner';
const BASE_URL_MASTER_DATA = apiConfig.service_master_data; const BASE_URL_MASTER_DATA = apiConfig.service_master_data;
const BASE_URL_CUSTOMER = apiConfig.service_customer;
const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStats, handleReject, page }: any) => { const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStats, handleReject, page }: any) => {
const [formData, setFormData] = useState(initialData || initialMember); const [formData, setFormData] = useState(initialData || initialMember);
@ -259,7 +262,7 @@ const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStat
<TextField disabled={viewOnly} fullWidth margin="dense" label="Bank Account" name="bank_account" value={formData.bank_account} onChange={handleChange} /> <TextField disabled={viewOnly} fullWidth margin="dense" label="Bank Account" name="bank_account" value={formData.bank_account} onChange={handleChange} />
<TextField disabled={viewOnly} fullWidth margin="dense" label="iBank Number" name="ibank_number" value={formData.ibank_number} onChange={handleChange} /> <TextField disabled={viewOnly} fullWidth margin="dense" label="iBank Number" name="ibank_number" value={formData.ibank_number} onChange={handleChange} />
<Divider className="pt-7"/> <Divider className="pt-7"/>
{getAdmAccess(page)} {getAdmAccess(page, formData)}
{ {
page === 'kyc' ? ( page === 'kyc' ? (
<> <>
@ -324,7 +327,39 @@ function fileTextFile(label: string, value: any, name: string, handleChange: any
) )
} }
function getAdmAccess(page: string) { function getAdmAccess(page: string, data: any) {
const [dialogOpen, setDialogOpen] = useState(false);
const [dialogType, setDialogType] = useState('');
const handleYes = async () => {
try {
if (dialogType === "update status") {
let statusNext = getPinStatus(data.status).res;
if (statusNext) await axios.put(`${BASE_URL_CUSTOMER}/customer/statuspin`, { customerid: data.id, status: statusNext })
else toast.error("Handle Active/Suspend only")
toast.success("Success Update Status")
}
if (dialogType === "reset pin") {
if (data.id) await axios.post(`${BASE_URL_CUSTOMER}/customer/resetpin`, { customerid: data.id })
else throw({ message: 'data.id not found' })
toast.success("Pin will send to customer MSISDN")
}
} catch (error: any) {
toast.error(error.message)
} finally {
setDialogOpen(false)
}
}
function buttonStatus() {
setDialogType('update status')
setDialogOpen(true)
}
function buttonResetPin() {
setDialogType('reset pin')
setDialogOpen(true)
}
if (page !== "kyc") { if (page !== "kyc") {
return ( return (
<Box p={3} boxShadow={3} borderRadius={2} bgcolor="white"> <Box p={3} boxShadow={3} borderRadius={2} bgcolor="white">
@ -332,12 +367,12 @@ function getAdmAccess(page: string) {
<Grid container spacing={3}> <Grid container spacing={3}>
<Grid item xs={6} container direction="column" spacing={2}> <Grid item xs={6} container direction="column" spacing={2}>
<Grid item> <Grid item>
<Typography variant="body2">Unblock PIN</Typography> <Typography variant="body2">Pin Status : {getPinStatus(data.status).msg}</Typography>
<Button variant="contained" color="primary">Unblock PIN</Button> <Button onClick={() => buttonStatus()} variant="contained" color="primary">{getPinStatus(data.status).btn}</Button>
</Grid> </Grid>
<Grid item> <Grid item>
<Typography variant="body2">Reset PIN</Typography> <Typography variant="body2">Reset PIN</Typography>
<Button variant="contained" color="primary">Reset PIN</Button> <Button onClick={() => buttonResetPin()} variant="contained" color="primary">Reset PIN</Button>
</Grid> </Grid>
</Grid> </Grid>
<Grid item xs={6} container direction="column" spacing={2}> <Grid item xs={6} container direction="column" spacing={2}>
@ -351,9 +386,45 @@ function getAdmAccess(page: string) {
</Grid> </Grid>
</Grid> </Grid>
</Grid> </Grid>
<ConfirmDialog
open={dialogOpen}
onClose={() => setDialogOpen(false)}
title="Confirm Action"
content={`Are you sure you want to ${dialogType}?`}
onYes={handleYes}
onNo={() => setDialogOpen(false)}
/>
</Box> </Box>
) )
} else { } else {
return ('') return ('')
} }
}
function getPinStatus(status: string) {
if (status === "Y") return {
msg: 'Active',
btn: 'Block PIN',
res: 'Block'
};
if (status === "N") return {
msg: 'Not Active',
btn: 'Activate PIN',
res: null
};
if (status === "P") return {
msg: 'Suspend PIN',
btn: 'Unblock PIN',
res: 'UnBlock'
};
if (status === "O") return {
msg: 'Suspend OTP',
btn: 'Unblock OTP',
res: null
};
return {
msg: "None",
btn: 'No status found',
res: null
}
} }