diff --git a/src/controllers/ProfileDevelopmentEmployeeController.ts b/src/controllers/ProfileDevelopmentEmployeeController.ts index b93a5608..6a0bf2eb 100644 --- a/src/controllers/ProfileDevelopmentEmployeeController.ts +++ b/src/controllers/ProfileDevelopmentEmployeeController.ts @@ -24,6 +24,7 @@ import { UpdateProfileDevelopment, } from "../entities/ProfileDevelopment"; import permission from "../interfaces/permission"; +import { DevelopmentProject } from "../entities/DevelopmentProject"; @Route("api/v1/org/profile-employee/development") @Tags("ProfileDevelopment") @Security("bearerAuth") @@ -31,6 +32,7 @@ export class ProfileDevelopmentEmployeeController extends Controller { private profileRepository = AppDataSource.getRepository(ProfileEmployee); private developmentRepository = AppDataSource.getRepository(ProfileDevelopment); private developmentHistoryRepository = AppDataSource.getRepository(ProfileDevelopmentHistory); + private developmentProjectRepository = AppDataSource.getRepository(DevelopmentProject); @Get("user") public async getDevelopmentUser(@Request() request: RequestWithUser) { @@ -106,6 +108,29 @@ export class ProfileDevelopmentEmployeeController extends Controller { history.profileDevelopmentId = data.id; await this.developmentHistoryRepository.save(history); + if (body.developmentProjects != null) { + await Promise.all( + body.developmentProjects.map(async (x) => { + let developmentProject = new DevelopmentProject(); + let developmentProjectHistory = new DevelopmentProject(); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentId: data.id, + }); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentHistoryId: history.id, + }); + await Promise.all([ + this.developmentProjectRepository.save(developmentProject), + this.developmentProjectRepository.save(developmentProjectHistory), + ]); + }), + ); + } + return new HttpSuccess(); } @@ -146,6 +171,38 @@ export class ProfileDevelopmentEmployeeController extends Controller { this.developmentHistoryRepository.save(history), ]); + await this.developmentProjectRepository.delete({ profileDevelopmentId: record.id }); + if (body.developmentProjects != null) { + const meta = { + createdUserId: req.user.sub, + createdFullName: req.user.name, + lastUpdateUserId: req.user.sub, + lastUpdateFullName: req.user.name, + createdAt: new Date(), + lastUpdatedAt: new Date(), + }; + await Promise.all( + body.developmentProjects.map(async (x) => { + let developmentProject = new DevelopmentProject(); + let developmentProjectHistory = new DevelopmentProject(); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentId: record.id, + }); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentHistoryId: history.id, + }); + await Promise.all([ + this.developmentProjectRepository.save(developmentProject), + this.developmentProjectRepository.save(developmentProjectHistory), + ]); + }), + ); + } + return new HttpSuccess(); } diff --git a/src/controllers/ProfileDevelopmentEmployeeTempController.ts b/src/controllers/ProfileDevelopmentEmployeeTempController.ts index b92c1149..4e502e83 100644 --- a/src/controllers/ProfileDevelopmentEmployeeTempController.ts +++ b/src/controllers/ProfileDevelopmentEmployeeTempController.ts @@ -24,6 +24,7 @@ import { UpdateProfileDevelopment, } from "../entities/ProfileDevelopment"; import permission from "../interfaces/permission"; +import { DevelopmentProject } from "../entities/DevelopmentProject"; @Route("api/v1/org/profile-temp/development") @Tags("ProfileDevelopment") @Security("bearerAuth") @@ -31,6 +32,7 @@ export class ProfileDevelopmentEmployeeTempController extends Controller { private profileRepository = AppDataSource.getRepository(ProfileEmployee); private developmentRepository = AppDataSource.getRepository(ProfileDevelopment); private developmentHistoryRepository = AppDataSource.getRepository(ProfileDevelopmentHistory); + private developmentProjectRepository = AppDataSource.getRepository(DevelopmentProject); @Get("user") public async getDevelopmentUser(@Request() request: { user: Record }) { @@ -100,6 +102,29 @@ export class ProfileDevelopmentEmployeeTempController extends Controller { history.profileDevelopmentId = data.id; await this.developmentHistoryRepository.save(history); + if (body.developmentProjects != null) { + await Promise.all( + body.developmentProjects.map(async (x) => { + let developmentProject = new DevelopmentProject(); + let developmentProjectHistory = new DevelopmentProject(); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentId: data.id, + }); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentHistoryId: history.id, + }); + await Promise.all([ + this.developmentProjectRepository.save(developmentProject), + this.developmentProjectRepository.save(developmentProjectHistory), + ]); + }), + ); + } + return new HttpSuccess(); } @@ -137,6 +162,38 @@ export class ProfileDevelopmentEmployeeTempController extends Controller { this.developmentHistoryRepository.save(history), ]); + await this.developmentProjectRepository.delete({ profileDevelopmentId: record.id }); + if (body.developmentProjects != null) { + const meta = { + createdUserId: req.user.sub, + createdFullName: req.user.name, + lastUpdateUserId: req.user.sub, + lastUpdateFullName: req.user.name, + createdAt: new Date(), + lastUpdatedAt: new Date(), + }; + await Promise.all( + body.developmentProjects.map(async (x) => { + let developmentProject = new DevelopmentProject(); + let developmentProjectHistory = new DevelopmentProject(); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentId: record.id, + }); + Object.assign(developmentProject, { + ...meta, + name: x, + profileDevelopmentHistoryId: history.id, + }); + await Promise.all([ + this.developmentProjectRepository.save(developmentProject), + this.developmentProjectRepository.save(developmentProjectHistory), + ]); + }), + ); + } + return new HttpSuccess(); }