import { NextResponse } from 'next/server'
import { getSession } from '@/lib/auth'
import { db } from '@/lib/db'
import { visible } from '@/lib/scope'
import { triggerAgent } from '@/lib/agent-trigger'
import { logActivity } from '@/lib/activity'

export const runtime = 'nodejs'

// POST /api/reminders/:id/complete — check off a reminder in-app, queue push.
// Body: { completed?: boolean } (default true; false to un-complete).
export async function POST(req: Request, { params }: { params: Promise<{ id: string }> }) {
  const session = await getSession()
  if (!session) return NextResponse.json({ error: 'unauthorized' }, { status: 401 })

  const { id } = await params
  const body = await req.json().catch(() => ({}))
  const completed = body.completed !== false
  const target = await db.reminder.findFirst({ where: { id, ...visible.reminder(session.userId) }, select: { id: true } })
  if (!target) return NextResponse.json({ error: 'not found' }, { status: 404 })
  try {
    const r = await db.reminder.update({
      where: { id },
      data: { completed, syncState: 'PENDING_PUSH', pendingAction: completed ? 'complete' : 'uncomplete' },
    })
    logActivity(session.userId, completed ? 'reminder.completed' : 'reminder.uncompleted', `${completed ? 'Completed' : 'Un-completed'} reminder: ${r.title}`)
  } catch {
    return NextResponse.json({ error: 'not found' }, { status: 404 })
  }
  triggerAgent('push').catch(() => {})
  return NextResponse.json({ ok: true })
}
