fix(seeds): many fixes to match data needed to print

This commit is contained in:
Matthieu Haineault 2025-08-29 09:57:12 -04:00
parent 3fad532685
commit 770ed8cf64
7 changed files with 62 additions and 16 deletions

View File

@ -1,5 +1,10 @@
import { PrismaClient } from '@prisma/client'; import { PrismaClient } 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(); const prisma = new PrismaClient();
function daysAgo(n: number) { function daysAgo(n: number) {

View File

@ -1,5 +1,11 @@
// prisma/mock-seeds-scripts/06-customers-archive.ts // prisma/mock-seeds-scripts/06-customers-archive.ts
import { PrismaClient } from '@prisma/client'; import { PrismaClient } 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(); const prisma = new PrismaClient();
async function main() { async function main() {

View File

@ -1,5 +1,10 @@
import { PrismaClient, Prisma, LeaveTypes, LeaveApprovalStatus } from '@prisma/client'; import { PrismaClient, Prisma, LeaveTypes, LeaveApprovalStatus } 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(); const prisma = new PrismaClient();
function dateOn(y: number, m: number, d: number) { function dateOn(y: number, m: number, d: number) {

View File

@ -1,44 +1,64 @@
import { PrismaClient, LeaveTypes, LeaveApprovalStatus, LeaveRequests } from '@prisma/client'; import { PrismaClient, LeaveApprovalStatus, LeaveRequests } 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(); const prisma = new PrismaClient();
function daysAgo(n:number) { function daysAgo(n: number) {
const d = new Date(); const d = new Date();
d.setUTCDate(d.getUTCDate() - n); d.setUTCDate(d.getUTCDate() - n);
d.setUTCHours(0,0,0,0); d.setUTCHours(0, 0, 0, 0);
return d; return d;
} }
async function main() { async function main() {
// 1) Récupère tous les employés
const employees = await prisma.employees.findMany({ select: { id: true } }); const employees = await prisma.employees.findMany({ select: { id: true } });
const bankCodes = await prisma.bankCodes.findMany({ select: { id: true }, where: { categorie: 'LEAVE' } }); if (!employees.length) {
throw new Error('Aucun employé trouvé. Exécute le seed employees avant celui-ci.');
}
// 2) Va chercher les bank codes dont le type est SICK, VACATION ou HOLIDAY
const leaveCodes = await prisma.bankCodes.findMany({
where: { type: { in: ['SICK', 'VACATION'] } },
select: { id: true, type: true, bank_code: true },
});
if (!leaveCodes.length) {
throw new Error("Aucun bank code trouvé avec type in ('SICK','VACATION','HOLIDAY'). Vérifie ta table bank_codes.");
}
const types = Object.values(LeaveTypes);
const statuses = Object.values(LeaveApprovalStatus); const statuses = Object.values(LeaveApprovalStatus);
const created: LeaveRequests[] = []; const created: LeaveRequests[] = [];
for (let i = 0; i < 10; i++) { // 3) Crée quelques leave requests
const COUNT = 12;
for (let i = 0; i < COUNT; i++) {
const emp = employees[i % employees.length]; const emp = employees[i % employees.length];
const bc = bankCodes[i % bankCodes.length]; const leaveCode = leaveCodes[Math.floor(Math.random() * leaveCodes.length)];
const start = daysAgo(120 - i * 3); // tous avant aujourd'hui
const end = Math.random() < 0.4 ? null : daysAgo(119 - i * 3); const start = daysAgo(120 - i * 3);
const end = Math.random() < 0.6 ? daysAgo(119 - i * 3) : null;
const lr = await prisma.leaveRequests.create({ const lr = await prisma.leaveRequests.create({
data: { data: {
employee_id: emp.id, employee_id: emp.id,
bank_code_id: bc.id, bank_code_id: leaveCode.id,
leave_type: types[i % types.length], // on stocke le "type" tel quil est défini dans bank_codes
leave_type: leaveCode.type as any,
start_date_time: start, start_date_time: start,
end_date_time: end, end_date_time: end,
comment: `Past leave #${i+1}`, comment: `Past leave #${i + 1} (${leaveCode.type})`,
approval_status: statuses[(i+2) % statuses.length], approval_status: statuses[(i + 2) % statuses.length],
}, },
}); });
created.push(lr); created.push(lr);
} }
// 4) Archive
for (const lr of created) { for (const lr of created) {
await prisma.leaveRequestsArchive.create({ await prisma.leaveRequestsArchive.create({
data: { data: {

View File

@ -1,5 +1,10 @@
import { PrismaClient } from '@prisma/client'; import { PrismaClient } 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(); const prisma = new PrismaClient();
function timeAt(h:number,m:number) { function timeAt(h:number,m:number) {

View File

@ -32,7 +32,7 @@ function rndAmount(minCents: number, maxCents: number) {
async function main() { async function main() {
// Codes autorisés (aléatoires à chaque dépense) // Codes autorisés (aléatoires à chaque dépense)
const BANKS = ['G517', 'G57', 'G502', 'G202', 'G234'] as const; const BANKS = ['G517', 'G56', 'G502', 'G202', 'G234'] as const;
const bcRows = await prisma.bankCodes.findMany({ const bcRows = await prisma.bankCodes.findMany({
where: { bank_code: { in: BANKS as unknown as string[] } }, where: { bank_code: { in: BANKS as unknown as string[] } },
select: { id: true, bank_code: true }, select: { id: true, bank_code: true },
@ -81,7 +81,7 @@ async function main() {
// Montant aléatoire (ranges par défaut en $ — ajuste au besoin) // Montant aléatoire (ranges par défaut en $ — ajuste au besoin)
// (ex.: G57 plus petit, G517 remboursement plus large) // (ex.: G57 plus petit, G517 remboursement plus large)
const amount = const amount =
randomCode === 'G57' randomCode === 'G56'
? rndAmount(1000, 7500) // 10.00..75.00 ? rndAmount(1000, 7500) // 10.00..75.00
: rndAmount(2000, 25000); // 20.00..250.00 pour les autres : rndAmount(2000, 25000); // 20.00..250.00 pour les autres

View File

@ -1,6 +1,11 @@
// 13-expenses-archive.ts // 13-expenses-archive.ts
import { PrismaClient, Expenses } from '@prisma/client'; import { PrismaClient, Expenses } 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(); const prisma = new PrismaClient();
function daysAgo(n:number) { function daysAgo(n:number) {