// import { PrismaClient, LeaveApprovalStatus, LeaveTypes } from '@prisma/client'; // if (process.env.SKIP_LEAVE_REQUESTS === 'true') { // console.log('?? Seed leave-requests ignor� (SKIP_LEAVE_REQUESTS=true)'); // process.exit(0); // } // const prisma = new PrismaClient(); // function daysAgo(n: number) { // const d = new Date(); // d.setUTCDate(d.getUTCDate() - n); // d.setUTCHours(0, 0, 0, 0); // return d; // } // async function main() { // const employees = await prisma.employees.findMany({ select: { id: true } }); // if (!employees.length) { // throw new Error('Aucun employ� trouv�. Ex�cute le seed employees avant celui-ci.'); // } // const leaveCodes = await prisma.bankCodes.findMany({ // where: { type: { in: ['SICK', 'VACATION', 'HOLIDAY'] } }, // select: { id: true, type: true }, // }); // if (!leaveCodes.length) { // throw new Error("Aucun bank code trouv� avec type in ('SICK','VACATION','HOLIDAY'). V�rifie ta table bank_codes."); // } // const statuses = Object.values(LeaveApprovalStatus); // const created = [] as Array<{ id: number; employee_id: number; leave_type: LeaveTypes; date: Date; comment: string; approval_status: LeaveApprovalStatus; requested_hours: number; payable_hours: number | null }>; // const COUNT = 12; // for (let i = 0; i < COUNT; i++) { // const emp = employees[i % employees.length]; // const leaveCode = leaveCodes[Math.floor(Math.random() * leaveCodes.length)]; // const date = daysAgo(120 - i * 3); // const status = statuses[(i + 2) % statuses.length]; // const requestedHours = 4 + (i % 5); // 4 ? 8 h // const payableHours = status === LeaveApprovalStatus.APPROVED ? Math.min(requestedHours, 8) : null; // const lr = await prisma.leaveRequests.create({ // data: { // employee_id: emp.id, // bank_code_id: leaveCode.id, // leave_type: leaveCode.type as LeaveTypes, // date, // comment: `Past leave #${i + 1} (${leaveCode.type})`, // approval_status: status, // requested_hours: requestedHours, // payable_hours: payableHours, // }, // }); // created.push({ // id: lr.id, // employee_id: lr.employee_id, // leave_type: lr.leave_type, // date: lr.date, // comment: lr.comment, // approval_status: lr.approval_status, // requested_hours: requestedHours, // payable_hours: payableHours, // }); // } // for (const lr of created) { // await prisma.leaveRequestsArchive.create({ // data: { // leave_request_id: lr.id, // employee_id: lr.employee_id, // leave_type: lr.leave_type, // date: lr.date, // comment: lr.comment, // approval_status: lr.approval_status, // requested_hours: lr.requested_hours, // payable_hours: lr.payable_hours, // }, // }); // } // console.log(`? LeaveRequestsArchive: ${created.length} rows`); // } // main().finally(() => prisma.$disconnect());