cospend: display all payments + less logging
Some checks failed
CI / update (push) Failing after 5s

This commit is contained in:
2025-09-12 20:54:23 +02:00
parent db3de29e48
commit b03ba61599
2 changed files with 13 additions and 29 deletions

View File

@@ -5,13 +5,13 @@ import { dbConnect } from '../../../../utils/db';
export const GET: RequestHandler = async ({ url, locals }) => { export const GET: RequestHandler = async ({ url, locals }) => {
const session = await locals.auth(); const session = await locals.auth();
if (!session || !session.user?.nickname) { if (!session || !session.user?.nickname) {
return json({ error: 'Unauthorized' }, { status: 401 }); return json({ error: 'Unauthorized' }, { status: 401 });
} }
await dbConnect(); await dbConnect();
try { try {
// Get query parameters for date range (default to last 12 months) // Get query parameters for date range (default to last 12 months)
@@ -20,10 +20,6 @@ export const GET: RequestHandler = async ({ url, locals }) => {
const startDate = new Date(); const startDate = new Date();
startDate.setMonth(startDate.getMonth() - monthsBack); startDate.setMonth(startDate.getMonth() - monthsBack);
// First, let's get all payments and see what we have
console.log('Searching for payments for user:', session.user.nickname);
console.log('Date range:', startDate.toISOString(), 'to', endDate.toISOString());
const totalPayments = await Payment.countDocuments(); const totalPayments = await Payment.countDocuments();
const paymentsInRange = await Payment.countDocuments({ const paymentsInRange = await Payment.countDocuments({
date: { date: {
@@ -36,14 +32,9 @@ export const GET: RequestHandler = async ({ url, locals }) => {
$gte: startDate, $gte: startDate,
$lte: endDate $lte: endDate
}, },
category: { $ne: 'settlement' }, category: { $ne: 'settlement' }
$or: [
{ paidBy: session.user.nickname },
{ createdBy: session.user.nickname }
]
}); });
console.log('Total payments:', totalPayments, 'In date range:', paymentsInRange, 'User expenses:', expensePayments);
// Aggregate payments by month and category // Aggregate payments by month and category
const pipeline = [ const pipeline = [
{ {
@@ -54,11 +45,6 @@ export const GET: RequestHandler = async ({ url, locals }) => {
}, },
// Exclude settlements - only show actual expenses // Exclude settlements - only show actual expenses
category: { $ne: 'settlement' }, category: { $ne: 'settlement' },
// Only include payments where current user is involved
$or: [
{ paidBy: session.user.nickname },
{ createdBy: session.user.nickname }
]
} }
}, },
{ {
@@ -109,20 +95,20 @@ export const GET: RequestHandler = async ({ url, locals }) => {
results.forEach((result: any) => { results.forEach((result: any) => {
const { yearMonth, category } = result._id; const { yearMonth, category } = result._id;
const amount = result.totalAmount; const amount = result.totalAmount;
categories.add(category); categories.add(category);
if (!monthsMap.has(yearMonth)) { if (!monthsMap.has(yearMonth)) {
monthsMap.set(yearMonth, {}); monthsMap.set(yearMonth, {});
} }
monthsMap.get(yearMonth)[category] = amount; monthsMap.get(yearMonth)[category] = amount;
}); });
// Convert to arrays for Chart.js // Convert to arrays for Chart.js
const months = Array.from(monthsMap.keys()).sort(); const months = Array.from(monthsMap.keys()).sort();
const categoryList = Array.from(categories).sort(); const categoryList = Array.from(categories).sort();
const datasets = categoryList.map((category: string) => ({ const datasets = categoryList.map((category: string) => ({
label: category, label: category,
data: months.map(month => monthsMap.get(month)[category] || 0) data: months.map(month => monthsMap.get(month)[category] || 0)
@@ -142,4 +128,4 @@ export const GET: RequestHandler = async ({ url, locals }) => {
console.error('Error fetching monthly expenses:', error); console.error('Error fetching monthly expenses:', error);
return json({ error: 'Failed to fetch monthly expenses' }, { status: 500 }); return json({ error: 'Failed to fetch monthly expenses' }, { status: 500 });
} }
}; };

View File

@@ -66,13 +66,11 @@
async function fetchMonthlyExpenses() { async function fetchMonthlyExpenses() {
try { try {
expensesLoading = true; expensesLoading = true;
console.log('Fetching monthly expenses...');
const response = await fetch('/api/cospend/monthly-expenses'); const response = await fetch('/api/cospend/monthly-expenses');
if (!response.ok) { if (!response.ok) {
throw new Error('Failed to fetch monthly expenses'); throw new Error('Failed to fetch monthly expenses');
} }
monthlyExpensesData = await response.json(); monthlyExpensesData = await response.json();
console.log('Monthly expenses data:', monthlyExpensesData);
} catch (err) { } catch (err) {
console.error('Error fetching monthly expenses:', err); console.error('Error fetching monthly expenses:', err);
// Don't show this error in the main error state // Don't show this error in the main error state
@@ -170,15 +168,15 @@
{#if expensesLoading} {#if expensesLoading}
<div class="loading">Loading monthly expenses chart...</div> <div class="loading">Loading monthly expenses chart...</div>
{:else if monthlyExpensesData.datasets && monthlyExpensesData.datasets.length > 0} {:else if monthlyExpensesData.datasets && monthlyExpensesData.datasets.length > 0}
<BarChart <BarChart
data={monthlyExpensesData} data={monthlyExpensesData}
title="Monthly Expenses by Category" title="Monthly Expenses by Category"
height="400px" height="400px"
/> />
{:else} {:else}
<div class="loading"> <div class="loading">
Debug: expensesLoading={expensesLoading}, Debug: expensesLoading={expensesLoading},
datasets={monthlyExpensesData.datasets?.length || 0}, datasets={monthlyExpensesData.datasets?.length || 0},
data={JSON.stringify(monthlyExpensesData)} data={JSON.stringify(monthlyExpensesData)}
</div> </div>
{/if} {/if}