import { NextRequest, NextResponse } from 'next/server';
import prisma from '@/lib/prisma';

function toDate(value: string | null | undefined) {
  if (!value) return null;
  return new Date(value);
}

export async function PUT(
  request: NextRequest,
  { params }: { params: Promise<{ id: string }> | { id: string } }
) {
  try {
    const { id } = await params;
    const body = await request.json();

    const updated = await prisma.trainingRequest.update({
      where: { id },
      data: {
        status: body.status,
        currentStage: body.currentStage,
        hrApprovedBy: body.hrApprovedBy,
        hrApprovedOn: toDate(body.hrApprovedOn),
        hosApprovedBy: body.hosApprovedBy,
        hosApprovedOn: toDate(body.hosApprovedOn),
        hosComment: body.hosComment,
        financeApprovedBy: body.financeApprovedBy,
        financeApprovedOn: toDate(body.financeApprovedOn),
        rejectReason: body.rejectReason,
        rejectedBy: body.rejectedBy,
        rejectedStage: body.rejectedStage,
        assignedProgramId: body.assignedProgramId,
        updatedAt: new Date(),
      },
    });

    return NextResponse.json(updated);
  } catch (error) {
    console.error('Error updating training request:', error);
    return NextResponse.json({ error: 'Failed to update training request' }, { status: 500 });
  }
}
