diff --git a/src/controllers/CommandTypeController.ts b/src/controllers/CommandTypeController.ts index ea71485e..7c647dc8 100644 --- a/src/controllers/CommandTypeController.ts +++ b/src/controllers/CommandTypeController.ts @@ -12,6 +12,7 @@ import { SuccessResponse, Response, Get, + Query, } from "tsoa"; import { AppDataSource } from "../database/data-source"; import HttpSuccess from "../interfaces/http-success"; @@ -40,11 +41,15 @@ export class CommandTypeController extends Controller { @Get("list") async Get() { const _commandType = await this.commandTypeRepository.find({ + where: { isActive: true }, select: [ "id", "name", "type", "code", + "detailHeader", + "detailBody", + "detailFooter", "createdAt", "lastUpdatedAt", "createdFullName", @@ -55,6 +60,34 @@ export class CommandTypeController extends Controller { return new HttpSuccess(_commandType); } + /** + * API list รายการประเภทคำสั่ง + * + * @summary ORG_056 - CRUD ประเภทคำสั่ง (ADMIN) #61 + * + */ + @Get("admin") + async GetAdmin( + @Query("page") page: number = 1, + @Query("pageSize") pageSize: number = 10, + @Query() isActive?: boolean | null, + ) { + const [commandTypes, total] = await this.commandTypeRepository + .createQueryBuilder("commandType") + .andWhere( + isActive != null && isActive != undefined ? "commandType.isActive = :isActive" : "1=1", + { + isActive: + isActive == null || isActive == undefined ? null : `${isActive == true ? 1 : 0}`, + }, + ) + .orderBy("commandType.name", "ASC") + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); + return new HttpSuccess({ commandTypes, total }); + } + /** * API รายละเอียดรายการประเภทคำสั่ง * @@ -66,7 +99,16 @@ export class CommandTypeController extends Controller { async GetById(@Path() id: string) { const _commandType = await this.commandTypeRepository.findOne({ where: { id }, - select: ["id", "name", "type", "code"], + select: [ + "id", + "name", + "type", + "code", + "isActive", + "detailHeader", + "detailBody", + "detailFooter", + ], }); if (!_commandType) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); @@ -106,7 +148,7 @@ export class CommandTypeController extends Controller { _commandType.createdAt = new Date(); _commandType.lastUpdatedAt = new Date(); await this.commandTypeRepository.save(_commandType); - return new HttpSuccess(); + return new HttpSuccess(_commandType.id); } /** @@ -139,7 +181,34 @@ export class CommandTypeController extends Controller { _commandType.lastUpdatedAt = new Date(); this.commandTypeRepository.merge(_commandType, requestBody); await this.commandTypeRepository.save(_commandType); - return new HttpSuccess(); + return new HttpSuccess(_commandType.id); + } + + /** + * API แก้ไขรายการ body ประเภทคำสั่ง + * + * @summary ORG_056 - CRUD ประเภทคำสั่ง (ADMIN) #61 + * + * @param {string} id Id ประเภทคำสั่ง + */ + @Put("text/{id}") + async PutText( + @Path() id: string, + @Body() + requestBody: { detailHeader: string; detailBody: string; detailFooter: string }, + @Request() request: { user: Record }, + ) { + const _commandType = await this.commandTypeRepository.findOne({ where: { id: id } }); + if (!_commandType) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประเภทคำสั่งชื่อนี้"); + } + + _commandType.lastUpdateUserId = request.user.sub; + _commandType.lastUpdateFullName = request.user.name; + _commandType.lastUpdatedAt = new Date(); + this.commandTypeRepository.merge(_commandType, requestBody); + await this.commandTypeRepository.save(_commandType); + return new HttpSuccess(_commandType.id); } /** diff --git a/src/entities/CommandType.ts b/src/entities/CommandType.ts index ca734f50..a254c01d 100644 --- a/src/entities/CommandType.ts +++ b/src/entities/CommandType.ts @@ -28,6 +28,36 @@ export class CommandType extends EntityBase { }) code: string; + @Column({ + nullable: true, + comment: "เนื้อหาคำสั่งส่วนต้น", + type: "text", + default: null, + }) + detailHeader: string; + + @Column({ + nullable: true, + comment: "เนื้อหาคำสั่งส่วนกลาง", + type: "text", + default: null, + }) + detailBody: string; + + @Column({ + nullable: true, + comment: "เนื้อหาคำสั่งส่วนท้าย", + type: "text", + default: null, + }) + detailFooter: string; + + @Column({ + comment: "สถานะการใช้งาน", + default: true, + }) + isActive: boolean; + @OneToMany(() => Command, (command) => command.commandType) commands: Command[]; } @@ -40,7 +70,7 @@ export class CreateCommandType { type: string; @Column() - code: string; + isActive: boolean; } export type UpdateCommandType = Partial; diff --git a/src/migration/1726052018309-add_commandType.ts b/src/migration/1726052018309-add_commandType.ts new file mode 100644 index 00000000..bb841d38 --- /dev/null +++ b/src/migration/1726052018309-add_commandType.ts @@ -0,0 +1,42 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddCommandType1726052018309 implements MigrationInterface { + name = 'AddCommandType1726052018309' + + public async up(queryRunner: QueryRunner): Promise { + // await queryRunner.query(`CREATE TABLE \`subDistrictImport\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`PROVINCE_CODE\` varchar(255) NULL, \`AMPHUR_CODE\` varchar(255) NULL, \`DISTRICT_CODE\` varchar(255) NULL, \`DISTRICT_NAME\` varchar(255) NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`provinceImport\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`PROVINCE_CODE\` varchar(255) NULL, \`PROVINCE_NAME\` varchar(255) NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_POSITION_OFFICER\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`MP_POS_DATE\` text NULL, \`SALARY\` text NULL, \`MP_COMMAND_NUM\` text NULL, \`POS_NUM_NAME\` text NULL, \`POS_NUM_CODE\` text NULL, \`FLAG_TO_NAME\` text NULL, \`WORK_LINE_NAME\` text NULL, \`SPECIALIST_NAME\` text NULL, \`ADMIN_NAME\` text NULL, \`REMARK\` text NULL, \`ORDER_MOVE_POSITION\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_PERSONAL_OFFICER_FAMILY\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`FATHER_RANK_NAME\` text NULL, \`FATHER_FNAME\` text NULL, \`FATHER_LNAME\` text NULL, \`MOTHER_RANK_NAME\` text NULL, \`MOTHER_FNAME\` text NULL, \`MOTHER_LNAME\` text NULL, \`SPOUSE_RANK_NAME\` text NULL, \`SPOUSE_FNAME\` text NULL, \`SPOUSE_LNAME\` text NULL, \`SPOUSE_ID\` text NULL, \`MARRIAGE_STATE\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_PERSONAL_OFFICER_ADDRESS\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`PROVINCE_CODE\` text NULL, \`AMPHUR_CODE\` text NULL, \`DISTRICT_CODE\` text NULL, \`CONTACT_PROVINCE_CODE\` text NULL, \`CONTACT_AMPHUR_CODE\` text NULL, \`CONTACT_DISTRICT_CODE\` text NULL, \`H_NUMBER\` text NULL, \`ZIPCODE\` text NULL, \`CONTACT_H_NUMBER\` text NULL, \`CONTACT_ZIPCODE\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_PERSONAL_EMP_FAMILY\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`FATHER_RANK_NAME\` text NULL, \`FATHER_FNAME\` text NULL, \`FATHER_LNAME\` text NULL, \`MOTHER_RANK_NAME\` text NULL, \`MOTHER_FNAME\` text NULL, \`MOTHER_LNAME\` text NULL, \`SPOUSE_RANK_NAME\` text NULL, \`SPOUSE_FNAME\` text NULL, \`SPOUSE_LNAME\` text NULL, \`SPOUSE_ID\` text NULL, \`MARRIAGE_STATE\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_PERSONAL_EMP_ADDRESS\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`PROVINCE_CODE\` text NULL, \`AMPHUR_CODE\` text NULL, \`DISTRICT_CODE\` text NULL, \`CONTACT_PROVINCE_CODE\` text NULL, \`CONTACT_AMPHUR_CODE\` text NULL, \`CONTACT_DISTRICT_CODE\` text NULL, \`H_NUMBER\` text NULL, \`ZIPCODE\` text NULL, \`CONTACT_H_NUMBER\` text NULL, \`CONTACT_ZIPCODE\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_EDUCATION\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`EDUCATION_CODE\` text NULL, \`START_EDUCATION_YEAR\` text NULL, \`EDUCATION_YEAR\` text NULL, \`INSTITUE\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`HR_EDUCATION_EMP\` (\`CIT\` text NULL, \`id\` int NOT NULL AUTO_INCREMENT, \`EDUCATION_CODE\` text NULL, \`START_EDUCATION_YEAR\` text NULL, \`EDUCATION_YEAR\` text NULL, \`INSTITUE\` text NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`educationMis\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`EDUCATION_CODE\` varchar(255) NULL, \`EDUCATION_NAME\` varchar(255) NULL, \`EDUCATION_ABB_NAME\` varchar(255) NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + // await queryRunner.query(`CREATE TABLE \`amphurImport\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`PROVINCE_CODE\` varchar(255) NULL, \`AMPHUR_CODE\` varchar(255) NULL, \`AMPHUR_NAME\` varchar(255) NULL, PRIMARY KEY (\`id\`)) ENGINE=InnoDB`); + await queryRunner.query(`ALTER TABLE \`commandType\` ADD \`detailHeader\` text NULL COMMENT 'เนื้อหาคำสั่งส่วนต้น'`); + await queryRunner.query(`ALTER TABLE \`commandType\` ADD \`detailBody\` text NULL COMMENT 'เนื้อหาคำสั่งส่วนกลาง'`); + await queryRunner.query(`ALTER TABLE \`commandType\` ADD \`detailFooter\` text NULL COMMENT 'เนื้อหาคำสั่งส่วนท้าย'`); + await queryRunner.query(`ALTER TABLE \`commandType\` ADD \`isActive\` tinyint NOT NULL COMMENT 'สถานะการใช้งาน' DEFAULT 1`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`commandType\` DROP COLUMN \`isActive\``); + await queryRunner.query(`ALTER TABLE \`commandType\` DROP COLUMN \`detailFooter\``); + await queryRunner.query(`ALTER TABLE \`commandType\` DROP COLUMN \`detailBody\``); + await queryRunner.query(`ALTER TABLE \`commandType\` DROP COLUMN \`detailHeader\``); + // await queryRunner.query(`DROP TABLE \`amphurImport\``); + // await queryRunner.query(`DROP TABLE \`educationMis\``); + // await queryRunner.query(`DROP TABLE \`HR_EDUCATION_EMP\``); + // await queryRunner.query(`DROP TABLE \`HR_EDUCATION\``); + // await queryRunner.query(`DROP TABLE \`HR_PERSONAL_EMP_ADDRESS\``); + // await queryRunner.query(`DROP TABLE \`HR_PERSONAL_EMP_FAMILY\``); + // await queryRunner.query(`DROP TABLE \`HR_PERSONAL_OFFICER_ADDRESS\``); + // await queryRunner.query(`DROP TABLE \`HR_PERSONAL_OFFICER_FAMILY\``); + // await queryRunner.query(`DROP TABLE \`HR_POSITION_OFFICER\``); + // await queryRunner.query(`DROP TABLE \`provinceImport\``); + // await queryRunner.query(`DROP TABLE \`subDistrictImport\``); + } + +}