From 2832ab2268221ed458193cbf1f458266d5791e33 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Thu, 1 Feb 2024 13:29:15 +0700 Subject: [PATCH] isAncestorDNA to ancestorDNA --- src/controllers/OrganizationController.ts | 143 +++++++++++------- src/controllers/PositionController.ts | 44 +++--- src/entities/OrgChild1.ts | 2 +- src/entities/OrgChild2.ts | 2 +- src/entities/OrgChild3.ts | 2 +- src/entities/OrgChild4.ts | 2 +- src/entities/OrgRoot.ts | 2 +- src/entities/PosMaster.ts | 2 +- .../1706768882759-update_table_ancestorDNA.ts | 24 +++ 9 files changed, 143 insertions(+), 80 deletions(-) create mode 100644 src/migration/1706768882759-update_table_ancestorDNA.ts diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index 499783d2..4b2bbb24 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -105,6 +105,9 @@ export class OrganizationController extends Controller { activeName: orgRevisionActive == null ? null : orgRevisionActive.orgRevisionName, draftId: orgRevisionDraf == null ? null : orgRevisionDraf.id, draftName: orgRevisionDraf == null ? null : orgRevisionDraf.orgRevisionName, + + orgPublishDate: orgRevisionDraf == null ? null : orgRevisionDraf.orgPublishDate, + isPublic: orgRevisionDraf == null || orgRevisionDraf.orgRevisionName == null ? false : true, }; return new HttpSuccess(mapData); } catch (error) { @@ -152,10 +155,10 @@ export class OrganizationController extends Controller { }); const _orgRoot = orgRoot.map((x) => ({ ...x, - isAncestorDNA: - x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? x.id - : x.isAncestorDNA, + : x.ancestorDNA, })); await this.orgRootRepository.save(_orgRoot); @@ -169,10 +172,10 @@ export class OrganizationController extends Controller { const _orgChild1 = orgChild1.map((x) => ({ ...x, - isAncestorDNA: - x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? x.id - : x.isAncestorDNA, + : x.ancestorDNA, })); await this.child1Repository.save(_orgChild1); @@ -189,11 +192,11 @@ export class OrganizationController extends Controller { if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION") { const _posMaster = x.posMasters.map((item: any) => ({ ...item, - isAncestorDNA: - item.isAncestorDNA == null || - item.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + item.ancestorDNA == null || + item.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? item.id - : item.isAncestorDNA, + : item.ancestorDNA, })); await this.posMasterRepository.save(_posMaster); await Promise.all( @@ -245,10 +248,10 @@ export class OrganizationController extends Controller { }); const _orgChild2 = orgChild2.map((x) => ({ ...x, - isAncestorDNA: - x.isAncestorDNA == null || x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? x.id - : x.isAncestorDNA, + : x.ancestorDNA, })); await this.child2Repository.save(_orgChild2); @@ -266,11 +269,11 @@ export class OrganizationController extends Controller { if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION") { const _posMaster = x.posMasters.map((item: any) => ({ ...item, - isAncestorDNA: - item.isAncestorDNA == null || - item.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + item.ancestorDNA == null || + item.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? item.id - : item.isAncestorDNA, + : item.ancestorDNA, })); await this.posMasterRepository.save(_posMaster); await Promise.all( @@ -325,11 +328,10 @@ export class OrganizationController extends Controller { }); const _orgChild3 = orgChild3.map((x) => ({ ...x, - isAncestorDNA: - x.isAncestorDNA == null || - x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? x.id - : x.isAncestorDNA, + : x.ancestorDNA, })); await this.child3Repository.save(_orgChild3); @@ -348,11 +350,11 @@ export class OrganizationController extends Controller { if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION") { const _posMaster = x.posMasters.map((item: any) => ({ ...item, - isAncestorDNA: - item.isAncestorDNA == null || - item.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + item.ancestorDNA == null || + item.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? item.id - : item.isAncestorDNA, + : item.ancestorDNA, })); await this.posMasterRepository.save(_posMaster); await Promise.all( @@ -409,11 +411,10 @@ export class OrganizationController extends Controller { }); const _orgChild4 = orgChild4.map((x) => ({ ...x, - isAncestorDNA: - x.isAncestorDNA == null || - x.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? x.id - : x.isAncestorDNA, + : x.ancestorDNA, })); await this.child4Repository.save(_orgChild4); @@ -433,11 +434,11 @@ export class OrganizationController extends Controller { if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION") { const _posMaster = x.posMasters.map((item: any) => ({ ...item, - isAncestorDNA: - item.isAncestorDNA == null || - item.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + item.ancestorDNA == null || + item.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? item.id - : item.isAncestorDNA, + : item.ancestorDNA, })); await this.posMasterRepository.save(_posMaster); await Promise.all( @@ -498,11 +499,11 @@ export class OrganizationController extends Controller { if (requestBody.typeDraft.toUpperCase() == "ORG_POSITION") { const _posMaster = x.posMasters.map((item: any) => ({ ...item, - isAncestorDNA: - item.isAncestorDNA == null || - item.isAncestorDNA == "00000000-0000-0000-0000-000000000000" + ancestorDNA: + item.ancestorDNA == null || + item.ancestorDNA == "00000000-0000-0000-0000-000000000000" ? item.id - : item.isAncestorDNA, + : item.ancestorDNA, })); await this.posMasterRepository.save(_posMaster); await Promise.all( @@ -867,11 +868,11 @@ export class OrganizationController extends Controller { } const datas = await this.child1Repository .createQueryBuilder("child1") - .where("child1.isAncestorDNA = :isAncestorDNA", { isAncestorDNA: orgChild1.isAncestorDNA }) - .andWhere("child1.isAncestorDNA <> :nullUUID", { + .where("child1.ancestorDNA = :ancestorDNA", { ancestorDNA: orgChild1.ancestorDNA }) + .andWhere("child1.ancestorDNA <> :nullUUID", { nullUUID: "00000000-0000-0000-0000-000000000000", }) - .andWhere("child1.isAncestorDNA IS NOT NULL") + .andWhere("child1.ancestorDNA IS NOT NULL") .leftJoinAndSelect("child1.orgRevision", "orgRevision") .orderBy("child1.lastUpdatedAt", "DESC") .getMany(); @@ -891,11 +892,11 @@ export class OrganizationController extends Controller { } const datas = await this.child2Repository .createQueryBuilder("child2") - .where("child2.isAncestorDNA = :isAncestorDNA", { isAncestorDNA: orgChild2.isAncestorDNA }) - .andWhere("child2.isAncestorDNA <> :nullUUID", { + .where("child2.ancestorDNA = :ancestorDNA", { ancestorDNA: orgChild2.ancestorDNA }) + .andWhere("child2.ancestorDNA <> :nullUUID", { nullUUID: "00000000-0000-0000-0000-000000000000", }) - .andWhere("child2.isAncestorDNA IS NOT NULL") + .andWhere("child2.ancestorDNA IS NOT NULL") .leftJoinAndSelect("child2.orgRevision", "orgRevision") .orderBy("child2.lastUpdatedAt", "DESC") .getMany(); @@ -915,11 +916,11 @@ export class OrganizationController extends Controller { } const datas = await this.child3Repository .createQueryBuilder("child3") - .where("child3.isAncestorDNA = :isAncestorDNA", { isAncestorDNA: orgChild3.isAncestorDNA }) - .andWhere("child3.isAncestorDNA <> :nullUUID", { + .where("child3.ancestorDNA = :ancestorDNA", { ancestorDNA: orgChild3.ancestorDNA }) + .andWhere("child3.ancestorDNA <> :nullUUID", { nullUUID: "00000000-0000-0000-0000-000000000000", }) - .andWhere("child3.isAncestorDNA IS NOT NULL") + .andWhere("child3.ancestorDNA IS NOT NULL") .leftJoinAndSelect("child3.orgRevision", "orgRevision") .orderBy("child3.lastUpdatedAt", "DESC") .getMany(); @@ -939,11 +940,11 @@ export class OrganizationController extends Controller { } const datas = await this.child4Repository .createQueryBuilder("child4") - .where("child4.isAncestorDNA = :isAncestorDNA", { isAncestorDNA: orgChild4.isAncestorDNA }) - .andWhere("child4.isAncestorDNA <> :nullUUID", { + .where("child4.ancestorDNA = :ancestorDNA", { ancestorDNA: orgChild4.ancestorDNA }) + .andWhere("child4.ancestorDNA <> :nullUUID", { nullUUID: "00000000-0000-0000-0000-000000000000", }) - .andWhere("child4.isAncestorDNA IS NOT NULL") + .andWhere("child4.ancestorDNA IS NOT NULL") .leftJoinAndSelect("child4.orgRevision", "orgRevision") .orderBy("child4.lastUpdatedAt", "DESC") .getMany(); @@ -963,11 +964,11 @@ export class OrganizationController extends Controller { } const datas = await this.orgRootRepository .createQueryBuilder("root") - .where("root.isAncestorDNA = :isAncestorDNA", { isAncestorDNA: orgRoot.isAncestorDNA }) - .andWhere("root.isAncestorDNA <> :nullUUID", { + .where("root.ancestorDNA = :ancestorDNA", { ancestorDNA: orgRoot.ancestorDNA }) + .andWhere("root.ancestorDNA <> :nullUUID", { nullUUID: "00000000-0000-0000-0000-000000000000", }) - .andWhere("root.isAncestorDNA IS NOT NULL") + .andWhere("root.ancestorDNA IS NOT NULL") .leftJoinAndSelect("root.orgRevision", "orgRevision") .orderBy("root.lastUpdatedAt", "DESC") .getMany(); @@ -1104,4 +1105,42 @@ export class OrganizationController extends Controller { return error; } } + + /** + * API เผยแพร่ข้อมูล + * + * @summary ORG_053 - เผยแพร่ข้อมูล (ADMIN) #57 + * + * @param {string} id Id revison + */ + @Get("/get/publish") + async runPublish() { + const today = new Date(); + today.setHours(0, 0, 0, 0); // Set time to the beginning of the day + const orgRevisionPublish = await this.orgRevisionRepository + .createQueryBuilder("orgRevision") + .where("orgRevision.orgRevisionIsDraft = false") + .andWhere("orgRevision.orgRevisionIsCurrent = true") + .getOne(); + + const orgRevisionDraft = await this.orgRevisionRepository + .createQueryBuilder("orgRevision") + .where("orgRevision.orgRevisionIsDraft = true") + .andWhere("orgRevision.orgRevisionIsCurrent = false") + .andWhere("DATE(orgRevision.orgPublishDate) = :today", { today }) + .getOne(); + if (!orgRevisionDraft) { + return new HttpSuccess(); + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่มีข้อมูลเผยแพร่"); + } + if (orgRevisionPublish) { + orgRevisionPublish.orgRevisionIsDraft = false; + orgRevisionPublish.orgRevisionIsCurrent = false; + await this.orgRevisionRepository.save(orgRevisionPublish); + } + orgRevisionDraft.orgRevisionIsCurrent = true; + orgRevisionDraft.orgRevisionIsDraft = false; + await this.orgRevisionRepository.save(orgRevisionDraft); + return new HttpSuccess(); + } } diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 2f23cb7b..ff0370b5 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -507,9 +507,9 @@ export class PositionController extends Controller { } /** - * API เพิ่มอัตรากำลัง + * API แก้ไขเลขที่ตำแหน่ง * - * @summary ORG_033 - เพิ่มอัตรากำลัง (ADMIN) #35 + * @summary ORG_034 - แก้ไขเลขที่ตำแหน่ง (ADMIN) #37 * */ @Put("master/{id}") @@ -737,38 +737,38 @@ export class PositionController extends Controller { typeCondition = { orgRootId: body.id, }; - if (!body.isAll) { - checkChildConditions = { - orgChild1Id: IsNull(), - }; - } + if (!body.isAll) { + checkChildConditions = { + orgChild1Id: IsNull(), + }; + } } else if (body.type === 1) { typeCondition = { orgChild1Id: body.id, }; - if (!body.isAll) { - checkChildConditions = { - orgChild2Id: IsNull(), - }; - } + if (!body.isAll) { + checkChildConditions = { + orgChild2Id: IsNull(), + }; + } } else if (body.type === 2) { typeCondition = { orgChild2Id: body.id, }; - if (!body.isAll) { - checkChildConditions = { - orgChild3Id: IsNull(), - }; - } + if (!body.isAll) { + checkChildConditions = { + orgChild3Id: IsNull(), + }; + } } else if (body.type === 3) { typeCondition = { orgChild3Id: body.id, }; - if (!body.isAll) { - checkChildConditions = { - orgChild4Id: IsNull(), - }; - } + if (!body.isAll) { + checkChildConditions = { + orgChild4Id: IsNull(), + }; + } } else if (body.type === 4) { typeCondition = { orgChild4Id: body.id, diff --git a/src/entities/OrgChild1.ts b/src/entities/OrgChild1.ts index 90e832dc..c9414890 100644 --- a/src/entities/OrgChild1.ts +++ b/src/entities/OrgChild1.ts @@ -95,7 +95,7 @@ export class OrgChild1 extends EntityBase { length: 40, default: null, }) - isAncestorDNA: string; + ancestorDNA: string; @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.orgChild1s) @JoinColumn({ name: "orgRevisionId" }) diff --git a/src/entities/OrgChild2.ts b/src/entities/OrgChild2.ts index ced40f3f..177f6425 100644 --- a/src/entities/OrgChild2.ts +++ b/src/entities/OrgChild2.ts @@ -99,7 +99,7 @@ export class OrgChild2 extends EntityBase { length: 40, default: null, }) - isAncestorDNA: string; + ancestorDNA: string; @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.orgChild2s) @JoinColumn({ name: "orgRevisionId" }) diff --git a/src/entities/OrgChild3.ts b/src/entities/OrgChild3.ts index 55208d70..850a6a3a 100644 --- a/src/entities/OrgChild3.ts +++ b/src/entities/OrgChild3.ts @@ -105,7 +105,7 @@ export class OrgChild3 extends EntityBase { length: 40, default: null, }) - isAncestorDNA: string; + ancestorDNA: string; @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.orgChild3s) @JoinColumn({ name: "orgRevisionId" }) diff --git a/src/entities/OrgChild4.ts b/src/entities/OrgChild4.ts index 8e099701..641dc0c3 100644 --- a/src/entities/OrgChild4.ts +++ b/src/entities/OrgChild4.ts @@ -109,7 +109,7 @@ export class OrgChild4 extends EntityBase { length: 40, default: null, }) - isAncestorDNA: string; + ancestorDNA: string; @ManyToOne(() => OrgRevision, (orgRevision) => orgRevision.orgChild4s) @JoinColumn({ name: "orgRevisionId" }) diff --git a/src/entities/OrgRoot.ts b/src/entities/OrgRoot.ts index 5137b28e..437d6fa7 100644 --- a/src/entities/OrgRoot.ts +++ b/src/entities/OrgRoot.ts @@ -85,7 +85,7 @@ export class OrgRoot extends EntityBase { length: 40, default: null, }) - isAncestorDNA: string; + ancestorDNA: string; @Column({ length: 40, diff --git a/src/entities/PosMaster.ts b/src/entities/PosMaster.ts index 0567854c..c0f85d66 100644 --- a/src/entities/PosMaster.ts +++ b/src/entities/PosMaster.ts @@ -54,7 +54,7 @@ export class PosMaster extends EntityBase { length: 40, default: null, }) - isAncestorDNA: string; + ancestorDNA: string; @Column({ nullable: true, diff --git a/src/migration/1706768882759-update_table_ancestorDNA.ts b/src/migration/1706768882759-update_table_ancestorDNA.ts new file mode 100644 index 00000000..7b91ba17 --- /dev/null +++ b/src/migration/1706768882759-update_table_ancestorDNA.ts @@ -0,0 +1,24 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateTableAncestorDNA1706768882759 implements MigrationInterface { + name = 'UpdateTableAncestorDNA1706768882759' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`orgChild4\` CHANGE \`isAncestorDNA\` \`ancestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild3\` CHANGE \`isAncestorDNA\` \`ancestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild2\` CHANGE \`isAncestorDNA\` \`ancestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild1\` CHANGE \`isAncestorDNA\` \`ancestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgRoot\` CHANGE \`isAncestorDNA\` \`ancestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`posMaster\` CHANGE \`isAncestorDNA\` \`ancestorDNA\` varchar(40) NULL COMMENT 'รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้างและตำแหน่ง ตำแหน่งที่ทำสำเนามากับตำแหน่งเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขตำแหน่งย้อนหลังได้'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`posMaster\` CHANGE \`ancestorDNA\` \`isAncestorDNA\` varchar(40) NULL COMMENT 'รหัส DNA ใช้ในกรณีที่มีการทำสำเนาโครงสร้างและตำแหน่ง ตำแหน่งที่ทำสำเนามากับตำแหน่งเก่าจะต้องมี DNA เดียวกัน เพื่อให้ track ประวัติการแก้ไขตำแหน่งย้อนหลังได้'`); + await queryRunner.query(`ALTER TABLE \`orgRoot\` CHANGE \`ancestorDNA\` \`isAncestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild1\` CHANGE \`ancestorDNA\` \`isAncestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild2\` CHANGE \`ancestorDNA\` \`isAncestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild3\` CHANGE \`ancestorDNA\` \`isAncestorDNA\` varchar(40) NULL`); + await queryRunner.query(`ALTER TABLE \`orgChild4\` CHANGE \`ancestorDNA\` \`isAncestorDNA\` varchar(40) NULL`); + } + +}