import { auth } from "@/auth"; import { prisma } from "@/lib/prisma"; import { DollarSign, Receipt, Clock, Wallet, ArrowUpRight, TrendingUp, CreditCard, Zap } from "lucide-react"; import { Card } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { formatCurrency } from "@/lib/utils"; import Link from "next/link"; export default async function WorkerDashboard() { const session = await auth(); const userId = (session?.user as any)?.id; const [reimbursements, overtimes] = await Promise.all([ prisma.reimbursement.findMany({ where: { userId }, orderBy: { createdAt: 'desc' }, take: 5 }), prisma.overtime.findMany({ where: { userId }, take: 20 }) ]); const pendingClaimsCount = await prisma.reimbursement.count({ where: { userId, status: 'PENDING' } }); const totalSpendingAgg = await prisma.reimbursement.aggregate({ where: { userId, status: 'PAID' }, _sum: { amount: true } }); const overtimeHours = overtimes.reduce((acc, curr) => acc + curr.hours, 0); return (
Your financial activity and pending requests at a glance.
{stat.label}
{item.description}
{formatCurrency(item.amount.toString())}
{item.status}You have {pendingClaimsCount} pending reimbursement requests. Claims are usually processed within 48 hours.