From 1288cb112ef6fa221490bdf65abc27ddb370719e Mon Sep 17 00:00:00 2001 From: AnandaTon Date: Wed, 8 May 2024 14:58:51 +0700 Subject: [PATCH 1/6] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88?= =?UTF-8?q?=E0=B8=A1/=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84=E0=B8=82?= =?UTF-8?q?=E0=B8=9F=E0=B8=B4=E0=B8=A5UserRole?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/KpiUserRoleController.ts | 16 ++++++++++++ src/entities/kpiUserRole.ts | 32 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/controllers/KpiUserRoleController.ts b/src/controllers/KpiUserRoleController.ts index c0cb331..5ebae79 100644 --- a/src/controllers/KpiUserRoleController.ts +++ b/src/controllers/KpiUserRoleController.ts @@ -94,6 +94,14 @@ export class KpiUserRoleController extends Controller { kpiUserRole.createdFullName = request.user.name; kpiUserRole.lastUpdateUserId = request.user.sub; kpiUserRole.lastUpdateFullName = request.user.name; + kpiUserRole.documentInfoEvidence = request.user.documentInfoEvidence; + kpiUserRole.startDate = request.user.startDate; + kpiUserRole.endDate = request.user.endDate; + kpiUserRole.achievement1 = request.user.achievement1; + kpiUserRole.achievement2 = request.user.achievement2; + kpiUserRole.achievement3 = request.user.achievement3; + kpiUserRole.achievement4 = request.user.achievement4; + kpiUserRole.achievement5 = request.user.achievement5; await this.kpiUserRoleRepository.save(kpiUserRole); return new HttpSuccess(kpiUserRole.id); } @@ -148,6 +156,14 @@ export class KpiUserRoleController extends Controller { kpiUserRole.lastUpdateUserId = request.user.sub; kpiUserRole.lastUpdateFullName = request.user.name; + kpiUserRole.documentInfoEvidence = request.user.documentInfoEvidence; + kpiUserRole.startDate = request.user.startDate; + kpiUserRole.endDate = request.user.endDate; + kpiUserRole.achievement1 = request.user.achievement1; + kpiUserRole.achievement2 = request.user.achievement2; + kpiUserRole.achievement3 = request.user.achievement3; + kpiUserRole.achievement4 = request.user.achievement4; + kpiUserRole.achievement5 = request.user.achievement5; this.kpiUserRoleRepository.merge(kpiUserRole, requestBody); await this.kpiUserRoleRepository.save(kpiUserRole); return new HttpSuccess(kpiUserRole.id); diff --git a/src/entities/kpiUserRole.ts b/src/entities/kpiUserRole.ts index f4895c9..fd2419f 100644 --- a/src/entities/kpiUserRole.ts +++ b/src/entities/kpiUserRole.ts @@ -154,6 +154,22 @@ export class CreateKpiUserRole { kpiUserEvaluationId: string; @Column("uuid") kpiRoleId: string; + @Column() + documentInfoEvidence: string; + @Column() + startDate: Date; + @Column() + endDate: Date; + @Column() + achievement1: string; + @Column() + achievement2: string; + @Column() + achievement3: string; + @Column() + achievement4: string; + @Column() + achievement5: string; } export class UpdateKpiUserRole { @@ -171,6 +187,22 @@ export class UpdateKpiUserRole { kpiUserEvaluationId: string; @Column("uuid") kpiRoleId: string; + @Column() + documentInfoEvidence: string; + @Column() + startDate: Date; + @Column() + endDate: Date; + @Column() + achievement1: string; + @Column() + achievement2: string; + @Column() + achievement3: string; + @Column() + achievement4: string; + @Column() + achievement5: string; } export class KpiUserRoleDataPoint { From ffcd90ac4c137fb88b0a3d5bbfa0eae207e6dabd Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Wed, 8 May 2024 15:18:17 +0700 Subject: [PATCH 2/6] fix search --- src/controllers/KpiPlanController.ts | 4 + src/controllers/KpiRoleController.ts | 13 +- .../KpiUserDevelopmentController.ts | 280 ++++++++++++++++++ src/entities/kpiUserDevelopment.ts | 6 +- 4 files changed, 296 insertions(+), 7 deletions(-) create mode 100644 src/controllers/KpiUserDevelopmentController.ts diff --git a/src/controllers/KpiPlanController.ts b/src/controllers/KpiPlanController.ts index a71a9e1..fb5bfa2 100644 --- a/src/controllers/KpiPlanController.ts +++ b/src/controllers/KpiPlanController.ts @@ -485,6 +485,10 @@ export class kpiPlanController extends Controller { keyword: `%${requestBody.keyword}%`, }).orWhere("kpiPlan.includingName LIKE :keyword", { keyword: `%${requestBody.keyword}%`, + }).orWhere("kpiPlan.year LIKE :keyword",{ + keyword: `%${requestBody.keyword}%` + }).orWhere("kpiPlan.period LIKE :keyword",{ + keyword: `%${requestBody.keyword}%` }); }), ) diff --git a/src/controllers/KpiRoleController.ts b/src/controllers/KpiRoleController.ts index fe98487..987a653 100644 --- a/src/controllers/KpiRoleController.ts +++ b/src/controllers/KpiRoleController.ts @@ -450,10 +450,15 @@ export class kpiRoleController extends Controller { }) .andWhere( new Brackets((qb) => { - qb.orWhere("kpiRole.including LIKE :keyword", { keyword: `%${requestBody.keyword}%` }).orWhere( - "kpiRole.includingName LIKE :keyword", - { keyword: `%${requestBody.keyword}%` }, - ); + qb.orWhere("kpiRole.including LIKE :keyword", { + keyword: `%${requestBody.keyword}%` + }).orWhere("kpiRole.includingName LIKE :keyword",{ + keyword: `%${requestBody.keyword}%` + }).orWhere("kpiRole.year LIKE :keyword",{ + keyword: `%${requestBody.keyword}%` + }).orWhere("kpiRole.period LIKE :keyword",{ + keyword: `%${requestBody.keyword}%` + }); }), ) .select([ diff --git a/src/controllers/KpiUserDevelopmentController.ts b/src/controllers/KpiUserDevelopmentController.ts new file mode 100644 index 0000000..5bc4ea3 --- /dev/null +++ b/src/controllers/KpiUserDevelopmentController.ts @@ -0,0 +1,280 @@ +import { + Controller, + Get, + Post, + Put, + Delete, + Route, + Security, + Tags, + Body, + Path, + Request, + SuccessResponse, + Response, + Query, + } from "tsoa"; + import { AppDataSource } from "../database/data-source"; + import HttpSuccess from "../interfaces/http-success"; + import HttpStatusCode from "../interfaces/http-status"; + import { + KpiUserDevelopment, + CreateKpiUserDevelopment, + UpdateKpiUserDevelopment, + KpiUserDevelopmentDataPoint, + } from "../entities/kpiUserDevelopment"; + import HttpError from "../interfaces/http-error"; + import { KpiUserEvaluation } from "../entities/kpiUserEvaluation"; + import { Not } from "typeorm"; + + @Route("api/v1/kpi/user/achievement/Development") + @Tags("KpiUserDevelopment") + @Security("bearerAuth") + @Response( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", + ) + @SuccessResponse(HttpStatusCode.OK, "สำเร็จ") + export class KpiUserDevelopmentController extends Controller { + private kpiUserDevelopmentRepository = AppDataSource.getRepository(KpiUserDevelopment); + private kpiUserEvaluationRepository = AppDataSource.getRepository(KpiUserEvaluation); + + /** + * API เพิ่มพัฒนาตนเอง + * + * @summary - เพิ่มพัฒนาตนเอง # + * + */ + @Post() + async createKpiUserDevelopment( + @Body() + requestBody: CreateKpiUserDevelopment, + @Request() request: { user: Record }, + ) { + const chkUserEvaluation = await this.kpiUserEvaluationRepository.findOne({ + where: { id: requestBody.kpiUserEvaluationId }, + }); + if (!chkUserEvaluation) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมินผู้ใช้งาน"); + } + + const kpiUserDevelopment = Object.assign(new KpiUserDevelopment(), requestBody); + if (!kpiUserDevelopment) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); + } + + // const chk_indicator = await this.kpiUserDevelopmentRepository.findOne({ + // where: { + // kpiUserEvaluationId: requestBody.kpiUserEvaluationId, + // }, + // }); + // if ( + // (chk_indicator && chk_indicator.including == requestBody.including) || + // (chk_indicator && chk_indicator.includingName == requestBody.includingName) + // ) { + // throw new HttpError( + // HttpStatusCode.CONFLICT, + // "ไม่สามารถเพิ่มข้อมูลได้เนื่องจากข้อมูลตัวชี้วัดซ้ำ", + // ); + // } + + kpiUserDevelopment.createdUserId = request.user.sub; + kpiUserDevelopment.createdFullName = request.user.name; + kpiUserDevelopment.lastUpdateUserId = request.user.sub; + kpiUserDevelopment.lastUpdateFullName = request.user.name; + await this.kpiUserDevelopmentRepository.save(kpiUserDevelopment); + return new HttpSuccess(kpiUserDevelopment.id); + } + + /** + * API แก้ไขพัฒนาตนเอง + * + * @summary - แก้ไขพัฒนาตนเอง # + * + * @param {string} id Id พัฒนาตนเอง + */ + @Put("{id}") + async editKpiUserDevelopment( + @Path() id: string, + @Body() requestBody: UpdateKpiUserDevelopment, + @Request() request: { user: Record }, + ) { + const kpiUserDevelopment = await this.kpiUserDevelopmentRepository.findOne({ where: { id } }); + if (!kpiUserDevelopment) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลพัฒนาตนเองนี้"); + } + const chkUserEvaluation = await this.kpiUserEvaluationRepository.findOne({ + where: { id: requestBody.kpiUserEvaluationId }, + }); + if (!chkUserEvaluation) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมินผู้ใช้งาน"); + } + + // const chk_indicator = await this.kpiUserDevelopmentRepository.findOne({ + // where: { + // id: Not(id), + // kpiUserEvaluationId: requestBody.kpiUserEvaluationId, + // }, + // }); + // if ( + // (chk_indicator && chk_indicator.including == requestBody.including) || + // (chk_indicator && chk_indicator.includingName == requestBody.includingName) + // ) { + // throw new HttpError( + // HttpStatusCode.CONFLICT, + // "ไม่สามารถเพิ่มข้อมูลได้เนื่องจากข้อมูลตัวชี้วัดซ้ำ", + // ); + // } + + kpiUserDevelopment.lastUpdateUserId = request.user.sub; + kpiUserDevelopment.lastUpdateFullName = request.user.name; + Object.assign(kpiUserDevelopment, requestBody); + await this.kpiUserDevelopmentRepository.save(kpiUserDevelopment); + return new HttpSuccess(kpiUserDevelopment.id); + } + + /** + * API ลบพัฒนาตนเอง + * + * @summary - ลบพัฒนาตนเอง # + * + */ + @Delete("{id}") + async deleteKpiUserDevelopment(@Path() id: string) { + const delKpiUserDevelopment = await this.kpiUserDevelopmentRepository.findOne({ where: { id } }); + if (!delKpiUserDevelopment) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลพัฒนาตนเองนี้"); + } + await this.kpiUserDevelopmentRepository.remove(delKpiUserDevelopment); + return new HttpSuccess(); + } + + // /** + // * API รายละเอียดพัฒนาตนเอง + // * + // * @summary - รายละเอียดพัฒนาตนเอง # + // * + // * @param {string} id Id พัฒนาตนเอง + // */ + // @Get("{id}") + // async GetKpiUserDevelopmentDetail(@Path() id: string) { + // const getKpiUserDevelopment = await this.kpiUserDevelopmentRepository.findOne({ + // relations: ["kpiUserEvaluation"], + // where: { id: id }, + // }); + // if (!getKpiUserDevelopment) { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลพัฒนาตนเองนี้"); + // } + + // const mapKpiUserDevelopment = { + // id: getKpiUserDevelopment.id, + // evaluationId: getKpiUserDevelopment.kpiUserEvaluation.id, + // including: getKpiUserDevelopment.including, + // includingName: getKpiUserDevelopment.includingName, + // target: getKpiUserDevelopment.target, + // weight: getKpiUserDevelopment.weight, + // unit: getKpiUserDevelopment.unit, + // meaning: getKpiUserDevelopment.meaning, + // formula: getKpiUserDevelopment.formula, + // point: getKpiUserDevelopment.point, + // achievement: + // getKpiUserDevelopment.point === 1 + // ? getKpiUserDevelopment.achievement1 + // : getKpiUserDevelopment.point === 2 + // ? getKpiUserDevelopment.achievement2 + // : getKpiUserDevelopment.point === 3 + // ? getKpiUserDevelopment.achievement3 + // : getKpiUserDevelopment.point === 4 + // ? getKpiUserDevelopment.achievement4 + // : getKpiUserDevelopment.point === 5 + // ? getKpiUserDevelopment.achievement5 + // : null, + // achievement1: getKpiUserDevelopment.achievement1, + // achievement2: getKpiUserDevelopment.achievement2, + // achievement3: getKpiUserDevelopment.achievement3, + // achievement4: getKpiUserDevelopment.achievement4, + // achievement5: getKpiUserDevelopment.achievement5, + // }; + + // return new HttpSuccess(mapKpiUserDevelopment); + // } + + // /** + // * API รายการพัฒนาตนเอง + // * + // * @summary - รายการพัฒนาตนเอง # + // * + // */ + // @Get() + // async GetKpiUserDevelopment(@Query("id") id: string) { + // const kpiUserDevelopment = await this.kpiUserDevelopmentRepository.find({ + // where: { + // kpiUserEvaluationId: id, + // }, + // relations: ["kpiUserEvaluation"], + // order: { createdAt: "ASC" }, + // }); + + // const mapKpiUserDevelopment = kpiUserDevelopment.map((item) => ({ + // id: item.id, + // evaluationId: item.kpiUserEvaluation.id, + // including: item.including, + // includingName: item.includingName, + // target: item.target, + // weight: item.weight, + // unit: item.unit, + // meaning: item.meaning, + // formula: item.formula, + // point: item.point, + // achievement: + // item.point === 1 + // ? item.achievement1 + // : item.point === 2 + // ? item.achievement2 + // : item.point === 3 + // ? item.achievement3 + // : item.point === 4 + // ? item.achievement4 + // : item.point === 5 + // ? item.achievement5 + // : null, + // achievement1: item.achievement1, + // achievement2: item.achievement2, + // achievement3: item.achievement3, + // achievement4: item.achievement4, + // achievement5: item.achievement5, + // })); + // return new HttpSuccess(mapKpiUserDevelopment); + // } + + /** + * API กรอกระดับคะแนนงานตามแผนปฏิบัติราชการประจำปี + * + * @summary กรอกระดับคะแนนงานตามแผนปฏิบัติราชการประจำปี + * + * + */ + @Post("point") + async CreateKpiUserDevelopmentPoint( + @Body() requestBody: KpiUserDevelopmentDataPoint[], + @Request() request: { user: Record }, + ) { + for (const item of requestBody) { + const kpiUserDevelopment = await this.kpiUserDevelopmentRepository.findOne({ + where: { id: item.id }, + }); + if (!kpiUserDevelopment) { + throw new HttpError( + HttpStatusCode.NOT_FOUND, + `ไม่พบข้อมูลพัฒนาตนเองนี้: ${item.id}`, + ); + } + this.kpiUserDevelopmentRepository.merge(kpiUserDevelopment, item); + kpiUserDevelopment.lastUpdateUserId = request.user.sub; + kpiUserDevelopment.lastUpdateFullName = request.user.name; + await this.kpiUserDevelopmentRepository.save(kpiUserDevelopment); + } + return new HttpSuccess(); + } + } + \ No newline at end of file diff --git a/src/entities/kpiUserDevelopment.ts b/src/entities/kpiUserDevelopment.ts index 3ee07e1..0843439 100644 --- a/src/entities/kpiUserDevelopment.ts +++ b/src/entities/kpiUserDevelopment.ts @@ -60,7 +60,7 @@ export class KpiUserDevelopment extends EntityBase { kpiUserEvaluation: KpiUserEvaluation; } -export class CreateKpiUserSpecial { +export class CreateKpiUserDevelopment { @Column() including: string | null; @Column() @@ -89,7 +89,7 @@ export class CreateKpiUserSpecial { kpiUserEvaluationId: string; } -export class UpdateKpiUserSpecial { +export class UpdateKpiUserDevelopment { @Column() including: string | null; @Column() @@ -118,7 +118,7 @@ export class UpdateKpiUserSpecial { kpiUserEvaluationId: string; } -export class KpiUserSpecialDataPoint { +export class KpiUserDevelopmentDataPoint { id: string; point: number; } From 8fd05eaf7439937806769198d0074eec8750aa5f Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Wed, 8 May 2024 15:40:13 +0700 Subject: [PATCH 3/6] fix again --- src/controllers/KpiRoleController.ts | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/controllers/KpiRoleController.ts b/src/controllers/KpiRoleController.ts index 987a653..8fe2922 100644 --- a/src/controllers/KpiRoleController.ts +++ b/src/controllers/KpiRoleController.ts @@ -404,22 +404,7 @@ export class kpiRoleController extends Controller { const [kpiRole, total] = await AppDataSource.getRepository(KpiRole) .createQueryBuilder("kpiRole") .leftJoinAndSelect("kpiRole.kpiPeriod", "kpiPeriod") - .andWhere( - requestBody.node != undefined && requestBody.node != null - ? requestBody.node == 4 - ? "kpiRole.child4Id LIKE :nodeId" - : requestBody.node == 3 - ? "kpiRole.child3Id LIKE :nodeId" - : requestBody.node == 2 - ? "kpiRole.child2Id LIKE :nodeId" - : requestBody.node == 1 - ? "kpiRole.child1Id LIKE :nodeId" - : "kpiRole.rootId LIKE :nodeId" - : "1=1", - { - nodeId: requestBody.nodeId, - }, - ) + .andWhere(condition, parameters) // .andWhere( // requestBody.year && requestBody.period // ? "kpiRole.year LIKE :year AND kpiRole.period LIKE :period" From 0b9f3bf008a5fd8f76f341ede01f8788d39d7c3b Mon Sep 17 00:00:00 2001 From: AnandaTon Date: Wed, 8 May 2024 15:43:48 +0700 Subject: [PATCH 4/6] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88?= =?UTF-8?q?=E0=B8=A1=E0=B8=9F=E0=B8=B4=E0=B8=A7=E0=B9=80=E0=B8=9E=E0=B8=B4?= =?UTF-8?q?=E0=B9=88=E0=B8=A1=E0=B9=81=E0=B8=81=E0=B9=89=E0=B9=84=E0=B8=82?= =?UTF-8?q?=20userSpecial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/KpiUserSpecialController.ts | 6 ++++++ src/entities/kpiUserSpecial.ts | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/controllers/KpiUserSpecialController.ts b/src/controllers/KpiUserSpecialController.ts index 07915f7..c7a1691 100644 --- a/src/controllers/KpiUserSpecialController.ts +++ b/src/controllers/KpiUserSpecialController.ts @@ -82,6 +82,9 @@ export class KpiUserSpecialController extends Controller { kpiUserSpecial.createdFullName = request.user.name; kpiUserSpecial.lastUpdateUserId = request.user.sub; kpiUserSpecial.lastUpdateFullName = request.user.name; + kpiUserSpecial.documentInfoEvidence = request.user.documentInfoEvidence; + kpiUserSpecial.startDate = request.user.startDate; + kpiUserSpecial.endDate = request.user.endDate; await this.kpiUserSpecialRepository.save(kpiUserSpecial); return new HttpSuccess(kpiUserSpecial.id); } @@ -128,6 +131,9 @@ export class KpiUserSpecialController extends Controller { kpiUserSpecial.lastUpdateUserId = request.user.sub; kpiUserSpecial.lastUpdateFullName = request.user.name; + kpiUserSpecial.documentInfoEvidence = request.user.documentInfoEvidence; + kpiUserSpecial.startDate = request.user.startDate; + kpiUserSpecial.endDate = request.user.endDate; Object.assign(kpiUserSpecial, requestBody); await this.kpiUserSpecialRepository.save(kpiUserSpecial); return new HttpSuccess(kpiUserSpecial.id); diff --git a/src/entities/kpiUserSpecial.ts b/src/entities/kpiUserSpecial.ts index 8fb45f4..148854a 100644 --- a/src/entities/kpiUserSpecial.ts +++ b/src/entities/kpiUserSpecial.ts @@ -187,6 +187,12 @@ export class CreateKpiUserSpecial { formula: string; @Column("uuid") kpiUserEvaluationId: string; + @Column() + documentInfoEvidence: string; + @Column() + startDate: Date; + @Column() + endDate: Date; } export class UpdateKpiUserSpecial { @@ -216,6 +222,12 @@ export class UpdateKpiUserSpecial { formula: string; @Column("uuid") kpiUserEvaluationId: string; + @Column() + documentInfoEvidence: string; + @Column() + startDate: Date; + @Column() + endDate: Date; } export class KpiUserSpecialDataPoint { From bab5532f70374ddb15f579c86089df75e919fb54 Mon Sep 17 00:00:00 2001 From: Bright Date: Wed, 8 May 2024 16:15:08 +0700 Subject: [PATCH 5/6] no message --- src/controllers/KpiUserSpecialController.ts | 56 ++++++++++++++++++--- src/entities/kpiUserSpecial.ts | 8 +++ 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/controllers/KpiUserSpecialController.ts b/src/controllers/KpiUserSpecialController.ts index c7a1691..e613b30 100644 --- a/src/controllers/KpiUserSpecialController.ts +++ b/src/controllers/KpiUserSpecialController.ts @@ -25,6 +25,7 @@ import { } from "../entities/kpiUserSpecial"; import HttpError from "../interfaces/http-error"; import { KpiUserEvaluation } from "../entities/kpiUserEvaluation"; +import { KpiSpecial } from "../entities/kpiSpecial"; import { Not } from "typeorm"; @Route("api/v1/kpi/user/achievement/special") @@ -38,6 +39,7 @@ import { Not } from "typeorm"; export class KpiUserSpecialController extends Controller { private kpiUserSpecialRepository = AppDataSource.getRepository(KpiUserSpecial); private kpiUserEvaluationRepository = AppDataSource.getRepository(KpiUserEvaluation); + private kpiSpecialRepository = AppDataSource.getRepository(KpiSpecial); /** * API เพิ่มงานที่ได้รับมอบหมายพิเศษ @@ -66,18 +68,39 @@ export class KpiUserSpecialController extends Controller { const chk_indicator = await this.kpiUserSpecialRepository.findOne({ where: { kpiUserEvaluationId: requestBody.kpiUserEvaluationId, + including: String(requestBody.including), + includingName: String(requestBody.includingName), + period: requestBody.period, + year: requestBody.year, }, }); if ( - (chk_indicator && chk_indicator.including == requestBody.including) || - (chk_indicator && chk_indicator.includingName == requestBody.includingName) + // (chk_indicator && chk_indicator.including == requestBody.including) || + // (chk_indicator && chk_indicator.includingName == requestBody.includingName) + chk_indicator ) { throw new HttpError( HttpStatusCode.CONFLICT, "ไม่สามารถเพิ่มข้อมูลได้เนื่องจากข้อมูลตัวชี้วัดซ้ำ", ); } - + const chk_kpiSpecial = await this.kpiSpecialRepository.findOne({ + where: { + including: String(requestBody.including), + includingName: String(requestBody.includingName) + }, + }); + if(!chk_kpiSpecial){ + const kpiSpecial = Object.assign(new KpiSpecial(), requestBody); + if (!kpiSpecial) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); + } + kpiSpecial.createdUserId = request.user.sub; + kpiSpecial.createdFullName = request.user.name; + kpiSpecial.lastUpdateUserId = request.user.sub; + kpiSpecial.lastUpdateFullName = request.user.name; + await this.kpiSpecialRepository.save(kpiSpecial); + } kpiUserSpecial.createdUserId = request.user.sub; kpiUserSpecial.createdFullName = request.user.name; kpiUserSpecial.lastUpdateUserId = request.user.sub; @@ -117,18 +140,39 @@ export class KpiUserSpecialController extends Controller { where: { id: Not(id), kpiUserEvaluationId: requestBody.kpiUserEvaluationId, + including: String(requestBody.including), + includingName: String(requestBody.includingName), + period: requestBody.period, + year: requestBody.year, }, }); if ( - (chk_indicator && chk_indicator.including == requestBody.including) || - (chk_indicator && chk_indicator.includingName == requestBody.includingName) + // (chk_indicator && chk_indicator.including == requestBody.including) || + // (chk_indicator && chk_indicator.includingName == requestBody.includingName) + chk_indicator ) { throw new HttpError( HttpStatusCode.CONFLICT, "ไม่สามารถเพิ่มข้อมูลได้เนื่องจากข้อมูลตัวชี้วัดซ้ำ", ); } - + const chk_kpiSpecial = await this.kpiSpecialRepository.findOne({ + where: { + including: String(requestBody.including), + includingName: String(requestBody.includingName) + }, + }); + if(!chk_kpiSpecial){ + const kpiSpecial = Object.assign(new KpiSpecial(), requestBody); + if (!kpiSpecial) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); + } + kpiSpecial.createdUserId = request.user.sub; + kpiSpecial.createdFullName = request.user.name; + kpiSpecial.lastUpdateUserId = request.user.sub; + kpiSpecial.lastUpdateFullName = request.user.name; + await this.kpiSpecialRepository.save(kpiSpecial); + } kpiUserSpecial.lastUpdateUserId = request.user.sub; kpiUserSpecial.lastUpdateFullName = request.user.name; kpiUserSpecial.documentInfoEvidence = request.user.documentInfoEvidence; diff --git a/src/entities/kpiUserSpecial.ts b/src/entities/kpiUserSpecial.ts index 148854a..83a7d0e 100644 --- a/src/entities/kpiUserSpecial.ts +++ b/src/entities/kpiUserSpecial.ts @@ -193,6 +193,10 @@ export class CreateKpiUserSpecial { startDate: Date; @Column() endDate: Date; + @Column() + period: string; + @Column() + year: string; } export class UpdateKpiUserSpecial { @@ -228,6 +232,10 @@ export class UpdateKpiUserSpecial { startDate: Date; @Column() endDate: Date; + @Column() + period: string; + @Column() + year: string; } export class KpiUserSpecialDataPoint { From c630b9743f12960035824f240f4405f30d52c657 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Wed, 8 May 2024 16:22:25 +0700 Subject: [PATCH 6/6] fix test --- src/controllers/KpiRoleController.ts | 4 ++-- src/controllers/KpiUserPlannedController.ts | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/controllers/KpiRoleController.ts b/src/controllers/KpiRoleController.ts index 8fe2922..afa3b52 100644 --- a/src/controllers/KpiRoleController.ts +++ b/src/controllers/KpiRoleController.ts @@ -419,7 +419,7 @@ export class kpiRoleController extends Controller { ? "kpiRole.year LIKE :year" : "1=1", { - year: `%${requestBody.year}%`, + year: requestBody.year, }, ) .andWhere( @@ -427,7 +427,7 @@ export class kpiRoleController extends Controller { ? "kpiRole.period LIKE :period" : "1=1", { - period: `%${requestBody.period}%`, + period: requestBody.period, }, ) .andWhere(requestBody.position != undefined ? "kpiRole.position LIKE :position" : "1=1", { diff --git a/src/controllers/KpiUserPlannedController.ts b/src/controllers/KpiUserPlannedController.ts index b1695a8..6bbfc67 100644 --- a/src/controllers/KpiUserPlannedController.ts +++ b/src/controllers/KpiUserPlannedController.ts @@ -91,14 +91,14 @@ export class KpiUserPlannedController extends Controller { kpiUserPlanned.createdFullName = request.user.name; kpiUserPlanned.lastUpdateUserId = request.user.sub; kpiUserPlanned.lastUpdateFullName = request.user.name; - kpiUserPlanned.documentInfoEvidence = request.user.documentInfoEvidence; - kpiUserPlanned.startDate = request.user.startDate; - kpiUserPlanned.endDate = request.user.endDate; - kpiUserPlanned.achievement1 = request.user.achievement1; - kpiUserPlanned.achievement2 = request.user.achievement2; - kpiUserPlanned.achievement3 = request.user.achievement3; - kpiUserPlanned.achievement4 = request.user.achievement4; - kpiUserPlanned.achievement5 = request.user.achievement5; + // kpiUserPlanned.documentInfoEvidence = request.user.documentInfoEvidence; + // kpiUserPlanned.startDate = request.user.startDate; + // kpiUserPlanned.endDate = request.user.endDate; + // kpiUserPlanned.achievement1 = request.user.achievement1; + // kpiUserPlanned.achievement2 = request.user.achievement2; + // kpiUserPlanned.achievement3 = request.user.achievement3; + // kpiUserPlanned.achievement4 = request.user.achievement4; + // kpiUserPlanned.achievement5 = request.user.achievement5; await this.kpiUserPlannedRepository.save(kpiUserPlanned); return new HttpSuccess(kpiUserPlanned.id); }