/**
 * Home dashboard routes — P053 home-dashboard.
 *
 * GET   /api/dashboard                    — unified dashboard payload
 * PATCH /api/dashboard/checklist/dismiss  — dismiss onboarding checklist
 */
import { Hono } from 'hono'
import { authMiddleware } from '../middleware/auth'
import { dismissChecklist, getDashboardData } from '@zync/db/queries'
import type { AppEnv } from '../types'
import { isOwnerOrAdminRole } from '../lib/system-roles'

export const dashboardRoutes = new Hono<AppEnv>()

dashboardRoutes.use('*', authMiddleware)

dashboardRoutes.get('/', async (c) => {
  const session = c.get('session')
  if (!session || session.type !== 'user' || !session.tid) {
    return c.json({ error: 'Unauthorized' }, 401)
  }

  const db = c.get('db')
  const dashboard = await getDashboardData(db, {
    tenantId: session.tid,
    userId: session.sub,
    role: session.role,
    permissions: session.permissions,
  })

  return c.json(dashboard, 200)
})

dashboardRoutes.patch('/checklist/dismiss', async (c) => {
  const session = c.get('session')
  if (!session || session.type !== 'user' || !session.tid) {
    return c.json({ error: 'Unauthorized' }, 401)
  }
  if (!isOwnerOrAdminRole(session.role)) {
    return c.json({ error: 'Forbidden' }, 403)
  }

  const db = c.get('db')
  await dismissChecklist(db, session.tid)
  return c.body(null, 204)
})
