From 0c7c3361f66f91a1b1c342317d8f22f2ca27fc76 Mon Sep 17 00:00:00 2001 From: kittapath Date: Sat, 14 Dec 2024 12:00:45 +0700 Subject: [PATCH] api update profile amount --- src/controllers/PositionController.ts | 545 ++++++++++--------- src/controllers/ProfileController.ts | 25 +- src/controllers/ProfileEmployeeController.ts | 22 + 3 files changed, 319 insertions(+), 273 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 911bf9a6..960fd984 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -562,270 +562,274 @@ export class PositionController extends Controller { @Get("position") async findPosition(@Query("keyword") keyword?: string, @Query("type") type?: string) { let findPosDict: any; - if(keyword && keyword?.length > 0){ - switch (type) { - case "positionName": - findPosDict = await this.posDictRepository.find({ - where: { posDictName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" + if (keyword && keyword?.length > 0) { + switch (type) { + case "positionName": + findPosDict = await this.posDictRepository.find({ + where: { posDictName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" }, + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" - }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - case "positionField": - findPosDict = await this.posDictRepository.find({ - where: { posDictField: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictField: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" + case "positionField": + findPosDict = await this.posDictRepository.find({ + where: { posDictField: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" }, + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictField: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" - }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - case "positionType": - const findTypes: PosType[] = await this.posTypeRepository.find({ - where: { posTypeName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - order: { - // posTypeName: "ASC" - posTypeRank: "ASC", - createdAt: "DESC" - }, - select: ["id"], - }); - findPosDict = await this.posDictRepository.find({ - where: { posTypeId: In(findTypes.map((x) => x.id)) }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ + case "positionType": + const findTypes: PosType[] = await this.posTypeRepository.find({ + where: { posTypeName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" }, + order: { + // posTypeName: "ASC" posTypeRank: "ASC", - createdAt: "DESC" + createdAt: "DESC", }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" + select: ["id"], + }); + findPosDict = await this.posDictRepository.find({ + where: { posTypeId: In(findTypes.map((x) => x.id)) }, + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - case "positionLevel": - const findLevel: PosLevel[] = await this.posLevelRepository.find({ - where: { posLevelName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - order: { - // posLevelName: "ASC" - posLevelRank: "ASC", - createdAt: "DESC" - }, - select: ["id"], - }); - findPosDict = await this.posDictRepository.find({ - where: { posLevelId: In(findLevel.map((x) => x.id)) }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" - }, - posLevel: { + case "positionLevel": + const findLevel: PosLevel[] = await this.posLevelRepository.find({ + where: { posLevelName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" }, + order: { + // posLevelName: "ASC" posLevelRank: "ASC", - createdAt: "DESC" + createdAt: "DESC", }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + select: ["id"], + }); + findPosDict = await this.posDictRepository.find({ + where: { posLevelId: In(findLevel.map((x) => x.id)) }, + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, + }, + }); + break; - case "positionExecutive": - const findExecutive: PosExecutive[] = await this.posExecutiveRepository.find({ - where: { posExecutiveName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - select: ["id"], - }); - findPosDict = await this.posDictRepository.find({ - where: { posExecutiveId: In(findExecutive.map((x) => x.id)) }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" + case "positionExecutive": + const findExecutive: PosExecutive[] = await this.posExecutiveRepository.find({ + where: { + posExecutiveName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1", }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" + select: ["id"], + }); + findPosDict = await this.posDictRepository.find({ + where: { posExecutiveId: In(findExecutive.map((x) => x.id)) }, + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - case "positionExecutiveField": - findPosDict = await this.posDictRepository.find({ - where: { posDictExecutiveField: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" + case "positionExecutiveField": + findPosDict = await this.posDictRepository.find({ + where: { + posDictExecutiveField: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1", }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - case "positionArea": - findPosDict = await this.posDictRepository.find({ - where: { posDictArea: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" + case "positionArea": + findPosDict = await this.posDictRepository.find({ + where: { posDictArea: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" }, + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" - }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - case "ALL": - findPosDict = await this.posDictRepository.find({ - where: [ - { posDictName: Like(`%${keyword}%`) }, - { posDictField: Like(`%${keyword}%`) }, - { - posTypeId: In( - await this.posTypeRepository - .find({ where: { posTypeName: Like(`%${keyword}%`) }, select: ["id"] }) - .then((types) => types.map((type) => type.id)), - ), + case "ALL": + findPosDict = await this.posDictRepository.find({ + where: [ + { posDictName: Like(`%${keyword}%`) }, + { posDictField: Like(`%${keyword}%`) }, + { + posTypeId: In( + await this.posTypeRepository + .find({ where: { posTypeName: Like(`%${keyword}%`) }, select: ["id"] }) + .then((types) => types.map((type) => type.id)), + ), + }, + { + posLevelId: In( + await this.posLevelRepository + .find({ where: { posLevelName: Like(`%${keyword}%`) }, select: ["id"] }) + .then((levels) => levels.map((level) => level.id)), + ), + }, + { + posExecutiveId: In( + await this.posExecutiveRepository + .find({ where: { posExecutiveName: Like(`%${keyword}%`) }, select: ["id"] }) + .then((executives) => executives.map((exec) => exec.id)), + ), + }, + { posDictExecutiveField: Like(`%${keyword}%`) }, + { posDictArea: Like(`%${keyword}%`) }, + ], + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - { - posLevelId: In( - await this.posLevelRepository - .find({ where: { posLevelName: Like(`%${keyword}%`) }, select: ["id"] }) - .then((levels) => levels.map((level) => level.id)), - ), - }, - { - posExecutiveId: In( - await this.posExecutiveRepository - .find({ where: { posExecutiveName: Like(`%${keyword}%`) }, select: ["id"] }) - .then((executives) => executives.map((exec) => exec.id)), - ), - }, - { posDictExecutiveField: Like(`%${keyword}%`) }, - { posDictArea: Like(`%${keyword}%`) }, - ], - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" - }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" - }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; - default: - findPosDict = await this.posDictRepository.find({ - relations: ["posType", "posLevel", "posExecutive"], - order: { - posDictName: "ASC", - createdAt: "DESC", - posType:{ - posTypeRank: "ASC", - createdAt: "DESC" + default: + findPosDict = await this.posDictRepository.find({ + relations: ["posType", "posLevel", "posExecutive"], + order: { + posDictName: "ASC", + createdAt: "DESC", + posType: { + posTypeRank: "ASC", + createdAt: "DESC", + }, + posLevel: { + posLevelRank: "ASC", + createdAt: "DESC", + }, + posExecutive: { + posExecutivePriority: "ASC", + }, }, - posLevel: { - posLevelRank: "ASC", - createdAt: "DESC" - }, - posExecutive: { - posExecutivePriority: "ASC" - } - }, - }); - break; + }); + break; } - }else{ + } else { findPosDict = await this.posDictRepository.find({ relations: ["posType", "posLevel", "posExecutive"], order: { posDictName: "ASC", createdAt: "DESC", - posType:{ + posType: { posTypeRank: "ASC", - createdAt: "DESC" + createdAt: "DESC", }, posLevel: { posLevelRank: "ASC", - createdAt: "DESC" + createdAt: "DESC", }, posExecutive: { - posExecutivePriority: "ASC" - } + posExecutivePriority: "ASC", + }, }, }); } @@ -4970,53 +4974,53 @@ export class PositionController extends Controller { .where(conditions) .andWhere( _data.root != undefined && _data.root != null - ? _data.root[0] != null - ? `posMaster.orgRootId IN (:...root)` - : `posMaster.orgRootId is null` - : "1=1", - { - root: _data.root, - }, + ? _data.root[0] != null + ? `posMaster.orgRootId IN (:...root)` + : `posMaster.orgRootId is null` + : "1=1", + { + root: _data.root, + }, ) .andWhere( _data.child1 != undefined && _data.child1 != null - ? _data.child1[0] != null - ? `posMaster.orgChild1Id IN (:...child1)` - : `posMaster.orgChild1Id is null` - : "1=1", - { - child1: _data.child1, - }, + ? _data.child1[0] != null + ? `posMaster.orgChild1Id IN (:...child1)` + : `posMaster.orgChild1Id is null` + : "1=1", + { + child1: _data.child1, + }, ) .andWhere( _data.child2 != undefined && _data.child2 != null - ? _data.child2[0] != null - ? `posMaster.orgChild2Id IN (:...child2)` - : `posMaster.orgChild2Id is null` - : "1=1", - { - child2: _data.child2, - }, + ? _data.child2[0] != null + ? `posMaster.orgChild2Id IN (:...child2)` + : `posMaster.orgChild2Id is null` + : "1=1", + { + child2: _data.child2, + }, ) .andWhere( _data.child3 != undefined && _data.child3 != null - ? _data.child3[0] != null - ? `posMaster.orgChild3Id IN (:...child3)` - : `posMaster.orgChild3Id is null` - : "1=1", - { - child3: _data.child3, - }, + ? _data.child3[0] != null + ? `posMaster.orgChild3Id IN (:...child3)` + : `posMaster.orgChild3Id is null` + : "1=1", + { + child3: _data.child3, + }, ) .andWhere( _data.child4 != undefined && _data.child4 != null - ? _data.child4[0] != null - ? `posMaster.orgChild4Id IN (:...child4)` - : `posMaster.orgChild4Id is null` - : "1=1", - { - child4: _data.child4, - }, + ? _data.child4[0] != null + ? `posMaster.orgChild4Id IN (:...child4)` + : `posMaster.orgChild4Id is null` + : "1=1", + { + child4: _data.child4, + }, ) .orWhere( new Brackets((qb) => { @@ -5027,10 +5031,10 @@ export class PositionController extends Controller { : `CASE WHEN posMaster.orgChild1 is null THEN ${searchShortName0} WHEN posMaster.orgChild2 is null THEN ${searchShortName1} WHEN posMaster.orgChild3 is null THEN ${searchShortName2} WHEN posMaster.orgChild4 is null THEN ${searchShortName3} ELSE ${searchShortName4} END LIKE '%${body.keyword}%'` : "1=1", ) - .andWhere(checkChildConditions) - .andWhere(typeCondition) - .andWhere(revisionCondition) - .andWhere({ current_holderId: IsNull() }); + .andWhere(checkChildConditions) + .andWhere(typeCondition) + .andWhere(revisionCondition) + .andWhere({ current_holderId: IsNull() }); }), ) .orderBy("posMaster.posMasterOrder", "ASC") @@ -5075,7 +5079,8 @@ export class PositionController extends Controller { }, relations: ["posLevel", "posType", "posExecutive"], order: { - createdAt: "ASC", + posType: { posTypeRank: "ASC" }, + posLevel: { posLevelRank: "ASC" }, }, }); let shortName = ""; diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index b9f22c49..4fcf2077 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -2007,9 +2007,7 @@ export class ProfileController extends Controller { process.env.AUTH_ACCOUNT_SECRET, { expiresIn: "15m" }, ); - // console.log("[token]",token); const link = process.env.URL + "/verifyemail?upn=" + token; - // console.log("[link]",link); await new CallAPI() .PostData(req, "/placement/noti/send-mail", { @@ -3964,6 +3962,28 @@ export class ProfileController extends Controller { return new HttpSuccess({ data: data, total }); } + /** + * API Update amount + * + * @summary Update amount (ADMIN) + * + */ + @Get("update-amount") + async updateProfileAmount(@Request() request: RequestWithUser) { + const profiles = await this.profileRepo.find({ + order: { profileSalary: { order: "DESC" } }, + relations: ["profileSalary"], + }); + profiles.map(async (x) => { + const amount = x.profileSalary[0]; + x.amount = amount?.amount ?? 0; + x.amountSpecial = amount?.amountSpecial ?? 0; + x.positionSalaryAmount = amount?.positionSalaryAmount ?? 0; + await this.profileRepo.save(x); + }); + return new HttpSuccess(); + } + /** * API รายละเอียดรายการทะเบียนประวัติ * @@ -8274,7 +8294,6 @@ export class ProfileController extends Controller { receiverUserId: x.id, notiLink: "", })); - console.log(profileNoti); await new CallAPI() .PostData(req, "/placement/noti/profiles", { subject: body.subject, diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index 4d88cbd1..a22ba4d1 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -1309,6 +1309,28 @@ export class ProfileEmployeeController extends Controller { return new HttpSuccess(formattedData); } + /** + * API Update amount + * + * @summary Update amount (ADMIN) + * + */ + @Get("update-amount") + async updateProfileAmount(@Request() request: RequestWithUser) { + const profiles = await this.profileRepo.find({ + order: { profileSalary: { order: "DESC" } }, + relations: ["profileSalary"], + }); + profiles.map(async (x) => { + const amount = x.profileSalary[0]; + x.amount = amount?.amount ?? 0; + x.amountSpecial = amount?.amountSpecial ?? 0; + x.positionSalaryAmount = amount?.positionSalaryAmount ?? 0; + await this.profileRepo.save(x); + }); + return new HttpSuccess(); + } + /** * API รายละเอียดรายการทะเบียนประวัติ *