diff --git a/src/controllers/EmployeePosLevelController.ts b/src/controllers/EmployeePosLevelController.ts index 782cf561..89de4730 100644 --- a/src/controllers/EmployeePosLevelController.ts +++ b/src/controllers/EmployeePosLevelController.ts @@ -167,7 +167,7 @@ export class EmployeePosLevelController extends Controller { async GetEmpLevelById(@Path() id: string) { const getEmpPosLevel = await this.employeePosLevelRepository.findOne({ relations: ["posType"], - select: ["id", "posLevelName", "posLevelRank"], + select: ["id", "posLevelName", "posLevelRank", "posLevelAuthority"], where: { id: id }, }); if (!getEmpPosLevel) { @@ -176,8 +176,9 @@ export class EmployeePosLevelController extends Controller { const mapEmpPosLevel = { id: getEmpPosLevel.id, posLevelName: getEmpPosLevel.posLevelName, + posTypeId: getEmpPosLevel.posType == null ? null : getEmpPosLevel.posType.id, posTypeName: getEmpPosLevel.posType == null ? null : getEmpPosLevel.posType.posTypeName, //กลุ่มงาน - commander: null, //ผู้มีอำนาจสั่งบรรจุ + posLevelAuthority: getEmpPosLevel.posLevelAuthority, //ผู้มีอำนาจสั่งบรรจุ }; return new HttpSuccess(mapEmpPosLevel); } @@ -192,13 +193,14 @@ export class EmployeePosLevelController extends Controller { async GetEmpPosLevel() { const empPosLevel = await this.employeePosLevelRepository.find({ relations: ["posType"], - select: ["id", "posLevelName", "posLevelRank"], + select: ["id", "posLevelName", "posLevelRank", "posLevelAuthority"], }); const mapEmpPosLevel = empPosLevel.map((item) => ({ id: item.id, posLevelName: item.posLevelName, + posTypeId: item.posType == null ? null : item.posType.id, posTypeName: item.posType == null ? null : item.posType.posTypeName, //กลุ่มงาน - commander: null, //ผู้มีอำนาจสั่งบรรจุ + posLevelAuthority: item.posLevelAuthority, //ผู้มีอำนาจสั่งบรรจุ })); return new HttpSuccess(mapEmpPosLevel); } diff --git a/src/controllers/EmployeePosTypeController.ts b/src/controllers/EmployeePosTypeController.ts index d20e2206..08b9859a 100644 --- a/src/controllers/EmployeePosTypeController.ts +++ b/src/controllers/EmployeePosTypeController.ts @@ -154,7 +154,7 @@ export class EmployeePosTypeController extends Controller { async GetEmpTypeById(@Path() id: string) { const getEmpPosType = await this.employeePosTypeRepository.findOne({ relations: ["posLevels"], - select: ["id", "posTypeName", "posTypeRank"], + select: ["id", "posTypeName", "posTypeRank", "posTypeShortName"], where: { id: id }, }); if (!getEmpPosType) { @@ -165,6 +165,7 @@ export class EmployeePosTypeController extends Controller { id: getEmpPosType.id, posTypeName: getEmpPosType.posTypeName, posTypeRank: getEmpPosType.posTypeRank, + posTypeShortName: getEmpPosType.posTypeShortName, posLevels: getEmpPosType.posLevels.map((empPosLevel) => ({ id: empPosLevel.id, posLevelName: empPosLevel.posLevelName, @@ -185,13 +186,14 @@ export class EmployeePosTypeController extends Controller { async GetEmpPosType() { const empPosType = await this.employeePosTypeRepository.find({ relations: ["posLevels"], - select: ["id", "posTypeName", "posTypeRank"], + select: ["id", "posTypeName", "posTypeRank", "posTypeShortName"], }); const mapEmpPosType = empPosType.map((item) => ({ id: item.id, posTypeName: item.posTypeName, posTypeRank: item.posTypeRank, + posTypeShortName: item.posTypeShortName, posLevels: item.posLevels.map((empPosLevel) => ({ id: empPosLevel.id, posLevelName: empPosLevel.posLevelName, diff --git a/src/controllers/InsigniaController.ts b/src/controllers/InsigniaController.ts index c1355f2d..a0069f44 100644 --- a/src/controllers/InsigniaController.ts +++ b/src/controllers/InsigniaController.ts @@ -24,7 +24,7 @@ import { Equal, ILike, In, IsNull, Like, Not, Brackets, Between } from "typeorm" import { InsigniaType, CreateInsigniaType, UpdateInsigniaType } from "../entities/InsigniaType"; import { Insignia, CreateInsignias, UpdateInsignias } from "../entities/Insignia"; -@Route("api/v1/org/insignia/Insignias") +@Route("api/v1/org/insignia/insignia") @Tags("Insignia") @Security("bearerAuth") @Response( @@ -180,10 +180,9 @@ export class InsigniaController extends Controller { const insigniaAll = await this.insigniaRepository.find({ relations: ["insigniaType"], select: ["id", "name", "shortName", "createdAt", "lastUpdatedAt", "lastUpdateFullName", "isActive", "note"], + order: { "level": "ASC" } }); - if (!insigniaAll) { - throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลเครื่องราชอิสริยาภรณ์นี้"); - } + const mapInsigniaAll = insigniaAll.map((item) => ({ id: item.id, name: item.name, diff --git a/src/controllers/InsigniaTypeController.ts b/src/controllers/InsigniaTypeController.ts index cfd8ec86..164aaf93 100644 --- a/src/controllers/InsigniaTypeController.ts +++ b/src/controllers/InsigniaTypeController.ts @@ -132,6 +132,22 @@ export class InsigniaTypeController extends Controller { return new HttpSuccess(); } + /** + * API รายการลำดับชั้นเครื่องราชอิสริยาภรณ์ Active + * + * @summary ORG_ - รายการลำดับชั้นเครื่องราชอิสริยาภรณ์ Active (ADMIN) # + * + */ + @Get("active") + async GetInsigniaType_Active() { + const insigniaType_Active = await this.insigniaTypeRepository.find({ + select: ["id", "name", "createdAt", "lastUpdatedAt", "lastUpdateFullName", "isActive"], + where: { isActive: true }, + order: { "name": "ASC" } + }); + return new HttpSuccess(insigniaType_Active); + } + /** * API รายละเอียดข้อมูลลำดับชั้นเครื่องราชอิสริยาภรณ์ * @@ -142,6 +158,7 @@ export class InsigniaTypeController extends Controller { @Get("{id}") async GetInsigniaTypeById(@Path() id: string) { const insigniaType = await this.insigniaTypeRepository.findOne({ + relations: ["insignias"], select: ["id", "name", "createdAt", "lastUpdatedAt", "lastUpdateFullName", "isActive"], where: { id: id }, }); @@ -159,13 +176,10 @@ export class InsigniaTypeController extends Controller { */ @Get("") async GetInsigniaType() { - const insigniaTypeAll = await this.insigniaTypeRepository.find({ - select: ["id", "name", "createdAt", "lastUpdatedAt", "lastUpdateFullName", "isActive"] + select: ["id", "name", "createdAt", "lastUpdatedAt", "lastUpdateFullName", "isActive"], + order: { "name": "ASC" } }); - if (!insigniaTypeAll) { - throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลลำดับชั้นเครื่องราชอิสริยาภรณ์ นี้"); - } return new HttpSuccess(insigniaTypeAll); } } diff --git a/src/entities/EmployeePosLevel.ts b/src/entities/EmployeePosLevel.ts index ae3c1713..6380ac04 100644 --- a/src/entities/EmployeePosLevel.ts +++ b/src/entities/EmployeePosLevel.ts @@ -3,6 +3,11 @@ import { EntityBase } from "./base/Base"; import { EmployeePosDict } from "./EmployeePosDict"; import { EmployeePosType } from "./EmployeePosType"; +enum EmployeePosLevelAuthoritys { + HEAD = "HEAD", + DEPUTY = "DEPUTY", + GOVERNOR = "GOVERNOR", +} @Entity("employeePosLevel") export class EmployeePosLevel extends EntityBase { @Column({ @@ -17,6 +22,16 @@ export class EmployeePosLevel extends EntityBase { }) posLevelRank: number; + @Column({ + nullable: true, + comment: + "ผู้มีอำนาจสั่งบรรจุของระดับนี้ head = หัวหน้าหน่วยงาน , deputy = ปลัด , governor = ผู้ว่าฯ", + type: "enum", + enum: EmployeePosLevelAuthoritys, + default: null, + }) + posLevelAuthority: EmployeePosLevelAuthoritys; + @Column({ length: 40, comment: "คีย์นอก(FK)ของตาราง employeePosType", @@ -38,8 +53,11 @@ export class CreateEmployeePosLevel { @Column() posLevelRank: number; + @Column() + posLevelAuthority: string; + @Column("uuid") posTypeId: string; } -export type UpdateEmployeePosLevel = Partial; +export type UpdateEmployeePosLevel = Partial & { posLevelAuthority: EmployeePosLevelAuthoritys }; diff --git a/src/migration/1710399617760-add_column_employeePosLevel-posLevelAuthority.ts b/src/migration/1710399617760-add_column_employeePosLevel-posLevelAuthority.ts new file mode 100644 index 00000000..74dbf59f --- /dev/null +++ b/src/migration/1710399617760-add_column_employeePosLevel-posLevelAuthority.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddColumnEmployeePosLevelPosLevelAuthority1710399617760 implements MigrationInterface { + name = 'AddColumnEmployeePosLevelPosLevelAuthority1710399617760' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` ADD \`posLevelAuthority\` enum ('HEAD', 'DEPUTY', 'GOVERNOR') NULL COMMENT 'ผู้มีอำนาจสั่งบรรจุของระดับนี้ head = หัวหน้าหน่วยงาน , deputy = ปลัด , governor = ผู้ว่าฯ'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`employeePosLevel\` DROP COLUMN \`posLevelAuthority\``); + } + +}