refactor(preferences & modules): changed type from boolean to Int so each preferences can have more than 2 options.
Also cleaned-up module imports/providers
This commit is contained in:
parent
6a4fbeb2c4
commit
9efdafb20f
|
|
@ -1065,6 +1065,39 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/preferences/{email}": {
|
||||||
|
"patch": {
|
||||||
|
"operationId": "PreferencesController_updatePreferences",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "email",
|
||||||
|
"required": true,
|
||||||
|
"in": "path",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requestBody": {
|
||||||
|
"required": true,
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/PreferencesDto"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"Preferences"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/schedule-presets/{email}": {
|
"/schedule-presets/{email}": {
|
||||||
"put": {
|
"put": {
|
||||||
"operationId": "SchedulePresetsController_upsert",
|
"operationId": "SchedulePresetsController_upsert",
|
||||||
|
|
@ -1666,6 +1699,10 @@
|
||||||
"employees_overview"
|
"employees_overview"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"PreferencesDto": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {}
|
||||||
|
},
|
||||||
"SchedulePresetsDto": {
|
"SchedulePresetsDto": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {}
|
"properties": {}
|
||||||
|
|
|
||||||
64
package-lock.json
generated
64
package-lock.json
generated
|
|
@ -51,7 +51,7 @@
|
||||||
"globals": "^16.0.0",
|
"globals": "^16.0.0",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"prettier": "^3.4.2",
|
"prettier": "^3.4.2",
|
||||||
"prisma": "^6.16.3",
|
"prisma": "^6.17.0",
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"supertest": "^7.0.0",
|
"supertest": "^7.0.0",
|
||||||
"ts-jest": "^29.2.5",
|
"ts-jest": "^29.2.5",
|
||||||
|
|
@ -3148,9 +3148,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/config": {
|
"node_modules/@prisma/config": {
|
||||||
"version": "6.16.3",
|
"version": "6.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.17.0.tgz",
|
||||||
"integrity": "sha512-VlsLnG4oOuKGGMToEeVaRhoTBZu5H3q51jTQXb/diRags3WV0+BQK5MolJTtP6G7COlzoXmWeS11rNBtvg+qFQ==",
|
"integrity": "sha512-k8tuChKpkO/Vj7ZEzaQMNflNGbaW4X0r8+PC+W2JaqVRdiS2+ORSv1SrDwNxsb8YyzIQJucXqLGZbgxD97ZhsQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"c12": "3.1.0",
|
"c12": "3.1.0",
|
||||||
|
|
@ -3160,48 +3160,48 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/debug": {
|
"node_modules/@prisma/debug": {
|
||||||
"version": "6.16.3",
|
"version": "6.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.17.0.tgz",
|
||||||
"integrity": "sha512-89DdqWtdKd7qoc9/qJCKLTazj3W3zPEiz0hc7HfZdpjzm21c7orOUB5oHWJsG+4KbV4cWU5pefq3CuDVYF9vgA==",
|
"integrity": "sha512-eE2CB32nr1hRqyLVnOAVY6c//iSJ/PN+Yfoa/2sEzLGpORaCg61d+nvdAkYSh+6Y2B8L4BVyzkRMANLD6nnC2g==",
|
||||||
"devOptional": true
|
"devOptional": true
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/engines": {
|
"node_modules/@prisma/engines": {
|
||||||
"version": "6.16.3",
|
"version": "6.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.17.0.tgz",
|
||||||
"integrity": "sha512-b+Rl4nzQDcoqe6RIpSHv8f5lLnwdDGvXhHjGDiokObguAAv/O1KaX1Oc69mBW/GFWKQpCkOraobLjU6s1h8HGg==",
|
"integrity": "sha512-XhE9v3hDQTNgCYMjogcCYKi7HCEkZf9WwTGuXy8cmY8JUijvU0ap4M7pGLx4pBblkp5EwUsYzw1YLtH7yi0GZw==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "6.16.3",
|
"@prisma/debug": "6.17.0",
|
||||||
"@prisma/engines-version": "6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a",
|
"@prisma/engines-version": "6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a",
|
||||||
"@prisma/fetch-engine": "6.16.3",
|
"@prisma/fetch-engine": "6.17.0",
|
||||||
"@prisma/get-platform": "6.16.3"
|
"@prisma/get-platform": "6.17.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/engines-version": {
|
"node_modules/@prisma/engines-version": {
|
||||||
"version": "6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a",
|
"version": "6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a.tgz",
|
||||||
"integrity": "sha512-fftRmosBex48Ph1v2ll1FrPpirwtPZpNkE5CDCY1Lw2SD2ctyrLlVlHiuxDAAlALwWBOkPbAll4+EaqdGuMhJw==",
|
"integrity": "sha512-G0VU4uFDreATgTz4sh3dTtU2C+jn+J6c060ixavWZaUaSRZsNQhSPW26lbfez7GHzR02RGCdqs5UcSuGBC3yLw==",
|
||||||
"devOptional": true
|
"devOptional": true
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/fetch-engine": {
|
"node_modules/@prisma/fetch-engine": {
|
||||||
"version": "6.16.3",
|
"version": "6.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.17.0.tgz",
|
||||||
"integrity": "sha512-bUoRIkVaI+CCaVGrSfcKev0/Mk4ateubqWqGZvQ9uCqFv2ENwWIR3OeNuGin96nZn5+SkebcD7RGgKr/+mJelw==",
|
"integrity": "sha512-YSl5R3WIAPrmshYPkaaszOsBIWRAovOCHn3y7gkTNGG51LjYW4pi6PFNkGouW6CA06qeTjTbGrDRCgFjnmVWDg==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "6.16.3",
|
"@prisma/debug": "6.17.0",
|
||||||
"@prisma/engines-version": "6.16.1-1.bb420e667c1820a8c05a38023385f6cc7ef8e83a",
|
"@prisma/engines-version": "6.17.0-16.c0aafc03b8ef6cdced8654b9a817999e02457d6a",
|
||||||
"@prisma/get-platform": "6.16.3"
|
"@prisma/get-platform": "6.17.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@prisma/get-platform": {
|
"node_modules/@prisma/get-platform": {
|
||||||
"version": "6.16.3",
|
"version": "6.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.17.0.tgz",
|
||||||
"integrity": "sha512-X1LxiFXinJ4iQehrodGp0f66Dv6cDL0GbRlcCoLtSu6f4Wi+hgo7eND/afIs5029GQLgNWKZ46vn8hjyXTsHLA==",
|
"integrity": "sha512-3tEKChrnlmLXPd870oiVfRvj7vVKuxqP349hYaMDsbV4TZd3+lFqw8KTI2Tbq5DopamfNuNqhVCj+R6ZxKKYGQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/debug": "6.16.3"
|
"@prisma/debug": "6.17.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@scarf/scarf": {
|
"node_modules/@scarf/scarf": {
|
||||||
|
|
@ -10049,14 +10049,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prisma": {
|
"node_modules/prisma": {
|
||||||
"version": "6.16.3",
|
"version": "6.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.17.0.tgz",
|
||||||
"integrity": "sha512-4tJq3KB9WRshH5+QmzOLV54YMkNlKOtLKaSdvraI5kC/axF47HuOw6zDM8xrxJ6s9o2WodY654On4XKkrobQdQ==",
|
"integrity": "sha512-rcvldz98r+2bVCs0MldQCBaaVJRCj9Ew4IqphLATF89OJcSzwRQpwnKXR+W2+2VjK7/o2x3ffu5+2N3Muu6Dbw==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/config": "6.16.3",
|
"@prisma/config": "6.17.0",
|
||||||
"@prisma/engines": "6.16.3"
|
"@prisma/engines": "6.17.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"prisma": "build/index.js"
|
"prisma": "build/index.js"
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
"globals": "^16.0.0",
|
"globals": "^16.0.0",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"prettier": "^3.4.2",
|
"prettier": "^3.4.2",
|
||||||
"prisma": "^6.16.3",
|
"prisma": "^6.17.0",
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"supertest": "^7.0.0",
|
"supertest": "^7.0.0",
|
||||||
"ts-jest": "^29.2.5",
|
"ts-jest": "^29.2.5",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- The `notifications` column on the `preferences` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `dark_mode` column on the `preferences` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `lang_switch` column on the `preferences` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `lefty_mode` column on the `preferences` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "preferences" DROP COLUMN "notifications",
|
||||||
|
ADD COLUMN "notifications" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
DROP COLUMN "dark_mode",
|
||||||
|
ADD COLUMN "dark_mode" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
DROP COLUMN "lang_switch",
|
||||||
|
ADD COLUMN "lang_switch" INTEGER NOT NULL DEFAULT 0,
|
||||||
|
DROP COLUMN "lefty_mode",
|
||||||
|
ADD COLUMN "lefty_mode" INTEGER NOT NULL DEFAULT 0;
|
||||||
|
|
@ -376,11 +376,11 @@ model Preferences {
|
||||||
user Users @relation("UserPreferences", fields: [user_id], references: [id])
|
user Users @relation("UserPreferences", fields: [user_id], references: [id])
|
||||||
user_id String @unique @db.Uuid
|
user_id String @unique @db.Uuid
|
||||||
|
|
||||||
notifications Boolean @default(false)
|
notifications Int @default(0)
|
||||||
dark_mode Boolean @default(false)
|
dark_mode Int @default(0)
|
||||||
lang_switch Boolean @default(false)
|
lang_switch Int @default(0)
|
||||||
lefty_mode Boolean @default(false)
|
lefty_mode Int @default(0)
|
||||||
// TODO: change BOOLEAN to use 0 or 1 in case there is more than 2 options for each preferences
|
|
||||||
@@map("preferences")
|
@@map("preferences")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import { NotificationsModule } from './modules/notifications/notifications.modul
|
||||||
import { OauthSessionsModule } from './modules/oauth-sessions/oauth-sessions.module';
|
import { OauthSessionsModule } from './modules/oauth-sessions/oauth-sessions.module';
|
||||||
import { OvertimeService } from './modules/business-logics/services/overtime.service';
|
import { OvertimeService } from './modules/business-logics/services/overtime.service';
|
||||||
import { PayperiodsModule } from './modules/pay-periods/pay-periods.module';
|
import { PayperiodsModule } from './modules/pay-periods/pay-periods.module';
|
||||||
|
import { PreferencesModule } from './modules/preferences/preferences.module';
|
||||||
import { PrismaModule } from './prisma/prisma.module';
|
import { PrismaModule } from './prisma/prisma.module';
|
||||||
import { ScheduleModule } from '@nestjs/schedule';
|
import { ScheduleModule } from '@nestjs/schedule';
|
||||||
import { ShiftsModule } from './modules/shifts/shifts.module';
|
import { ShiftsModule } from './modules/shifts/shifts.module';
|
||||||
|
|
@ -43,6 +44,7 @@ import { SchedulePresetsModule } from './modules/schedule-presets/schedule-prese
|
||||||
NotificationsModule,
|
NotificationsModule,
|
||||||
OauthSessionsModule,
|
OauthSessionsModule,
|
||||||
PayperiodsModule,
|
PayperiodsModule,
|
||||||
|
PreferencesModule,
|
||||||
PrismaModule,
|
PrismaModule,
|
||||||
ScheduleModule.forRoot(), //cronjobs
|
ScheduleModule.forRoot(), //cronjobs
|
||||||
SchedulePresetsModule,
|
SchedulePresetsModule,
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,10 @@ import { Module } from '@nestjs/common';
|
||||||
import { EmployeesController } from './controllers/employees.controller';
|
import { EmployeesController } from './controllers/employees.controller';
|
||||||
import { EmployeesService } from './services/employees.service';
|
import { EmployeesService } from './services/employees.service';
|
||||||
import { EmployeesArchivalService } from './services/employees-archival.service';
|
import { EmployeesArchivalService } from './services/employees-archival.service';
|
||||||
|
import { SharedModule } from '../shared/shared.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
controllers: [EmployeesController],
|
controllers: [EmployeesController, SharedModule],
|
||||||
providers: [EmployeesService, EmployeesArchivalService],
|
providers: [EmployeesService, EmployeesArchivalService],
|
||||||
exports: [EmployeesService, EmployeesArchivalService],
|
exports: [EmployeesService, EmployeesArchivalService],
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { UpsertExpenseDto } from "../dtos/upsert-expense.dto";
|
import { UpsertExpenseDto } from "../dtos/upsert-expense.dto";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
import { ExpenseResponse, UpsertAction } from "../types and interfaces/expenses.types.interfaces";
|
import { ExpenseResponse, UpsertAction } from "../types and interfaces/expenses.types.interfaces";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { EmployeeTimesheetResolver } from "src/modules/shared/utils/resolve-employee-timesheet.utils";
|
import { EmployeeTimesheetResolver } from "src/modules/shared/utils/resolve-employee-timesheet.utils";
|
||||||
import {
|
import {
|
||||||
BadRequestException,
|
BadRequestException,
|
||||||
|
|
@ -27,7 +27,7 @@ export class ExpensesCommandService extends BaseApprovalService<Expenses> {
|
||||||
prisma: PrismaService,
|
prisma: PrismaService,
|
||||||
private readonly bankCodesResolver: BankCodesResolver,
|
private readonly bankCodesResolver: BankCodesResolver,
|
||||||
private readonly timesheetsResolver: EmployeeTimesheetResolver,
|
private readonly timesheetsResolver: EmployeeTimesheetResolver,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
) { super(prisma); }
|
) { super(prisma); }
|
||||||
|
|
||||||
//_____________________________________________________________________________________________
|
//_____________________________________________________________________________________________
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { DayExpensesDto as ExpenseListResponseDto, ExpenseDto } from "src/modules/timesheets/dtos/timesheet-period.dto";
|
import { DayExpensesDto as ExpenseListResponseDto, ExpenseDto } from "src/modules/timesheets/dtos/timesheet-period.dto";
|
||||||
import { round2, toUTCDateOnly } from "src/modules/timesheets/utils/timesheet.helpers";
|
import { round2, toUTCDateOnly } from "src/modules/timesheets/utils/timesheet.helpers";
|
||||||
import { EXPENSE_TYPES } from "src/modules/timesheets/types/timesheet.types";
|
import { EXPENSE_TYPES } from "src/modules/timesheets/types/timesheet.types";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ExpensesQueryService {
|
export class ExpensesQueryService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly employeeRepo: EmployeeIdEmailResolver,
|
private readonly employeeRepo: EmailToIdResolver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import { Module } from "@nestjs/common";
|
import { Module } from "@nestjs/common";
|
||||||
import { CsvExportController } from "./controllers/csv-exports.controller";
|
import { CsvExportController } from "./controllers/csv-exports.controller";
|
||||||
import { CsvExportService } from "./services/csv-exports.service";
|
import { CsvExportService } from "./services/csv-exports.service";
|
||||||
|
import { SharedModule } from "../shared/shared.module";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
providers:[CsvExportService],
|
providers:[CsvExportService, SharedModule],
|
||||||
controllers: [CsvExportController],
|
controllers: [CsvExportController],
|
||||||
})
|
})
|
||||||
export class CsvExportModule {}
|
export class CsvExportModule {}
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,10 @@ import { SickLeaveRequestsService } from "./services/sick-leave-requests.service
|
||||||
import { LeaveRequestsService } from "./services/leave-request.service";
|
import { LeaveRequestsService } from "./services/leave-request.service";
|
||||||
import { ShiftsModule } from "../shifts/shifts.module";
|
import { ShiftsModule } from "../shifts/shifts.module";
|
||||||
import { LeaveRequestsUtils } from "./utils/leave-request.util";
|
import { LeaveRequestsUtils } from "./utils/leave-request.util";
|
||||||
|
import { SharedModule } from "../shared/shared.module";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [BusinessLogicsModule, ShiftsModule],
|
imports: [BusinessLogicsModule, ShiftsModule, SharedModule],
|
||||||
controllers: [LeaveRequestController],
|
controllers: [LeaveRequestController],
|
||||||
providers: [
|
providers: [
|
||||||
VacationLeaveRequestsService,
|
VacationLeaveRequestsService,
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import { leaveRequestsSelect } from '../utils/leave-requests.select';
|
||||||
import { LeaveRequestsUtils} from '../utils/leave-request.util';
|
import { LeaveRequestsUtils} from '../utils/leave-request.util';
|
||||||
import { normalizeDates, toDateOnly } from 'src/modules/shared/helpers/date-time.helpers';
|
import { normalizeDates, toDateOnly } from 'src/modules/shared/helpers/date-time.helpers';
|
||||||
import { BankCodesResolver } from 'src/modules/shared/utils/resolve-bank-type-id.utils';
|
import { BankCodesResolver } from 'src/modules/shared/utils/resolve-bank-type-id.utils';
|
||||||
import { EmployeeIdEmailResolver } from 'src/modules/shared/utils/resolve-email-id.utils';
|
import { EmailToIdResolver } from 'src/modules/shared/utils/resolve-email-id.utils';
|
||||||
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|
@ -18,7 +18,7 @@ export class HolidayLeaveRequestsService {
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly holidayService: HolidayService,
|
private readonly holidayService: HolidayService,
|
||||||
private readonly leaveUtils: LeaveRequestsUtils,
|
private readonly leaveUtils: LeaveRequestsUtils,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly typeResolver: BankCodesResolver,
|
private readonly typeResolver: BankCodesResolver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import { VacationService } from "src/modules/business-logics/services/vacation.s
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { LeaveRequestsUtils } from "../utils/leave-request.util";
|
import { LeaveRequestsUtils } from "../utils/leave-request.util";
|
||||||
import { normalizeDates, toDateOnly, toISODateKey } from "src/modules/shared/helpers/date-time.helpers";
|
import { normalizeDates, toDateOnly, toISODateKey } from "src/modules/shared/helpers/date-time.helpers";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|
@ -28,7 +28,7 @@ export class LeaveRequestsService {
|
||||||
private readonly vacationLeaveService: VacationLeaveRequestsService,
|
private readonly vacationLeaveService: VacationLeaveRequestsService,
|
||||||
private readonly vacationLogic: VacationService,
|
private readonly vacationLogic: VacationService,
|
||||||
private readonly leaveUtils: LeaveRequestsUtils,
|
private readonly leaveUtils: LeaveRequestsUtils,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly typeResolver: BankCodesResolver,
|
private readonly typeResolver: BankCodesResolver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import { SickLeaveService } from "src/modules/business-logics/services/sick-le
|
||||||
import { roundToQuarterHour } from "src/common/utils/date-utils";
|
import { roundToQuarterHour } from "src/common/utils/date-utils";
|
||||||
import { LeaveRequestsUtils } from "../utils/leave-request.util";
|
import { LeaveRequestsUtils } from "../utils/leave-request.util";
|
||||||
import { normalizeDates, toDateOnly } from "src/modules/shared/helpers/date-time.helpers";
|
import { normalizeDates, toDateOnly } from "src/modules/shared/helpers/date-time.helpers";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|
@ -18,7 +18,7 @@ export class SickLeaveRequestsService {
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly sickService: SickLeaveService,
|
private readonly sickService: SickLeaveService,
|
||||||
private readonly leaveUtils: LeaveRequestsUtils,
|
private readonly leaveUtils: LeaveRequestsUtils,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly typeResolver: BankCodesResolver,
|
private readonly typeResolver: BankCodesResolver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import { leaveRequestsSelect } from "../utils/leave-requests.select";
|
||||||
import { roundToQuarterHour } from "src/common/utils/date-utils";
|
import { roundToQuarterHour } from "src/common/utils/date-utils";
|
||||||
import { LeaveRequestsUtils } from "../utils/leave-request.util";
|
import { LeaveRequestsUtils } from "../utils/leave-request.util";
|
||||||
import { normalizeDates, toDateOnly } from "src/modules/shared/helpers/date-time.helpers";
|
import { normalizeDates, toDateOnly } from "src/modules/shared/helpers/date-time.helpers";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|
@ -19,7 +19,7 @@ export class VacationLeaveRequestsService {
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly vacationService: VacationService,
|
private readonly vacationService: VacationService,
|
||||||
private readonly leaveUtils: LeaveRequestsUtils,
|
private readonly leaveUtils: LeaveRequestsUtils,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly typeResolver: BankCodesResolver,
|
private readonly typeResolver: BankCodesResolver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { BadRequestException, Injectable, NotFoundException } from "@nestjs/common";
|
|
||||||
import { LeaveTypes } from "@prisma/client";
|
|
||||||
import { hhmmFromLocal, toDateOnly, toStringFromDate } from "src/modules/shared/helpers/date-time.helpers";
|
import { hhmmFromLocal, toDateOnly, toStringFromDate } from "src/modules/shared/helpers/date-time.helpers";
|
||||||
|
import { BadRequestException, Injectable } from "@nestjs/common";
|
||||||
import { ShiftsCommandService } from "src/modules/shifts/services/shifts-command.service";
|
import { ShiftsCommandService } from "src/modules/shifts/services/shifts-command.service";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
|
import { LeaveTypes } from "@prisma/client";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LeaveRequestsUtils {
|
export class LeaveRequestsUtils {
|
||||||
|
|
|
||||||
|
|
@ -8,23 +8,18 @@ import { TimesheetsCommandService } from "../timesheets/services/timesheets-comm
|
||||||
import { ExpensesCommandService } from "../expenses/services/expenses-command.service";
|
import { ExpensesCommandService } from "../expenses/services/expenses-command.service";
|
||||||
import { ShiftsCommandService } from "../shifts/services/shifts-command.service";
|
import { ShiftsCommandService } from "../shifts/services/shifts-command.service";
|
||||||
import { SharedModule } from "../shared/shared.module";
|
import { SharedModule } from "../shared/shared.module";
|
||||||
import { EmployeeIdEmailResolver } from "../shared/utils/resolve-email-id.utils";
|
|
||||||
import { BankCodesResolver } from "../shared/utils/resolve-bank-type-id.utils";
|
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { OvertimeService } from "../business-logics/services/overtime.service";
|
import { BusinessLogicsModule } from "../business-logics/business-logics.module";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [PrismaModule, TimesheetsModule, SharedModule],
|
imports: [PrismaModule, TimesheetsModule, SharedModule, BusinessLogicsModule],
|
||||||
providers: [
|
providers: [
|
||||||
PayPeriodsQueryService,
|
PayPeriodsQueryService,
|
||||||
PayPeriodsCommandService,
|
PayPeriodsCommandService,
|
||||||
TimesheetsCommandService,
|
TimesheetsCommandService,
|
||||||
ExpensesCommandService,
|
ExpensesCommandService,
|
||||||
ShiftsCommandService,
|
ShiftsCommandService,
|
||||||
EmployeeIdEmailResolver,
|
|
||||||
BankCodesResolver,
|
|
||||||
PrismaService,
|
PrismaService,
|
||||||
OvertimeService,
|
|
||||||
],
|
],
|
||||||
controllers: [PayPeriodsController],
|
controllers: [PayPeriodsController],
|
||||||
exports: [
|
exports: [
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
import { IsBoolean, IsEmail, IsString } from "class-validator";
|
import { IsInt } from "class-validator";
|
||||||
|
|
||||||
export class PreferencesDto {
|
export class PreferencesDto {
|
||||||
|
|
||||||
@IsBoolean()
|
@IsInt()
|
||||||
notifications: boolean;
|
notifications: number;
|
||||||
|
|
||||||
@IsBoolean()
|
@IsInt()
|
||||||
dark_mode: boolean;
|
dark_mode: number;
|
||||||
|
|
||||||
@IsBoolean()
|
@IsInt()
|
||||||
lang_switch: boolean;
|
lang_switch: number;
|
||||||
|
|
||||||
@IsBoolean()
|
@IsInt()
|
||||||
lefty_mode: boolean;
|
lefty_mode: number;
|
||||||
}
|
}
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
import { Module } from "@nestjs/common";
|
import { Module } from "@nestjs/common";
|
||||||
import { PreferencesController } from "./controllers/preferences.controller";
|
import { PreferencesController } from "./controllers/preferences.controller";
|
||||||
import { PreferencesService } from "./services/preferences.service";
|
import { PreferencesService } from "./services/preferences.service";
|
||||||
|
import { SharedModule } from "../shared/shared.module";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
controllers: [ PreferencesController ],
|
imports: [SharedModule],
|
||||||
providers: [ PreferencesService ],
|
controllers: [ PreferencesController ],
|
||||||
exports: [ PreferencesService ],
|
providers: [ PreferencesService ],
|
||||||
|
exports: [ PreferencesService ],
|
||||||
})
|
})
|
||||||
|
|
||||||
export class PreferencesModule {}
|
export class PreferencesModule {}
|
||||||
|
|
@ -2,22 +2,17 @@ import { Injectable, NotFoundException } from "@nestjs/common";
|
||||||
import { Preferences } from "@prisma/client";
|
import { Preferences } from "@prisma/client";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { PreferencesDto } from "../dtos/preferences.dto";
|
import { PreferencesDto } from "../dtos/preferences.dto";
|
||||||
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class PreferencesService {
|
export class PreferencesService {
|
||||||
constructor(private readonly prisma: PrismaService){}
|
constructor(
|
||||||
|
private readonly prisma: PrismaService,
|
||||||
async resolveUserIdWithEmail(email: string): Promise<string> {
|
private readonly emailResolver: EmailToIdResolver ,
|
||||||
const user = await this.prisma.users.findFirst({
|
){}
|
||||||
where: { email },
|
|
||||||
select: { id: true },
|
|
||||||
});
|
|
||||||
if(!user) throw new NotFoundException(`User with email ${ email } not found`);
|
|
||||||
return user.id;
|
|
||||||
}
|
|
||||||
|
|
||||||
async updatePreferences(email: string, dto: PreferencesDto ): Promise<Preferences> {
|
async updatePreferences(email: string, dto: PreferencesDto ): Promise<Preferences> {
|
||||||
const user_id = await this.resolveUserIdWithEmail(email);
|
const user_id = await this.emailResolver.resolveUserIdWithEmail(email);
|
||||||
return this.prisma.preferences.update({
|
return this.prisma.preferences.update({
|
||||||
where: { user_id },
|
where: { user_id },
|
||||||
data: {
|
data: {
|
||||||
|
|
|
||||||
|
|
@ -2,21 +2,18 @@ import { Module } from "@nestjs/common";
|
||||||
import { SchedulePresetsCommandService } from "./services/schedule-presets-command.service";
|
import { SchedulePresetsCommandService } from "./services/schedule-presets-command.service";
|
||||||
import { SchedulePresetsQueryService } from "./services/schedule-presets-query.service";
|
import { SchedulePresetsQueryService } from "./services/schedule-presets-query.service";
|
||||||
import { SchedulePresetsController } from "./controller/schedule-presets.controller";
|
import { SchedulePresetsController } from "./controller/schedule-presets.controller";
|
||||||
import { EmployeeIdEmailResolver } from "../shared/utils/resolve-email-id.utils";
|
|
||||||
import { BankCodesResolver } from "../shared/utils/resolve-bank-type-id.utils";
|
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { SchedulePresetsApplyService } from "./services/schedule-presets-apply.service";
|
import { SchedulePresetsApplyService } from "./services/schedule-presets-apply.service";
|
||||||
|
import { SharedModule } from "../shared/shared.module";
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [],
|
imports: [SharedModule],
|
||||||
controllers: [SchedulePresetsController],
|
controllers: [SchedulePresetsController],
|
||||||
providers: [
|
providers: [
|
||||||
PrismaService,
|
PrismaService,
|
||||||
SchedulePresetsCommandService,
|
SchedulePresetsCommandService,
|
||||||
SchedulePresetsQueryService,
|
SchedulePresetsQueryService,
|
||||||
SchedulePresetsApplyService,
|
SchedulePresetsApplyService,
|
||||||
EmployeeIdEmailResolver,
|
|
||||||
BankCodesResolver,
|
|
||||||
],
|
],
|
||||||
exports:[
|
exports:[
|
||||||
SchedulePresetsCommandService,
|
SchedulePresetsCommandService,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { BadRequestException, ConflictException, Injectable, NotFoundException } from "@nestjs/common";
|
import { BadRequestException, ConflictException, Injectable, NotFoundException } from "@nestjs/common";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { ApplyResult } from "../types/schedule-presets.types";
|
import { ApplyResult } from "../types/schedule-presets.types";
|
||||||
import { Prisma, Weekday } from "@prisma/client";
|
import { Prisma, Weekday } from "@prisma/client";
|
||||||
|
|
@ -9,7 +9,7 @@ import { WEEKDAY } from "../mappers/schedule-presets.mappers";
|
||||||
export class SchedulePresetsApplyService {
|
export class SchedulePresetsApplyService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
async applyToTimesheet(
|
async applyToTimesheet(
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { BadRequestException, ConflictException, Injectable, NotFoundException } from "@nestjs/common";
|
import { BadRequestException, ConflictException, Injectable, NotFoundException } from "@nestjs/common";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { UpsertAction } from "src/modules/shared/types/upsert-actions.types";
|
import { UpsertAction } from "src/modules/shared/types/upsert-actions.types";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { SchedulePresetsDto } from "../dtos/create-schedule-presets.dto";
|
import { SchedulePresetsDto } from "../dtos/create-schedule-presets.dto";
|
||||||
|
|
@ -10,7 +10,7 @@ import { Prisma, Weekday } from "@prisma/client";
|
||||||
export class SchedulePresetsCommandService {
|
export class SchedulePresetsCommandService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly typeResolver : BankCodesResolver,
|
private readonly typeResolver : BankCodesResolver,
|
||||||
){}
|
){}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Injectable, NotFoundException } from "@nestjs/common";
|
import { Injectable, NotFoundException } from "@nestjs/common";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { PresetResponse, ShiftResponse } from "../types/schedule-presets.types";
|
import { PresetResponse, ShiftResponse } from "../types/schedule-presets.types";
|
||||||
import { Prisma } from "@prisma/client";
|
import { Prisma } from "@prisma/client";
|
||||||
|
|
@ -8,7 +8,7 @@ import { Prisma } from "@prisma/client";
|
||||||
export class SchedulePresetsQueryService {
|
export class SchedulePresetsQueryService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
){}
|
){}
|
||||||
|
|
||||||
async findSchedulePresetsByEmail(email:string): Promise<PresetResponse[]> {
|
async findSchedulePresetsByEmail(email:string): Promise<PresetResponse[]> {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Module } from "@nestjs/common";
|
import { Module } from "@nestjs/common";
|
||||||
import { EmployeeIdEmailResolver } from "./utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "./utils/resolve-email-id.utils";
|
||||||
import { EmployeeTimesheetResolver } from "./utils/resolve-employee-timesheet.utils";
|
import { EmployeeTimesheetResolver } from "./utils/resolve-employee-timesheet.utils";
|
||||||
import { FullNameResolver } from "./utils/resolve-full-name.utils";
|
import { FullNameResolver } from "./utils/resolve-full-name.utils";
|
||||||
import { BankCodesResolver } from "./utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "./utils/resolve-bank-type-id.utils";
|
||||||
|
|
@ -9,13 +9,13 @@ import { PrismaModule } from "src/prisma/prisma.module";
|
||||||
imports: [PrismaModule],
|
imports: [PrismaModule],
|
||||||
providers: [
|
providers: [
|
||||||
FullNameResolver,
|
FullNameResolver,
|
||||||
EmployeeIdEmailResolver,
|
EmailToIdResolver,
|
||||||
BankCodesResolver,
|
BankCodesResolver,
|
||||||
EmployeeTimesheetResolver,
|
EmployeeTimesheetResolver,
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
FullNameResolver,
|
FullNameResolver,
|
||||||
EmployeeIdEmailResolver,
|
EmailToIdResolver,
|
||||||
BankCodesResolver,
|
BankCodesResolver,
|
||||||
EmployeeTimesheetResolver,
|
EmployeeTimesheetResolver,
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { PrismaService } from "src/prisma/prisma.service";
|
||||||
type Tx = Prisma.TransactionClient | PrismaClient;
|
type Tx = Prisma.TransactionClient | PrismaClient;
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class EmployeeIdEmailResolver {
|
export class EmailToIdResolver {
|
||||||
|
|
||||||
constructor(private readonly prisma: PrismaService) {}
|
constructor(private readonly prisma: PrismaService) {}
|
||||||
|
|
||||||
|
|
@ -20,4 +20,16 @@ export class EmployeeIdEmailResolver {
|
||||||
if(!employee)throw new NotFoundException(`Employee with email: ${email} not found`);
|
if(!employee)throw new NotFoundException(`Employee with email: ${email} not found`);
|
||||||
return employee.id;
|
return employee.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find user_id using email
|
||||||
|
readonly resolveUserIdWithEmail = async (email: string, client?: Tx
|
||||||
|
): Promise<string> => {
|
||||||
|
const db = client ?? this.prisma;
|
||||||
|
const user = await db.users.findFirst({
|
||||||
|
where: { email },
|
||||||
|
select: { id: true },
|
||||||
|
});
|
||||||
|
if(!user) throw new NotFoundException(`User with email ${ email } not found`);
|
||||||
|
return user.id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { BadRequestException, ConflictException, Injectable, Logger, NotFoundException, UnprocessableEntityException } from "@nestjs/common";
|
import { BadRequestException, ConflictException, Injectable, Logger, NotFoundException, UnprocessableEntityException } from "@nestjs/common";
|
||||||
import { normalizeShiftPayload, overlaps } from "../utils/shifts.utils";
|
import { normalizeShiftPayload, overlaps } from "../utils/shifts.utils";
|
||||||
import { DayShiftResponse, UpsertAction } from "../types-and-interfaces/shifts-upsert.types";
|
import { DayShiftResponse, UpsertAction } from "../types-and-interfaces/shifts-upsert.types";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
import { Prisma, Shifts } from "@prisma/client";
|
import { Prisma, Shifts } from "@prisma/client";
|
||||||
import { UpsertShiftDto } from "../dtos/upsert-shift.dto";
|
import { UpsertShiftDto } from "../dtos/upsert-shift.dto";
|
||||||
|
|
@ -16,7 +16,7 @@ export class ShiftsCommandService extends BaseApprovalService<Shifts> {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
prisma: PrismaService,
|
prisma: PrismaService,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly bankTypeResolver: BankCodesResolver,
|
private readonly bankTypeResolver: BankCodesResolver,
|
||||||
private readonly overtimeService: OvertimeService,
|
private readonly overtimeService: OvertimeService,
|
||||||
) { super(prisma); }
|
) { super(prisma); }
|
||||||
|
|
|
||||||
|
|
@ -5,24 +5,24 @@ import { ShiftsCommandService } from './services/shifts-command.service';
|
||||||
import { NotificationsModule } from '../notifications/notifications.module';
|
import { NotificationsModule } from '../notifications/notifications.module';
|
||||||
import { ShiftsQueryService } from './services/shifts-query.service';
|
import { ShiftsQueryService } from './services/shifts-query.service';
|
||||||
import { ShiftsArchivalService } from './services/shifts-archival.service';
|
import { ShiftsArchivalService } from './services/shifts-archival.service';
|
||||||
import { BankCodesResolver } from '../shared/utils/resolve-bank-type-id.utils';
|
import { SharedModule } from '../shared/shared.module';
|
||||||
import { EmployeeIdEmailResolver } from '../shared/utils/resolve-email-id.utils';
|
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [BusinessLogicsModule, NotificationsModule],
|
imports: [
|
||||||
|
BusinessLogicsModule,
|
||||||
|
NotificationsModule,
|
||||||
|
SharedModule
|
||||||
|
],
|
||||||
controllers: [ShiftsController],
|
controllers: [ShiftsController],
|
||||||
providers: [
|
providers: [
|
||||||
ShiftsQueryService,
|
ShiftsQueryService,
|
||||||
ShiftsCommandService,
|
ShiftsCommandService,
|
||||||
ShiftsArchivalService,
|
ShiftsArchivalService,
|
||||||
BankCodesResolver,
|
],
|
||||||
EmployeeIdEmailResolver],
|
|
||||||
exports: [
|
exports: [
|
||||||
ShiftsQueryService,
|
ShiftsQueryService,
|
||||||
ShiftsCommandService,
|
ShiftsCommandService,
|
||||||
ShiftsArchivalService,
|
ShiftsArchivalService,
|
||||||
BankCodesResolver,
|
|
||||||
EmployeeIdEmailResolver
|
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class ShiftsModule {}
|
export class ShiftsModule {}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { CreateTimesheetDto } from "../dtos/create-timesheet.dto";
|
||||||
import { getWeekEnd, getWeekStart } from "src/common/utils/date-utils";
|
import { getWeekEnd, getWeekStart } from "src/common/utils/date-utils";
|
||||||
import { parseISODate, parseHHmm } from "../utils/timesheet.helpers";
|
import { parseISODate, parseHHmm } from "../utils/timesheet.helpers";
|
||||||
import { TimesheetDto } from "../dtos/timesheet-period.dto";
|
import { TimesheetDto } from "../dtos/timesheet-period.dto";
|
||||||
import { EmployeeIdEmailResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
import { EmailToIdResolver } from "src/modules/shared/utils/resolve-email-id.utils";
|
||||||
import { EmployeeTimesheetResolver } from "src/modules/shared/utils/resolve-employee-timesheet.utils";
|
import { EmployeeTimesheetResolver } from "src/modules/shared/utils/resolve-employee-timesheet.utils";
|
||||||
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
import { BankCodesResolver } from "src/modules/shared/utils/resolve-bank-type-id.utils";
|
||||||
|
|
||||||
|
|
@ -16,7 +16,7 @@ export class TimesheetsCommandService extends BaseApprovalService<Timesheets>{
|
||||||
constructor(
|
constructor(
|
||||||
prisma: PrismaService,
|
prisma: PrismaService,
|
||||||
private readonly query: TimesheetsQueryService,
|
private readonly query: TimesheetsQueryService,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly timesheetResolver: EmployeeTimesheetResolver,
|
private readonly timesheetResolver: EmployeeTimesheetResolver,
|
||||||
private readonly bankTypeResolver: BankCodesResolver,
|
private readonly bankTypeResolver: BankCodesResolver,
|
||||||
) {super(prisma);}
|
) {super(prisma);}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { PrismaService } from 'src/prisma/prisma.service';
|
||||||
import { TimesheetDto, TimesheetPeriodDto } from '../dtos/timesheet-period.dto';
|
import { TimesheetDto, TimesheetPeriodDto } from '../dtos/timesheet-period.dto';
|
||||||
import { ShiftRow, ExpenseRow } from '../types/timesheet.types';
|
import { ShiftRow, ExpenseRow } from '../types/timesheet.types';
|
||||||
import { buildPeriod } from '../utils/timesheet.utils';
|
import { buildPeriod } from '../utils/timesheet.utils';
|
||||||
import { EmployeeIdEmailResolver } from 'src/modules/shared/utils/resolve-email-id.utils';
|
import { EmailToIdResolver } from 'src/modules/shared/utils/resolve-email-id.utils';
|
||||||
import { FullNameResolver } from 'src/modules/shared/utils/resolve-full-name.utils';
|
import { FullNameResolver } from 'src/modules/shared/utils/resolve-full-name.utils';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -13,7 +13,7 @@ import { FullNameResolver } from 'src/modules/shared/utils/resolve-full-name.uti
|
||||||
export class TimesheetsQueryService {
|
export class TimesheetsQueryService {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly prisma: PrismaService,
|
private readonly prisma: PrismaService,
|
||||||
private readonly emailResolver: EmployeeIdEmailResolver,
|
private readonly emailResolver: EmailToIdResolver,
|
||||||
private readonly fullNameResolver: FullNameResolver
|
private readonly fullNameResolver: FullNameResolver
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,10 @@ import { SharedModule } from '../shared/shared.module';
|
||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [BusinessLogicsModule, SharedModule],
|
imports: [
|
||||||
|
BusinessLogicsModule,
|
||||||
|
SharedModule
|
||||||
|
],
|
||||||
controllers: [TimesheetsController],
|
controllers: [TimesheetsController],
|
||||||
providers: [
|
providers: [
|
||||||
TimesheetsQueryService,
|
TimesheetsQueryService,
|
||||||
|
|
@ -17,7 +20,6 @@ import { Module } from '@nestjs/common';
|
||||||
ShiftsCommandService,
|
ShiftsCommandService,
|
||||||
ExpensesCommandService,
|
ExpensesCommandService,
|
||||||
TimesheetArchiveService,
|
TimesheetArchiveService,
|
||||||
|
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
TimesheetsQueryService,
|
TimesheetsQueryService,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user