import { type NextRequest, NextResponse } from "next/server"
import { applicationDb } from "@/lib/db"
import type { ApiResponse } from "@/lib/types"

// Save application draft
export async function POST(request: NextRequest) {
  try {
    // Get user ID from session cookie (simplified)
    const sessionCookie = request.cookies.get("session")
    if (!sessionCookie) {
      return NextResponse.json<ApiResponse>(
        {
          success: false,
          error: "Not authenticated",
        },
        { status: 401 },
      )
    }

    const session = JSON.parse(sessionCookie.value)
    const userId = session.userId

    const updates = await request.json()

    // Ensure we don't allow changing submitted status through this endpoint
    delete updates.submitted
    delete updates.submittedAt

    const updatedApplication = await applicationDb.update(userId, updates)

    if (!updatedApplication) {
      return NextResponse.json<ApiResponse>(
        {
          success: false,
          error: "Application not found",
        },
        { status: 404 },
      )
    }

    return NextResponse.json<ApiResponse>({
      success: true,
      data: updatedApplication,
      message: "Application saved successfully",
    })
  } catch (error) {
    console.error("Save application error:", error)
    return NextResponse.json<ApiResponse>(
      {
        success: false,
        error: "Internal server error",
      },
      { status: 500 },
    )
  }
}
