diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index a7d3a6c..f6f44ef 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -25,6 +25,8 @@ import { UpdateDevelopment3, UpdateDevelopment4, UpdateDevelopment5, + UpdateDevelopment7, + UpdateDevelopment8, } from "../entities/Development"; import { ActualPeople, CreateActualPeople } from "../entities/ActualPeople"; import { CreatePlannedPeople, PlannedPeople } from "../entities/PlannedPeople"; @@ -1200,6 +1202,31 @@ export class DevelopmentController extends Controller { }), ); } + //move from tab5 + await this.developmentAddresssRepository.remove(development.developmentAddresss, { + data: request, + }); + const before = structuredClone(development); + await Promise.all( + requestBody.developmentAddresss.map(async (x) => { + const data = Object.assign(new DevelopmentAddress(), x); + const chkProvince = await this.provinceRepository.findOne({ + where: { + id: x.provinceId, + }, + }); + if (chkProvince == null) return; + data.developmentId = development.id; + data.createdUserId = request.user.sub; + data.createdFullName = request.user.name; + data.lastUpdateUserId = request.user.sub; + data.lastUpdateFullName = request.user.name; + await this.developmentAddresssRepository.save(data, { data: request }); + setLogDataDiff(request, { before, after: development }); + }), + ); + Object.assign(development, { ...requestBody, developmentAddresss: [] }); + //End return new HttpSuccess(development.id); } @@ -1216,11 +1243,6 @@ export class DevelopmentController extends Controller { @Body() requestBody: UpdateDevelopment4, @Request() request: RequestWithUser, ) { - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Get Development.", - // }); const development = await this.developmentRepository.findOne({ where: { id }, }); @@ -1231,11 +1253,6 @@ export class DevelopmentController extends Controller { Object.assign(development, requestBody); development.lastUpdateUserId = request.user.sub; development.lastUpdateFullName = request.user.name; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store Development.", - // }); await this.developmentRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); return new HttpSuccess(development.id); @@ -1254,11 +1271,6 @@ export class DevelopmentController extends Controller { @Body() requestBody: CreateDevelopmentEvaluation, @Request() request: RequestWithUser, ) { - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Get Development.", - // }); const development = await this.developmentRepository.findOne({ where: { id }, }); @@ -1272,11 +1284,6 @@ export class DevelopmentController extends Controller { data.lastUpdateUserId = request.user.sub; data.lastUpdateFullName = request.user.name; data.developmentId = development.id; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentEvaluation.", - // }); await this.developmentEvaluationRepository.save(data, { data: request }); setLogDataDiff(request, { before, after: development }); return new HttpSuccess(data.id); @@ -1370,49 +1377,64 @@ export class DevelopmentController extends Controller { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลจังหวัดข้อมูลด้านวิชาการ"); } } - Object.assign(development, { ...requestBody, developmentAddresss: [] }); development.lastUpdateUserId = request.user.sub; development.lastUpdateFullName = request.user.name; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store Development.", - // }); await this.developmentRepository.save(development, { data: request }); - // addLogSequence(request, { - // action: "remove", - // status: "success", - // description: "Remove DevelopmentAddresss.", - // }); - await this.developmentAddresssRepository.remove(development.developmentAddresss, { - data: request, - }); - const before = structuredClone(development); - await Promise.all( - requestBody.developmentAddresss.map(async (x) => { - const data = Object.assign(new DevelopmentAddress(), x); - const chkProvince = await this.provinceRepository.findOne({ - where: { - id: x.provinceId, - }, - }); - if (chkProvince == null) return; - data.developmentId = development.id; - data.createdUserId = request.user.sub; - data.createdFullName = request.user.name; - data.lastUpdateUserId = request.user.sub; - data.lastUpdateFullName = request.user.name; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentAddresss.", - // }); - await this.developmentAddresssRepository.save(data, { data: request }); - setLogDataDiff(request, { before, after: development }); - }), - ); + return new HttpSuccess(development.id); + } + /** + * API แก้ไขโครงการ/หลักสูตรการฝึกอบรม tab7 + * + * @summary DEV_00 - แก้ไขโครงการ/หลักสูตรการฝึกอบรม tab7 # + * + * @param {string} id Id โครงการ + */ + @Put("tab7/{id}") + async UpdateDevelopmentTab7( + @Path() id: string, + @Body() requestBody: UpdateDevelopment7, + @Request() request: RequestWithUser, + ) { + const development = await this.developmentRepository.findOne({ + where: { id }, + relations: { developmentAddresss: true }, + }); + if (!development) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้"); + } + Object.assign(development, { ...requestBody }); + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + await this.developmentRepository.save(development, { data: request }); + return new HttpSuccess(development.id); + } + + /** + * API แก้ไขโครงการ/หลักสูตรการฝึกอบรม tab8 + * + * @summary DEV_00 - แก้ไขโครงการ/หลักสูตรการฝึกอบรม tab8 # + * + * @param {string} id Id โครงการ + */ + @Put("tab8/{id}") + async UpdateDevelopmentTab8( + @Path() id: string, + @Body() requestBody: UpdateDevelopment8, + @Request() request: RequestWithUser, + ) { + const development = await this.developmentRepository.findOne({ + where: { id }, + relations: { developmentAddresss: true }, + }); + if (!development) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้"); + } + Object.assign(development, { ...requestBody }); + development.lastUpdateUserId = request.user.sub; + development.lastUpdateFullName = request.user.name; + await this.developmentRepository.save(development, { data: request }); return new HttpSuccess(development.id); } diff --git a/src/entities/Development.ts b/src/entities/Development.ts index f65b06e..e5bce76 100644 --- a/src/entities/Development.ts +++ b/src/entities/Development.ts @@ -652,6 +652,38 @@ export class Development extends EntityBase { @ManyToOne(() => StrategyChild5, (strategyChild5) => strategyChild5.developmentActuals) @JoinColumn({ name: "strategyChild5ActualId" }) strategyChild5Actual: StrategyChild5; + + @Column({ + type: "longtext", + nullable: true, + comment: "การติดตามความก้าวหน้า", + default: null, + }) + progressTracking: string; + + @Column({ + type: "longtext", + nullable: true, + comment: "การประเมินผลโครงการ", + default: null, + }) + projectEvaluation: string; + + @Column({ + type: "longtext", + nullable: true, + comment: "ปัญหาอุปสรรค", + default: null, + }) + obstacle: string; + + @Column({ + type: "longtext", + nullable: true, + comment: "ข้อเสนอแนะ", + default: null, + }) + suggestion: string; } export class CreateDevelopment { @Column() @@ -695,6 +727,16 @@ export class UpdateDevelopment2_2 { plannedPeoples: CreatePlannedPeople[]; } export class UpdateDevelopment3 { + //move from tab5 + @Column() + dateStart: Date | null; + @Column() + dateEnd: Date | null; + @Column() + totalDate: number | null; + //end + @Column() + developmentAddresss: CreateDevelopmentAddress[]; @Column() developmentProjectTypes?: string[]; @Column() @@ -749,6 +791,22 @@ export class UpdateDevelopment3 { export class UpdateDevelopment4 { // @Column() // developmentEvaluations: CreateDevelopmentEvaluation[]; + //new + @Column() + progressTracking: string | null; + @Column() + projectEvaluation: string | null; + //end + +} +export class UpdateDevelopment5 { + //new + @Column() + obstacle: string | null; + @Column() + suggestion: string | null; + //end + //move from tab4 @Column() project: string | null; @Column() @@ -761,16 +819,21 @@ export class UpdateDevelopment4 { isBudget: boolean; @Column() isOutBudget: boolean; + //end + @Column() + budgetPay: Double | null; + @Column() + expect: string | null; + @Column() + topicAcademic: string | null; + @Column() + addressAcademic: string | null; + @Column() + provinceActualId: string | null; } -export class UpdateDevelopment5 { - @Column() - dateStart: Date | null; - @Column() - dateEnd: Date | null; - @Column() - totalDate: number | null; - @Column() - developmentAddresss: CreateDevelopmentAddress[]; + +export class UpdateDevelopment7 { +//move from tab5 @Column() budget: string | null; @Column() @@ -781,8 +844,10 @@ export class UpdateDevelopment5 { receive: Double | null; @Column() approved: Double | null; - @Column() - budgetPay: Double | null; +//end +} +export class UpdateDevelopment8 { + //move from tab5 @Column() issues: string | null; @Column() @@ -793,12 +858,5 @@ export class UpdateDevelopment5 { riskLevel: string | null; @Column() riskManagement: string | null; - @Column() - expect: string | null; - @Column() - topicAcademic: string | null; - @Column() - addressAcademic: string | null; - @Column() - provinceActualId: string | null; + //end } diff --git a/src/migration/1723013963408-update_table_migration08072024.ts b/src/migration/1723013963408-update_table_migration08072024.ts new file mode 100644 index 0000000..18d23e8 --- /dev/null +++ b/src/migration/1723013963408-update_table_migration08072024.ts @@ -0,0 +1,20 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateTableMigration080720241723013963408 implements MigrationInterface { + name = 'UpdateTableMigration080720241723013963408' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`development\` ADD \`progressTracking\` longtext NULL COMMENT 'การติดตามความก้าวหน้า'`); + await queryRunner.query(`ALTER TABLE \`development\` ADD \`projectEvaluation\` longtext NULL COMMENT 'การประเมินผลโครงการ'`); + await queryRunner.query(`ALTER TABLE \`development\` ADD \`obstacle\` longtext NULL COMMENT 'ปัญหาอุปสรรค'`); + await queryRunner.query(`ALTER TABLE \`development\` ADD \`suggestion\` longtext NULL COMMENT 'ข้อเสนอแนะ'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`development\` DROP COLUMN \`suggestion\``); + await queryRunner.query(`ALTER TABLE \`development\` DROP COLUMN \`obstacle\``); + await queryRunner.query(`ALTER TABLE \`development\` DROP COLUMN \`projectEvaluation\``); + await queryRunner.query(`ALTER TABLE \`development\` DROP COLUMN \`progressTracking\``); + } + +}