import { prisma } from '@/lib/prisma'
import { NextResponse } from 'next/server'
import bcrypt from 'bcryptjs'

export async function POST(request: Request) {
  try {
    const body = await request.json()
    const {
      fullName,
      email,
      phone,
      dept,
      username,
      initialPassword,
      assignedByName
    } = body

    const hashedPassword = await bcrypt.hash(initialPassword, 10)
    
    const user = await prisma.user.create({
      data: {
        username,
        passwordHash: hashedPassword,
        email,
        name: fullName,
        role: 'hod',
        dept,
        position: `Head of ${dept}`,
        isFirstLogin: true,
        isActive: true
      }
    })
    
    await prisma.hODAccount.create({
      data: {
        userId: user.id,
        username,
        dept,
        phone,
        mustChangePassword: true,
        isActive: true
      }
    })
    
    const department = await prisma.department.findFirst({
      where: { name: dept }
    })
    
    if (department) {
      await prisma.department.update({
        where: { id: department.id },
        data: { hodId: user.id }
      })
    }
    
    return NextResponse.json({
      success: true,
      user,
      username,
      empNumber: username
    })
  } catch (error) {
    console.error('Error creating HOD:', error)
    return NextResponse.json({ error: 'Failed to create HOD' }, { status: 500 })
  }
}