import { useTransactionContext } from '../hooks/useApprovalTransactionContext'; import { useCallApi } from '@/hooks'; import { apiConfig } from '@/config/api.config'; import { useCallback, useEffect, useState } from 'react'; import { Dialog, DialogBody, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { doSaveLogActivity } from '@/actions/GlobalActions'; import { toast } from 'sonner'; import { Input } from '@/components/ui/input'; import { DefaultTooltip, KeenIcon, useDataGrid } from '@/components'; import Swal from 'sweetalert2'; // ✅ IMPORT sweetalert2 const API_URL = apiConfig.transaction; const ApprovalDialog = () => { const { GetData, PostData } = useCallApi(); const { reload } = useDataGrid(); const { showApprovalDialog, setShowApprovalDialog, selectedTransactionIdForApproval, } = useTransactionContext(); const [formField, setFormField] = useState({ transaction_code: '', status: '', notes: '', pin: '' }); const [alert, setAlert] = useState({ show: false, message: '', }); const doApproval = useCallback( async (e: React.FormEvent) => { e.preventDefault(); if (!formField.status) { toast.error('Please select a status.'); return; } // ✅ TUTUP Dialog sebelum munculkan SweetAlert setShowApprovalDialog(false); // ✅ TAMPILKAN SWEETALERT const result = await Swal.fire({ title: 'Are you sure?', text: "You want to save changes?", icon: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, save it!', cancelButtonText: 'Cancel' }); if (result.isConfirmed) { // ✅ Kalau tekan YES, baru tembak API const response = await PostData(`${API_URL}/transaction/set-approval`, { id_transaction: selectedTransactionIdForApproval, notes: formField.notes, status: formField.status, pin: formField.pin, }); // console.log(response?.message?.error?.message,response?.status); if (response?.status === false) { // console.log(response); toast.error(JSON.stringify(response)); return; } if (response?.status) { toast.success('Success Update Approval'); const createActivity = { module: 'Approval Transaction', description: `Change status approve for transaction => ${selectedTransactionIdForApproval}`, action: 'U', }; doSaveLogActivity(createActivity); reload(); } } else { // ✅ Kalau tekan Cancel console.log('User cancelled'); } }, [formField] ); useEffect(() => { if (showApprovalDialog) { setFormField({ transaction_code: '', notes: '', status: '', pin: '' }); setAlert({ show: false, message: '' }); } }, [showApprovalDialog]); return ( Approval Transaction
setFormField((prev) => ({ ...prev, pin: e.target.value, })) } />
{formField.status === 'N' && (
setFormField((prev) => ({ ...prev, notes: e.target.value, })) } />
)} {alert.show && (
{alert.message}
)}

); }; export default ApprovalDialog;