import { useTransactionContext } from '../hooks/useApprovalTransactionContext'; import { useCallApi } from '@/hooks'; import { apiConfig } from '@/config/api.config'; import { useCallback, useEffect, useRef, useState } from 'react'; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Alert, KeenIcon, useDataGrid } from '@/components'; import { doSaveLogActivity } from '@/actions/GlobalActions'; import { toast } from 'sonner'; import { Input } from '@/components/ui/input'; const API_URL = apiConfig.transaction; const ApprovalDialog = () => { const { GetData, PostData } = useCallApi(); // const { reload } = useDataGrid(); const { showApprovalDialog, setShowApprovalDialog, selectedTransactionIdForApproval } = useTransactionContext(); const [transactionDetails, setTransactionDetails] = useState(null); const [formField, setFormField] = useState({ transaction_code: '', status: '', notes: '' }); const [alert, setAlert] = useState({ show: false, message: '' }); const doApproval = useCallback( async (e: React.FormEvent) => { e.preventDefault(); if (!transactionDetails || !transactionDetails.code) { toast.error('Transaction data not loaded yet.'); return; } if (!formField.status) { toast.error('Please select a status.'); return; } const response = await PostData(`${API_URL}/transaction/set-approval`, { transaction_code: transactionDetails.id, status: formField.status, notes: formField.notes }); if (response?.status) { setAlert((prev) => ({ ...prev, show: false, message: '' })); toast.success('Success Update Position'); const createActivity = { module: 'Approval Transaction', description: `Change status approve for transaction => ${transactionDetails.code}`, action: 'U' }; doSaveLogActivity(createActivity); setShowApprovalDialog(false); // optionally close dialog } else { setAlert((prev) => ({ ...prev, show: true, message: response?.message })); } }, [formField, transactionDetails] ); useEffect(() => { const fetchTransactionDetails = async () => { if (selectedTransactionIdForApproval) { try { const response = await GetData(`${API_URL}/transaction/history/detail/${selectedTransactionIdForApproval}`, { id: selectedTransactionIdForApproval }); // console.log(response?.data.code); // console.log(selectedTransactionIdForApproval); setTransactionDetails(response?.data); } catch (error) { console.error('Error fetching transaction', error); } } }; if (showApprovalDialog && selectedTransactionIdForApproval) { fetchTransactionDetails(); } }, [showApprovalDialog, selectedTransactionIdForApproval, GetData]); return ( Approval Transaction
{formField.status === 'N' && (
)}

); }; export default ApprovalDialog;