import React, { useState, useEffect } from 'react'; import axios from 'axios'; import KasaEkleBox from './KasaEkleBox'; import KasaCıkarBox from './KasaCıkarBox'; import ConfirmBox from './ConfirmBox'; import BankaUpdateForm from './BankaUpdateForm'; import Logs from '../components/Logs'; const BASE_URL = "http://localhost:8000"; const BankTable = () => { const [showKasaEkle, setShowKasaEkle] = useState(false); const [showKasaCıkar, setShowKasaCıkar] = useState(false); const [selectedAccountId, setSelectedAccountId] = useState(null); const [selectedAccountBalance, setSelectedAccountBalance] = useState(null); const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [confirmModal, setConfirmModal] = useState(null); const [updateModal, setUpdateModal] = useState(null); const [logsModal, setLogsModal] = useState(null); const [searchTerm, setSearchTerm] = useState(''); const fetchData = async () => { try { setLoading(true); const response = await axios.get(`${BASE_URL}/bank/accounts`); const sortedUsers = response.data.data.sort((a, b) => new Date(b.created_at) - new Date(a.created_at)); setUsers(sortedUsers); setError(null); } catch (error) { console.error("Error fetching data: " + error); setError("Failed to load data. Please try again later."); } finally { setLoading(false); } }; useEffect(() => { fetchData(); }, []); const handleKasaTakviyeOn = (accountId, accountBalance) => { setSelectedAccountId(accountId); setSelectedAccountBalance(accountBalance); setShowKasaEkle(true); }; const handleKasaLogs = (accountId) => { setSelectedAccountId(accountId); setLogsModal(true); setUpdateModal(false); setConfirmModal(false); }; const handleKasaCıkarOn = (accountId, accountBalance) => { setSelectedAccountId(accountId); setSelectedAccountBalance(accountBalance); setShowKasaCıkar(true); }; const handleCloseConfirm = () => { setShowKasaEkle(false); setConfirmModal(false); setSelectedAccountId(null); }; const handleDeleteBank = async (accountId) => { const token = localStorage.getItem('token'); try { await axios.delete(`${BASE_URL}/bank/${accountId}`, { headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` } }); fetchData(); setTimeout(() => { setConfirmModal(null); }, 1000); } catch (error) { console.error("Error during deletion: ", error); } }; const formatIBAN = (accountNumber) => { let cleanedIBAN = accountNumber.replace(/\s+/g, ''); return cleanedIBAN.match(/.{1,4}/g).join(' '); }; if (loading) { return (
); } if (error) { return (
{error}
); } return (
{users.map((data) => ( ))}
ID Account Holder Bank IBAN Balance Created Status Investment Withdrawal Blocked Investment Limits Withdrawal Limits Max Balance History setSearchTerm(e.target.value)} /> Actions Operations
{data.id} {data.accountName} {data.bankName} TR {formatIBAN(data.accountNumber)} 0 && data.accountBalance < 5000 ? 'bg-yellow-600' : 'bg-emerald-600' }`}> {Number(data.accountBalance).toLocaleString("tr-TR", { minimumFractionDigits: 2, maximumFractionDigits: 2 })} ₺ {data.created_at} {data.isActive ? 'Active' : 'Inactive'} {data.isInvest ? 'Yes' : 'No'} {data.isPull ? 'Yes' : 'No'} {data.isBlocked ? 'Yes' : 'No'} {data.minInvest} / {data.maxInvest} {data.minPull} / {data.maxPull} {data.maxAmount}
{/* Modals */} {logsModal && ( setLogsModal(false)} /> )} {updateModal && ( setUpdateModal(false)} /> )} {showKasaEkle && ( setShowKasaEkle(false)} accountId={selectedAccountId} accountBalance={selectedAccountBalance} onSuccess={fetchData} /> )} {showKasaCıkar && ( setShowKasaCıkar(false)} accountId={selectedAccountId} accountBalance={selectedAccountBalance} onSuccess={fetchData} /> )} {confirmModal && ( handleDeleteBank(selectedAccountId)} onClose={() => setConfirmModal(false)} /> )}
); }; export default BankTable;