From 465723e440d3b21c10433491734cd9e3ede7dbdd Mon Sep 17 00:00:00 2001 From: kittapath Date: Tue, 1 Oct 2024 00:56:57 +0700 Subject: [PATCH] comment --- .../DevelopmentRequestController.ts | 2 + .../ProfileDevelopmentController.ts | 62 +++++++++++++++++++ src/entities/ProfileDevelopment.ts | 3 + 3 files changed, 67 insertions(+) diff --git a/src/controllers/DevelopmentRequestController.ts b/src/controllers/DevelopmentRequestController.ts index 91ffd7df..a7ac3bd6 100644 --- a/src/controllers/DevelopmentRequestController.ts +++ b/src/controllers/DevelopmentRequestController.ts @@ -318,6 +318,7 @@ export class DevelopmentRequestController extends Controller { ...meta, id: undefined, type: "REQUEST", + kpiDevelopmentId: record.id, developmentProject: [], }); await this.profileDevelopmentRepository.save(profileDevelopment); @@ -327,6 +328,7 @@ export class DevelopmentRequestController extends Controller { ...profileDevelopment, id: undefined, type: "REQUEST", + kpiDevelopmentId: record.id, developmentProject: [], }); history.profileDevelopmentId = profileDevelopment.id; diff --git a/src/controllers/ProfileDevelopmentController.ts b/src/controllers/ProfileDevelopmentController.ts index 46d16d6d..76aab0fa 100644 --- a/src/controllers/ProfileDevelopmentController.ts +++ b/src/controllers/ProfileDevelopmentController.ts @@ -24,6 +24,8 @@ import { UpdateProfileDevelopment, } from "../entities/ProfileDevelopment"; import permission from "../interfaces/permission"; +import { DevelopmentProject } from "../entities/DevelopmentProject"; +import { In } from "typeorm"; @Route("api/v1/org/profile/development") @Tags("ProfileDevelopment") @Security("bearerAuth") @@ -31,6 +33,7 @@ export class ProfileDevelopmentController extends Controller { private profileRepository = AppDataSource.getRepository(Profile); private developmentRepository = AppDataSource.getRepository(ProfileDevelopment); private developmentHistoryRepository = AppDataSource.getRepository(ProfileDevelopmentHistory); + private developmentProjectRepository = AppDataSource.getRepository(DevelopmentProject); @Get("user") public async getDevelopmentUser(@Request() request: { user: Record }) { @@ -102,6 +105,29 @@ export class ProfileDevelopmentController 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(); } @@ -138,6 +164,37 @@ export class ProfileDevelopmentController 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(); } @@ -151,10 +208,15 @@ export class ProfileDevelopmentController extends Controller { _record.profileId, ); } + const history = await this.developmentHistoryRepository.find({ + where: { profileDevelopmentId: developmentId }, + }); + await this.developmentProjectRepository.delete({ profileDevelopmentHistoryId: In(history) }); await this.developmentHistoryRepository.delete({ profileDevelopmentId: developmentId, }); + await this.developmentProjectRepository.delete({ profileDevelopmentId: developmentId }); const result = await this.developmentRepository.delete({ id: developmentId }); if (result.affected == undefined || result.affected <= 0) { diff --git a/src/entities/ProfileDevelopment.ts b/src/entities/ProfileDevelopment.ts index d68fb0c9..40375bda 100644 --- a/src/entities/ProfileDevelopment.ts +++ b/src/entities/ProfileDevelopment.ts @@ -192,6 +192,7 @@ export class CreateProfileDevelopment { isDevelopment10: boolean | null; summary?: number | null; point?: number | null; + developmentProjects?: string[]; } export class CreateProfileEmployeeDevelopment { @@ -211,6 +212,7 @@ export class CreateProfileEmployeeDevelopment { isDevelopment10: boolean | null; summary?: number | null; point?: number | null; + developmentProjects?: string[]; } export type UpdateProfileDevelopment = { @@ -229,4 +231,5 @@ export type UpdateProfileDevelopment = { isDevelopment10: boolean | null; summary?: number | null; point?: number | null; + developmentProjects?: string[]; };