diff --git a/scripts/init-supervisor.ts b/scripts/init-supervisor.ts new file mode 100644 index 0000000..cba2107 --- /dev/null +++ b/scripts/init-supervisor.ts @@ -0,0 +1,79 @@ +import { PrismaClient as Prisma } from "@prisma/client"; +import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" + +const prisma_legacy = new PrismaLegacy({}); +const prisma = new Prisma({}); + +export const initSupervisor = async () => { + const list_of_employees = await prisma.employees.findMany(); + + for (const employee of list_of_employees) { + console.log('Start of supervisor checking for employee: ', employee.id); + + //finds in old db employee supervisor's infos + const old_employee = await prisma_legacy.employees.findFirst({ + where: { + company: employee.company_code, + employee_number: (employee.external_payroll_id).toString(), + }, + }); + if (!old_employee) { + console.warn('Old DB employee not found : ', employee.id); + continue; + } + if (!old_employee.supervisor) { + console.warn('Old DB employee supervisor not found for employee:', old_employee.supervisor); + continue; + } + //trims and split the supervisor name + const supervisor_full_name = old_employee.supervisor.trim(); + let supervisor_first_name = supervisor_full_name.split(/\s+/)[0]; + let supervisor_last_name = supervisor_full_name.split(/\s+/)[1] || ''; + + if (supervisor_first_name === '[default]') { + await prisma.employees.update({ + where: { id: employee.id }, + data: { supervisor_id: null }, + }); + console.log('employee with [default] found: ', employee.id); + continue; + } + + if (supervisor_first_name === '') { + console.warn('No supervisor name found for employee: ', employee.id) + continue; + } + + //finds employee id of supervisors + const supervisor = await prisma.users.findFirst({ + where: { first_name: supervisor_first_name, last_name: supervisor_last_name }, + select: { + employee: { select: { id: true } }, + } + }); + if (!supervisor) { + console.warn('No supervisor found: ', supervisor_first_name, '', supervisor_last_name) + continue; + } + if (!supervisor.employee) { + console.warn('No supervisor id found: ', supervisor_first_name, '', supervisor_last_name) + continue; + } + //updates the supervisor id + await prisma.employees.update({ + where: { id: employee.id }, + data: { + supervisor_id: supervisor.employee.id, + + } + }); + await prisma.employees.update({ + where: { id: supervisor.employee.id }, + data: { + is_supervisor: true, + } + }) + console.log('supervisor id : ', supervisor.employee.id); + console.log('supervisor name : ', supervisor_first_name, '', supervisor_last_name); + } +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 672aba0..feb3352 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,6 +14,7 @@ import * as session from 'express-session'; import * as passport from 'passport'; import { PrismaService } from 'src/prisma/prisma.service'; import { PrismaSessionStore } from '@quixo3/prisma-session-store'; +// import { initSupervisor } from 'scripts/init-supervisor'; // import { initializePaidTimeOff } from 'scripts/init-paid-time-off'; // import { initializePreferences } from 'scripts/init-preferences-access'; // import { extractOldTimesheets } from 'scripts/migrate-timesheets'; @@ -99,5 +100,6 @@ async function bootstrap() { // await extractOldTimesheets(); // await extractOldShifts(); // await extractOldExpenses(); + // await initSupervisor(); } bootstrap();