diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index f53ed9d3..773e7799 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -773,165 +773,237 @@ export class PositionController extends Controller { posMaster.posMasterNoPrefix = requestBody.posMasterNoPrefix; posMaster.posMasterNoSuffix = requestBody.posMasterNoSuffix; posMaster.reason = requestBody.reason == null ? "" : requestBody.reason; - posMaster.orgRootId = null; - posMaster.orgChild1Id = null; - posMaster.orgChild2Id = null; - posMaster.orgChild3Id = null; - posMaster.orgChild4Id = null; + // posMaster.orgRootId = null; + // posMaster.orgChild1Id = null; + // posMaster.orgChild2Id = null; + // posMaster.orgChild3Id = null; + // posMaster.orgChild4Id = null; - let orgRoot: any = null; - let SName: any = null; - if (requestBody.orgRootId != null) - orgRoot = await this.orgRootRepository.findOne({ - where: { id: requestBody.orgRootId }, + // let orgRoot: any = null; + // let SName: any = null; + // if (requestBody.orgRootId != null) + // orgRoot = await this.orgRootRepository.findOne({ + // where: { id: requestBody.orgRootId }, + // }); + // if (!orgRoot) { + // let orgChild1: any = null; + // if (requestBody.orgChild1Id != null) + // orgChild1 = await this.child1Repository.findOne({ + // where: { id: requestBody.orgChild1Id }, + // }); + // if (!orgChild1) { + // let orgChild2: any = null; + // if (requestBody.orgChild2Id != null) + // orgChild2 = await this.child2Repository.findOne({ + // where: { id: requestBody.orgChild2Id }, + // }); + // if (!orgChild2) { + // let orgChild3: any = null; + // if (requestBody.orgChild3Id != null) + // orgChild3 = await this.child3Repository.findOne({ + // where: { id: requestBody.orgChild3Id }, + // }); + // if (!orgChild3) { + // let orgChild4: any = null; + // if (requestBody.orgChild4Id != null) + // orgChild4 = await this.child4Repository.findOne({ + // where: { id: requestBody.orgChild4Id }, + // }); + // if (!orgChild4) { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้าง"); + // } else { + // posMaster.orgRootId = orgChild4.orgRootId; + // posMaster.orgChild1Id = orgChild4.orgChild1Id; + // posMaster.orgChild2Id = orgChild4.orgChild2Id; + // posMaster.orgChild3Id = orgChild4.orgChild3Id; + // posMaster.orgChild4Id = orgChild4.id; + // posMaster.orgRevisionId = orgChild4.orgRevisionId; + // SName = orgChild4.orgChild4ShortName; + // } + // } else { + // posMaster.orgRootId = orgChild3.orgRootId; + // posMaster.orgChild1Id = orgChild3.orgChild1Id; + // posMaster.orgChild2Id = orgChild3.orgChild2Id; + // posMaster.orgChild3Id = orgChild3.id; + // posMaster.orgRevisionId = orgChild3.orgRevisionId; + // SName = orgChild3.orgChild3ShortName; + // } + // } else { + // posMaster.orgRootId = orgChild2.orgRootId; + // posMaster.orgChild1Id = orgChild2.orgChild1Id; + // posMaster.orgChild2Id = orgChild2.id; + // posMaster.orgRevisionId = orgChild2.orgRevisionId; + // SName = orgChild2.orgChild2ShortName; + // } + // } else { + // posMaster.orgRootId = orgChild1.orgRootId; + // posMaster.orgChild1Id = orgChild1.id; + // posMaster.orgRevisionId = orgChild1.orgRevisionId; + // SName = orgChild1.orgChild1ShortName; + // } + // } else { + // posMaster.orgRootId = orgRoot.id; + // posMaster.orgRevisionId = orgRoot.orgRevisionId; + // SName = orgRoot.orgRootShortName; + // } + + if (posMaster.orgChild4Id != null) { + const chk_SName4 = await this.posMasterRepository.findOne({ + where: { + orgChild4Id: posMaster.orgChild4Id, + posMasterNo: requestBody.posMasterNo, + id: Not(posMaster.id), + }, }); - if (!orgRoot) { - let orgChild1: any = null; - if (requestBody.orgChild1Id != null) - orgChild1 = await this.child1Repository.findOne({ - where: { id: requestBody.orgChild1Id }, - }); - if (!orgChild1) { - let orgChild2: any = null; - if (requestBody.orgChild2Id != null) - orgChild2 = await this.child2Repository.findOne({ - where: { id: requestBody.orgChild2Id }, - }); - if (!orgChild2) { - let orgChild3: any = null; - if (requestBody.orgChild3Id != null) - orgChild3 = await this.child3Repository.findOne({ - where: { id: requestBody.orgChild3Id }, - }); - if (!orgChild3) { - let orgChild4: any = null; - if (requestBody.orgChild4Id != null) - orgChild4 = await this.child4Repository.findOne({ - where: { id: requestBody.orgChild4Id }, - }); - if (!orgChild4) { - throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้าง"); - } else { - posMaster.orgRootId = orgChild4.orgRootId; - posMaster.orgChild1Id = orgChild4.orgChild1Id; - posMaster.orgChild2Id = orgChild4.orgChild2Id; - posMaster.orgChild3Id = orgChild4.orgChild3Id; - posMaster.orgChild4Id = orgChild4.id; - posMaster.orgRevisionId = orgChild4.orgRevisionId; - SName = orgChild4.orgChild4ShortName; - } - } else { - posMaster.orgRootId = orgChild3.orgRootId; - posMaster.orgChild1Id = orgChild3.orgChild1Id; - posMaster.orgChild2Id = orgChild3.orgChild2Id; - posMaster.orgChild3Id = orgChild3.id; - posMaster.orgRevisionId = orgChild3.orgRevisionId; - SName = orgChild3.orgChild3ShortName; - } - } else { - posMaster.orgRootId = orgChild2.orgRootId; - posMaster.orgChild1Id = orgChild2.orgChild1Id; - posMaster.orgChild2Id = orgChild2.id; - posMaster.orgRevisionId = orgChild2.orgRevisionId; - SName = orgChild2.orgChild2ShortName; - } - } else { - posMaster.orgRootId = orgChild1.orgRootId; - posMaster.orgChild1Id = orgChild1.id; - posMaster.orgRevisionId = orgChild1.orgRevisionId; - SName = orgChild1.orgChild1ShortName; + if (chk_SName4 != null) { + throw new HttpError( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + ); + } + } else if (posMaster.orgChild3Id != null) { + const chk_SName3 = await this.posMasterRepository.findOne({ + where: { + orgChild3Id: posMaster.orgChild3Id, + posMasterNo: requestBody.posMasterNo, + id: Not(posMaster.id), + }, + }); + if (chk_SName3 != null) { + throw new HttpError( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + ); + } + } else if (posMaster.orgChild2Id != null) { + const chk_SName2 = await this.posMasterRepository.findOne({ + where: { + orgChild2Id: posMaster.orgChild2Id, + posMasterNo: requestBody.posMasterNo, + id: Not(posMaster.id), + }, + }); + if (chk_SName2 != null) { + throw new HttpError( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + ); + } + } else if (posMaster.orgChild1Id != null) { + const chk_SName1 = await this.posMasterRepository.findOne({ + where: { + orgChild1Id: posMaster.orgChild1Id, + posMasterNo: requestBody.posMasterNo, + id: Not(posMaster.id), + }, + }); + if (chk_SName1 != null) { + throw new HttpError( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + ); + } + } else if (posMaster.orgRootId != null) { + const chk_SName0 = await this.posMasterRepository.findOne({ + where: { + orgRootId: posMaster.orgRootId, + posMasterNo: requestBody.posMasterNo, + id: Not(posMaster.id), + }, + }); + if (chk_SName0 != null) { + throw new HttpError( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + ); } - } else { - posMaster.orgRootId = orgRoot.id; - posMaster.orgRevisionId = orgRoot.orgRevisionId; - SName = orgRoot.orgRootShortName; } - const chk_SName0 = await this.posMasterRepository.findOne({ - where: { - orgRevisionId: posMaster.orgRevisionId, - orgRoot: { orgRootShortName: SName }, - orgChild1Id: IsNull(), - posMasterNo: requestBody.posMasterNo, - id: Not(posMaster.id), - }, - relations: ["orgRoot"], - }); - if (chk_SName0 != null) { - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", - ); - } + // const chk_SName0 = await this.posMasterRepository.findOne({ + // where: { + // orgRevisionId: posMaster.orgRevisionId, + // orgRoot: { orgRootShortName: SName }, + // orgChild1Id: IsNull(), + // posMasterNo: requestBody.posMasterNo, + // id: Not(posMaster.id), + // }, + // relations: ["orgRoot"], + // }); + // if (chk_SName0 != null) { + // throw new HttpError( + // HttpStatusCode.INTERNAL_SERVER_ERROR, + // "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + // ); + // } - const chk_SName1 = await this.posMasterRepository.findOne({ - where: { - orgRevisionId: posMaster.orgRevisionId, - orgChild1: { orgChild1ShortName: SName }, - orgChild2Id: IsNull(), - posMasterNo: requestBody.posMasterNo, - id: Not(posMaster.id), - }, - relations: ["orgChild1"], - }); - if (chk_SName1 != null) { - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", - ); - } + // const chk_SName1 = await this.posMasterRepository.findOne({ + // where: { + // orgRevisionId: posMaster.orgRevisionId, + // orgChild1: { orgChild1ShortName: SName }, + // orgChild2Id: IsNull(), + // posMasterNo: requestBody.posMasterNo, + // id: Not(posMaster.id), + // }, + // relations: ["orgChild1"], + // }); + // if (chk_SName1 != null) { + // throw new HttpError( + // HttpStatusCode.INTERNAL_SERVER_ERROR, + // "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + // ); + // } - const chk_SName2 = await this.posMasterRepository.findOne({ - where: { - orgRevisionId: posMaster.orgRevisionId, - orgChild2: { orgChild2ShortName: SName }, - orgChild3Id: IsNull(), - posMasterNo: requestBody.posMasterNo, - id: Not(posMaster.id), - }, - relations: ["orgChild2"], - }); - if (chk_SName2 != null) { - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", - ); - } + // const chk_SName2 = await this.posMasterRepository.findOne({ + // where: { + // orgRevisionId: posMaster.orgRevisionId, + // orgChild2: { orgChild2ShortName: SName }, + // orgChild3Id: IsNull(), + // posMasterNo: requestBody.posMasterNo, + // id: Not(posMaster.id), + // }, + // relations: ["orgChild2"], + // }); + // if (chk_SName2 != null) { + // throw new HttpError( + // HttpStatusCode.INTERNAL_SERVER_ERROR, + // "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + // ); + // } - const chk_SName3 = await this.posMasterRepository.findOne({ - where: { - orgRevisionId: posMaster.orgRevisionId, - orgChild3: { orgChild3ShortName: SName }, - orgChild4Id: IsNull(), - posMasterNo: requestBody.posMasterNo, - id: Not(posMaster.id), - }, - relations: ["orgChild3"], - }); - if (chk_SName3 != null) { - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", - ); - } + // const chk_SName3 = await this.posMasterRepository.findOne({ + // where: { + // orgRevisionId: posMaster.orgRevisionId, + // orgChild3: { orgChild3ShortName: SName }, + // orgChild4Id: IsNull(), + // posMasterNo: requestBody.posMasterNo, + // id: Not(posMaster.id), + // }, + // relations: ["orgChild3"], + // }); + // if (chk_SName3 != null) { + // throw new HttpError( + // HttpStatusCode.INTERNAL_SERVER_ERROR, + // "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + // ); + // } - const chk_SName4 = await this.posMasterRepository.findOne({ - where: { - orgRevisionId: posMaster.orgRevisionId, - orgChild4: { orgChild4ShortName: SName }, - posMasterNo: requestBody.posMasterNo, - id: Not(posMaster.id), - }, - relations: ["orgChild4"], - }); - if (chk_SName4 != null) { - throw new HttpError( - HttpStatusCode.INTERNAL_SERVER_ERROR, - "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", - ); - } + // const chk_SName4 = await this.posMasterRepository.findOne({ + // where: { + // orgRevisionId: posMaster.orgRevisionId, + // orgChild4: { orgChild4ShortName: SName }, + // posMasterNo: requestBody.posMasterNo, + // id: Not(posMaster.id), + // }, + // relations: ["orgChild4"], + // }); + // if (chk_SName4 != null) { + // throw new HttpError( + // HttpStatusCode.INTERNAL_SERVER_ERROR, + // "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", + // ); + // } - posMaster.createdUserId = request.user.sub; //สงสัยว่าทำให้ bug แก้ไขไม่ได้ + posMaster.createdUserId = request.user.sub; posMaster.createdFullName = request.user.name; posMaster.lastUpdateUserId = request.user.sub; posMaster.lastUpdateFullName = request.user.name; @@ -1631,7 +1703,11 @@ export class PositionController extends Controller { }); if (org != null) { const _posMaster = await this.posMasterRepository.findOne({ - where: { orgRootId: org.id, posMasterNo: posMaster.posMasterNo }, + where: { + orgRootId: org.id, + posMasterNo: posMaster.posMasterNo, + orgChild1Id: IsNull() || "", + }, }); if (_posMaster != null) throw new HttpError( @@ -1660,7 +1736,11 @@ export class PositionController extends Controller { }); if (org != null) { const _posMaster = await this.posMasterRepository.findOne({ - where: { orgChild1Id: org.id, posMasterNo: posMaster.posMasterNo }, + where: { + orgChild1Id: org.id, + posMasterNo: posMaster.posMasterNo, + orgChild2Id: IsNull() || "", + }, }); if (_posMaster != null) throw new HttpError( @@ -1688,7 +1768,11 @@ export class PositionController extends Controller { }); if (org != null) { const _posMaster = await this.posMasterRepository.findOne({ - where: { orgChild2Id: org.id, posMasterNo: posMaster.posMasterNo }, + where: { + orgChild2Id: org.id, + posMasterNo: posMaster.posMasterNo, + orgChild3Id: IsNull() || "", + }, }); if (_posMaster != null) throw new HttpError( @@ -1715,7 +1799,11 @@ export class PositionController extends Controller { }); if (org != null) { const _posMaster = await this.posMasterRepository.findOne({ - where: { orgChild3Id: org.id, posMasterNo: posMaster.posMasterNo }, + where: { + orgChild3Id: org.id, + posMasterNo: posMaster.posMasterNo, + orgChild4Id: IsNull() || "", + }, }); if (_posMaster != null) throw new HttpError( @@ -1737,7 +1825,10 @@ export class PositionController extends Controller { }); if (org != null) { const _posMaster = await this.posMasterRepository.findOne({ - where: { orgChild4Id: org.id, posMasterNo: posMaster.posMasterNo }, + where: { + orgChild4Id: org.id, + posMasterNo: posMaster.posMasterNo, + }, }); if (_posMaster != null) throw new HttpError(