import { DataTable } from '@/components/ui/DataTable'; import { columns, Group } from './Column'; import { apiConfig } from '@/config/api.config'; import axios, { AxiosResponse } from 'axios'; import { DialogContent, MenuItem, Radio, RadioGroup, FormControlLabel, FormControl, Dialog, DialogActions, DialogTitle, Typography, Button, Box } from '@mui/material'; import { useState, useEffect } from 'react'; // import IconButton from '@mui/material/IconButton'; import CloseIcon from '@mui/icons-material/Close'; import Divider from '@mui/material/Divider'; import ConfirmDialog from '@/components/confirm'; // import { DialogHeader } from '@/components/ui/dialog'; // import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; const BASE_URL = apiConfig.service_customer; let initGroup = { id: '', groupName: '', status: '', description: '', pin_length: '', max_pin_attempts: '', default_notification: '' } const ManageGroups = () => { const [isDialogOpen, setIsDialogOpen] = useState(false); const [dataGroup, setDataGroup] = useState([]); const [formData, setFormData] = useState(initGroup); const [pageIndex, setPageIndex] = useState(0); const [pageSize, setPageSize] = useState(10); const [dialogType, setDialogType] = useState(''); const [dialogOpen, setDialogOpen] = useState(false); useEffect(() => { fetchGroups() }, []); async function fetchGroups() { try { let groups = await axios.get(`${BASE_URL}/groups/list`, { params: { limit: 10, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC' } }); setDataGroup(groups.data.data.list) } catch (error: any) { alert(error.message) console.log(error); } } const openDialog = () => setIsDialogOpen(true); const closeDialog = () => { setIsDialogOpen(false) setFormData(initGroup) }; const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }) }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setDialogOpen(true); }; function createGroup() { setDialogType('create'); openDialog(); } const handleUpdate = (group: any) => { setFormData({ ...formData, id: group.id, groupName: group.name, status: group.status, description: group.description }) setDialogType('update'); setIsDialogOpen(true) }; const handleDelete = (group: any) => { setFormData({ ...formData, id: group.id, groupName: group.name, status: group.status, description: group.description }) setDialogType('delete'); setDialogOpen(true) }; const handleYes = async () => { try { if (dialogType === 'create') { await axios.post(`${BASE_URL}/groups/create`, { "name": formData.groupName, "status": formData.status, "created_at": new Date() }) } else if (dialogType === 'update') { await axios.put(`${BASE_URL}/groups/update/${formData.id}`, { "name": formData.groupName, "status": formData.status, "updated_at": new Date() }) } else if (dialogType === 'delete') { await axios.delete(`${BASE_URL}/groups/delete/${formData.id}/true`) } await fetchGroups(); closeDialog(); setDialogOpen(false); } catch (error) { console.log(error); closeDialog(); setDialogOpen(false); } }; const handleNo = () => { setDialogOpen(false); }; return (
setDialogOpen(false)} title="Confirm Action" content={`Are you sure you want to `+( dialogType === 'create' ? "create?" : ( dialogType === 'update' ? "update?" : "delete?"))} onYes={handleYes} onNo={handleNo} />

Groups

Create New Group
} label="Yes" /> } label="No" />
{/*
*/} {/*
*/}
); }; export default ManageGroups;