import { NextResponse } from 'next/server' import { db } from '@/lib/db' export const dynamic = 'force-dynamic' // GET /api/aos/contracts — contracts list with company, expiry stats export async function GET() { try { const contracts = await db.contract.findMany({ orderBy: { updatedAt: 'desc' }, }) // enrich with company names (separate query to keep SQLite happy) const companyIds = [...new Set(contracts.map((c) => c.companyId))] const companies = await db.company.findMany({ where: { id: { in: companyIds } }, select: { id: true, name: true } }) const companyMap = new Map(companies.map((c) => [c.id, c.name])) const enriched = contracts.map((c) => ({ ...c, companyName: companyMap.get(c.companyId) ?? '—' })) const stats = { total: contracts.length, active: contracts.filter((c) => c.status === 'active').length, draft: contracts.filter((c) => c.status === 'draft').length, sent: contracts.filter((c) => c.status === 'sent').length, signed: contracts.filter((c) => c.status === 'signed' || c.status === 'active').length, expired: contracts.filter((c) => c.status === 'expired').length, expiringSoon: contracts.filter((c) => { if (!c.endDate || c.status === 'expired') return false const days = (c.endDate.getTime() - Date.now()) / 86400000 return days <= 30 && days >= 0 }).length, totalValueCents: contracts.filter((c) => c.status === 'active').reduce((s, c) => s + c.valueCents, 0), } return NextResponse.json({ contracts: enriched, stats }) } catch (err) { const msg = err instanceof Error ? err.message : 'internal server error' return NextResponse.json({ error: msg }, { status: 500 }) } }