import { NextRequest, NextResponse } from 'next/server';
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export async function DELETE(
  request: NextRequest,
  { params }: { params: Promise<{ id: string }> }
) {
  try {
    const { id } = await params;
    
    console.log('Deleting employee with ID:', id);
    
    const employee = await prisma.employee.findUnique({
      where: { id: id },
    });
    
    if (!employee) {
      return NextResponse.json(
        { error: 'Employee not found' },
        { status: 404 }
      );
    }
    
    console.log('Found employee:', employee.email);
    
    await prisma.leaveRequest.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.trainingRecord.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.appraisal.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.trainingRequest.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.workPlan.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.kPI.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.quarterlyTarget.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.performanceImprovementPlan.deleteMany({
      where: { employeeId: employee.email },
    });
    
    await prisma.user.deleteMany({
      where: { email: employee.email },
    });
    
    await prisma.employee.delete({
      where: { id: id },
    });
    
    console.log('Employee and all related records deleted successfully');
    
    return NextResponse.json({
      success: true,
      message: 'Employee and associated data deleted successfully',
    });
    
  } catch (error) {
    console.error('Error deleting employee:', error);
    return NextResponse.json(
      { error: 'Failed to delete employee' },
      { status: 500 }
    );
  }
}
