diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index d9c896df..b64cbe91 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -166,6 +166,7 @@ export class OrganizationController extends Controller { //หา dna tree ถ้าไม่มีให้เอาตัวเองเป็น dna const orgRoot = await this.orgRootRepository.find({ where: { orgRevisionId: requestBody.orgRevisionId }, + order:{orgRootOrder:"ASC"} }); let _orgRoot: any = orgRoot.map((x) => ({ ...x, @@ -178,6 +179,7 @@ export class OrganizationController extends Controller { const orgChild1 = await this.child1Repository.find({ where: { orgRevisionId: requestBody.orgRevisionId }, + order:{orgChild1Order:"ASC"} }); let _orgChild1: any = orgChild1.map((x) => ({ ...x, @@ -190,6 +192,7 @@ export class OrganizationController extends Controller { const orgChild2 = await this.child2Repository.find({ where: { orgRevisionId: requestBody.orgRevisionId }, + order:{orgChild2Order:"ASC"} }); let _orgChild2: any = orgChild2.map((x) => ({ ...x, @@ -202,6 +205,7 @@ export class OrganizationController extends Controller { const orgChild3 = await this.child3Repository.find({ where: { orgRevisionId: requestBody.orgRevisionId }, + order:{orgChild3Order:"ASC"} }); let _orgChild3: any = orgChild3.map((x) => ({ ...x, @@ -214,6 +218,7 @@ export class OrganizationController extends Controller { const orgChild4 = await this.child4Repository.find({ where: { orgRevisionId: requestBody.orgRevisionId }, + order:{orgChild4Order:"ASC"} }); let _orgChild4: any = orgChild4.map((x) => ({ ...x, @@ -230,73 +235,33 @@ export class OrganizationController extends Controller { relations: ["positions", "posMasterAssigns"], }); - let _orgPosMaster: PosMaster[]; + let _orgPosMaster: PosMaster[] = []; if ( requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" ) { - _orgPosMaster = orgPosMaster.map((x) => ({ - ...x, - ancestorDNA: - x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" - ? x.id - : x.ancestorDNA, - })); + _orgPosMaster = orgPosMaster + .filter( + (x) => x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000", + ) + .map((x) => ({ + ...x, + ancestorDNA: + x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" + ? x.id + : x.ancestorDNA, + })); await this.posMasterRepository.save(_orgPosMaster); } - - // //หา dna posmaster ถ้าไม่มีให้เอาตัวเองเป็น dna - // const orgemployeePosMaster = await this.employeePosMasterRepository.find({ - // where: { orgRevisionId: requestBody.orgRevisionId }, - // relations: ["positions"], - // }); - - // let _orgemployeePosMaster: EmployeePosMaster[]; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // _orgemployeePosMaster = orgemployeePosMaster.map((x) => ({ - // ...x, - // ancestorDNA: - // x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" - // ? x.id - // : x.ancestorDNA, - // })); - // await this.employeePosMasterRepository.save(_orgemployeePosMaster); - // } - // //หา dna posmaster ถ้าไม่มีให้เอาตัวเองเป็น dna - // const orgemployeeTempPosMaster = await this.employeeTempPosMasterRepository.find({ - // where: { orgRevisionId: requestBody.orgRevisionId }, - // relations: ["positions"], - // }); - - // let _orgemployeeTempPosMaster: EmployeeTempPosMaster[]; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // _orgemployeeTempPosMaster = orgemployeeTempPosMaster.map((x) => ({ - // ...x, - // ancestorDNA: - // x.ancestorDNA == null || x.ancestorDNA == "00000000-0000-0000-0000-000000000000" - // ? x.id - // : x.ancestorDNA, - // })); - // await this.employeeTempPosMasterRepository.save(_orgemployeeTempPosMaster); - // } - - //create org - _orgRoot.forEach(async (x: any) => { - var dataId = x.id; - delete x.id; - const data = Object.assign(new OrgRoot(), x); + // Create org + for await (const x0 of _orgRoot) { + var dataId = x0.id; + console.log(`ch0 ${x0.orgRootOrder}`) + console.log(dataId) + delete x0.id; + const data = Object.assign(new OrgRoot(), x0); data.orgRevisionId = revision.id; data.createdUserId = request.user.sub; data.createdFullName = request.user.name; @@ -305,32 +270,220 @@ export class OrganizationController extends Controller { data.lastUpdateFullName = request.user.name; data.lastUpdatedAt = new Date(); await this.orgRootRepository.save(data); - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - //create posmaster - await Promise.all( - _orgPosMaster - .filter((x: PosMaster) => x.orgRootId == dataId && x.orgChild1Id == null) - .map(async (item: any) => { + + const orgTypes = new Set([ + "ORG_POSITION", + "ORG_POSITION_PERSON", + "ORG_POSITION_ROLE", + "ORG_POSITION_PERSON_ROLE", + ]); + + if (orgTypes.has(requestBody.typeDraft.toUpperCase())) { + // Create posMaster + for await (const item of orgPosMaster.filter( + (x: PosMaster) => x.orgRootId == dataId && x.orgChild1Id == null, + ) as any) { + delete item.id; + const posMaster: any = Object.assign(new PosMaster(), item); + posMaster.positions = []; + + if ( + ["ORG_POSITION_PERSON", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + posMaster.next_holderId = item.current_holderId; + } else { + posMaster.next_holderId = null; + posMaster.isSit = false; + } + + if ( + ["ORG_POSITION_ROLE", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + posMaster.authRoleId = item.authRoleId; + } else { + posMaster.authRoleId = null; + } + + posMaster.current_holderId = null; + posMaster.orgRevisionId = revision.id; + posMaster.orgRootId = data.id; + posMaster.createdUserId = request.user.sub; + posMaster.createdFullName = request.user.name; + posMaster.createdAt = new Date(); + posMaster.lastUpdateUserId = request.user.sub; + posMaster.lastUpdateFullName = request.user.name; + posMaster.lastUpdatedAt = new Date(); + await this.posMasterRepository.save(posMaster); + + // Copy assignments + item.posMasterAssigns = item.posMasterAssigns.map( + ({ id, ...rest }: PosMasterAssign) => ({ + ...rest, + posMasterId: posMaster.id, + }), + ); + posMaster.posMasterAssigns = item.posMasterAssigns; + + // Create positions + for await (const pos of item.positions) { + delete pos.id; + const position = Object.assign(new Position(), pos); + position.posMasterId = posMaster.id; + + if ( + ["ORG_POSITION", "ORG_POSITION_ROLE"].includes(requestBody.typeDraft.toUpperCase()) + ) { + position.positionIsSelected = false; + } + + position.createdUserId = request.user.sub; + position.createdFullName = request.user.name; + position.createdAt = new Date(); + position.lastUpdateUserId = request.user.sub; + position.lastUpdateFullName = request.user.name; + position.lastUpdatedAt = new Date(); + await this.positionRepository.save(position); + } + } + } + + // Create orgChild1 + for await (const x1 of _orgChild1.filter((x: OrgChild1) => x.orgRootId == dataId)) { + var data1Id = x1.id; + console.log(`ch1 ${x1.orgChild1Order}`) + console.log(data1Id) + delete x1.id; + const data1 = Object.assign(new OrgChild1(), x1); + data1.orgRootId = data.id; + data1.orgRevisionId = revision.id; + data1.createdUserId = request.user.sub; + data1.createdFullName = request.user.name; + data1.createdAt = new Date(); + data1.lastUpdateUserId = request.user.sub; + data1.lastUpdateFullName = request.user.name; + data1.lastUpdatedAt = new Date(); + await this.child1Repository.save(data1); + + if (orgTypes.has(requestBody.typeDraft.toUpperCase())) { + // Create posMaster + for await (const item of orgPosMaster.filter( + (x: PosMaster) => x.orgChild1Id == data1Id && x.orgChild2Id == null, + ) as any) { + delete item.id; + const posMaster = Object.assign(new PosMaster(), item); + posMaster.positions = []; + + if ( + ["ORG_POSITION_PERSON", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + posMaster.next_holderId = item.current_holderId; + } else { + posMaster.next_holderId = null; + posMaster.isSit = false; + } + + if ( + ["ORG_POSITION_ROLE", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + posMaster.authRoleId = item.authRoleId; + } else { + posMaster.authRoleId = null; + } + + posMaster.current_holderId = null; + posMaster.orgRevisionId = revision.id; + posMaster.orgRootId = data.id; + posMaster.orgChild1Id = data1.id; + posMaster.createdUserId = request.user.sub; + posMaster.createdFullName = request.user.name; + posMaster.createdAt = new Date(); + posMaster.lastUpdateUserId = request.user.sub; + posMaster.lastUpdateFullName = request.user.name; + posMaster.lastUpdatedAt = new Date(); + await this.posMasterRepository.save(posMaster); + + // Copy assignments + item.posMasterAssigns = item.posMasterAssigns.map( + ({ id, ...rest }: PosMasterAssign) => ({ + ...rest, + posMasterId: posMaster.id, + }), + ); + posMaster.posMasterAssigns = item.posMasterAssigns; + + // Create positions + for await (const pos of item.positions) { + delete pos.id; + const position = Object.assign(new Position(), pos); + position.posMasterId = posMaster.id; + + if ( + ["ORG_POSITION", "ORG_POSITION_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + position.positionIsSelected = false; + } + + position.createdUserId = request.user.sub; + position.createdFullName = request.user.name; + position.createdAt = new Date(); + position.lastUpdateUserId = request.user.sub; + position.lastUpdateFullName = request.user.name; + position.lastUpdatedAt = new Date(); + await this.positionRepository.save(position); + } + } + } + for await (const x2 of _orgChild2.filter((x: OrgChild2) => x.orgChild1Id == data1Id)) { + var data2Id = x2.id; + console.log(`ch2 ${x2.orgChild2Order}`) + console.log(data2Id) + delete x2.id; + const data2 = Object.assign(new OrgChild2(), x2); + data2.orgChild1Id = data1.id; + data2.orgRootId = data.id; + data2.orgRevisionId = revision.id; + data2.createdUserId = request.user.sub; + data2.createdFullName = request.user.name; + data2.createdAt = new Date(); + data2.lastUpdateUserId = request.user.sub; + data2.lastUpdateFullName = request.user.name; + data2.lastUpdatedAt = new Date(); + await this.child2Repository.save(data2); + + if (orgTypes.has(requestBody.typeDraft.toUpperCase())) { + // Create posMaster + for await (const item of orgPosMaster.filter( + (x: PosMaster) => x.orgChild2Id == data2Id && x.orgChild3Id == null, + ) as any) { delete item.id; const posMaster = Object.assign(new PosMaster(), item); posMaster.positions = []; + if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" + ["ORG_POSITION_PERSON", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) ) { posMaster.next_holderId = item.current_holderId; } else { posMaster.next_holderId = null; posMaster.isSit = false; } + if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" + ["ORG_POSITION_ROLE", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) ) { posMaster.authRoleId = item.authRoleId; } else { @@ -340,6 +493,8 @@ export class OrganizationController extends Controller { posMaster.current_holderId = null; posMaster.orgRevisionId = revision.id; posMaster.orgRootId = data.id; + posMaster.orgChild1Id = data1.id; + posMaster.orgChild2Id = data2.id; posMaster.createdUserId = request.user.sub; posMaster.createdFullName = request.user.name; posMaster.createdAt = new Date(); @@ -348,20 +503,23 @@ export class OrganizationController extends Controller { posMaster.lastUpdatedAt = new Date(); await this.posMasterRepository.save(posMaster); - //copy มอบหมาย - item.posMasterAssigns = item.posMasterAssigns.map( - ({ id, ...rest }: PosMasterAssign) => ({ rest, posMasterId: posMaster.id }), + // Copy assignments + posMaster.posMasterAssigns = item.posMasterAssigns.map( + ({ id, ...rest }: PosMasterAssign) => ({ + ...rest, + posMasterId: posMaster.id, + }), ); - posMaster.posMasterAssigns = item.posMasterAssigns; - //create position - item.positions.map(async (pos: any) => { + // Create positions + for await (const pos of item.positions) { delete pos.id; const position = Object.assign(new Position(), pos); position.posMasterId = posMaster.id; if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" + ["ORG_POSITION", "ORG_POSITION_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) ) { position.positionIsSelected = false; } @@ -372,182 +530,162 @@ export class OrganizationController extends Controller { position.lastUpdateFullName = request.user.name; position.lastUpdatedAt = new Date(); await this.positionRepository.save(position); - }); - }), - ); - // //create employeePosmaster - // await Promise.all( - // _orgemployeePosMaster - // .filter((x: EmployeePosMaster) => x.orgRootId == dataId && x.orgChild1Id == null) - // .map(async (item: any) => { - // delete item.id; - // const employeePosMaster = Object.assign(new EmployeePosMaster(), item); - // employeePosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.current_holderId = item.current_holderId; - // } else { - // // employeePosMaster.next_holderId = null; - // employeePosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.authRoleId = item.authRoleId; - // } else { - // employeePosMaster.authRoleId = null; - // } - // // employeePosMaster.current_holderId = null; - // employeePosMaster.orgRevisionId = revision.id; - // employeePosMaster.orgRootId = data.id; - // employeePosMaster.createdUserId = request.user.sub; - // employeePosMaster.createdFullName = request.user.name; - // employeePosMaster.createdAt = new Date(); - // employeePosMaster.lastUpdateUserId = request.user.sub; - // employeePosMaster.lastUpdateFullName = request.user.name; - // employeePosMaster.lastUpdatedAt = new Date(); - // await this.employeePosMasterRepository.save(employeePosMaster); + } + } + } - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterId = employeePosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - // //create employeeTempPosmaster - // await Promise.all( - // _orgemployeeTempPosMaster - // .filter((x: EmployeeTempPosMaster) => x.orgRootId == dataId && x.orgChild1Id == null) - // .map(async (item: any) => { - // delete item.id; - // const employeeTempPosMaster = Object.assign(new EmployeeTempPosMaster(), item); - // employeeTempPosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.current_holderId = item.current_holderId; - // } else { - // // employeeTempPosMaster.next_holderId = null; - // employeeTempPosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.authRoleId = item.authRoleId; - // } else { - // employeeTempPosMaster.authRoleId = null; - // } - // // employeeTempPosMaster.current_holderId = null; - // employeeTempPosMaster.orgRevisionId = revision.id; - // employeeTempPosMaster.orgRootId = data.id; - // employeeTempPosMaster.createdUserId = request.user.sub; - // employeeTempPosMaster.createdFullName = request.user.name; - // employeeTempPosMaster.createdAt = new Date(); - // employeeTempPosMaster.lastUpdateUserId = request.user.sub; - // employeeTempPosMaster.lastUpdateFullName = request.user.name; - // employeeTempPosMaster.lastUpdatedAt = new Date(); - // await this.employeeTempPosMasterRepository.save(employeeTempPosMaster); + // Create org + for await (const x3 of _orgChild3.filter((x: OrgChild3) => x.orgChild2Id == data2Id)) { + var data3Id = x3.id; + console.log(`ch3 ${x3.orgChild3Order}`) + console.log(data3Id) + delete x3.id; + const data3 = Object.assign(new OrgChild3(), x3); + data3.orgChild2Id = data2.id; + data3.orgChild1Id = data1.id; + data3.orgRootId = data.id; + data3.orgRevisionId = revision.id; + data3.createdUserId = request.user.sub; + data3.createdFullName = request.user.name; + data3.createdAt = new Date(); + data3.lastUpdateUserId = request.user.sub; + data3.lastUpdateFullName = request.user.name; + data3.lastUpdatedAt = new Date(); + await this.child3Repository.save(data3); - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterTempId = employeeTempPosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - } + if (orgTypes.has(requestBody.typeDraft.toUpperCase())) { + // Create posMaster + for await (const item of orgPosMaster.filter( + (x: PosMaster) => x.orgChild3Id == data3Id && x.orgChild4Id == null, + ) as any) { + delete item.id; + const posMaster = Object.assign(new PosMaster(), item); + posMaster.positions = []; - //create org - _orgChild1 - .filter((x: OrgChild1) => x.orgRootId == dataId) - .forEach(async (x: any) => { - var data1Id = x.id; - delete x.id; - const data1 = Object.assign(new OrgChild1(), x); - data1.orgRootId = data.id; - data1.orgRevisionId = revision.id; - data1.createdUserId = request.user.sub; - data1.createdFullName = request.user.name; - data1.createdAt = new Date(); - data1.lastUpdateUserId = request.user.sub; - data1.lastUpdateFullName = request.user.name; - data1.lastUpdatedAt = new Date(); - await this.child1Repository.save(data1); - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - //create posmaster - await Promise.all( - _orgPosMaster - .filter((x: PosMaster) => x.orgChild1Id == data1Id && x.orgChild2Id == null) - .map(async (item: any) => { + if ( + ["ORG_POSITION_PERSON", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + posMaster.next_holderId = item.current_holderId; + } else { + posMaster.next_holderId = null; + posMaster.isSit = false; + } + + if ( + ["ORG_POSITION_ROLE", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + posMaster.authRoleId = item.authRoleId; + } else { + posMaster.authRoleId = null; + } + + posMaster.current_holderId = null; + posMaster.orgRevisionId = revision.id; + posMaster.orgRootId = data.id; + posMaster.orgChild1Id = data1.id; + posMaster.orgChild2Id = data2.id; + posMaster.orgChild3Id = data3.id; + posMaster.createdUserId = request.user.sub; + posMaster.createdFullName = request.user.name; + posMaster.createdAt = new Date(); + posMaster.lastUpdateUserId = request.user.sub; + posMaster.lastUpdateFullName = request.user.name; + posMaster.lastUpdatedAt = new Date(); + await this.posMasterRepository.save(posMaster); + + // Copy assignments + posMaster.posMasterAssigns = item.posMasterAssigns.map( + ({ id, ...rest }: PosMasterAssign) => ({ + ...rest, + posMasterId: posMaster.id, + }), + ); + + // Create positions + for await (const pos of item.positions) { + delete pos.id; + const position = Object.assign(new Position(), pos); + position.posMasterId = posMaster.id; + if ( + ["ORG_POSITION", "ORG_POSITION_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) + ) { + position.positionIsSelected = false; + } + position.createdUserId = request.user.sub; + position.createdFullName = request.user.name; + position.createdAt = new Date(); + position.lastUpdateUserId = request.user.sub; + position.lastUpdateFullName = request.user.name; + position.lastUpdatedAt = new Date(); + await this.positionRepository.save(position); + } + } + } + // Create org + for await (const x4 of _orgChild4.filter( + (x: OrgChild4) => x.orgChild3Id == data3Id, + )) { + var data4Id = x4.id; + console.log(`ch4 ${x4.orgChild4Order}`) + console.log(data4Id) + delete x4.id; + const data4 = Object.assign(new OrgChild4(), x4); + data4.orgChild3Id = data3.id; + data4.orgChild2Id = data2.id; + data4.orgChild1Id = data1.id; + data4.orgRootId = data.id; + data4.orgRevisionId = revision.id; + data4.createdUserId = request.user.sub; + data4.createdFullName = request.user.name; + data4.createdAt = new Date(); + data4.lastUpdateUserId = request.user.sub; + data4.lastUpdateFullName = request.user.name; + data4.lastUpdatedAt = new Date(); + await this.child4Repository.save(data4); + + if (orgTypes.has(requestBody.typeDraft.toUpperCase())) { + // Create posMaster + for await (const item of orgPosMaster.filter( + (x: PosMaster) => x.orgChild4Id == data4Id, + ) as any) { delete item.id; const posMaster = Object.assign(new PosMaster(), item); posMaster.positions = []; + if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" + ["ORG_POSITION_PERSON", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) ) { posMaster.next_holderId = item.current_holderId; } else { posMaster.next_holderId = null; posMaster.isSit = false; } + if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" + ["ORG_POSITION_ROLE", "ORG_POSITION_PERSON_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) ) { posMaster.authRoleId = item.authRoleId; } else { posMaster.authRoleId = null; } + posMaster.current_holderId = null; posMaster.orgRevisionId = revision.id; posMaster.orgRootId = data.id; posMaster.orgChild1Id = data1.id; + posMaster.orgChild2Id = data2.id; + posMaster.orgChild3Id = data3.id; + posMaster.orgChild4Id = data4.id; posMaster.createdUserId = request.user.sub; posMaster.createdFullName = request.user.name; posMaster.createdAt = new Date(); @@ -556,20 +694,23 @@ export class OrganizationController extends Controller { posMaster.lastUpdatedAt = new Date(); await this.posMasterRepository.save(posMaster); - //copy มอบหมาย - item.posMasterAssigns = item.posMasterAssigns.map( - ({ id, ...rest }: PosMasterAssign) => ({ rest, posMasterId: posMaster.id }), + // Copy assignments + posMaster.posMasterAssigns = item.posMasterAssigns.map( + ({ id, ...rest }: PosMasterAssign) => ({ + ...rest, + posMasterId: posMaster.id, + }), ); - posMaster.posMasterAssigns = item.posMasterAssigns; - //create position - item.positions.map(async (pos: any) => { + // Create positions + for await (const pos of item.positions) { delete pos.id; const position = Object.assign(new Position(), pos); position.posMasterId = posMaster.id; if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" + ["ORG_POSITION", "ORG_POSITION_ROLE"].includes( + requestBody.typeDraft.toUpperCase(), + ) ) { position.positionIsSelected = false; } @@ -580,831 +721,14 @@ export class OrganizationController extends Controller { position.lastUpdateFullName = request.user.name; position.lastUpdatedAt = new Date(); await this.positionRepository.save(position); - }); - }), - ); - // //create employeePosmaster - // await Promise.all( - // _orgemployeePosMaster - // .filter( - // (x: EmployeePosMaster) => x.orgChild1Id == data1Id && x.orgChild2Id == null, - // ) - // .map(async (item: any) => { - // delete item.id; - // const employeePosMaster = Object.assign(new EmployeePosMaster(), item); - // employeePosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.current_holderId = item.current_holderId; - // } else { - // // employeePosMaster.next_holderId = null; - // employeePosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.authRoleId = item.authRoleId; - // } else { - // employeePosMaster.authRoleId = null; - // } - // // employeePosMaster.current_holderId = null; - // employeePosMaster.orgRevisionId = revision.id; - // employeePosMaster.orgRootId = data.id; - // employeePosMaster.orgChild1Id = data1.id; - // employeePosMaster.createdUserId = request.user.sub; - // employeePosMaster.createdFullName = request.user.name; - // employeePosMaster.createdAt = new Date(); - // employeePosMaster.lastUpdateUserId = request.user.sub; - // employeePosMaster.lastUpdateFullName = request.user.name; - // employeePosMaster.lastUpdatedAt = new Date(); - // await this.employeePosMasterRepository.save(employeePosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterId = employeePosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - // // create employeeTempPosmaster - // await Promise.all( - // _orgemployeeTempPosMaster - // .filter( - // (x: EmployeeTempPosMaster) => x.orgChild1Id == data1Id && x.orgChild2Id == null, - // ) - // .map(async (item: any) => { - // delete item.id; - // const employeeTempPosMaster = Object.assign(new EmployeeTempPosMaster(), item); - // employeeTempPosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.current_holderId = item.current_holderId; - // } else { - // // employeeTempPosMaster.next_holderId = null; - // employeeTempPosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.authRoleId = item.authRoleId; - // } else { - // employeeTempPosMaster.authRoleId = null; - // } - // // employeeTempPosMaster.current_holderId = null; - // employeeTempPosMaster.orgRevisionId = revision.id; - // employeeTempPosMaster.orgRootId = data.id; - // employeeTempPosMaster.orgChild1Id = data1.id; - // employeeTempPosMaster.createdUserId = request.user.sub; - // employeeTempPosMaster.createdFullName = request.user.name; - // employeeTempPosMaster.createdAt = new Date(); - // employeeTempPosMaster.lastUpdateUserId = request.user.sub; - // employeeTempPosMaster.lastUpdateFullName = request.user.name; - // employeeTempPosMaster.lastUpdatedAt = new Date(); - // await this.employeeTempPosMasterRepository.save(employeeTempPosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterTempId = employeeTempPosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - } - - //create org - _orgChild2 - .filter((x: OrgChild2) => x.orgChild1Id == data1Id) - .forEach(async (x: any) => { - var data2Id = x.id; - delete x.id; - const data2 = Object.assign(new OrgChild2(), x); - data2.orgChild1Id = data1.id; - data2.orgRootId = data.id; - data2.orgRevisionId = revision.id; - data2.createdUserId = request.user.sub; - data2.createdFullName = request.user.name; - data2.createdAt = new Date(); - data2.lastUpdateUserId = request.user.sub; - data2.lastUpdateFullName = request.user.name; - data2.lastUpdatedAt = new Date(); - await this.child2Repository.save(data2); - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - //create posmaster - await Promise.all( - _orgPosMaster - .filter((x: PosMaster) => x.orgChild2Id == data2Id && x.orgChild3Id == null) - .map(async (item: any) => { - delete item.id; - const posMaster = Object.assign(new PosMaster(), item); - posMaster.positions = []; - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - posMaster.next_holderId = item.current_holderId; - } else { - posMaster.next_holderId = null; - posMaster.isSit = false; - } - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - posMaster.authRoleId = item.authRoleId; - } else { - posMaster.authRoleId = null; - } - posMaster.current_holderId = null; - posMaster.orgRevisionId = revision.id; - posMaster.orgRootId = data.id; - posMaster.orgChild1Id = data1.id; - posMaster.orgChild2Id = data2.id; - posMaster.createdUserId = request.user.sub; - posMaster.createdFullName = request.user.name; - posMaster.createdAt = new Date(); - posMaster.lastUpdateUserId = request.user.sub; - posMaster.lastUpdateFullName = request.user.name; - posMaster.lastUpdatedAt = new Date(); - await this.posMasterRepository.save(posMaster); - - //copy มอบหมาย - item.posMasterAssigns = item.posMasterAssigns.map( - ({ id, ...rest }: PosMasterAssign) => ({ - rest, - posMasterId: posMaster.id, - }), - ); - posMaster.posMasterAssigns = item.posMasterAssigns; - - //create position - item.positions.map(async (pos: any) => { - delete pos.id; - const position = Object.assign(new Position(), pos); - position.posMasterId = posMaster.id; - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - ) { - position.positionIsSelected = false; - } - position.createdUserId = request.user.sub; - position.createdFullName = request.user.name; - position.createdAt = new Date(); - position.lastUpdateUserId = request.user.sub; - position.lastUpdateFullName = request.user.name; - position.lastUpdatedAt = new Date(); - await this.positionRepository.save(position); - }); - }), - ); - // //create employeePosmaster - // await Promise.all( - // _orgemployeePosMaster - // .filter( - // (x: EmployeePosMaster) => x.orgChild2Id == data2Id && x.orgChild3Id == null, - // ) - // .map(async (item: any) => { - // delete item.id; - // const employeePosMaster = Object.assign(new EmployeePosMaster(), item); - // employeePosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.current_holderId = item.current_holderId; - // } else { - // // employeePosMaster.next_holderId = null; - // employeePosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.authRoleId = item.authRoleId; - // } else { - // employeePosMaster.authRoleId = null; - // } - // // employeePosMaster.current_holderId = null; - // employeePosMaster.orgRevisionId = revision.id; - // employeePosMaster.orgRootId = data.id; - // employeePosMaster.orgChild1Id = data1.id; - // employeePosMaster.orgChild2Id = data2.id; - // employeePosMaster.createdUserId = request.user.sub; - // employeePosMaster.createdFullName = request.user.name; - // employeePosMaster.createdAt = new Date(); - // employeePosMaster.lastUpdateUserId = request.user.sub; - // employeePosMaster.lastUpdateFullName = request.user.name; - // employeePosMaster.lastUpdatedAt = new Date(); - // await this.employeePosMasterRepository.save(employeePosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterId = employeePosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - // // create employeeTempPosmaster - // await Promise.all( - // _orgemployeeTempPosMaster - // .filter( - // (x: EmployeeTempPosMaster) => - // x.orgChild2Id == data2Id && x.orgChild3Id == null, - // ) - // .map(async (item: any) => { - // delete item.id; - // const employeeTempPosMaster = Object.assign( - // new EmployeeTempPosMaster(), - // item, - // ); - // employeeTempPosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.current_holderId = item.current_holderId; - // } else { - // // employeeTempPosMaster.next_holderId = null; - // employeeTempPosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.authRoleId = item.authRoleId; - // } else { - // employeeTempPosMaster.authRoleId = null; - // } - // // employeeTempPosMaster.current_holderId = null; - // employeeTempPosMaster.orgRevisionId = revision.id; - // employeeTempPosMaster.orgRootId = data.id; - // employeeTempPosMaster.orgChild1Id = data1.id; - // employeeTempPosMaster.orgChild2Id = data2.id; - // employeeTempPosMaster.createdUserId = request.user.sub; - // employeeTempPosMaster.createdFullName = request.user.name; - // employeeTempPosMaster.createdAt = new Date(); - // employeeTempPosMaster.lastUpdateUserId = request.user.sub; - // employeeTempPosMaster.lastUpdateFullName = request.user.name; - // employeeTempPosMaster.lastUpdatedAt = new Date(); - // await this.employeeTempPosMasterRepository.save(employeeTempPosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterTempId = employeeTempPosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - } - - //create org - _orgChild3 - .filter((x: OrgChild3) => x.orgChild2Id == data2Id) - .forEach(async (x: any) => { - var data3Id = x.id; - delete x.id; - const data3 = Object.assign(new OrgChild3(), x); - data3.orgChild2Id = data2.id; - data3.orgChild1Id = data1.id; - data3.orgRootId = data.id; - data3.orgRevisionId = revision.id; - data3.createdUserId = request.user.sub; - data3.createdFullName = request.user.name; - data3.createdAt = new Date(); - data3.lastUpdateUserId = request.user.sub; - data3.lastUpdateFullName = request.user.name; - data3.lastUpdatedAt = new Date(); - await this.child3Repository.save(data3); - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - //create posmaster - await Promise.all( - _orgPosMaster - .filter( - (x: PosMaster) => x.orgChild3Id == data3Id && x.orgChild4Id == null, - ) - .map(async (item: any) => { - delete item.id; - const posMaster = Object.assign(new PosMaster(), item); - posMaster.positions = []; - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - posMaster.next_holderId = item.current_holderId; - } else { - posMaster.next_holderId = null; - posMaster.isSit = false; - } - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - posMaster.authRoleId = item.authRoleId; - } else { - posMaster.authRoleId = null; - } - posMaster.current_holderId = null; - posMaster.orgRevisionId = revision.id; - posMaster.orgRootId = data.id; - posMaster.orgChild1Id = data1.id; - posMaster.orgChild2Id = data2.id; - posMaster.orgChild3Id = data3.id; - posMaster.createdUserId = request.user.sub; - posMaster.createdFullName = request.user.name; - posMaster.createdAt = new Date(); - posMaster.lastUpdateUserId = request.user.sub; - posMaster.lastUpdateFullName = request.user.name; - posMaster.lastUpdatedAt = new Date(); - await this.posMasterRepository.save(posMaster); - - //copy มอบหมาย - item.posMasterAssigns = item.posMasterAssigns.map( - ({ id, ...rest }: PosMasterAssign) => ({ - rest, - posMasterId: posMaster.id, - }), - ); - posMaster.posMasterAssigns = item.posMasterAssigns; - - //create position - item.positions.map(async (pos: any) => { - delete pos.id; - const position = Object.assign(new Position(), pos); - position.posMasterId = posMaster.id; - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - ) { - position.positionIsSelected = false; - } - position.createdUserId = request.user.sub; - position.createdFullName = request.user.name; - position.createdAt = new Date(); - position.lastUpdateUserId = request.user.sub; - position.lastUpdateFullName = request.user.name; - position.lastUpdatedAt = new Date(); - await this.positionRepository.save(position); - }); - }), - ); - // //create employeePosmaster - // await Promise.all( - // _orgemployeePosMaster - // .filter( - // (x: EmployeePosMaster) => - // x.orgChild3Id == data3Id && x.orgChild4Id == null, - // ) - // .map(async (item: any) => { - // delete item.id; - // const employeePosMaster = Object.assign(new EmployeePosMaster(), item); - // employeePosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.current_holderId = item.current_holderId; - // } else { - // // employeePosMaster.next_holderId = null; - // employeePosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.authRoleId = item.authRoleId; - // } else { - // employeePosMaster.authRoleId = null; - // } - // // employeePosMaster.current_holderId = null; - // employeePosMaster.orgRevisionId = revision.id; - // employeePosMaster.orgRootId = data.id; - // employeePosMaster.orgChild1Id = data1.id; - // employeePosMaster.orgChild2Id = data2.id; - // employeePosMaster.orgChild3Id = data3.id; - // employeePosMaster.createdUserId = request.user.sub; - // employeePosMaster.createdFullName = request.user.name; - // employeePosMaster.createdAt = new Date(); - // employeePosMaster.lastUpdateUserId = request.user.sub; - // employeePosMaster.lastUpdateFullName = request.user.name; - // employeePosMaster.lastUpdatedAt = new Date(); - // await this.employeePosMasterRepository.save(employeePosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterId = employeePosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - // // create employeeTempPosmaster - // await Promise.all( - // _orgemployeeTempPosMaster - // .filter( - // (x: EmployeeTempPosMaster) => - // x.orgChild3Id == data3Id && x.orgChild4Id == null, - // ) - // .map(async (item: any) => { - // delete item.id; - // const employeeTempPosMaster = Object.assign( - // new EmployeeTempPosMaster(), - // item, - // ); - // employeeTempPosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.current_holderId = item.current_holderId; - // } else { - // // employeeTempPosMaster.next_holderId = null; - // employeeTempPosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.authRoleId = item.authRoleId; - // } else { - // employeeTempPosMaster.authRoleId = null; - // } - // // employeeTempPosMaster.current_holderId = null; - // employeeTempPosMaster.orgRevisionId = revision.id; - // employeeTempPosMaster.orgRootId = data.id; - // employeeTempPosMaster.orgChild1Id = data1.id; - // employeeTempPosMaster.orgChild2Id = data2.id; - // employeeTempPosMaster.orgChild3Id = data3.id; - // employeeTempPosMaster.createdUserId = request.user.sub; - // employeeTempPosMaster.createdFullName = request.user.name; - // employeeTempPosMaster.createdAt = new Date(); - // employeeTempPosMaster.lastUpdateUserId = request.user.sub; - // employeeTempPosMaster.lastUpdateFullName = request.user.name; - // employeeTempPosMaster.lastUpdatedAt = new Date(); - // await this.employeeTempPosMasterRepository.save(employeeTempPosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterTempId = employeeTempPosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); } - - //create org - _orgChild4 - .filter((x: OrgChild4) => x.orgChild3Id == data3Id) - .forEach(async (x: any) => { - var data4Id = x.id; - delete x.id; - const data4 = Object.assign(new OrgChild4(), x); - data4.orgChild3Id = data3.id; - data4.orgChild2Id = data2.id; - data4.orgChild1Id = data1.id; - data4.orgRootId = data.id; - data4.orgRevisionId = revision.id; - data4.createdUserId = request.user.sub; - data4.createdFullName = request.user.name; - data4.createdAt = new Date(); - data4.lastUpdateUserId = request.user.sub; - data4.lastUpdateFullName = request.user.name; - data4.lastUpdatedAt = new Date(); - await this.child4Repository.save(data4); - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - //create posmaster - await Promise.all( - _orgPosMaster - .filter((x: PosMaster) => x.orgChild4Id == data4Id) - .map(async (item: any) => { - delete item.id; - const posMaster = Object.assign(new PosMaster(), item); - posMaster.positions = []; - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - posMaster.next_holderId = item.current_holderId; - } else { - posMaster.next_holderId = null; - posMaster.isSit = false; - } - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - ) { - posMaster.authRoleId = item.authRoleId; - } else { - posMaster.authRoleId = null; - } - posMaster.current_holderId = null; - posMaster.orgRevisionId = revision.id; - posMaster.orgRootId = data.id; - posMaster.orgChild1Id = data1.id; - posMaster.orgChild2Id = data2.id; - posMaster.orgChild3Id = data3.id; - posMaster.orgChild4Id = data4.id; - posMaster.createdUserId = request.user.sub; - posMaster.createdFullName = request.user.name; - posMaster.createdAt = new Date(); - posMaster.lastUpdateUserId = request.user.sub; - posMaster.lastUpdateFullName = request.user.name; - posMaster.lastUpdatedAt = new Date(); - await this.posMasterRepository.save(posMaster); - - //copy มอบหมาย - item.posMasterAssigns = item.posMasterAssigns.map( - ({ id, ...rest }: PosMasterAssign) => ({ - rest, - posMasterId: posMaster.id, - }), - ); - posMaster.posMasterAssigns = item.posMasterAssigns; - - //create position - item.positions.map(async (pos: any) => { - delete pos.id; - const position = Object.assign(new Position(), pos); - position.posMasterId = posMaster.id; - if ( - requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - ) { - position.positionIsSelected = false; - } - position.createdUserId = request.user.sub; - position.createdFullName = request.user.name; - position.createdAt = new Date(); - position.lastUpdateUserId = request.user.sub; - position.lastUpdateFullName = request.user.name; - position.lastUpdatedAt = new Date(); - await this.positionRepository.save(position); - }); - }), - ); - // //create employeePosmaster - // await Promise.all( - // _orgemployeePosMaster - // .filter((x: EmployeePosMaster) => x.orgChild4Id == data4Id) - // .map(async (item: any) => { - // delete item.id; - // const employeePosMaster = Object.assign( - // new EmployeePosMaster(), - // item, - // ); - // employeePosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.current_holderId = item.current_holderId; - // } else { - // // employeePosMaster.next_holderId = null; - // employeePosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeePosMaster.authRoleId = item.authRoleId; - // } else { - // employeePosMaster.authRoleId = null; - // } - // // employeePosMaster.current_holderId = null; - // employeePosMaster.orgRevisionId = revision.id; - // employeePosMaster.orgRootId = data.id; - // employeePosMaster.orgChild1Id = data1.id; - // employeePosMaster.orgChild2Id = data2.id; - // employeePosMaster.orgChild3Id = data3.id; - // employeePosMaster.orgChild4Id = data4.id; - // employeePosMaster.createdUserId = request.user.sub; - // employeePosMaster.createdFullName = request.user.name; - // employeePosMaster.createdAt = new Date(); - // employeePosMaster.lastUpdateUserId = request.user.sub; - // employeePosMaster.lastUpdateFullName = request.user.name; - // employeePosMaster.lastUpdatedAt = new Date(); - // await this.employeePosMasterRepository.save(employeePosMaster); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterId = employeePosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - // //create employeeTempPosmaster - // await Promise.all( - // _orgemployeeTempPosMaster - // .filter((x: EmployeeTempPosMaster) => x.orgChild4Id == data4Id) - // .map(async (item: any) => { - // delete item.id; - // const employeeTempPosMaster = Object.assign( - // new EmployeeTempPosMaster(), - // item, - // ); - // employeeTempPosMaster.positions = []; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.current_holderId = item.current_holderId; - // } else { - // // employeeTempPosMaster.next_holderId = null; - // employeeTempPosMaster.isSit = false; - // } - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_PERSON_ROLE" - // ) { - // employeeTempPosMaster.authRoleId = item.authRoleId; - // } else { - // employeeTempPosMaster.authRoleId = null; - // } - // // employeeTempPosMaster.current_holderId = null; - // employeeTempPosMaster.orgRevisionId = revision.id; - // employeeTempPosMaster.orgRootId = data.id; - // employeeTempPosMaster.orgChild1Id = data1.id; - // employeeTempPosMaster.orgChild2Id = data2.id; - // employeeTempPosMaster.orgChild3Id = data3.id; - // employeeTempPosMaster.orgChild4Id = data4.id; - // employeeTempPosMaster.createdUserId = request.user.sub; - // employeeTempPosMaster.createdFullName = request.user.name; - // employeeTempPosMaster.createdAt = new Date(); - // employeeTempPosMaster.lastUpdateUserId = request.user.sub; - // employeeTempPosMaster.lastUpdateFullName = request.user.name; - // employeeTempPosMaster.lastUpdatedAt = new Date(); - // await this.employeeTempPosMasterRepository.save( - // employeeTempPosMaster, - // ); - - // //create employeePosition - // item.positions.map(async (pos: any) => { - // delete pos.id; - // const employeePosition: EmployeePosition = Object.assign( - // new EmployeePosition(), - // pos, - // ); - // employeePosition.posMasterTempId = employeeTempPosMaster.id; - // if ( - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION" || - // requestBody.typeDraft.toUpperCase() == "ORG_POSITION_ROLE" - // ) { - // employeePosition.positionIsSelected = false; - // } - // employeePosition.createdUserId = request.user.sub; - // employeePosition.createdFullName = request.user.name; - // employeePosition.createdAt = new Date(); - // employeePosition.lastUpdateUserId = request.user.sub; - // employeePosition.lastUpdateFullName = request.user.name; - // employeePosition.lastUpdatedAt = new Date(); - // await this.employeePositionRepository.save(employeePosition); - // }); - // }), - // ); - } - }); - }); - }); - }); - }); + } + } + } + } + } + } + } } const _orgRevisions = await this.orgRevisionRepository.find({