targo-backend/prisma/mock-seeds-scripts/08-leave-requests-archive.ts

87 lines
3.0 KiB
TypeScript
Raw Blame History

// import { PrismaClient, LeaveApprovalStatus, LeaveTypes } from '@prisma/client';
// if (process.env.SKIP_LEAVE_REQUESTS === 'true') {
// console.log('?? Seed leave-requests ignor<6F> (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<6F> trouv<75>. Ex<45>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<75> 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());