fix(prisma): fix prisma calls to match 7.3.0 versions

This commit is contained in:
Matthieu Haineault 2026-02-05 11:52:46 -05:00
parent b8157b78d1
commit 6d17baf6c8
35 changed files with 96 additions and 96 deletions

View File

@ -1,4 +1,4 @@
import { Controller } from "@nestjs/common"; import { Controller, Get, Param } from "@nestjs/common";
import { AccountService } from "src/customer-support/accounts/account.service"; import { AccountService } from "src/customer-support/accounts/account.service";
@ -6,14 +6,14 @@ import { AccountService } from "src/customer-support/accounts/account.service";
export class AccountController { export class AccountController {
constructor(private readonly accountService: AccountService) { } constructor(private readonly accountService: AccountService) { }
findAllAccounts = async() => { @Get()
return await this.accountService.findAllAccounts(); findAllAccounts(){
return this.accountService.findAllAccounts();
} }
findMemosByAccountId = async( @Get()
accountId:number, findMemosByAccountId(@Param('accountId') accountId: number) {
) => { return this.accountService.findMemosByAccountId(accountId);
return await this.accountService.findMemosByAccountId(accountId);
} }
} }

View File

@ -17,7 +17,7 @@ export class EmployeesCreateService {
const company_code = toCompanyCodeFromString(dto.company_name); const company_code = toCompanyCodeFromString(dto.company_name);
const first_work_day = toDateFromString(dto.first_work_day); const first_work_day = toDateFromString(dto.first_work_day);
await this.prisma.client.$transaction(async (tx) => { await this.prisma.$transaction(async (tx) => {
const user: Users = await tx.users.create({ const user: Users = await tx.users.create({
data: { data: {
first_name: dto.first_name, first_name: dto.first_name,
@ -56,7 +56,7 @@ export class EmployeesCreateService {
private toIdFromFullName = async (full_name: string) => { private toIdFromFullName = async (full_name: string) => {
const [first_name, last_name] = full_name.split(' ', 2); const [first_name, last_name] = full_name.split(' ', 2);
let supervisor = await this.prisma.client.users.findFirst({ let supervisor = await this.prisma.users.findFirst({
where: { first_name, last_name }, where: { first_name, last_name },
select: { employee: { select: { id: true } } } select: { employee: { select: { id: true } } }
}); });

View File

@ -17,7 +17,7 @@ export class EmployeesGetService {
) { } ) { }
async findListEmployees(): Promise<Result<Partial<EmployeeDetailedDto>[], string>> { async findListEmployees(): Promise<Result<Partial<EmployeeDetailedDto>[], string>> {
const employee_list = await this.prisma.client.employees.findMany({ const employee_list = await this.prisma.employees.findMany({
select: { select: {
user: { user: {
select: { select: {
@ -70,7 +70,7 @@ export class EmployeesGetService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(email); const user_id = await this.emailResolver.resolveUserIdWithEmail(email);
if (!user_id.success) return { success: false, error: 'INVALID_USER' }; if (!user_id.success) return { success: false, error: 'INVALID_USER' };
const existing_profile = await this.prisma.client.employees.findUnique({ const existing_profile = await this.prisma.employees.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { select: {
user: { user: {
@ -135,7 +135,7 @@ export class EmployeesGetService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'INVALID_USER' }; if (!user_id.success) return { success: false, error: 'INVALID_USER' };
const employee = await this.prisma.client.employees.findUnique({ const employee = await this.prisma.employees.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { select: {
user: { user: {

View File

@ -22,7 +22,7 @@ export class EmployeesUpdateService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(dto.email); const user_id = await this.emailResolver.resolveUserIdWithEmail(dto.email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND'} if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND'}
const employee = await this.prisma.client.employees.findFirst({ const employee = await this.prisma.employees.findFirst({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { id: true }, select: { id: true },
}) })
@ -34,7 +34,7 @@ export class EmployeesUpdateService {
const normalized_access = toBooleanFromString(dto.user_module_access); const normalized_access = toBooleanFromString(dto.user_module_access);
const last_work_day = dto.last_work_day ? toDateFromString(dto.last_work_day) : null; const last_work_day = dto.last_work_day ? toDateFromString(dto.last_work_day) : null;
await this.prisma.client.$transaction(async (tx) => { await this.prisma.$transaction(async (tx) => {
await tx.users.update({ await tx.users.update({
where: { id: user_id.data }, where: { id: user_id.data },
data: { data: {
@ -111,7 +111,7 @@ export class EmployeesUpdateService {
private toIdFromFullName = async (full_name: string) => { private toIdFromFullName = async (full_name: string) => {
const [first_name, last_name] = full_name.split(' ', 2); const [first_name, last_name] = full_name.split(' ', 2);
let supervisor = await this.prisma.client.users.findFirst({ let supervisor = await this.prisma.users.findFirst({
where: { first_name, last_name }, where: { first_name, last_name },
select: { employee: { select: { id: true } } } select: { employee: { select: { id: true } } }
}); });

View File

@ -14,7 +14,7 @@ export class HomePageService {
const user_id = await this.emailresolver.resolveUserIdWithEmail(email); const user_id = await this.emailresolver.resolveUserIdWithEmail(email);
if (!user_id.success) return { success: false, error: 'INVALID_EMAIL' }; if (!user_id.success) return { success: false, error: 'INVALID_EMAIL' };
const module_access = await this.prisma.client.userModuleAccess.findUnique({ const module_access = await this.prisma.userModuleAccess.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { select: {
dashboard: true, dashboard: true,

View File

@ -16,7 +16,7 @@ export class PreferencesService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
const user_preferences = await this.prisma.client.preferences.findUnique({ const user_preferences = await this.prisma.preferences.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { select: {
id: true, id: true,
@ -46,7 +46,7 @@ export class PreferencesService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(email); const user_id = await this.emailResolver.resolveUserIdWithEmail(email);
if (!user_id.success) return { success: false, error: user_id.error } if (!user_id.success) return { success: false, error: user_id.error }
const updated_preferences: PreferencesDto = await this.prisma.client.preferences.update({ const updated_preferences: PreferencesDto = await this.prisma.preferences.update({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
data: { data: {
notifications: dto.notifications, notifications: dto.notifications,

View File

@ -17,7 +17,7 @@ export class AccessGetService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
const access = await this.prisma.client.userModuleAccess.findUnique({ const access = await this.prisma.userModuleAccess.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { select: {
timesheets: true, timesheets: true,

View File

@ -16,7 +16,7 @@ export class AccessUpdateService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
const orignal_access = await this.prisma.client.userModuleAccess.findUnique({ const orignal_access = await this.prisma.userModuleAccess.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { select: {
id: true, id: true,
@ -30,7 +30,7 @@ export class AccessUpdateService {
}); });
if (!orignal_access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' }; if (!orignal_access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' };
const updated_access:ModuleAccess = await this.prisma.client.userModuleAccess.update({ const updated_access:ModuleAccess = await this.prisma.userModuleAccess.update({
where: { id: orignal_access.id }, where: { id: orignal_access.id },
data: { data: {
timesheets: dto.timesheets, timesheets: dto.timesheets,
@ -57,13 +57,13 @@ export class AccessUpdateService {
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
const access = await this.prisma.client.userModuleAccess.findUnique({ const access = await this.prisma.userModuleAccess.findUnique({
where: { user_id: user_id.data }, where: { user_id: user_id.data },
select: { id: true }, select: { id: true },
}); });
if (!access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' }; if (!access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' };
const revoked_access: ModuleAccess = await this.prisma.client.userModuleAccess.update({ const revoked_access: ModuleAccess = await this.prisma.userModuleAccess.update({
where: { id: access.id }, where: { id: access.id },
data: { data: {
timesheets: false, timesheets: false,

View File

@ -8,7 +8,7 @@ export abstract class AbstractUserService {
constructor(protected readonly prisma: PrismaPostgresService) { } constructor(protected readonly prisma: PrismaPostgresService) { }
async findOneByEmail(email: string): Promise<Partial<Users>> { async findOneByEmail(email: string): Promise<Partial<Users>> {
const user = await this.prisma.client.users.findUnique({ const user = await this.prisma.users.findUnique({
where: { email }, where: { email },
include: { include: {
user_module_access: { user_module_access: {

View File

@ -25,7 +25,7 @@ const SESSION_TOKEN_DURATION_MINUTES = 180
async function bootstrap() { async function bootstrap() {
const app = await NestFactory.create(AppModule); const app = await NestFactory.create(AppModule);
const prisma = app.get(PrismaPostgresService); const prisma_postgres = app.get(PrismaPostgresService);
const reflector = app.get(Reflector); const reflector = app.get(Reflector);
@ -44,7 +44,7 @@ async function bootstrap() {
maxAge: SESSION_TOKEN_DURATION_MINUTES * 60 * 1000, // property maxAge requires milliseconds maxAge: SESSION_TOKEN_DURATION_MINUTES * 60 * 1000, // property maxAge requires milliseconds
httpOnly: true, httpOnly: true,
}, },
store: new PrismaSessionStore(prisma, { store: new PrismaSessionStore(prisma_postgres, {
sessionModelName: 'sessions', sessionModelName: 'sessions',
checkPeriod: SESSION_TOKEN_DURATION_MINUTES * 60 * 1000, //ms checkPeriod: SESSION_TOKEN_DURATION_MINUTES * 60 * 1000, //ms
dbRecordIdIsSessionId: true, dbRecordIdIsSessionId: true,

View File

@ -9,7 +9,7 @@ export class BankCodesService {
async create(dto: Prisma.BankCodesCreateInput): Promise<Result<boolean, string>> { async create(dto: Prisma.BankCodesCreateInput): Promise<Result<boolean, string>> {
try { try {
await this.prisma.client.bankCodes.create({ await this.prisma.bankCodes.create({
data: { data: {
type: dto.type, type: dto.type,
categorie: dto.categorie, categorie: dto.categorie,
@ -24,12 +24,12 @@ export class BankCodesService {
} }
findAll() { findAll() {
return this.prisma.client.bankCodes.findMany(); return this.prisma.bankCodes.findMany();
} }
async update(id: number, dto: Prisma.BankCodesUpdateInput): Promise<Result<boolean, string>> { async update(id: number, dto: Prisma.BankCodesUpdateInput): Promise<Result<boolean, string>> {
try { try {
await this.prisma.client.bankCodes.update({ await this.prisma.bankCodes.update({
where: { id }, where: { id },
data: { data: {
type: dto.type, type: dto.type,
@ -46,7 +46,7 @@ export class BankCodesService {
async delete(id: number): Promise<Result<boolean, string>> { async delete(id: number): Promise<Result<boolean, string>> {
try { try {
await this.prisma.client.bankCodes.delete({ await this.prisma.bankCodes.delete({
where: { id }, where: { id },
}); });
return { success: true, data: true }; return { success: true, data: true };

View File

@ -12,8 +12,8 @@ export class BankedHoursService {
if (asked_hours <= 0) return { success: false, error: 'INVALID_BANKING_HOURS' }; if (asked_hours <= 0) return { success: false, error: 'INVALID_BANKING_HOURS' };
try { try {
const result = await this.prisma.client.$transaction(async (tx) => { const result = await this.prisma.$transaction(async (tx) => {
const employee = await this.prisma.client.employees.findUnique({ const employee = await this.prisma.employees.findUnique({
where: { id: employee_id }, where: { id: employee_id },
select: { select: {
id: true, id: true,

View File

@ -31,7 +31,7 @@ export class HolidayService {
const window_end = new Date(holiday_week_start.getTime() - 1); const window_end = new Date(holiday_week_start.getTime() - 1);
const valid_codes = ['G1', 'G43', 'G56', 'G104', 'G105', 'G305', 'G700', 'G720']; const valid_codes = ['G1', 'G43', 'G56', 'G104', 'G105', 'G305', 'G700', 'G720'];
const shifts = await this.prisma.client.shifts.findMany({ const shifts = await this.prisma.shifts.findMany({
where: { where: {
timesheet: { employee_id: employee_id }, timesheet: { employee_id: employee_id },
date: { gte: window_start, lte: window_end }, date: { gte: window_start, lte: window_end },

View File

@ -11,7 +11,7 @@ export class MileageService {
if (amount < 0) return { success: false, error: 'The amount must be higher than 0' }; if (amount < 0) return { success: false, error: 'The amount must be higher than 0' };
//fetch modifier //fetch modifier
const bank_code = await this.prisma.client.bankCodes.findUnique({ const bank_code = await this.prisma.bankCodes.findUnique({
where: { id: bank_code_id }, where: { id: bank_code_id },
select: { modifier: true, type: true }, select: { modifier: true, type: true },
}); });

View File

@ -32,7 +32,7 @@ export class OvertimeService {
constructor(private prisma: PrismaPostgresService) { } constructor(private prisma: PrismaPostgresService) { }
async getWeekOvertimeSummary(timesheet_id: number, date: Date, tx?: Tx): Promise<Result<WeekOvertimeSummary, string>> { async getWeekOvertimeSummary(timesheet_id: number, date: Date, tx?: Tx): Promise<Result<WeekOvertimeSummary, string>> {
const db = (tx ?? this.prisma.client) as PrismaClient; const db = (tx ?? this.prisma) as PrismaClient;
const week_start = getWeekStart(date); const week_start = getWeekStart(date);
const week_end = getWeekEnd(week_start); const week_end = getWeekEnd(week_start);

View File

@ -14,7 +14,7 @@ export class SickLeaveService {
const today = new Date(); const today = new Date();
// get employee info // get employee info
const employee = await this.prisma.client.employees.findUnique({ const employee = await this.prisma.employees.findUnique({
where: { id: employee_id }, where: { id: employee_id },
select: { select: {
first_work_day: true, first_work_day: true,
@ -33,9 +33,9 @@ export class SickLeaveService {
} }
// get employee's PTO info, or create new details if not yet existing // get employee's PTO info, or create new details if not yet existing
let pto_details: Prisma.Result<typeof this.prisma.client.paidTimeOff, Prisma.PaidTimeOffDefaultArgs, 'findUnique' | 'create'>; let pto_details: Prisma.Result<typeof this.prisma.paidTimeOff, Prisma.PaidTimeOffDefaultArgs, 'findUnique' | 'create'>;
pto_details = await this.prisma.client.paidTimeOff.findUnique({ pto_details = await this.prisma.paidTimeOff.findUnique({
where: { employee_id: employee.id }, where: { employee_id: employee.id },
}) })
@ -69,9 +69,9 @@ export class SickLeaveService {
} }
// create a new PTO row // create a new PTO row
async createNewPTORow(employee_id: number, today: Date): Promise<Result<Prisma.Result<typeof this.prisma.client.paidTimeOff, Prisma.PaidTimeOffDefaultArgs, 'findUnique' | 'create'>, string>> { async createNewPTORow(employee_id: number, today: Date): Promise<Result<Prisma.Result<typeof this.prisma.paidTimeOff, Prisma.PaidTimeOffDefaultArgs, 'findUnique' | 'create'>, string>> {
try { try {
const new_pto_entry = await this.prisma.client.paidTimeOff.create({ const new_pto_entry = await this.prisma.paidTimeOff.create({
data: { data: {
employee_id: employee_id, employee_id: employee_id,
last_updated: today, last_updated: today,
@ -95,7 +95,7 @@ export class SickLeaveService {
// add n number of sick PTO hours to employee PTO // add n number of sick PTO hours to employee PTO
async addHoursToPTO(sick_hours: number, employee_id: number, last_updated: Date) { async addHoursToPTO(sick_hours: number, employee_id: number, last_updated: Date) {
try { try {
const update_pto = await this.prisma.client.paidTimeOff.update({ const update_pto = await this.prisma.paidTimeOff.update({
where: { where: {
employee_id, employee_id,
}, },
@ -115,8 +115,8 @@ export class SickLeaveService {
if (asked_hours <= 0) return { success: false, error: 'INVALID_BANKING_HOURS' }; if (asked_hours <= 0) return { success: false, error: 'INVALID_BANKING_HOURS' };
try { try {
const result = await this.prisma.client.$transaction(async (tx) => { const result = await this.prisma.$transaction(async (tx) => {
const employee = await this.prisma.client.employees.findUnique({ const employee = await this.prisma.employees.findUnique({
where: { id: employee_id }, where: { id: employee_id },
select: { select: {
id: true, id: true,
@ -177,7 +177,7 @@ export class SickLeaveService {
// const period_end = reference_date; // const period_end = reference_date;
// //fetches all shifts of a selected employee // //fetches all shifts of a selected employee
// const shifts = await this.prisma.client.shifts.findMany({ // const shifts = await this.prisma.shifts.findMany({
// where: { // where: {
// timesheet: { employee_id: employee_id }, // timesheet: { employee_id: employee_id },
// date: { gte: period_start, lte: period_end }, // date: { gte: period_start, lte: period_end },

View File

@ -16,7 +16,7 @@ export class VacationService {
if (!employee_id.success) return { success: false, error: employee_id.error } if (!employee_id.success) return { success: false, error: employee_id.error }
//fetch hiring date //fetch hiring date
const employee = await this.prisma.client.employees.findUnique({ const employee = await this.prisma.employees.findUnique({
where: { id: employee_id.data }, where: { id: employee_id.data },
select: { first_work_day: true }, select: { first_work_day: true },
}); });
@ -77,7 +77,7 @@ export class VacationService {
if (asked_hours <= 0) return { success: false, error: 'INVALID_VACATION_SHIFT' }; if (asked_hours <= 0) return { success: false, error: 'INVALID_VACATION_SHIFT' };
try { try {
const result = await this.prisma.client.$transaction(async (tx) => { const result = await this.prisma.$transaction(async (tx) => {
//checks for remaining hours in vacation bank //checks for remaining hours in vacation bank
const employee = await tx.employees.findUnique({ const employee = await tx.employees.findUnique({
where: { id: employee_id }, where: { id: employee_id },

View File

@ -37,14 +37,14 @@ export class ExpenseCreateService {
//finds the timesheet using expense.date by finding the sunday //finds the timesheet using expense.date by finding the sunday
const start_date = weekStartSunday(normed_expense.data.date); const start_date = weekStartSunday(normed_expense.data.date);
const timesheet = await this.prisma.client.timesheets.findFirst({ const timesheet = await this.prisma.timesheets.findFirst({
where: { start_date, employee_id: employee_id.data }, where: { start_date, employee_id: employee_id.data },
select: { id: true, employee_id: true }, select: { id: true, employee_id: true },
}); });
if (!timesheet) return { success: false, error: `TIMESHEET_NOT_FOUND` }; if (!timesheet) return { success: false, error: `TIMESHEET_NOT_FOUND` };
//create a new expense //create a new expense
const expense = await this.prisma.client.expenses.create({ const expense = await this.prisma.expenses.create({
data: { data: {
...normed_expense.data, ...normed_expense.data,
bank_code_id: type.data, bank_code_id: type.data,

View File

@ -22,7 +22,7 @@ export class ExpenseDeleteService {
if (!employee.success) return employee; if (!employee.success) return employee;
// confirm ownership of expense to employee who made request // confirm ownership of expense to employee who made request
const expense = await this.prisma.client.expenses.findUnique({ const expense = await this.prisma.expenses.findUnique({
where: { id: expense_id}, where: { id: expense_id},
select: { select: {
timesheet: { timesheet: {
@ -36,7 +36,7 @@ export class ExpenseDeleteService {
if (!expense || expense.timesheet.employee_id !== employee.data) return { success: false, error: 'EXPENSE_NOT_FOUND'}; if (!expense || expense.timesheet.employee_id !== employee.data) return { success: false, error: 'EXPENSE_NOT_FOUND'};
try { try {
await this.prisma.client.$transaction(async (tx) => { await this.prisma.$transaction(async (tx) => {
const expense = await tx.expenses.findUnique({ const expense = await tx.expenses.findUnique({
where: { id: expense_id }, where: { id: expense_id },
select: { id: true }, select: { id: true },

View File

@ -35,7 +35,7 @@ export class ExpenseUpdateService {
//added timesheet_id modification check according to the new date //added timesheet_id modification check according to the new date
const new_timesheet_start_date = weekStartSunday(toDateFromString(dto.date)); const new_timesheet_start_date = weekStartSunday(toDateFromString(dto.date));
const timesheet = await this.prisma.client.timesheets.findFirst({ const timesheet = await this.prisma.timesheets.findFirst({
where: { start_date: new_timesheet_start_date, employee_id: employee_id.data }, where: { start_date: new_timesheet_start_date, employee_id: employee_id.data },
select: timesheet_select, select: timesheet_select,
}); });
@ -50,7 +50,7 @@ export class ExpenseUpdateService {
if (!data) return { success: false, error: `INVALID_EXPENSE` } if (!data) return { success: false, error: `INVALID_EXPENSE` }
//push updates and get updated datas //push updates and get updated datas
const expense = await this.prisma.client.expenses.update({ const expense = await this.prisma.expenses.update({
where: { id: dto.id, timesheet_id: timesheet.id }, where: { id: dto.id, timesheet_id: timesheet.id },
data, data,
select: expense_select, select: expense_select,

View File

@ -21,7 +21,7 @@ export class CsvExportService {
// approved: boolean = true // approved: boolean = true
): Promise<CsvRow[]> { ): Promise<CsvRow[]> {
//fetch period //fetch period
const period = await this.prisma.client.payPeriods.findFirst({ const period = await this.prisma.payPeriods.findFirst({
where: { pay_year: year, pay_period_no: period_no }, where: { pay_year: year, pay_period_no: period_no },
select: { period_start: true, period_end: true }, select: { period_start: true, period_end: true },
}); });
@ -50,7 +50,7 @@ export class CsvExportService {
const promises: Array<Promise<any[]>> = []; const promises: Array<Promise<any[]>> = [];
if (want_shifts) { if (want_shifts) {
promises.push(this.prisma.client.shifts.findMany({ promises.push(this.prisma.shifts.findMany({
where: { where: {
date: { gte: start, lte: end }, date: { gte: start, lte: end },
...approved_filter, ...approved_filter,
@ -81,7 +81,7 @@ export class CsvExportService {
} }
if (want_holiday) { if (want_holiday) {
promises.push(this.prisma.client.shifts.findMany({ promises.push(this.prisma.shifts.findMany({
where: { where: {
date: { gte: start, lte: end }, date: { gte: start, lte: end },
...approved_filter, ...approved_filter,
@ -112,7 +112,7 @@ export class CsvExportService {
} }
if (want_vacation) { if (want_vacation) {
promises.push(this.prisma.client.shifts.findMany({ promises.push(this.prisma.shifts.findMany({
where: { where: {
date: { gte: start, lte: end }, date: { gte: start, lte: end },
...approved_filter, ...approved_filter,
@ -143,7 +143,7 @@ export class CsvExportService {
} }
if (want_expense) { if (want_expense) {
promises.push(this.prisma.client.expenses.findMany({ promises.push(this.prisma.expenses.findMany({
where: { where: {
date: { gte: start, lte: end }, date: { gte: start, lte: end },
...approved_filter, ...approved_filter,
@ -244,7 +244,7 @@ export class CsvExportService {
} }
resolveHolidayTypeCode = async (holiday: string): Promise<string> => { resolveHolidayTypeCode = async (holiday: string): Promise<string> => {
const holiday_code = await this.prisma.client.bankCodes.findFirst({ const holiday_code = await this.prisma.bankCodes.findFirst({
where: { type: holiday }, where: { type: holiday },
select: { select: {
bank_code: true, bank_code: true,
@ -261,7 +261,7 @@ export class CsvExportService {
} }
resolveVacationTypeCode = async (vacation: string): Promise<string> => { resolveVacationTypeCode = async (vacation: string): Promise<string> => {
const vacation_code = await this.prisma.client.bankCodes.findFirst({ const vacation_code = await this.prisma.bankCodes.findFirst({
where: { type: vacation }, where: { type: vacation },
select: { select: {
bank_code: true, bank_code: true,

View File

@ -73,7 +73,7 @@ export class PaidTimeOFfBankHoursService {
if (!config) return { success: false, error: 'INVALID_PAID_TIME_OFF_TYPE' } if (!config) return { success: false, error: 'INVALID_PAID_TIME_OFF_TYPE' }
const operation = config.invert_logic ? 'decrement' : 'increment'; const operation = config.invert_logic ? 'decrement' : 'increment';
await this.prisma.client.paidTimeOff.update({ await this.prisma.paidTimeOff.update({
where: { employee_id }, where: { employee_id },
data: { data: {
[config.field]: { [operation]: hours }, [config.field]: { [operation]: hours },
@ -100,7 +100,7 @@ export class PaidTimeOFfBankHoursService {
const last_updated = new Date(); const last_updated = new Date();
await this.prisma.client.paidTimeOff.update({ await this.prisma.paidTimeOff.update({
where: { employee_id }, where: { employee_id },
data: { data: {
[config.field]: { [config.operation]: ajusted_hours }, [config.field]: { [config.operation]: ajusted_hours },

View File

@ -27,7 +27,7 @@ export class GetOverviewService {
} }
async buildOverview(overview: Overview): Promise<Result<PayPeriodOverviewDto, string>> { async buildOverview(overview: Overview): Promise<Result<PayPeriodOverviewDto, string>> {
const employee_overviews = await this.prisma.client.employees.findMany({ const employee_overviews = await this.prisma.employees.findMany({
where: { where: {
OR: [ OR: [
{ last_work_day: { gte: toDateFromString(overview.period_start) } }, { last_work_day: { gte: toDateFromString(overview.period_start) } },

View File

@ -23,7 +23,7 @@ export class PayPeriodsCommandService {
if (!employee_id.success) return { success: false, error: employee_id.error } if (!employee_id.success) return { success: false, error: employee_id.error }
try { try {
shifts = await this.prisma.client.shifts.updateMany({ shifts = await this.prisma.shifts.updateMany({
where: { where: {
timesheet: { timesheet: {
id: { in: timesheet_ids }, id: { in: timesheet_ids },
@ -35,7 +35,7 @@ export class PayPeriodsCommandService {
} }
}); });
expenses = await this.prisma.client.expenses.updateMany({ expenses = await this.prisma.expenses.updateMany({
where: { where: {
timesheet: { timesheet: {
id: { in: timesheet_ids }, id: { in: timesheet_ids },
@ -47,7 +47,7 @@ export class PayPeriodsCommandService {
} }
}); });
await this.prisma.client.timesheets.updateMany({ await this.prisma.timesheets.updateMany({
where: { where: {
id: { in: timesheet_ids}, id: { in: timesheet_ids},
employee_id: employee_id.data, employee_id: employee_id.data,

View File

@ -11,7 +11,7 @@ export class PayPeriodsQueryService {
private readonly prisma: PrismaPostgresService) { } private readonly prisma: PrismaPostgresService) { }
async findOneByYearPeriod(pay_year: number, period_no: number): Promise<Result<PayPeriodDto, string>> { async findOneByYearPeriod(pay_year: number, period_no: number): Promise<Result<PayPeriodDto, string>> {
const row = await this.prisma.client.payPeriods.findFirst({ const row = await this.prisma.payPeriods.findFirst({
where: { pay_year, pay_period_no: period_no }, where: { pay_year, pay_period_no: period_no },
}); });
if (row) return { success: true, data: mapPayPeriodToDto(row) }; if (row) return { success: true, data: mapPayPeriodToDto(row) };
@ -34,7 +34,7 @@ export class PayPeriodsQueryService {
//function to cherry pick a Date to find a period //function to cherry pick a Date to find a period
async findByDate(date: string): Promise<Result<PayPeriodDto, string>> { async findByDate(date: string): Promise<Result<PayPeriodDto, string>> {
const dt = new Date(date); const dt = new Date(date);
const row = await this.prisma.client.payPeriods.findFirst({ const row = await this.prisma.payPeriods.findFirst({
where: { period_start: { lte: dt }, period_end: { gte: dt } }, where: { period_start: { lte: dt }, period_end: { gte: dt } },
}); });
if (row) return { success: true, data: mapPayPeriodToDto(row) }; if (row) return { success: true, data: mapPayPeriodToDto(row) };

View File

@ -29,7 +29,7 @@ export class SchedulePresetsApplyService {
const employee_id = await this.emailResolver.findIdByEmail(user_email); const employee_id = await this.emailResolver.findIdByEmail(user_email);
if (!employee_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!employee_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
const employee_default_schedule_preset = await this.prisma.client.employees.findFirst({ const employee_default_schedule_preset = await this.prisma.employees.findFirst({
where: { id: employee_id.data }, where: { id: employee_id.data },
select: { select: {
schedule_preset: { schedule_preset: {
@ -43,7 +43,7 @@ export class SchedulePresetsApplyService {
if (!employee_default_schedule_preset) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!employee_default_schedule_preset) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
if (!employee_default_schedule_preset.schedule_preset) return { success: false, error: 'SCHEDULE_PRESET_NOT_FOUND' }; if (!employee_default_schedule_preset.schedule_preset) return { success: false, error: 'SCHEDULE_PRESET_NOT_FOUND' };
const default_preset_shifts = await this.prisma.client.schedulePresetShifts.findMany({ const default_preset_shifts = await this.prisma.schedulePresetShifts.findMany({
where: { preset_id: employee_default_schedule_preset.schedule_preset.id }, where: { preset_id: employee_default_schedule_preset.schedule_preset.id },
select: { select: {
bank_code_id: true, bank_code_id: true,
@ -55,7 +55,7 @@ export class SchedulePresetsApplyService {
}); });
if (default_preset_shifts.length <= 0) return { success: false, error: 'INVALID_SCHEDULE_PRESET' }; if (default_preset_shifts.length <= 0) return { success: false, error: 'INVALID_SCHEDULE_PRESET' };
const timesheet = await this.prisma.client.timesheets.findUnique({ const timesheet = await this.prisma.timesheets.findUnique({
where: { id: timesheet_id }, where: { id: timesheet_id },
select: timesheet_select, select: timesheet_select,
}); });
@ -101,7 +101,7 @@ export class SchedulePresetsApplyService {
if (!employee_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!employee_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
const week_day = Object.keys(WEEKDAY_MAP)[week_day_index]; const week_day = Object.keys(WEEKDAY_MAP)[week_day_index];
const preset_shift = await this.prisma.client.employees.findFirst({ const preset_shift = await this.prisma.employees.findFirst({
where: { id: employee_id.data, }, where: { id: employee_id.data, },
select: { select: {
schedule_preset: { schedule_preset: {

View File

@ -20,7 +20,7 @@ export class SchedulePresetsCreateService {
async createPreset(dto: SchedulePresetsDto): Promise<Result<boolean, string>> { async createPreset(dto: SchedulePresetsDto): Promise<Result<boolean, string>> {
try { try {
//validate new unique name //validate new unique name
const existing = await this.prisma.client.schedulePresets.findFirst({ const existing = await this.prisma.schedulePresets.findFirst({
where: { name: dto.name }, where: { name: dto.name },
select: { name: true }, select: { name: true },
}); });
@ -54,7 +54,7 @@ export class SchedulePresetsCreateService {
if (!result.success) return { success: false, error: 'INVALID_SCHEDULE_PRESET' } if (!result.success) return { success: false, error: 'INVALID_SCHEDULE_PRESET' }
} }
await this.prisma.client.$transaction(async (tx) => { await this.prisma.$transaction(async (tx) => {
await tx.schedulePresets.create({ await tx.schedulePresets.create({
data: { data: {
name: dto.name, name: dto.name,

View File

@ -11,20 +11,20 @@ export class SchedulePresetDeleteService {
//_________________________________________________________________ //_________________________________________________________________
async deletePreset(preset_id: number): Promise<Result<boolean, string>> { async deletePreset(preset_id: number): Promise<Result<boolean, string>> {
const preset = await this.prisma.client.schedulePresets.findUnique({ const preset = await this.prisma.schedulePresets.findUnique({
where: { id: preset_id }, where: { id: preset_id },
select: { id: true }, select: { id: true },
}); });
if (!preset) return { success: false, error: `SCHEDULE_PRESET_NOT_FOUND` }; if (!preset) return { success: false, error: `SCHEDULE_PRESET_NOT_FOUND` };
const updated_employees = await this.prisma.client.employees.updateMany({ const updated_employees = await this.prisma.employees.updateMany({
where: { schedule_preset_id: preset_id }, where: { schedule_preset_id: preset_id },
data: { data: {
schedule_preset_id: 0, schedule_preset_id: 0,
}, },
}); });
await this.prisma.client.$transaction(async (tx) => { await this.prisma.$transaction(async (tx) => {
await tx.schedulePresetShifts.deleteMany({ where: { preset_id: preset_id } }); await tx.schedulePresetShifts.deleteMany({ where: { preset_id: preset_id } });
await tx.schedulePresets.delete({ where: { id: preset_id } }); await tx.schedulePresets.delete({ where: { id: preset_id } });
}); });

View File

@ -14,7 +14,7 @@ export class SchedulePresetsGetService {
async getSchedulePresets(): Promise<Result<SchedulePresetsDto[], string>> { async getSchedulePresets(): Promise<Result<SchedulePresetsDto[], string>> {
try { try {
const presets = await this.prisma.client.schedulePresets.findMany({ const presets = await this.prisma.schedulePresets.findMany({
orderBy: [{ name: 'asc' }], orderBy: [{ name: 'asc' }],
include: { include: {
shifts: { shifts: {

View File

@ -18,7 +18,7 @@ export class SchedulePresetUpdateService {
// UPDATE // UPDATE
//_________________________________________________________________ //_________________________________________________________________
async updatePreset(dto: SchedulePresetsDto): Promise<Result<boolean, string>> { async updatePreset(dto: SchedulePresetsDto): Promise<Result<boolean, string>> {
const existing = await this.prisma.client.schedulePresets.findFirst({ const existing = await this.prisma.schedulePresets.findFirst({
where: { id: dto.id }, where: { id: dto.id },
select: { select: {
id: true, id: true,
@ -50,7 +50,7 @@ export class SchedulePresetUpdateService {
if (!result.success) return { success: false, error: 'INVALID_SCHEDULE_PRESET' } if (!result.success) return { success: false, error: 'INVALID_SCHEDULE_PRESET' }
} }
await this.prisma.client.$transaction(async (tx) => { await this.prisma.$transaction(async (tx) => {
await tx.schedulePresetShifts.deleteMany({ where: { preset_id: existing.id } }); await tx.schedulePresetShifts.deleteMany({ where: { preset_id: existing.id } });
await tx.schedulePresets.update({ await tx.schedulePresets.update({

View File

@ -84,7 +84,7 @@ export class ShiftsCreateService {
if (!normed_shift.success) return { success: false, error: normed_shift.error }; if (!normed_shift.success) return { success: false, error: normed_shift.error };
if (normed_shift.data.end_time <= normed_shift.data.start_time) return { success: false, error: `INVALID_SHIFT_TIME` }; if (normed_shift.data.end_time <= normed_shift.data.start_time) return { success: false, error: `INVALID_SHIFT_TIME` };
//fetch the right timesheet //fetch the right timesheet
const timesheet = await this.prisma.client.timesheets.findUnique({ const timesheet = await this.prisma.timesheets.findUnique({
where: { id: dto.timesheet_id, employee_id }, where: { id: dto.timesheet_id, employee_id },
select: timesheet_select, select: timesheet_select,
}); });
@ -94,7 +94,7 @@ export class ShiftsCreateService {
if (!bank_code_id.success) return { success: false, error: bank_code_id.error }; if (!bank_code_id.success) return { success: false, error: bank_code_id.error };
//fetchs existing shifts from DB to check for overlaps //fetchs existing shifts from DB to check for overlaps
const existing_shifts = await this.prisma.client.shifts.findMany({ const existing_shifts = await this.prisma.shifts.findMany({
where: { timesheet_id: timesheet.id, date: normed_shift.data.date }, where: { timesheet_id: timesheet.id, date: normed_shift.data.date },
select: { id: true, date: true, start_time: true, end_time: true }, select: { id: true, date: true, start_time: true, end_time: true },
}); });
@ -149,7 +149,7 @@ export class ShiftsCreateService {
} }
//sends data for creation of a shift in db //sends data for creation of a shift in db
const created_shift = await this.prisma.client.shifts.create({ const created_shift = await this.prisma.shifts.create({
data: { data: {
timesheet_id: timesheet.id, timesheet_id: timesheet.id,
bank_code_id: bank_code_id.data, bank_code_id: bank_code_id.data,

View File

@ -27,7 +27,7 @@ export class ShiftsDeleteService {
if (!employee_id.success) return { success: false, error: employee_id.error }; if (!employee_id.success) return { success: false, error: employee_id.error };
// check if shift actually belongs to employee // check if shift actually belongs to employee
const shift = await this.prisma.client.shifts.findUnique({ const shift = await this.prisma.shifts.findUnique({
where: { id: shift_id }, where: { id: shift_id },
select: { select: {
timesheet: { timesheet: {
@ -42,7 +42,7 @@ export class ShiftsDeleteService {
return { success: false, error: 'SHIFT_NOT_FOUND'} return { success: false, error: 'SHIFT_NOT_FOUND'}
// return deletion result // return deletion result
return await this.prisma.client.$transaction(async (tx) => { return await this.prisma.$transaction(async (tx) => {
const shift = await tx.shifts.findUnique({ const shift = await tx.shifts.findUnique({
where: { id: shift_id }, where: { id: shift_id },
select: { select: {

View File

@ -81,7 +81,7 @@ export class ShiftsUpdateService {
const employee = await this.emailResolver.findIdByEmail(email); const employee = await this.emailResolver.findIdByEmail(email);
if (!employee.success) return { success: false, error: employee.error }; if (!employee.success) return { success: false, error: employee.error };
//finds original shift //finds original shift
const original = await this.prisma.client.shifts.findFirst({ const original = await this.prisma.shifts.findFirst({
where: { id: dto.id, timesheet_id: timesheet.data.id }, where: { id: dto.id, timesheet_id: timesheet.data.id },
select: shift_select, select: shift_select,
}); });
@ -134,7 +134,7 @@ export class ShiftsUpdateService {
} }
//updates sent to DB //updates sent to DB
const updated = await this.prisma.client.shifts.update({ const updated = await this.prisma.shifts.update({
where: { id: original.id }, where: { id: original.id },
data: { data: {
date: normed_shift.data.date, date: normed_shift.data.date,

View File

@ -17,7 +17,7 @@ import { timesheet_select } from "src/time-and-attendance/utils/selects.utils";
// APPROVAL AND DELEGATE METHODS // APPROVAL AND DELEGATE METHODS
//_____________________________________________________________________________________________ //_____________________________________________________________________________________________
protected get delegate() { protected get delegate() {
return this.prisma.client.timesheets; return this.prisma.timesheets;
} }
protected delegateFor(tx: TransactionClient) { protected delegateFor(tx: TransactionClient) {
@ -25,7 +25,7 @@ import { timesheet_select } from "src/time-and-attendance/utils/selects.utils";
} }
async updateApproval(id: number, is_approved: boolean): Promise<Timesheets> { async updateApproval(id: number, is_approved: boolean): Promise<Timesheets> {
return this.prisma.client.$transaction((tx) => return this.prisma.$transaction((tx) =>
this.updateApprovalWithTransaction(tx, id, is_approved), this.updateApprovalWithTransaction(tx, id, is_approved),
); );
} }
@ -44,7 +44,7 @@ import { timesheet_select } from "src/time-and-attendance/utils/selects.utils";
} }
async approveTimesheetById( timesheet_id: number, is_approved: boolean){ async approveTimesheetById( timesheet_id: number, is_approved: boolean){
return this.prisma.client.$transaction(async (tx) => { return this.prisma.$transaction(async (tx) => {
const timesheet = await tx.timesheets.findUnique({ const timesheet = await tx.timesheets.findUnique({
where: { id: timesheet_id }, where: { id: timesheet_id },
select: { id: true }, select: { id: true },

View File

@ -23,7 +23,7 @@ export class GetTimesheetsOverviewService {
const account_email = employee_email ?? email; const account_email = employee_email ?? email;
//find period using year and period_no //find period using year and period_no
const period = await this.prisma.client.payPeriods.findFirst({ where: { pay_year, pay_period_no } }); const period = await this.prisma.payPeriods.findFirst({ where: { pay_year, pay_period_no } });
if (!period) return { success: false, error: `PAY_PERIOD_NOT_FOUND` }; if (!period) return { success: false, error: `PAY_PERIOD_NOT_FOUND` };
//fetch the employee_id using the email //fetch the employee_id using the email
@ -52,7 +52,7 @@ export class GetTimesheetsOverviewService {
rows = await this.loadTimesheets(employee_id.data, period.period_start, period.period_end); rows = await this.loadTimesheets(employee_id.data, period.period_start, period.period_end);
//find user infos using the employee_id //find user infos using the employee_id
const employee = await this.prisma.client.employees.findUnique({ const employee = await this.prisma.employees.findUnique({
where: { id: employee_id.data }, where: { id: employee_id.data },
include: { schedule_preset: true, user: true }, include: { schedule_preset: true, user: true },
}); });
@ -79,7 +79,7 @@ export class GetTimesheetsOverviewService {
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
//fetch timesheet's infos //fetch timesheet's infos
private async loadTimesheets(employee_id: number, period_start: Date, period_end: Date) { private async loadTimesheets(employee_id: number, period_start: Date, period_end: Date) {
return this.prisma.client.timesheets.findMany({ return this.prisma.timesheets.findMany({
where: { employee_id, start_date: { gte: period_start, lte: period_end } }, where: { employee_id, start_date: { gte: period_start, lte: period_end } },
include: { include: {
employee: { include: { user: true } }, employee: { include: { user: true } },
@ -93,7 +93,7 @@ export class GetTimesheetsOverviewService {
private ensureTimesheet = async (employee_id: number, start_date: Date | string) => { private ensureTimesheet = async (employee_id: number, start_date: Date | string) => {
const start = toDateFromString(start_date); const start = toDateFromString(start_date);
let row = await this.prisma.client.timesheets.findFirst({ let row = await this.prisma.timesheets.findFirst({
where: { employee_id, start_date: start }, where: { employee_id, start_date: start },
include: { include: {
employee: { include: { user: true } }, employee: { include: { user: true } },
@ -103,7 +103,7 @@ export class GetTimesheetsOverviewService {
}); });
if (row) return row; if (row) return row;
await this.prisma.client.timesheets.create({ await this.prisma.timesheets.create({
data: { data: {
employee_id, employee_id,
start_date: start, start_date: start,
@ -111,7 +111,7 @@ export class GetTimesheetsOverviewService {
}, },
}); });
row = await this.prisma.client.timesheets.findFirst({ row = await this.prisma.timesheets.findFirst({
where: { employee_id, start_date: start }, where: { employee_id, start_date: start },
include: { include: {
employee: { include: { user: true } }, employee: { include: { user: true } },