import React, { useState, useEffect } from 'react'; import axios from 'axios'; const BASE_URL = "http://localhost:8000"; const InvestmentTable = () => { const [investments, setInvestments] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [searchTerm, setSearchTerm] = useState(''); const [refs, setRefs] = useState({}); const [users, setUsers] = useState({}); const fetchInvestments = async () => { const token = localStorage.getItem('token'); try { setLoading(true); const response = await axios.get(`${BASE_URL}/investment/`, { headers: { 'Authorization': `Bearer ${token}` } }); const sortedInvestments = response.data.data.sort((a, b) => new Date(b.transactionDate) - new Date(a.transactionDate) ); setInvestments(sortedInvestments); setError(null); } catch (error) { console.error("Error fetching investments:", error); setError("Failed to load investments. Please try again later."); } finally { setLoading(false); } }; const fetchRefs = async () => { const token = localStorage.getItem('token'); try { const response = await axios.get(`${BASE_URL}/refs/`, { headers: { 'Authorization': `Bearer ${token}` } }); const refsMap = {}; response.data.forEach(ref => { refsMap[ref.refId] = ref.refName; }); setRefs(refsMap); } catch (error) { console.error("Error fetching refs:", error); } }; const fetchUsers = async () => { const token = localStorage.getItem('token'); try { const response = await axios.get(`${BASE_URL}/users`, { headers: { 'Authorization': `Bearer ${token}` } }); const usersMap = {}; response.data.data.forEach(user => { usersMap[user.id] = user.username; }); setUsers(usersMap); } catch (error) { console.error("Error fetching users:", error); } }; useEffect(() => { fetchInvestments(); fetchRefs(); fetchUsers(); }, []); const handleStatusUpdate = async (investmentId, status) => { const token = localStorage.getItem('token'); try { await axios.patch(`${BASE_URL}/investment/${investmentId}`, { investmentStatus: status }, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); await fetchInvestments(); } catch (error) { console.error("Error updating status:", error); setError("Failed to update investment status"); } }; const filteredInvestments = investments.filter(investment => { const searchLower = searchTerm.toLowerCase(); return ( investment.refId.toString().includes(searchLower) || investment.fullName.toLowerCase().includes(searchLower) || investment.username.toLowerCase().includes(searchLower) || investment.accountNumber.includes(searchLower) ); }); if (loading) { return (
); } return (
{/* Search and filters */}
setSearchTerm(e.target.value)} />
{error && (

Hata!

{error}

)}
{filteredInvestments.map((investment) => ( ))}
ID Site Adı Soyadı Miktar Kullanıcı Adı Yöntem Hesap Adı Hesap No İşlem Tarihi Sonuç Tarihi İşlemi Yapan Durum İşlemler
{investment.id} {refs[investment.refId] || 'Unknown'} {investment.fullName} ₺{investment.balance.toLocaleString()} {investment.username} {investment.method} {investment.accountName} {investment.accountNumber} {new Date(investment.transactionDate).toLocaleString("tr-TR")} {investment.resultDate ? new Date(investment.resultDate).toLocaleString("tr-TR") : '-'} {users[investment.userID] || '-'} {investment.investmentStatus}
{investment.investmentStatus === 'Beklemede' && ( <> )}
{/* Show message if no investments found */} {filteredInvestments.length === 0 && (
Aradığınız kriterlerde yatırım bulunamadı.
)}
); }; export default InvestmentTable;