mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 15:12:08 +01:00
feat(backend): moved mock bank to backend
This commit is contained in:
@@ -195,44 +195,50 @@ export default function Dashboard({ onLogout }: { onLogout: () => void }) {
|
||||
setIsGenerating(true);
|
||||
setMockModalOpen(false);
|
||||
|
||||
const { count, minAmount, maxAmount, startDate, endDate, categoryIds } = options;
|
||||
const newTransactions: Transaction[] = [];
|
||||
|
||||
const startDateTime = new Date(startDate).getTime();
|
||||
const endDateTime = new Date(endDate).getTime();
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
// Generate random data based on user input
|
||||
const amount = parseFloat((Math.random() * (maxAmount - minAmount) + minAmount).toFixed(2));
|
||||
|
||||
const randomTime = Math.random() * (endDateTime - startDateTime) + startDateTime;
|
||||
const date = new Date(randomTime);
|
||||
const dateString = date.toISOString().split('T')[0];
|
||||
|
||||
const randomCategory = categoryIds.length > 0
|
||||
? [categoryIds[Math.floor(Math.random() * categoryIds.length)]]
|
||||
: [];
|
||||
|
||||
const payload = {
|
||||
amount,
|
||||
date: dateString,
|
||||
category_ids: randomCategory,
|
||||
};
|
||||
|
||||
try {
|
||||
const created = await createTransaction(payload);
|
||||
newTransactions.push(created);
|
||||
} catch (err) {
|
||||
console.error("Failed to create mock transaction:", err);
|
||||
alert('An error occurred while generating transactions. Check the console.');
|
||||
break;
|
||||
try {
|
||||
const base = BACKEND_URL.replace(/\/$/, '');
|
||||
const url = `${base}/mock-bank/generate`;
|
||||
const token = localStorage.getItem('token');
|
||||
const res = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
||||
},
|
||||
credentials: 'include',
|
||||
body: JSON.stringify(options),
|
||||
});
|
||||
if (!res.ok) {
|
||||
const text = await res.text();
|
||||
throw new Error(text || `Failed to generate mock transactions (${res.status})`);
|
||||
}
|
||||
const generated: Array<{ amount: number; date: string; category_ids: number[]; description?: string | null }>
|
||||
= await res.json();
|
||||
|
||||
const newTransactions: Transaction[] = [];
|
||||
for (const g of generated) {
|
||||
try {
|
||||
const created = await createTransaction({
|
||||
amount: g.amount,
|
||||
date: g.date,
|
||||
category_ids: g.category_ids || [],
|
||||
description: g.description || undefined,
|
||||
});
|
||||
newTransactions.push(created);
|
||||
} catch (err) {
|
||||
console.error('Failed to create mock transaction:', err);
|
||||
// continue creating others
|
||||
}
|
||||
}
|
||||
|
||||
alert(`${newTransactions.length} mock transactions were successfully generated!`);
|
||||
} catch (err: any) {
|
||||
console.error(err);
|
||||
alert(err?.message || 'Failed to generate mock transactions');
|
||||
} finally {
|
||||
setIsGenerating(false);
|
||||
await loadAll();
|
||||
}
|
||||
|
||||
setIsGenerating(false);
|
||||
alert(`${newTransactions.length} mock transactions were successfully generated!`);
|
||||
|
||||
await loadAll();
|
||||
}
|
||||
|
||||
useEffect(() => { loadAll(); }, [startDate, endDate]);
|
||||
|
||||
Reference in New Issue
Block a user