import { PrismaClient } from '@prisma/client';
import bcrypt from 'bcryptjs';

const prisma = new PrismaClient();

async function main() {
  const adminEmail = 'admin@ahri.gov.et';
  const adminPassword = 'adminpassword';

  const existingAdmin = await prisma.user.findUnique({
    where: { email: adminEmail },
  });

  if (!existingAdmin) {
    const hashedPassword = await bcrypt.hash(adminPassword, 10);
    const admin = await prisma.user.create({
      data: {
        email: adminEmail,
        password: hashedPassword,
        fullName: 'System Administrator',
        role: 'SYS_ADMIN',
        organization: 'AHRI',
        sex: 'MALE',
        phoneNumber: '0000000000',
        isVerified: true,
      },
    });
    console.log('Admin user created successfully!');
    console.log('Email:', adminEmail);
    console.log('Password:', adminPassword);
  } else {
    console.log('Admin user already exists.');
  }

  // Seed meeting rooms if none exist
  const roomCount = await prisma.meetingRoom.count();
  if (roomCount === 0) {
    await prisma.meetingRoom.createMany({
      data: [
        {
          name: 'Main Conference Hall',
          directorate: 'Administration',
          capacity: 100,
          packages: JSON.stringify(['Projector', 'Sound System', 'Video Conferencing', 'Air Conditioning', 'WiFi']),
          location: 'Block A, Ground Floor',
        },
        {
          name: 'Executive Boardroom',
          directorate: 'Management',
          capacity: 20,
          packages: JSON.stringify(['Smart Display', 'Microphones', 'WiFi', 'Coffee Station']),
          location: 'Block B, 2nd Floor',
        },
        {
          name: 'Seminar Room A',
          directorate: 'Research',
          capacity: 45,
          packages: JSON.stringify(['Projector', 'Whiteboard', 'WiFi']),
          location: 'Block C, 1st Floor',
        }
      ]
    });
    console.log('Default meeting rooms seeded successfully!');
  } else {
    console.log('Meeting rooms already exist.');
  }
}

main()
  .catch((e) => {
    console.error(e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  });
