import { NextRequest, NextResponse } from 'next/server'
import { requireParticipant } from '@/lib/api-guard'
import { loadActiveMode } from '@/lib/data/active-mode'
import { removeParticipantFromTrip } from '@/lib/data/participant-removal'

/** Remove a participant from this trip (decision D17, Task 10.3). */
export async function POST(_req: NextRequest, ctx: { params: Promise<{ id: string; participantId: string }> }) {
  const { id: tripId, participantId } = await ctx.params
  const guard = await requireParticipant(tripId)
  if (!guard.ok) return guard.response
  const mode = await loadActiveMode()
  const res = await removeParticipantFromTrip({
    tripId,
    participantId,
    viewer: {
      userId: guard.user.id,
      role: guard.participant.role,
      isAdmin: guard.user.role === 'admin',
      label: guard.user.name || guard.user.email,
      activeCompanyId: mode?.active?.companyId ?? null,
      activeIsCompanyAdmin: mode?.active?.permission === 'company_admin',
    },
  })
  if (!res.ok) return NextResponse.json({ error: res.error }, { status: res.status })
  return NextResponse.json({ ok: true })
}
