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

60 lines
1.7 KiB
TypeScript

import { PrismaClient, LeaveTypes, LeaveApprovalStatus, LeaveRequests } from '@prisma/client';
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 } });
const bankCodes = await prisma.bankCodes.findMany({ select: { id: true }, where: { categorie: 'LEAVE' } });
const types = Object.values(LeaveTypes);
const statuses = Object.values(LeaveApprovalStatus);
const created: LeaveRequests[] = [];
for (let i = 0; i < 10; i++) {
const emp = employees[i % employees.length];
const bc = bankCodes[i % bankCodes.length];
const start = daysAgo(120 - i * 3); // tous avant aujourd'hui
const end = Math.random() < 0.4 ? null : daysAgo(119 - i * 3);
const lr = await prisma.leaveRequests.create({
data: {
employee_id: emp.id,
bank_code_id: bc.id,
leave_type: types[i % types.length],
start_date_time: start,
end_date_time: end,
comment: `Past leave #${i+1}`,
approval_status: statuses[(i+2) % statuses.length],
},
});
created.push(lr);
}
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,
start_date_time: lr.start_date_time,
end_date_time: lr.end_date_time,
comment: lr.comment,
approval_status: lr.approval_status,
},
});
}
console.log(`✓ LeaveRequestsArchive: ${created.length} rows`);
}
main().finally(() => prisma.$disconnect());