import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useManageTransferFeeContext } from '../hooks/useManageTransferFeeContext'; import { NumericFormat } from 'react-number-format'; import { Alert, Container, DataGridColumnHeader, DataGridInner, KeenIcon, useDataGrid } from '@/components'; import { useCallApi } from '@/hooks'; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; import { doSaveLogActivity } from '@/actions/GlobalActions'; import { getAuth } from '@/auth'; import { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { ManageTransferFeeContext } from '../hooks/ManageTransferFeeContext'; import { ColumnDef } from '@tanstack/react-table'; import { ManageTransferFeeContextProvider } from '../../transferfee/hooks/ManageTransferFeeContext'; import { apiConfig } from '@/config/api.config'; import { get } from 'http'; interface TransactionTypeProps { id: string; name: string; } const API_URL = apiConfig.service_transaction; const AddFeeDialog = () => { const parentRef = useRef(null); const { reload } = useDataGrid(); const { PostData, PutData, GetData } = useCallApi(); const { showAddFeeDialog, handleAddFeeDialog, handleEditFeeDialog, selectedTransferFee } = useManageTransferFeeContext(); const [alert, setAlert] = useState({ show: false, message: '' }); const [transactionTypes, setTransactionTypes] = useState([]); const initialState = { name: '', description: '', transaction_type: '', minimum_amount: 0, maximum_amount: 0, period_start: '', period_end: '', deduct_amount: 0, deduct_percentage: 0, priority: false, status: '', status_include: '', created_by: '', created_at: '' }; const [formField, setFormField] = useState(initialState); const resetForm = () => { setFormField(initialState); }; const [isSubmitting, setIsSubmitting] = useState(false); const [showTransactionFeeDialog, setShowTransactionFeeDialog] = useState(false); const parsedUser = getAuth()?.user; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); // setIsSubmitting(true); const payload = { name: formField.name, description: formField.description, period_start: formField.period_start, period_end: formField.period_end, minimum_amount: formField.minimum_amount, maximum_amount: formField.maximum_amount, deduct_amount: formField.deduct_amount, deduct_percentage: formField.deduct_percentage, transaction_type: formField.transaction_type, status: formField.status, status_include: formField.status_include, priority: formField.priority ? 'Y' : 'N' }; }; useEffect(() => { const created_time = new Date(); const formattedTime = created_time.toISOString().slice(0, 19).replace('T', ' '); if (showAddFeeDialog) { setFormField({ ...formField, created_by: parsedUser?.username, created_at: formattedTime }); } }, [showAddFeeDialog]); useEffect(() => { if (!showAddFeeDialog) return; const getTransactionTypeList = async (sorting: any) => { try { sorting = sorting.length === 0 ? [{ id: 'name', desc: false }] : sorting; const response = await GetData(`${API_URL}/transactiontype/list`, { limit: 100, page: 1, with_deleted: false, order_field: sorting[0].id, order_direction: sorting[0].desc ? 'DESC' : 'ASC' }); setTransactionTypes(response?.data.list || []); } catch (error) { console.error('Error fetching customer', error); } }; getTransactionTypeList([{ id: 'id', desc: false }]); }, [showAddFeeDialog]); const doCreateTransferType = useCallback( async (e: React.FormEvent) => { e.preventDefault(); for (const key in formField) { if ( formField[key as keyof typeof formField] === '' || formField[key as keyof typeof formField] === 0 ) { setAlert({ show: true, message: 'All fields must be filled out' }); return; } } setAlert({ show: false, message: '' }); const response = await PostData(`${API_URL}/transactionfees/create`, { ...formField }); // console.log(response); if (response?.status) { toast.success('Success Create Transfer Fee'); reload(); resetForm(); handleAddFeeDialog(false); } else { setAlert({ show: true, message: response?.message || 'Failed to create transfer fee' }); } }, [formField] ); return ( handleAddFeeDialog(open)}>

Add Transfer Fee

{ handleAddFeeDialog(false); resetForm(); }} >
{alert.show && {alert.message}}
setFormField((prev) => ({ ...prev, name: target.value })) } />
setFormField((prev) => ({ ...prev, description: target.value })) } />
{ setFormField((prev) => ({ ...prev, minimum_amount: values.floatValue || 0 })); }} placeholder="Enter Max Transaction Per Day" />
{ setFormField((prev) => ({ ...prev, maximum_amount: values.floatValue || 0 })); }} placeholder="Enter Max Transaction Per Day" />
setFormField((prev) => ({ ...prev, period_start: target.value })) } />
setFormField((prev) => ({ ...prev, period_end: target.value })) } />
{ setFormField((prev) => ({ ...prev, deduct_amount: values.floatValue || 0 })); }} placeholder="Enter Max Transaction Per Day" />
{ setFormField((prev) => ({ ...prev, deduct_percentage: values.floatValue || 0 })); }} placeholder="Enter Max Transaction Per Day" />
); }; export default AddFeeDialog;