feat(contract): added the contact model in the schema.prisma and base setup for the contracts module. moved the columns daily_expected_hours and applicable_overtime of the employees table to the new contract table.

This commit is contained in:
Matthieu Haineault 2026-03-23 09:01:09 -04:00
parent 2b04c3151d
commit 10b51f5ae6
14 changed files with 454 additions and 267 deletions

View File

@ -37,6 +37,11 @@ export type userModuleAccess = Prisma.userModuleAccessModel
*
*/
export type Employees = Prisma.EmployeesModel
/**
* Model Contracts
*
*/
export type Contracts = Prisma.ContractsModel
/**
* Model LeaveRequests
*

View File

@ -57,6 +57,11 @@ export type userModuleAccess = Prisma.userModuleAccessModel
*
*/
export type Employees = Prisma.EmployeesModel
/**
* Model Contracts
*
*/
export type Contracts = Prisma.ContractsModel
/**
* Model LeaveRequests
*

View File

@ -314,6 +314,33 @@ export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>
}
export type DecimalFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
}
export type DecimalWithAggregatesFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
_count?: Prisma.NestedIntFilter<$PrismaModel>
_avg?: Prisma.NestedDecimalFilter<$PrismaModel>
_sum?: Prisma.NestedDecimalFilter<$PrismaModel>
_min?: Prisma.NestedDecimalFilter<$PrismaModel>
_max?: Prisma.NestedDecimalFilter<$PrismaModel>
}
export type EnumLeaveTypesFilter<$PrismaModel = never> = {
equals?: $Enums.LeaveTypes | Prisma.EnumLeaveTypesFieldRefInput<$PrismaModel>
in?: $Enums.LeaveTypes[] | Prisma.ListEnumLeaveTypesFieldRefInput<$PrismaModel>
@ -432,33 +459,6 @@ export type BoolNullableWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedBoolNullableFilter<$PrismaModel>
}
export type DecimalFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
}
export type DecimalWithAggregatesFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
_count?: Prisma.NestedIntFilter<$PrismaModel>
_avg?: Prisma.NestedDecimalFilter<$PrismaModel>
_sum?: Prisma.NestedDecimalFilter<$PrismaModel>
_min?: Prisma.NestedDecimalFilter<$PrismaModel>
_max?: Prisma.NestedDecimalFilter<$PrismaModel>
}
export type NestedUuidFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
@ -743,6 +743,33 @@ export type NestedFloatNullableFilter<$PrismaModel = never> = {
not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null
}
export type NestedDecimalFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
}
export type NestedDecimalWithAggregatesFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
_count?: Prisma.NestedIntFilter<$PrismaModel>
_avg?: Prisma.NestedDecimalFilter<$PrismaModel>
_sum?: Prisma.NestedDecimalFilter<$PrismaModel>
_min?: Prisma.NestedDecimalFilter<$PrismaModel>
_max?: Prisma.NestedDecimalFilter<$PrismaModel>
}
export type NestedEnumLeaveTypesFilter<$PrismaModel = never> = {
equals?: $Enums.LeaveTypes | Prisma.EnumLeaveTypesFieldRefInput<$PrismaModel>
in?: $Enums.LeaveTypes[] | Prisma.ListEnumLeaveTypesFieldRefInput<$PrismaModel>
@ -850,31 +877,4 @@ export type NestedBoolNullableWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedBoolNullableFilter<$PrismaModel>
}
export type NestedDecimalFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
}
export type NestedDecimalWithAggregatesFilter<$PrismaModel = never> = {
equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel>
lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel>
not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string
_count?: Prisma.NestedIntFilter<$PrismaModel>
_avg?: Prisma.NestedDecimalFilter<$PrismaModel>
_sum?: Prisma.NestedDecimalFilter<$PrismaModel>
_min?: Prisma.NestedDecimalFilter<$PrismaModel>
_max?: Prisma.NestedDecimalFilter<$PrismaModel>
}

File diff suppressed because one or more lines are too long

View File

@ -388,6 +388,7 @@ export const ModelName = {
Notifications: 'Notifications',
userModuleAccess: 'userModuleAccess',
Employees: 'Employees',
Contracts: 'Contracts',
LeaveRequests: 'LeaveRequests',
LeaveRequestsArchive: 'LeaveRequestsArchive',
Timesheets: 'Timesheets',
@ -419,7 +420,7 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
omit: GlobalOmitOptions
}
meta: {
modelProps: "users" | "notifications" | "userModuleAccess" | "employees" | "leaveRequests" | "leaveRequestsArchive" | "timesheets" | "timesheetsArchive" | "schedulePresets" | "schedulePresetShifts" | "shifts" | "shiftsArchive" | "bankCodes" | "expenses" | "expensesArchive" | "oAuthSessions" | "sessions" | "preferences" | "paidTimeOff" | "payPeriods"
modelProps: "users" | "notifications" | "userModuleAccess" | "employees" | "contracts" | "leaveRequests" | "leaveRequestsArchive" | "timesheets" | "timesheetsArchive" | "schedulePresets" | "schedulePresetShifts" | "shifts" | "shiftsArchive" | "bankCodes" | "expenses" | "expensesArchive" | "oAuthSessions" | "sessions" | "preferences" | "paidTimeOff" | "payPeriods"
txIsolationLevel: TransactionIsolationLevel
}
model: {
@ -719,6 +720,80 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
}
}
}
Contracts: {
payload: Prisma.$ContractsPayload<ExtArgs>
fields: Prisma.ContractsFieldRefs
operations: {
findUnique: {
args: Prisma.ContractsFindUniqueArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload> | null
}
findUniqueOrThrow: {
args: Prisma.ContractsFindUniqueOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>
}
findFirst: {
args: Prisma.ContractsFindFirstArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload> | null
}
findFirstOrThrow: {
args: Prisma.ContractsFindFirstOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>
}
findMany: {
args: Prisma.ContractsFindManyArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>[]
}
create: {
args: Prisma.ContractsCreateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>
}
createMany: {
args: Prisma.ContractsCreateManyArgs<ExtArgs>
result: BatchPayload
}
createManyAndReturn: {
args: Prisma.ContractsCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>[]
}
delete: {
args: Prisma.ContractsDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>
}
update: {
args: Prisma.ContractsUpdateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>
}
deleteMany: {
args: Prisma.ContractsDeleteManyArgs<ExtArgs>
result: BatchPayload
}
updateMany: {
args: Prisma.ContractsUpdateManyArgs<ExtArgs>
result: BatchPayload
}
updateManyAndReturn: {
args: Prisma.ContractsUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>[]
}
upsert: {
args: Prisma.ContractsUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ContractsPayload>
}
aggregate: {
args: Prisma.ContractsAggregateArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.AggregateContracts>
}
groupBy: {
args: Prisma.ContractsGroupByArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.ContractsGroupByOutputType>[]
}
count: {
args: Prisma.ContractsCountArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.ContractsCountAggregateOutputType> | number
}
}
}
LeaveRequests: {
payload: Prisma.$LeaveRequestsPayload<ExtArgs>
fields: Prisma.LeaveRequestsFieldRefs
@ -1947,19 +2022,30 @@ export const EmployeesScalarFieldEnum = {
user_id: 'user_id',
external_payroll_id: 'external_payroll_id',
company_code: 'company_code',
daily_expected_hours: 'daily_expected_hours',
first_work_day: 'first_work_day',
last_work_day: 'last_work_day',
supervisor_id: 'supervisor_id',
job_title: 'job_title',
is_supervisor: 'is_supervisor',
applicable_overtime: 'applicable_overtime',
schedule_preset_id: 'schedule_preset_id'
} as const
export type EmployeesScalarFieldEnum = (typeof EmployeesScalarFieldEnum)[keyof typeof EmployeesScalarFieldEnum]
export const ContractsScalarFieldEnum = {
id: 'id',
employee_id: 'employee_id',
daily_expected_hours: 'daily_expected_hours',
applicable_overtime: 'applicable_overtime',
phone_allocation: 'phone_allocation',
on_call_allocation: 'on_call_allocation',
weekend_on_call_allocation: 'weekend_on_call_allocation'
} as const
export type ContractsScalarFieldEnum = (typeof ContractsScalarFieldEnum)[keyof typeof ContractsScalarFieldEnum]
export const LeaveRequestsScalarFieldEnum = {
id: 'id',
employee_id: 'employee_id',
@ -2326,6 +2412,20 @@ export type EnumApplicableOvertimeFieldRefInput<$PrismaModel> = FieldRefInputTyp
/**
* Reference to a field of type 'Decimal'
*/
export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'>
/**
* Reference to a field of type 'Decimal[]'
*/
export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'>
/**
* Reference to a field of type 'LeaveTypes'
*/
@ -2354,20 +2454,6 @@ export type ListEnumLeaveApprovalStatusFieldRefInput<$PrismaModel> = FieldRefInp
/**
* Reference to a field of type 'Decimal'
*/
export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'>
/**
* Reference to a field of type 'Decimal[]'
*/
export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'>
/**
* Reference to a field of type 'Weekday'
*/
@ -2494,6 +2580,7 @@ export type GlobalOmitConfig = {
notifications?: Prisma.NotificationsOmit
userModuleAccess?: Prisma.userModuleAccessOmit
employees?: Prisma.EmployeesOmit
contracts?: Prisma.ContractsOmit
leaveRequests?: Prisma.LeaveRequestsOmit
leaveRequestsArchive?: Prisma.LeaveRequestsArchiveOmit
timesheets?: Prisma.TimesheetsOmit

View File

@ -55,6 +55,7 @@ export const ModelName = {
Notifications: 'Notifications',
userModuleAccess: 'userModuleAccess',
Employees: 'Employees',
Contracts: 'Contracts',
LeaveRequests: 'LeaveRequests',
LeaveRequestsArchive: 'LeaveRequestsArchive',
Timesheets: 'Timesheets',
@ -138,19 +139,30 @@ export const EmployeesScalarFieldEnum = {
user_id: 'user_id',
external_payroll_id: 'external_payroll_id',
company_code: 'company_code',
daily_expected_hours: 'daily_expected_hours',
first_work_day: 'first_work_day',
last_work_day: 'last_work_day',
supervisor_id: 'supervisor_id',
job_title: 'job_title',
is_supervisor: 'is_supervisor',
applicable_overtime: 'applicable_overtime',
schedule_preset_id: 'schedule_preset_id'
} as const
export type EmployeesScalarFieldEnum = (typeof EmployeesScalarFieldEnum)[keyof typeof EmployeesScalarFieldEnum]
export const ContractsScalarFieldEnum = {
id: 'id',
employee_id: 'employee_id',
daily_expected_hours: 'daily_expected_hours',
applicable_overtime: 'applicable_overtime',
phone_allocation: 'phone_allocation',
on_call_allocation: 'on_call_allocation',
weekend_on_call_allocation: 'weekend_on_call_allocation'
} as const
export type ContractsScalarFieldEnum = (typeof ContractsScalarFieldEnum)[keyof typeof ContractsScalarFieldEnum]
export const LeaveRequestsScalarFieldEnum = {
id: 'id',
employee_id: 'employee_id',

View File

@ -12,6 +12,7 @@ export type * from './models/Users'
export type * from './models/Notifications'
export type * from './models/userModuleAccess'
export type * from './models/Employees'
export type * from './models/Contracts'
export type * from './models/LeaveRequests'
export type * from './models/LeaveRequestsArchive'
export type * from './models/Timesheets'

View File

@ -431,14 +431,6 @@ export type PaidTimeOffUncheckedUpdateOneWithoutEmployeeNestedInput = {
update?: Prisma.XOR<Prisma.XOR<Prisma.PaidTimeOffUpdateToOneWithWhereWithoutEmployeeInput, Prisma.PaidTimeOffUpdateWithoutEmployeeInput>, Prisma.PaidTimeOffUncheckedUpdateWithoutEmployeeInput>
}
export type DecimalFieldUpdateOperationsInput = {
set?: runtime.Decimal | runtime.DecimalJsLike | number | string
increment?: runtime.Decimal | runtime.DecimalJsLike | number | string
decrement?: runtime.Decimal | runtime.DecimalJsLike | number | string
multiply?: runtime.Decimal | runtime.DecimalJsLike | number | string
divide?: runtime.Decimal | runtime.DecimalJsLike | number | string
}
export type PaidTimeOffCreateWithoutEmployeeInput = {
vacation_hours?: runtime.Decimal | runtime.DecimalJsLike | number | string
banked_hours?: runtime.Decimal | runtime.DecimalJsLike | number | string

View File

@ -9,13 +9,14 @@ datasource db {
}
model Users {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
first_name String
last_name String
email String @unique
phone_number String
residence String?
role Roles @default(EMPLOYEE)
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
first_name String
last_name String
email String @unique
phone_number String
residence String?
role Roles @default(EMPLOYEE)
notifications Notifications? @relation("UserNotification")
employee Employees? @relation("UserEmployee")
oauth_sessions OAuthSessions[] @relation("UserOAuthSessions")
@ -34,7 +35,8 @@ model Notifications {
metadata Json @db.JsonB
created_at DateTime @default(now())
viewed_at DateTime?
user Users @relation("UserNotification", fields: [user_id], references: [id])
user Users @relation("UserNotification", fields: [user_id], references: [id])
@@map("notifications")
}
@ -51,48 +53,64 @@ model userModuleAccess {
chatbot Boolean @default(false)
ticket Boolean @default(false)
ticket_management Boolean @default(false)
user Users @relation("UserModuleAccess", fields: [user_id], references: [id])
user Users @relation("UserModuleAccess", fields: [user_id], references: [id])
@@map("user_module_access")
}
model Employees {
id Int @id @default(autoincrement())
user_id String @unique @db.Uuid
external_payroll_id Int
company_code Int
daily_expected_hours Int @default(24)
first_work_day DateTime @db.Date
last_work_day DateTime? @db.Date
supervisor_id Int?
job_title String?
is_supervisor Boolean @default(false)
applicable_overtime ApplicableOvertime[] @default([WEEKLY])
schedule_preset_id Int?
schedule_preset SchedulePresets? @relation("EmployeesSchedulePreset", fields: [schedule_preset_id], references: [id])
supervisor Employees? @relation("EmployeeSupervisor", fields: [supervisor_id], references: [id])
crew Employees[] @relation("EmployeeSupervisor")
user Users @relation("UserEmployee", fields: [user_id], references: [id])
leave_request LeaveRequests[] @relation("LeaveRequestEmployee")
timesheet Timesheets[] @relation("TimesheetEmployee")
paid_time_off PaidTimeOff? @relation("EmployeePaidTimeOff")
id Int @id @default(autoincrement())
user_id String @unique @db.Uuid
external_payroll_id Int
company_code Int
first_work_day DateTime @db.Date
last_work_day DateTime? @db.Date
supervisor_id Int?
job_title String?
is_supervisor Boolean @default(false)
schedule_preset_id Int?
schedule_preset SchedulePresets? @relation("EmployeesSchedulePreset", fields: [schedule_preset_id], references: [id])
supervisor Employees? @relation("EmployeeSupervisor", fields: [supervisor_id], references: [id])
crew Employees[] @relation("EmployeeSupervisor")
user Users @relation("UserEmployee", fields: [user_id], references: [id])
leave_request LeaveRequests[] @relation("LeaveRequestEmployee")
timesheet Timesheets[] @relation("TimesheetEmployee")
paid_time_off PaidTimeOff? @relation("EmployeePaidTimeOff")
contracts Contracts? @relation("EmployeeContract")
@@map("employees")
}
model Contracts {
id Int @id @default(autoincrement())
employee_id Int @unique
daily_expected_hours Int @default(24)
applicable_overtime ApplicableOvertime[] @default([WEEKLY])
phone_allocation Decimal @default(0.00)
on_call_allocation Decimal @default(0.00)
weekend_on_call_allocation Decimal @default(0.00)
employee Employees @relation("EmployeeContract", fields: [employee_id], references: [id])
@@map("contracts")
}
model LeaveRequests {
id Int @id @default(autoincrement())
id Int @id @default(autoincrement())
employee_id Int
leave_type LeaveTypes
comment String
approval_status LeaveApprovalStatus @default(PENDING)
approval_status LeaveApprovalStatus @default(PENDING)
bank_code_id Int
payable_hours Decimal? @db.Decimal(5, 2)
requested_hours Decimal? @db.Decimal(5, 2)
dates DateTime[] @db.Date
bank_code BankCodes @relation("LeaveRequestBankCodes", fields: [bank_code_id], references: [id])
employee Employees @relation("LeaveRequestEmployee", fields: [employee_id], references: [id])
archive LeaveRequestsArchive? @relation("LeaveRequestToArchive")
payable_hours Decimal? @db.Decimal(5, 2)
requested_hours Decimal? @db.Decimal(5, 2)
dates DateTime[] @db.Date
bank_code BankCodes @relation("LeaveRequestBankCodes", fields: [bank_code_id], references: [id])
employee Employees @relation("LeaveRequestEmployee", fields: [employee_id], references: [id])
archive LeaveRequestsArchive? @relation("LeaveRequestToArchive")
@@unique([employee_id, leave_type, dates], name: "leave_per_employee_date")
@@index([employee_id, dates])
@ -110,22 +128,24 @@ model LeaveRequestsArchive {
date DateTime @db.Date
payable_hours Decimal? @db.Decimal(5, 2)
requested_hours Decimal? @db.Decimal(5, 2)
leave_request LeaveRequests @relation("LeaveRequestToArchive", fields: [leave_request_id], references: [id])
leave_request LeaveRequests @relation("LeaveRequestToArchive", fields: [leave_request_id], references: [id])
@@index([employee_id, date])
@@map("leave_requests_archive")
}
model Timesheets {
id Int @id @default(autoincrement())
id Int @id @default(autoincrement())
employee_id Int
is_approved Boolean @default(false)
start_date DateTime @db.Date
is_approved Boolean @default(false)
start_date DateTime @db.Date
// hours_to_bank Decimal? @db.Decimal(5, 2) //will need to be implemented in the future
expense Expenses[] @relation("ExpensesTimesheet")
shift Shifts[] @relation("ShiftTimesheet")
employee Employees @relation("TimesheetEmployee", fields: [employee_id], references: [id])
archive TimesheetsArchive[] @relation("TimesheetsToArchive")
expense Expenses[] @relation("ExpensesTimesheet")
shift Shifts[] @relation("ShiftTimesheet")
employee Employees @relation("TimesheetEmployee", fields: [employee_id], references: [id])
archive TimesheetsArchive[] @relation("TimesheetsToArchive")
// @@unique([employee_id, start_date], name: "employee_id_start_date")
@@map("timesheets")

View File

@ -0,0 +1,10 @@
import { Controller } from "@nestjs/common";
import { ContractService } from "src/identity-and-account/contract/services/contract.service";
@Controller()
export class ContractController {
constructor(private readonly getService: ContractService) {}
}

View File

@ -0,0 +1,12 @@
import { Type } from "class-transformer";
import { IsInt, IsString } from "class-validator";
import { ApplicableOvertime } from "prisma/postgres/generated/prisma/client/postgres/enums";
export class Contract {
@IsInt() employee_id: number;
@IsInt() daily_expected_hours: number;
@IsString() applicable_overtime: ApplicableOvertime;
@Type(() => Number) phone_allocation: number;
@Type(() => Number) on_call_allocation: number;
@Type(() => Number) weekend_on_call_allocation: number;
}

View File

@ -0,0 +1,12 @@
import { Module } from "@nestjs/common";
import { ContractController } from "src/identity-and-account/contract/contract.controller";
import { ContractService } from "src/identity-and-account/contract/services/contract.service";
@Module({
imports: [
ContractService,
],
providers: [
ContractController,
]
}) export class ContractModule { }

View File

@ -0,0 +1,6 @@
import { Injectable } from "@nestjs/common";
@Injectable()
export class ContractService {
}