'use client'; import { useQuery } from '@tanstack/react-query'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Skeleton } from '@/components/ui/skeleton'; import { api } from '@/lib/api'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, PieChart, Pie, Cell, Legend, } from 'recharts'; const PIE_COLORS = ['#0891B2', '#059669', '#F59E0B', '#EF4444', '#8B5CF6', '#EC4899']; export default function ReportsPage() { const { data: collection, isLoading: loadingCollection } = useQuery({ queryKey: ['reports-collection'], queryFn: async () => (await api.get('/api/v1/reports/collection')).data, }); const { data: aging, isLoading: loadingAging } = useQuery({ queryKey: ['reports-aging'], queryFn: async () => (await api.get('/api/v1/reports/aging')).data, }); const { data: subscribers, isLoading: loadingSubs } = useQuery({ queryKey: ['reports-subscribers'], queryFn: async () => (await api.get('/api/v1/reports/subscribers')).data, }); const { data: revenue, isLoading: loadingRevenue } = useQuery({ queryKey: ['reports-revenue'], queryFn: async () => (await api.get('/api/v1/reports/revenue')).data, }); const { data: plans, isLoading: loadingPlans } = useQuery({ queryKey: ['reports-plans'], queryFn: async () => (await api.get('/api/v1/reports/plans')).data, }); const collectionList = Array.isArray(collection) ? collection : []; const agingList = Array.isArray(aging) ? aging : []; const revList = Array.isArray(revenue) ? revenue : []; const planList = Array.isArray(plans) ? plans : []; // Subscribers summary const subSummary = subscribers ? [ { name: 'Active', value: (subscribers as any).active ?? 0 }, { name: 'Pending', value: (subscribers as any).pending ?? 0 }, { name: 'Suspended', value: (subscribers as any).suspended ?? 0 }, { name: 'Disconnected', value: (subscribers as any).disconnected ?? 0 }, ].filter(s => s.value > 0) : []; return (
Business performance overview
No data
) : (No outstanding invoices
) : (No collection data
) : ({c.collector}
{c.paymentCount} payments
₱{Number(c.totalAmount).toLocaleString()}
No data
) : ({p.planName ?? p.name ?? 'Plan ' + (i+1)}
{p.count}