import { PrismaClient } from '@prisma/client' import bcrypt from 'bcryptjs' const prisma = new PrismaClient() async function main() { // Create admin const hashedPassword = await bcrypt.hash('admin123', 10) const admin = await prisma.admin.upsert({ where: { email: 'admin@muller.com' }, update: {}, create: { email: 'admin@muller.com', password: hashedPassword, firstName: 'Admin', surname: 'User', phone: '1234567890', authLevel: 'admin' } }) console.log('✓ Admin created') // Default password for all shift managers and workers const defaultPassword = await bcrypt.hash('muller123', 10) // Create 4 shift managers (one for each team) const managerRed = await prisma.shiftManager.upsert({ where: { empNo: 'SM001' }, update: {}, create: { empNo: 'SM001', firstName: 'James', surname: 'Anderson', email: 'james.anderson@muller.com', password: defaultPassword, phone: '555-0101', status: 'active' } }) const managerGreen = await prisma.shiftManager.upsert({ where: { empNo: 'SM002' }, update: {}, create: { empNo: 'SM002', firstName: 'Sarah', surname: 'Mitchell', email: 'sarah.mitchell@muller.com', password: defaultPassword, phone: '555-0102', status: 'active' } }) const managerBlue = await prisma.shiftManager.upsert({ where: { empNo: 'SM003' }, update: {}, create: { empNo: 'SM003', firstName: 'Michael', surname: 'Thompson', email: 'michael.thompson@muller.com', password: defaultPassword, phone: '555-0103', status: 'active' } }) const managerYellow = await prisma.shiftManager.upsert({ where: { empNo: 'SM004' }, update: {}, create: { empNo: 'SM004', firstName: 'Emma', surname: 'Roberts', email: 'emma.roberts@muller.com', password: defaultPassword, phone: '555-0104', status: 'active' } }) console.log('✓ 4 Shift Managers created') // Create teams const redTeam = await prisma.team.upsert({ where: { name: 'Red Team' }, update: {}, create: { name: 'Red Team', shiftManagerId: managerRed.id } }) const greenTeam = await prisma.team.upsert({ where: { name: 'Green Team' }, update: {}, create: { name: 'Green Team', shiftManagerId: managerGreen.id } }) const blueTeam = await prisma.team.upsert({ where: { name: 'Blue Team' }, update: {}, create: { name: 'Blue Team', shiftManagerId: managerBlue.id } }) const yellowTeam = await prisma.team.upsert({ where: { name: 'Yellow Team' }, update: {}, create: { name: 'Yellow Team', shiftManagerId: managerYellow.id } }) console.log('✓ 4 Teams created') // Create machines for (let i = 1; i <= 7; i++) { await prisma.machine.upsert({ where: { name: `T${i}` }, update: {}, create: { name: `T${i}`, status: 'active', machineType: 'Blow Moulding Machine', bottlesPerMin: 60 } }) } console.log('✓ 7 Machines created') // Worker names for variety const operatorNames = [ ['David', 'Wilson'], ['Robert', 'Brown'], ['William', 'Davis'], ['Richard', 'Miller'], ['Joseph', 'Moore'], ['Thomas', 'Taylor'], ['Charles', 'Jackson'], ['Daniel', 'White'], ['Matthew', 'Harris'], ['Anthony', 'Martin'], ['Mark', 'Garcia'], ['Donald', 'Martinez'], ['Steven', 'Robinson'], ['Paul', 'Clark'], ['Andrew', 'Rodriguez'], ['Joshua', 'Lewis'], ['Kenneth', 'Lee'], ['Kevin', 'Walker'], ['Brian', 'Hall'], ['George', 'Allen'], ['Edward', 'Young'], ['Ronald', 'King'], ['Timothy', 'Wright'], ['Jason', 'Lopez'], ['Jeffrey', 'Hill'], ['Ryan', 'Scott'], ['Jacob', 'Green'], ['Gary', 'Adams'] ] const level2Names = [ ['Lisa', 'Bennett'], ['Jennifer', 'Cooper'], ['Maria', 'Reed'], ['Susan', 'Bailey'] ] const engineerNames = [ ['John', 'Peterson'], ['Chris', 'Hughes'], ['Alex', 'Foster'], ['Sam', 'Coleman'] ] // RED TEAM - 7 Operators + 1 Level 2 + 1 Engineer console.log('Creating Red Team workers...') for (let i = 0; i < 7; i++) { await prisma.worker.upsert({ where: { empNo: `RED-OP${i + 1}` }, update: {}, create: { empNo: `RED-OP${i + 1}`, firstName: operatorNames[i][0], surname: operatorNames[i][1], email: `${operatorNames[i][0].toLowerCase()}.${operatorNames[i][1].toLowerCase()}.red@muller.com`, password: defaultPassword, phone: `555-1${String(i + 1).padStart(2, '0')}`, jobPosition: 'Blow Moulder Level 1', status: 'active' } }) } await prisma.worker.upsert({ where: { empNo: 'RED-L2' }, update: {}, create: { empNo: 'RED-L2', firstName: level2Names[0][0], surname: level2Names[0][1], email: `${level2Names[0][0].toLowerCase()}.${level2Names[0][1].toLowerCase()}.red@muller.com`, password: defaultPassword, phone: '555-1100', jobPosition: 'Blow Moulder Level 2', status: 'active' } }) await prisma.worker.upsert({ where: { empNo: 'RED-ENG' }, update: {}, create: { empNo: 'RED-ENG', firstName: engineerNames[0][0], surname: engineerNames[0][1], email: `${engineerNames[0][0].toLowerCase()}.${engineerNames[0][1].toLowerCase()}.red@muller.com`, password: defaultPassword, phone: '555-1200', jobPosition: 'Engineer', status: 'active' } }) console.log('✓ Red Team: 7 operators + 1 Level 2 + 1 Engineer') // GREEN TEAM - 7 Operators + 1 Level 2 + 1 Engineer console.log('Creating Green Team workers...') for (let i = 0; i < 7; i++) { await prisma.worker.upsert({ where: { empNo: `GRN-OP${i + 1}` }, update: {}, create: { empNo: `GRN-OP${i + 1}`, firstName: operatorNames[i + 7][0], surname: operatorNames[i + 7][1], email: `${operatorNames[i + 7][0].toLowerCase()}.${operatorNames[i + 7][1].toLowerCase()}.green@muller.com`, password: defaultPassword, phone: `555-2${String(i + 1).padStart(2, '0')}`, jobPosition: 'Blow Moulder Level 1', status: 'active' } }) } await prisma.worker.upsert({ where: { empNo: 'GRN-L2' }, update: {}, create: { empNo: 'GRN-L2', firstName: level2Names[1][0], surname: level2Names[1][1], email: `${level2Names[1][0].toLowerCase()}.${level2Names[1][1].toLowerCase()}.green@muller.com`, password: defaultPassword, phone: '555-2100', jobPosition: 'Blow Moulder Level 2', status: 'active' } }) await prisma.worker.upsert({ where: { empNo: 'GRN-ENG' }, update: {}, create: { empNo: 'GRN-ENG', firstName: engineerNames[1][0], surname: engineerNames[1][1], email: `${engineerNames[1][0].toLowerCase()}.${engineerNames[1][1].toLowerCase()}.green@muller.com`, password: defaultPassword, phone: '555-2200', jobPosition: 'Engineer', status: 'active' } }) console.log('✓ Green Team: 7 operators + 1 Level 2 + 1 Engineer') // BLUE TEAM - 7 Operators + 1 Level 2 + 1 Engineer console.log('Creating Blue Team workers...') for (let i = 0; i < 7; i++) { await prisma.worker.upsert({ where: { empNo: `BLU-OP${i + 1}` }, update: {}, create: { empNo: `BLU-OP${i + 1}`, firstName: operatorNames[i + 14][0], surname: operatorNames[i + 14][1], email: `${operatorNames[i + 14][0].toLowerCase()}.${operatorNames[i + 14][1].toLowerCase()}.blue@muller.com`, password: defaultPassword, phone: `555-3${String(i + 1).padStart(2, '0')}`, jobPosition: 'Blow Moulder Level 1', status: 'active' } }) } await prisma.worker.upsert({ where: { empNo: 'BLU-L2' }, update: {}, create: { empNo: 'BLU-L2', firstName: level2Names[2][0], surname: level2Names[2][1], email: `${level2Names[2][0].toLowerCase()}.${level2Names[2][1].toLowerCase()}.blue@muller.com`, password: defaultPassword, phone: '555-3100', jobPosition: 'Blow Moulder Level 2', status: 'active' } }) await prisma.worker.upsert({ where: { empNo: 'BLU-ENG' }, update: {}, create: { empNo: 'BLU-ENG', firstName: engineerNames[2][0], surname: engineerNames[2][1], email: `${engineerNames[2][0].toLowerCase()}.${engineerNames[2][1].toLowerCase()}.blue@muller.com`, password: defaultPassword, phone: '555-3200', jobPosition: 'Engineer', status: 'active' } }) console.log('✓ Blue Team: 7 operators + 1 Level 2 + 1 Engineer') // YELLOW TEAM - 7 Operators + 1 Level 2 + 1 Engineer console.log('Creating Yellow Team workers...') for (let i = 0; i < 7; i++) { await prisma.worker.upsert({ where: { empNo: `YEL-OP${i + 1}` }, update: {}, create: { empNo: `YEL-OP${i + 1}`, firstName: operatorNames[i + 21][0], surname: operatorNames[i + 21][1], email: `${operatorNames[i + 21][0].toLowerCase()}.${operatorNames[i + 21][1].toLowerCase()}.yellow@muller.com`, password: defaultPassword, phone: `555-4${String(i + 1).padStart(2, '0')}`, jobPosition: 'Blow Moulder Level 1', status: 'active' } }) } await prisma.worker.upsert({ where: { empNo: 'YEL-L2' }, update: {}, create: { empNo: 'YEL-L2', firstName: level2Names[3][0], surname: level2Names[3][1], email: `${level2Names[3][0].toLowerCase()}.${level2Names[3][1].toLowerCase()}.yellow@muller.com`, password: defaultPassword, phone: '555-4100', jobPosition: 'Blow Moulder Level 2', status: 'active' } }) await prisma.worker.upsert({ where: { empNo: 'YEL-ENG' }, update: {}, create: { empNo: 'YEL-ENG', firstName: engineerNames[3][0], surname: engineerNames[3][1], email: `${engineerNames[3][0].toLowerCase()}.${engineerNames[3][1].toLowerCase()}.yellow@muller.com`, password: defaultPassword, phone: '555-4200', jobPosition: 'Engineer', status: 'active' } }) console.log('✓ Yellow Team: 7 operators + 1 Level 2 + 1 Engineer') console.log('\n========================================') console.log('✓ Seed data created successfully!') console.log('========================================') console.log('Summary:') console.log('- 1 Admin') console.log('- 4 Shift Managers') console.log('- 4 Teams') console.log('- 7 Machines') console.log('- 36 Workers (28 operators + 4 Level 2 + 4 Engineers)') console.log('========================================') } main() .catch((e) => { console.error(e) process.exit(1) }) .finally(async () => { await prisma.$disconnect() })