diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index 994b7b29..2ee7e25a 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -288,52 +288,178 @@ export class OrganizationController extends Controller { */ @Get("{id}") async detail(@Path() id: string) { - try { - - const orgRevisionData = await AppDataSource.getRepository(OrgRevision) - .createQueryBuilder("orgRevision") - // .leftJoin("orgRevision.orgRoots", "orgRoot") - // .leftJoin("orgRoot.orgChild1s", "orgChild1") - // .leftJoin("orgChild1.orgChild2s", "orgChild2") - // .leftJoin("orgChild2.orgChild3s", "orgChild3") - // .leftJoin("orgChild3.orgChild4s", "orgChild4") - .where("orgRevision.id = :id", { id }) - // .select([ - // "orgRoot.id", - // "orgRoot.orgRootName", - // "orgRoot.orgRootShortName", - // "orgRoot.orgRootCode", - // "orgRoot.orgRootOrder", + const orgRootData = await AppDataSource.getRepository(OrgRoot) + .createQueryBuilder("orgRoot") + .where("orgRoot.orgRevisionId = :id", { id }) + .select([ + "orgRoot.id", + "orgRoot.orgRootName", + "orgRoot.orgRootShortName", + "orgRoot.orgRootCode", + "orgRoot.orgRootOrder", + "orgRoot.orgRootPhoneEx", + "orgRoot.orgRootPhoneIn", + "orgRoot.orgRootFax", + "orgRoot.orgRevisionId", + ]) + .getMany(); - // "orgChild1.id", - // "orgChild1.orgChild1Name", - // "orgChild1.orgChild1ShortName", - // "orgChild1.orgChild1Code", - // "orgChild1.orgChild1Order", + const orgRootIds = orgRootData.map((orgRoot) => orgRoot.id); + const orgChild1Data = await AppDataSource.getRepository(OrgChild1) + .createQueryBuilder("orgChild1") + .where("orgChild1.orgRootId IN (:...ids)", { ids: orgRootIds }) + .select([ + "orgChild1.id", + "orgChild1.orgChild1Name", + "orgChild1.orgChild1ShortName", + "orgChild1.orgChild1Code", + "orgChild1.orgChild1Order", + "orgChild1.orgChild1PhoneEx", + "orgChild1.orgChild1PhoneIn", + "orgChild1.orgChild1Fax", + "orgChild1.orgRootId", + ]) + .getMany(); - // "orgChild2.id", - // "orgChild2.orgChild2Name", - // "orgChild2.orgChild2ShortName", - // "orgChild2.orgChild2Code", - // "orgChild2.orgChild2Order", + const orgChild1Ids = orgChild1Data.map((orgChild1) => orgChild1.id); + const orgChild2Data = await AppDataSource.getRepository(OrgChild2) + .createQueryBuilder("orgChild2") + .where("orgChild2.orgChild1Id IN (:...ids)", { ids: orgChild1Ids }) + .select([ + "orgChild2.id", + "orgChild2.orgChild2Name", + "orgChild2.orgChild2ShortName", + "orgChild2.orgChild2Code", + "orgChild2.orgChild2Order", + "orgChild2.orgChild2PhoneEx", + "orgChild2.orgChild2PhoneIn", + "orgChild2.orgChild2Fax", + "orgChild2.orgRootId", - // "orgChild3.id", - // "orgChild3.orgChild3Name", - // "orgChild3.orgChild3ShortName", - // "orgChild3.orgChild3Code", - // "orgChild3.orgChild3Order", + "orgChild2.orgChild1Id", + ]) + .getMany(); - // "orgChild4.id", - // "orgChild4.orgChild4Name", - // "orgChild4.orgChild4ShortName", - // "orgChild4.orgChild4Code", - // "orgChild4.orgChild4Order", - // ]) - .getOne(); + const orgChild2Ids = orgChild2Data.map((orgChild2) => orgChild2.id); + const orgChild3Data = await AppDataSource.getRepository(OrgChild3) + .createQueryBuilder("orgChild3") + .where("orgChild3.orgChild2Id IN (:...ids)", { ids: orgChild2Ids }) + .select([ + "orgChild3.id", + "orgChild3.orgChild3Name", + "orgChild3.orgChild3ShortName", + "orgChild3.orgChild3Code", + "orgChild3.orgChild3Order", + "orgChild3.orgChild3PhoneEx", + "orgChild3.orgChild3PhoneIn", + "orgChild3.orgChild3Fax", + "orgChild3.orgRootId", - - return new HttpSuccess(orgRevisionData); + "orgChild3.orgChild2Id", + ]) + .getMany(); + + const orgChild3Ids = orgChild3Data.map((orgChild3) => orgChild3.id); + const orgChild4Data = await AppDataSource.getRepository(OrgChild4) + .createQueryBuilder("orgChild4") + .where("orgChild4.orgChild3Id IN (:...ids)", { ids: orgChild3Ids }) + .select([ + "orgChild4.id", + "orgChild4.orgChild4Name", + "orgChild4.orgChild4ShortName", + "orgChild4.orgChild4Code", + "orgChild4.orgChild4Order", + "orgChild4.orgChild4PhoneEx", + "orgChild4.orgChild4PhoneIn", + "orgChild4.orgChild4Fax", + "orgChild4.orgRootId", + + "orgChild4.orgChild3Id", + ]) + .getMany(); + + const formattedData = orgRootData.map((orgRoot) => { + return { + orgRootId: orgRoot.id, + orgLevel: 0, + orgRootName: orgRoot.orgRootName, + orgRootShortName: orgRoot.orgRootShortName, + orgRootCode: orgRoot.orgRootCode, + orgCode: orgRoot.orgRootCode + "00", + orgRootOrder: orgRoot.orgRootOrder, + orgRootPhoneEx: orgRoot.orgRootPhoneEx, + orgRootPhoneIn: orgRoot.orgRootPhoneIn, + orgRootFax: orgRoot.orgRootFax, + orgRevisionId: orgRoot.orgRevisionId, + orgChild1: orgChild1Data + .filter((orgChild1) => orgChild1.orgRootId === orgRoot.id) + .map((orgChild1) => ({ + orgChild1Id: orgChild1.id, + orgLevel: 1, + orgChild1Name: orgChild1.orgChild1Name, + orgChild1ShortName: orgChild1.orgChild1ShortName, + orgChild1Code: orgChild1.orgChild1Code, + orgCode: orgRoot.orgRootCode + orgChild1.orgChild1Code, + orgChild1Order: orgChild1.orgChild1Order, + orgRootCode: orgRoot.orgRootCode, + orgChild1PhoneEx: orgChild1.orgChild1PhoneEx, + orgChild1PhoneIn: orgChild1.orgChild1PhoneIn, + orgChild1Fax: orgChild1.orgChild1Fax, + orgRevisionId: orgRoot.orgRevisionId, + orgChild2: orgChild2Data + .filter((orgChild2) => orgChild2.orgChild1Id === orgChild1.id) + .map((orgChild2) => ({ + orgChild2Id: orgChild2.id, + orgLevel: 2, + orgChild2Name: orgChild2.orgChild2Name, + orgChild2ShortName: orgChild2.orgChild2ShortName, + orgChild2Code: orgChild2.orgChild2Code, + orgCode: orgRoot.orgRootCode + orgChild2.orgChild2Code, + orgChild2Order: orgChild2.orgChild2Order, + orgRootCode: orgRoot.orgRootCode, + orgChild2PhoneEx: orgChild2.orgChild2PhoneEx, + orgChild2PhoneIn: orgChild2.orgChild2PhoneIn, + orgChild2Fax: orgChild2.orgChild2Fax, + orgRevisionId: orgRoot.orgRevisionId, + orgChild3: orgChild3Data + .filter((orgChild3) => orgChild3.orgChild2Id === orgChild2.id) + .map((orgChild3) => ({ + orgChild3Id: orgChild3.id, + orgLevel: 3, + orgChild3Name: orgChild3.orgChild3Name, + orgChild3ShortName: orgChild3.orgChild3ShortName, + orgChild3Code: orgChild3.orgChild3Code, + orgCode: orgRoot.orgRootCode + orgChild3.orgChild3Code, + orgChild3Order: orgChild3.orgChild3Order, + orgRootCode: orgRoot.orgRootCode, + orgChild3PhoneEx: orgChild3.orgChild3PhoneEx, + orgChild3PhoneIn: orgChild3.orgChild3PhoneIn, + orgChild3Fax: orgChild3.orgChild3Fax, + orgRevisionId: orgRoot.orgRevisionId, + orgChild4: orgChild4Data + .filter((orgChild4) => orgChild4.orgChild3Id === orgChild3.id) + .map((orgChild4) => ({ + orgChild4Id: orgChild4.id, + orgLevel: 4, + orgChild4Name: orgChild4.orgChild4Name, + orgChild4ShortName: orgChild4.orgChild4ShortName, + orgChild4Code: orgChild4.orgChild4Code, + orgCode: orgRoot.orgRootCode + orgChild4.orgChild4Code, + orgChild4Order: orgChild4.orgChild4Order, + orgRootCode: orgRoot.orgRootCode, + orgChild4PhoneEx: orgChild4.orgChild4PhoneEx, + orgChild4PhoneIn: orgChild4.orgChild4PhoneIn, + orgChild4Fax: orgChild4.orgChild4Fax, + orgRevisionId: orgRoot.orgRevisionId, + })), + })), + })), + })), + }; + }); + + return new HttpSuccess(formattedData); } catch (error) { return error; }