This commit is contained in:
2025-01-21 15:39:28 +07:00
parent 3b228a96fb
commit d297fc6ab2
2 changed files with 154 additions and 2 deletions

View File

@@ -63,7 +63,8 @@ import { Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material
import CloseIcon from '@mui/icons-material/Close';
import Label from '../../../components/Label';
import DialogEditMember from './sections/DialogEditMember';
import { Edit } from '@mui/icons-material';
import { Delete, Edit } from '@mui/icons-material';
import DialogDeleteMember from './sections/DialogDeleteMember';
export default function CorporatePlanList({handleSubmitSuccess}) {
const navigate = useNavigate();
@@ -153,6 +154,9 @@ export default function CorporatePlanList({handleSubmitSuccess}) {
setSearchParams(filter);
};
const [idMember, setIdMember] = useState<number>();
const [openDialogDeleteMember, setDialogDeleteMember] = useState(false)
useEffect(() => {
loadDataTableData();
}, []);
@@ -580,6 +584,14 @@ export default function CorporatePlanList({handleSubmitSuccess}) {
<HistoryIcon />
History
</MenuItem>
<MenuItem onClick={() => {
setIdMember(row.id)
setDialogDeleteMember(true)
}}
>
<Delete color='error'/>
Delete
</MenuItem>
</>
}
/>
@@ -922,8 +934,16 @@ export default function CorporatePlanList({handleSubmitSuccess}) {
setOpenDialog = {setOpenDialogUpdate}
member = {member}
>
</DialogEditMember>
<Grid item sm={12}>
{/* Dialog Delete */}
<DialogDeleteMember
id={idMember}
openDialog={openDialogDeleteMember}
setOpenDialog={setDialogDeleteMember}
/>
</Grid>
</Stack>
);
}

View File

@@ -0,0 +1,132 @@
import MuiDialog from "@/components/MuiDialog";
import { Autocomplete, Button, Card, Checkbox, DialogActions, Grid, Typography } from "@mui/material";
import { Paper } from "@mui/material";
import { Stack } from '@mui/material';
import React, { useState } from 'react';
import { fDateTimesecond, toTitleCase } from "@/utils/formatTime";
import axios from "@/utils/axios";
import { enqueueSnackbar } from "notistack";
import { useNavigate } from "react-router";
import { TextField } from "@mui/material";
type DialogDeleteType = {
openDialog: boolean;
setOpenDialog: any;
onSubmit?: void;
id: number|undefined;
}
export default function DialogDeleteMember({id, setOpenDialog, openDialog,onSubmit} : DialogDeleteType ) {
const style1 = {
color: '#919EAB',
width: '30%'
}
const style2 = {
width: '70%'
}
const marginBottom2 = {
marginBottom: 2,
}
const handleCloseDialog = () => {
setOpenDialog(false);
resetForm();
}
const [isReasonSelected, setIsReasonSelected] = useState(false);
const reasons = [
{ value: 'agreement', label: 'Agreement changed' },
{ value: 'endorsement', label: 'Endorsement' },
{ value: 'renewal', label: 'Renewal' },
{ value: 'wrong_setting', label: 'Wrong Setting' },
// Add more options as needed
];
const [formData, setFormData] = useState({
reason: null
});
const resetForm = () => {
setFormData({
reason: null
});
};
const handleChange = (field, value) => {
setFormData((prevData) => ({
...prevData,
[field]: value,
}));
if (field === 'reason') {
setIsReasonSelected(!!value);
}
};
const handleSubmit = () => {
if (isReasonSelected && formData.reason !== '') {
axios
.post(`members/${id}`, formData)
.then((response) => {
enqueueSnackbar('Member LOG has Deleted', { variant: 'success' });
setOpenDialog(false);
window.location.reload()
})
.catch(({ response }) => {
enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' });
});
} else {
setIsReasonSelected(false);
alert('Silakan pilih alasan sebelum menghapus data.');
}
}
const getContent = () => (
<Stack spacing={1} marginTop={2}>
<Typography variant="subtitle2">Are you sure to delete this detail Member ?</Typography>
<Grid item xs={12} md={12} marginTop={4}>
<Card sx={{padding:2, marginTop:2}} >
<Stack direction='row' spacing={2} sx={marginBottom2}>
<Typography variant='subtitle2' sx={style1} gutterBottom>Reason*</Typography>
<Autocomplete
options={reasons}
getOptionLabel={(option) => option.label}
fullWidth
value={reasons.find((r) => r.value === formData.reason) || null} // Use find to match the default value
onChange={(e, newValue) => handleChange('reason', newValue?.value)}
renderInput={(params) => (
<TextField
{...params}
label="Reason"
variant="outlined"
required
error={!isReasonSelected} // Menandai input sebagai salah jika opsi tidak dipilih
helperText={!isReasonSelected ? 'Alasan harus dipilih' : ''}
/>
)}
/>
</Stack>
</Card>
</Grid>
<DialogActions>
<Button variant="outlined" sx={{color: '#212B36', borderColor: '#919EAB52'}} onClick={handleCloseDialog}>Cancel</Button>
<Button color="error" variant="contained" onClick={handleSubmit}>Delete</Button>
</DialogActions>
</Stack>
);
return (
<MuiDialog
title={{name: "Delete Member"}}
openDialog={openDialog}
setOpenDialog={setOpenDialog}
content={getContent()}
maxWidth="xs"
/>
);
}