From b48df265059c880033b92139e52c640cb120e844 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Fri, 6 Sep 2024 14:38:37 +0700 Subject: [PATCH] updated api after test connect frontend --- src/controllers/AssignController.ts | 24 +++- src/controllers/EvaluateChairmanController.ts | 118 ++++++++++++++--- src/controllers/EvaluateController.ts | 24 ++-- src/controllers/EvaluateRecordController.ts | 8 +- src/controllers/EvaluateResultController.ts | 119 +++++++++++++++--- src/entities/Assign.ts | 6 + src/entities/AssignLaw.ts | 10 +- src/entities/EvaluateResult.ts | 10 +- src/entities/Law.ts | 14 +-- .../1725594553970-update-assigntb.ts | 15 +++ 10 files changed, 275 insertions(+), 73 deletions(-) create mode 100644 src/migration/1725594553970-update-assigntb.ts diff --git a/src/controllers/AssignController.ts b/src/controllers/AssignController.ts index ec9f9c4..d39c738 100644 --- a/src/controllers/AssignController.ts +++ b/src/controllers/AssignController.ts @@ -451,6 +451,7 @@ export class AssignController extends Controller { lists.map(async (item) => { const director = await this.assignDirectorRepository.find({ where: { assign_id: item.id }, + order: { ordering: "ASC" }, }); let mentors = ""; @@ -500,6 +501,7 @@ export class AssignController extends Controller { "round_no", "date_start", "date_finish", + "other_desc", "other4_desc", "other5_no1_desc", "experimenter_dated", @@ -575,12 +577,21 @@ export class AssignController extends Controller { where: { active: 1 }, }); - const laws = await lawData.map((x) => ({ - id: x.id, - selected: x.assignLaw ? 1 : 0, - description: x.description, - status_select: x.status_select, - })); + const laws = await Promise.all( + lawData.map(async (x) => { + const assignLaw = await this.assignLawRepository.countBy({ + assign_id: assign_id, + law_id: x.id, + }); + + return { + id: x.id, + selected: assignLaw > 0 ? 1 : 0, + description: x.description, + status_select: x.status_select, + }; + }), + ); const skillsData = await this.assignSkillRepository.find({ relations: ["skill"], @@ -640,6 +651,7 @@ export class AssignController extends Controller { const director = await this.assignDirectorRepository.find({ where: { assign_id }, + order: { ordering: "ASC" }, }); let mentors = []; diff --git a/src/controllers/EvaluateChairmanController.ts b/src/controllers/EvaluateChairmanController.ts index 24ef5fc..97a12fe 100644 --- a/src/controllers/EvaluateChairmanController.ts +++ b/src/controllers/EvaluateChairmanController.ts @@ -90,29 +90,70 @@ export class EvaluateChairmanController extends Controller { const directorData = await this.assignDirectorRepository.find({ where: { assign_id }, + order: { ordering: "ASC" }, }); if (!directorData) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"); } - let mentors = ""; + let mentors = []; const mentorList = await directorData.filter((x) => x.role == "mentor"); if (mentorList.length > 0) { for (let index = 0; index < mentorList.length; index++) { const e = await mentorList[index]; - mentors += e.fullname; - if (index < mentorList.length - 1) { - mentors += ", "; - } + + mentors.push({ + personal_id: e.personal_id, + dated: e.dated, + name: e.fullname, + label: + e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""), + position: e.position, + posType: e.posType, + posLevel: e.posLevel, + }); } } const commanderData = await (directorData.find((x) => x.role == "commander") ?? null); - const commander = commanderData ? commanderData.fullname : null; + + const commander = + commanderData != null + ? { + personal_id: commanderData.personal_id, + dated: commanderData.dated, + name: commanderData.fullname, + label: + commanderData.fullname + + " " + + (commanderData.position + ? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})` + : ""), + position: commanderData.position, + posType: commanderData.posType, + posLevel: commanderData.posLevel, + } + : null; const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null); - const chairman = chairmanData ? chairmanData.fullname : null; + const chairman = + chairmanData != null + ? { + personal_id: chairmanData.personal_id, + dated: chairmanData.dated, + name: chairmanData.fullname, + label: + chairmanData.fullname + + " " + + (chairmanData.position + ? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})` + : ""), + position: chairmanData.position, + posType: chairmanData.posType, + posLevel: chairmanData.posLevel, + } + : null; return new HttpSuccess({ person: profile ? profile : null, @@ -156,12 +197,18 @@ export class EvaluateChairmanController extends Controller { }, }); } else { - evaluate = await this.evaluateChairmanRepository.findOne({ + evaluate = await this.evaluateChairmanRepository.find({ where: { director_id, assign_id, }, }); + + if (evaluate) + evaluate = await evaluate.map((element: EvaluateChairman) => ({ + ...element, + no: Number(element.no), + })); } if (!evaluate) { @@ -196,29 +243,70 @@ export class EvaluateChairmanController extends Controller { const directorData = await this.assignDirectorRepository.find({ where: { assign_id }, + order: { ordering: "ASC" }, }); if (!directorData) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"); } - let mentors = ""; + let mentors = []; const mentorList = await directorData.filter((x) => x.role == "mentor"); if (mentorList.length > 0) { for (let index = 0; index < mentorList.length; index++) { const e = await mentorList[index]; - mentors += e.fullname; - if (index < mentorList.length - 1) { - mentors += ", "; - } + + mentors.push({ + personal_id: e.personal_id, + dated: e.dated, + name: e.fullname, + label: + e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""), + position: e.position, + posType: e.posType, + posLevel: e.posLevel, + }); } } const commanderData = await (directorData.find((x) => x.role == "commander") ?? null); - const commander = commanderData ? commanderData.fullname : null; + + const commander = + commanderData != null + ? { + personal_id: commanderData.personal_id, + dated: commanderData.dated, + name: commanderData.fullname, + label: + commanderData.fullname + + " " + + (commanderData.position + ? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})` + : ""), + position: commanderData.position, + posType: commanderData.posType, + posLevel: commanderData.posLevel, + } + : null; const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null); - const chairman = chairmanData ? chairmanData.fullname : null; + const chairman = + chairmanData != null + ? { + personal_id: chairmanData.personal_id, + dated: chairmanData.dated, + name: chairmanData.fullname, + label: + chairmanData.fullname + + " " + + (chairmanData.position + ? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})` + : ""), + position: chairmanData.position, + posType: chairmanData.posType, + posLevel: chairmanData.posLevel, + } + : null; return new HttpSuccess({ experimentee: experimentee, diff --git a/src/controllers/EvaluateController.ts b/src/controllers/EvaluateController.ts index 8e89761..d602a5d 100644 --- a/src/controllers/EvaluateController.ts +++ b/src/controllers/EvaluateController.ts @@ -88,16 +88,18 @@ export class EvaluateController extends Controller { ? assign.date_start : findEndDate(evaluate_amount * 3, assign.date_start); - const commanderData = await this.assignDirectorRepository.find({ + const commanderData = await this.assignDirectorRepository.findOne({ select: ["personal_id", "dated", "fullname", "position", "posType", "posLevel"], where: { personal_id: director_id }, }); - - const commander = await commanderData.map((element) => ({ - ...element, - name: element.fullname, - label: `${element.fullname} (${element.position}, ${element.posType}: ${element.posLevel})`, - })); + if (!commanderData) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้บังคับบัญชา"); + } + const commander = await { + ...commanderData, + name: commanderData.fullname, + label: `${commanderData.fullname} (${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})`, + }; return new HttpSuccess({ person: profile, @@ -139,12 +141,18 @@ export class EvaluateController extends Controller { }, }); } else { - evaluate = await this.evaluateCommanderRepository.findOne({ + evaluate = await this.evaluateCommanderRepository.find({ where: { director_id, assign_id, }, }); + + if (evaluate) + evaluate = await evaluate.map((element: EvaluateCommander) => ({ + ...element, + no: Number(element.no), + })); } if (!evaluate) { diff --git a/src/controllers/EvaluateRecordController.ts b/src/controllers/EvaluateRecordController.ts index fa45773..15efc0c 100644 --- a/src/controllers/EvaluateRecordController.ts +++ b/src/controllers/EvaluateRecordController.ts @@ -211,7 +211,7 @@ export class EvaluateRecordController extends Controller { id: evaluate.id, director_id: evaluate.director_id, assign_id, - no: evaluate.no, + no: Number(evaluate.no), date_start: evaluate.date_start, date_finish: evaluate.date_finish, assessor_dated: evaluate.assessor_dated, @@ -288,7 +288,7 @@ export class EvaluateRecordController extends Controller { id: element.id, director_id: element.director_id, assign_id, - no: element.no, + no: Number(element.no), date_start: element.date_start, date_finish: element.date_finish, assessor_dated: element.assessor_dated, @@ -755,7 +755,7 @@ export class EvaluateRecordController extends Controller { id: evaluate.id, director_id: evaluate.director_id, assign_id, - no: evaluate.no, + no: Number(evaluate.no), date_start: evaluate.date_start, date_finish: evaluate.date_finish, assessor_dated: evaluate.assessor_dated, @@ -832,7 +832,7 @@ export class EvaluateRecordController extends Controller { id: element.id, director_id: element.director_id, assign_id, - no: element.no, + no: Number(element.no), date_start: element.date_start, date_finish: element.date_finish, assessor_dated: element.assessor_dated, diff --git a/src/controllers/EvaluateResultController.ts b/src/controllers/EvaluateResultController.ts index dab138b..de393b3 100644 --- a/src/controllers/EvaluateResultController.ts +++ b/src/controllers/EvaluateResultController.ts @@ -68,29 +68,70 @@ export class EvaluateResultController extends Controller { const directorData = await this.assignDirectorRepository.find({ where: { assign_id }, + order: { ordering: "ASC" }, }); if (!directorData) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"); } - let mentors = ""; + let mentors = []; const mentorList = await directorData.filter((x) => x.role == "mentor"); if (mentorList.length > 0) { for (let index = 0; index < mentorList.length; index++) { const e = await mentorList[index]; - mentors += e.fullname; - if (index < mentorList.length - 1) { - mentors += ", "; - } + + mentors.push({ + personal_id: e.personal_id, + dated: e.dated, + name: e.fullname, + label: + e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""), + position: e.position, + posType: e.posType, + posLevel: e.posLevel, + }); } } const commanderData = await (directorData.find((x) => x.role == "commander") ?? null); - const commander = commanderData ? commanderData.fullname : null; + + const commander = + commanderData != null + ? { + personal_id: commanderData.personal_id, + dated: commanderData.dated, + name: commanderData.fullname, + label: + commanderData.fullname + + " " + + (commanderData.position + ? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})` + : ""), + position: commanderData.position, + posType: commanderData.posType, + posLevel: commanderData.posLevel, + } + : null; const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null); - const chairman = chairmanData ? chairmanData.fullname : null; + const chairman = + chairmanData != null + ? { + personal_id: chairmanData.personal_id, + dated: chairmanData.dated, + name: chairmanData.fullname, + label: + chairmanData.fullname + + " " + + (chairmanData.position + ? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})` + : ""), + position: chairmanData.position, + posType: chairmanData.posType, + posLevel: chairmanData.posLevel, + } + : null; const resultData = await this.evaluateChairmanRepository.findOne({ select: [ @@ -152,7 +193,7 @@ export class EvaluateResultController extends Controller { } const director_id = director.personal_id; - const evaluate = await this.evaluateChairmanRepository.findOne({ + const evaluate = await this.evaluateResultRepository.findOne({ where: { director_id, assign_id, @@ -160,7 +201,7 @@ export class EvaluateResultController extends Controller { }); if (!evaluate) { - throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลแบบประเมิน"); + return new HttpSuccess(null); } const assign = await this.assignRepository.findOne({ @@ -191,29 +232,70 @@ export class EvaluateResultController extends Controller { const directorData = await this.assignDirectorRepository.find({ where: { assign_id }, + order: { ordering: "ASC" }, }); if (!directorData) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลผู้ดูแล ผู้บังคับบัญชาและประธาน"); } - let mentors = ""; + let mentors = []; const mentorList = await directorData.filter((x) => x.role == "mentor"); if (mentorList.length > 0) { for (let index = 0; index < mentorList.length; index++) { const e = await mentorList[index]; - mentors += e.fullname; - if (index < mentorList.length - 1) { - mentors += ", "; - } + + mentors.push({ + personal_id: e.personal_id, + dated: e.dated, + name: e.fullname, + label: + e.fullname + " " + (e.position ? `(${e.position}, ${e.posType}: ${e.posLevel})` : ""), + position: e.position, + posType: e.posType, + posLevel: e.posLevel, + }); } } const commanderData = await (directorData.find((x) => x.role == "commander") ?? null); - const commander = commanderData ? commanderData.fullname : null; + + const commander = + commanderData != null + ? { + personal_id: commanderData.personal_id, + dated: commanderData.dated, + name: commanderData.fullname, + label: + commanderData.fullname + + " " + + (commanderData.position + ? `(${commanderData.position}, ${commanderData.posType}: ${commanderData.posLevel})` + : ""), + position: commanderData.position, + posType: commanderData.posType, + posLevel: commanderData.posLevel, + } + : null; const chairmanData = await (directorData.find((x) => x.role == "chairman") ?? null); - const chairman = chairmanData ? chairmanData.fullname : null; + const chairman = + chairmanData != null + ? { + personal_id: chairmanData.personal_id, + dated: chairmanData.dated, + name: chairmanData.fullname, + label: + chairmanData.fullname + + " " + + (chairmanData.position + ? `(${chairmanData.position}, ${chairmanData.posType}: ${chairmanData.posLevel})` + : ""), + position: chairmanData.position, + posType: chairmanData.posType, + posLevel: chairmanData.posLevel, + } + : null; return new HttpSuccess({ commander, @@ -342,7 +424,10 @@ export class EvaluateResultController extends Controller { evaluate.date_finish = requestBody.date_finish; evaluate.develop_complete = requestBody.develop_complete; evaluate.pass_result = requestBody.pass_result; - evaluate.expand_month = requestBody.pass_result == 3 ? requestBody.expand_month : 0; + evaluate.expand_month = + requestBody.pass_result && requestBody.pass_result == 3 + ? Number(requestBody.expand_month) + : 0; evaluate.reson = requestBody.reson; evaluate.chairman_dated = requestBody.chairman_dated; diff --git a/src/entities/Assign.ts b/src/entities/Assign.ts index 602a022..ce84ab2 100644 --- a/src/entities/Assign.ts +++ b/src/entities/Assign.ts @@ -80,6 +80,12 @@ export class Assign extends EntityBase { }) active: number; + @Column({ + nullable: true, + comment: "กฎหมายอื่นๆ", + }) + other_desc!: string; + @ManyToOne(() => Personal, (person: Personal) => person.personal_id) @JoinColumn({ name: "personal_id" }) profile: Personal; diff --git a/src/entities/AssignLaw.ts b/src/entities/AssignLaw.ts index e999995..245aa8e 100644 --- a/src/entities/AssignLaw.ts +++ b/src/entities/AssignLaw.ts @@ -1,4 +1,4 @@ -import { Entity, Column, ManyToOne, JoinColumn, OneToMany } from "typeorm"; +import { Entity, Column, ManyToOne, JoinColumn, OneToMany, OneToOne } from "typeorm"; import { EntityBase } from "./base/Base"; import { Assign } from "./Assign"; import { Law } from "./Law"; @@ -27,13 +27,13 @@ export class AssignLaw extends EntityBase { }) ordering: number; - @ManyToOne(() => Assign, (assign: Assign) => assign.laws) + @ManyToOne(() => Assign, (assign: Assign) => assign.id) @JoinColumn({ name: "assign_id" }) assign: Assign; - @OneToMany(() => Law, (law: Law) => law.assignLaw) - @JoinColumn({ name: "law_id" }) - law: Law; + // @ManyToOne(() => Law, (law: Law) => law.assignLaw) + // @JoinColumn({ name: "law_id" }) + // law: Law; } export class CreateAssignLaw { diff --git a/src/entities/EvaluateResult.ts b/src/entities/EvaluateResult.ts index 2e972b0..b81dc42 100644 --- a/src/entities/EvaluateResult.ts +++ b/src/entities/EvaluateResult.ts @@ -1,10 +1,4 @@ -import { - Entity, - Column, - ManyToOne, - JoinColumn, - PrimaryGeneratedColumn, -} from "typeorm"; +import { Entity, Column, ManyToOne, JoinColumn, PrimaryGeneratedColumn } from "typeorm"; import { EntityBase } from "./base/Base"; import { Assign } from "./Assign"; @@ -103,7 +97,7 @@ export class CreateEvaluateResult { date_finish: Date; develop_complete: number; pass_result: number; - expand_month: number; + expand_month?: number; reson: string; chairman_dated: Date | null; director1_dated: Date | null; diff --git a/src/entities/Law.ts b/src/entities/Law.ts index 6462aef..3ef961a 100644 --- a/src/entities/Law.ts +++ b/src/entities/Law.ts @@ -1,10 +1,4 @@ -import { - Entity, - Column, - PrimaryGeneratedColumn, - OneToMany, - JoinColumn, -} from "typeorm"; +import { Entity, Column, PrimaryGeneratedColumn, OneToMany, JoinColumn, OneToOne } from "typeorm"; import { EntityBase } from "./base/Base"; import { AssignLaw } from "./AssignLaw"; @@ -41,7 +35,7 @@ export class Law extends EntityBase { }) active: number; - @OneToMany(() => AssignLaw, (assignLaw: AssignLaw) => assignLaw.law_id) - @JoinColumn({ name: "id" }) - assignLaw: AssignLaw[]; + // @OneToMany(() => AssignLaw, (l: AssignLaw) => l.law_id) + // @JoinColumn({ name: "id" }) + // assignLaw: AssignLaw[]; } diff --git a/src/migration/1725594553970-update-assigntb.ts b/src/migration/1725594553970-update-assigntb.ts new file mode 100644 index 0000000..bf5f767 --- /dev/null +++ b/src/migration/1725594553970-update-assigntb.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateAssigntb1725594553970 implements MigrationInterface { + name = "UpdateAssigntb1725594553970"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE \`assign\` ADD \`other_desc\` varchar(255) NULL COMMENT 'กฎหมายอื่นๆ'`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`assign\` DROP COLUMN \`other_desc\``); + } +}