import { DataTable } from '@/components/ui/DataTable'; import { columns, Group } from './Column'; import { apiConfig } from '@/config/api.config'; import axios, { AxiosResponse } from 'axios'; import { Helmet } from 'react-helmet'; import { DialogContent, MenuItem, Radio, RadioGroup, FormControlLabel, FormControl, Dialog, DialogTitle, Typography, Button, Box, Breadcrumbs, Link } 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 { toast } from 'sonner'; // 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(1); 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: pageSize, page: pageIndex, with_deleted: false, order_field: 'name', order_direction: 'ASC' } }); let temp = 1; let resGroups = groups.data.data.list.map((el: any) => { el.no = temp++; return el; }); setDataGroup(resGroups); } 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(); if (!formData.groupName) return toast.warning(`Group name can not be empty!`) if (!formData.status) return toast.warning(`Status can not be empty!`) if (!formData.description) return toast.warning(`Description can not be empty!`) setIsDialogOpen(false); 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, description: formData.description, created_at: new Date() }); toast.success(`Success create group`) } else if (dialogType === 'update') { await axios.put(`${BASE_URL}/groups/update/${formData.id}`, { name: formData.groupName, status: formData.status, description: formData.description, updated_at: new Date() }); toast.success(`Success update group`) } else if (dialogType === 'delete') { await axios.delete(`${BASE_URL}/groups/delete/${formData.id}/true`); toast.success(`Success delete group`) } } catch (error: any) { console.log(error); toast.error(error.message) } finally { await fetchGroups(); setDialogOpen(false); closeDialog(); } }; return ( <> TPAY | Manage Group setDialogOpen(false)} title="Confirm Action" content={ `Are you sure you want to ` + (dialogType === 'create' ? 'create?' : dialogType === 'update' ? 'update?' : 'delete?') } onYes={handleYes} onNo={() => setDialogOpen(false)} />

Groups

Dashboard Groups Manage Groups
{dialogType==='create'?"Create New Group":"Update Group"}
} label="Yes" /> } label="No" />
); }; export default ManageGroups;