targo-backend/prisma/mock-seeds-scripts/07-leave-requests-future.ts

82 lines
2.6 KiB
TypeScript
Raw Blame History

// import { PrismaClient, Prisma, LeaveTypes, LeaveApprovalStatus } 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 dateOn(y: number, m: number, d: number) {
// // stocke une date (@db.Date) <20> minuit UTC
// return new Date(Date.UTC(y, m - 1, d, 0, 0, 0));
// }
// async function main() {
// const year = new Date().getFullYear();
// const today = new Date();
// const employees = await prisma.employees.findMany({ select: { id: true } });
// const bankCodes = await prisma.bankCodes.findMany({
// where: { categorie: 'LEAVE' },
// select: { id: true, type: true },
// });
// if (!employees.length || !bankCodes.length) {
// console.warn('No employees or LEAVE bank codes; aborting');
// return;
// }
// const types: LeaveTypes[] = [
// LeaveTypes.SICK,
// LeaveTypes.VACATION,
// LeaveTypes.UNPAID,
// LeaveTypes.BEREAVEMENT,
// LeaveTypes.PARENTAL,
// LeaveTypes.LEGAL,
// LeaveTypes.WEDDING,
// ];
// const statuses: LeaveApprovalStatus[] = [
// LeaveApprovalStatus.PENDING,
// LeaveApprovalStatus.APPROVED,
// LeaveApprovalStatus.DENIED,
// LeaveApprovalStatus.CANCELLED,
// LeaveApprovalStatus.ESCALATED,
// ];
// const futureMonths = [8, 9, 10, 11, 12]; // Ao<41>t ? D<>c. (1-based)
// const rows: Prisma.LeaveRequestsCreateManyInput[] = [];
// for (let i = 0; i < 10; i++) {
// const emp = employees[i % employees.length];
// const m = futureMonths[i % futureMonths.length];
// const date = dateOn(year, m, 5 + i); // 5..14
// if (date <= today) continue; // garantir <20> futur <20>
// const type = types[i % types.length];
// const status = statuses[i % statuses.length];
// const bc = bankCodes[i % bankCodes.length];
// const requestedHours = 4 + (i % 5); // 4 ? 8 h
// const payableHours = status === LeaveApprovalStatus.APPROVED ? Math.min(requestedHours, 8) : null;
// rows.push({
// employee_id: emp.id,
// bank_code_id: bc.id,
// leave_type: type,
// date,
// comment: `Future leave #${i + 1} (${bc.type})`,
// approval_status: status,
// requested_hours: requestedHours,
// payable_hours: payableHours,
// });
// }
// if (rows.length) {
// await prisma.leaveRequests.createMany({ data: rows });
// }
// console.log(`? LeaveRequests (future): ${rows.length} rows`);
// }
// main().finally(() => prisma.$disconnect());