api update profile amount

This commit is contained in:
kittapath 2024-12-14 12:00:45 +07:00
parent 2f5aef96f3
commit 0c7c3361f6
3 changed files with 319 additions and 273 deletions

View file

@ -562,270 +562,274 @@ export class PositionController extends Controller {
@Get("position") @Get("position")
async findPosition(@Query("keyword") keyword?: string, @Query("type") type?: string) { async findPosition(@Query("keyword") keyword?: string, @Query("type") type?: string) {
let findPosDict: any; let findPosDict: any;
if(keyword && keyword?.length > 0){ if (keyword && keyword?.length > 0) {
switch (type) { switch (type) {
case "positionName": case "positionName":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posDictName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
case "positionField": case "positionField":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictField: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posDictField: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictField: "ASC", posDictField: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
case "positionType": case "positionType":
const findTypes: PosType[] = await this.posTypeRepository.find({ const findTypes: PosType[] = await this.posTypeRepository.find({
where: { posTypeName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posTypeName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
order: { order: {
// posTypeName: "ASC" // 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:{
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posLevel: { select: ["id"],
posLevelRank: "ASC", });
createdAt: "DESC" 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": case "positionLevel":
const findLevel: PosLevel[] = await this.posLevelRepository.find({ const findLevel: PosLevel[] = await this.posLevelRepository.find({
where: { posLevelName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posLevelName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
order: { order: {
// posLevelName: "ASC" // 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: {
posLevelRank: "ASC", posLevelRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posExecutive: { select: ["id"],
posExecutivePriority: "ASC" });
} findPosDict = await this.posDictRepository.find({
}, where: { posLevelId: In(findLevel.map((x) => x.id)) },
}); relations: ["posType", "posLevel", "posExecutive"],
break; order: {
posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
},
});
break;
case "positionExecutive": case "positionExecutive":
const findExecutive: PosExecutive[] = await this.posExecutiveRepository.find({ const findExecutive: PosExecutive[] = await this.posExecutiveRepository.find({
where: { posExecutiveName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: {
select: ["id"], posExecutiveName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1",
});
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: { select: ["id"],
posLevelRank: "ASC", });
createdAt: "DESC" 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": case "positionExecutiveField":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictExecutiveField: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: {
relations: ["posType", "posLevel", "posExecutive"], posDictExecutiveField: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1",
order: {
posDictName: "ASC",
createdAt: "DESC",
posType:{
posTypeRank: "ASC",
createdAt: "DESC"
}, },
posLevel: { relations: ["posType", "posLevel", "posExecutive"],
posLevelRank: "ASC", order: {
createdAt: "DESC" posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posExecutive: { });
posExecutivePriority: "ASC" break;
}
},
});
break;
case "positionArea": case "positionArea":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictArea: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posDictArea: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
case "ALL": case "ALL":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: [ where: [
{ posDictName: Like(`%${keyword}%`) }, { posDictName: Like(`%${keyword}%`) },
{ posDictField: Like(`%${keyword}%`) }, { posDictField: Like(`%${keyword}%`) },
{ {
posTypeId: In( posTypeId: In(
await this.posTypeRepository await this.posTypeRepository
.find({ where: { posTypeName: Like(`%${keyword}%`) }, select: ["id"] }) .find({ where: { posTypeName: Like(`%${keyword}%`) }, select: ["id"] })
.then((types) => types.map((type) => type.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( break;
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;
default: default:
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
} }
}else{ } else {
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posLevel: { posLevel: {
posLevelRank: "ASC", posLevelRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posExecutive: { posExecutive: {
posExecutivePriority: "ASC" posExecutivePriority: "ASC",
} },
}, },
}); });
} }
@ -4970,53 +4974,53 @@ export class PositionController extends Controller {
.where(conditions) .where(conditions)
.andWhere( .andWhere(
_data.root != undefined && _data.root != null _data.root != undefined && _data.root != null
? _data.root[0] != null ? _data.root[0] != null
? `posMaster.orgRootId IN (:...root)` ? `posMaster.orgRootId IN (:...root)`
: `posMaster.orgRootId is null` : `posMaster.orgRootId is null`
: "1=1", : "1=1",
{ {
root: _data.root, root: _data.root,
}, },
) )
.andWhere( .andWhere(
_data.child1 != undefined && _data.child1 != null _data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null ? _data.child1[0] != null
? `posMaster.orgChild1Id IN (:...child1)` ? `posMaster.orgChild1Id IN (:...child1)`
: `posMaster.orgChild1Id is null` : `posMaster.orgChild1Id is null`
: "1=1", : "1=1",
{ {
child1: _data.child1, child1: _data.child1,
}, },
) )
.andWhere( .andWhere(
_data.child2 != undefined && _data.child2 != null _data.child2 != undefined && _data.child2 != null
? _data.child2[0] != null ? _data.child2[0] != null
? `posMaster.orgChild2Id IN (:...child2)` ? `posMaster.orgChild2Id IN (:...child2)`
: `posMaster.orgChild2Id is null` : `posMaster.orgChild2Id is null`
: "1=1", : "1=1",
{ {
child2: _data.child2, child2: _data.child2,
}, },
) )
.andWhere( .andWhere(
_data.child3 != undefined && _data.child3 != null _data.child3 != undefined && _data.child3 != null
? _data.child3[0] != null ? _data.child3[0] != null
? `posMaster.orgChild3Id IN (:...child3)` ? `posMaster.orgChild3Id IN (:...child3)`
: `posMaster.orgChild3Id is null` : `posMaster.orgChild3Id is null`
: "1=1", : "1=1",
{ {
child3: _data.child3, child3: _data.child3,
}, },
) )
.andWhere( .andWhere(
_data.child4 != undefined && _data.child4 != null _data.child4 != undefined && _data.child4 != null
? _data.child4[0] != null ? _data.child4[0] != null
? `posMaster.orgChild4Id IN (:...child4)` ? `posMaster.orgChild4Id IN (:...child4)`
: `posMaster.orgChild4Id is null` : `posMaster.orgChild4Id is null`
: "1=1", : "1=1",
{ {
child4: _data.child4, child4: _data.child4,
}, },
) )
.orWhere( .orWhere(
new Brackets((qb) => { 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}%'` : `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", : "1=1",
) )
.andWhere(checkChildConditions) .andWhere(checkChildConditions)
.andWhere(typeCondition) .andWhere(typeCondition)
.andWhere(revisionCondition) .andWhere(revisionCondition)
.andWhere({ current_holderId: IsNull() }); .andWhere({ current_holderId: IsNull() });
}), }),
) )
.orderBy("posMaster.posMasterOrder", "ASC") .orderBy("posMaster.posMasterOrder", "ASC")
@ -5075,7 +5079,8 @@ export class PositionController extends Controller {
}, },
relations: ["posLevel", "posType", "posExecutive"], relations: ["posLevel", "posType", "posExecutive"],
order: { order: {
createdAt: "ASC", posType: { posTypeRank: "ASC" },
posLevel: { posLevelRank: "ASC" },
}, },
}); });
let shortName = ""; let shortName = "";

View file

@ -2007,9 +2007,7 @@ export class ProfileController extends Controller {
process.env.AUTH_ACCOUNT_SECRET, process.env.AUTH_ACCOUNT_SECRET,
{ expiresIn: "15m" }, { expiresIn: "15m" },
); );
// console.log("[token]",token);
const link = process.env.URL + "/verifyemail?upn=" + token; const link = process.env.URL + "/verifyemail?upn=" + token;
// console.log("[link]",link);
await new CallAPI() await new CallAPI()
.PostData(req, "/placement/noti/send-mail", { .PostData(req, "/placement/noti/send-mail", {
@ -3964,6 +3962,28 @@ export class ProfileController extends Controller {
return new HttpSuccess({ data: data, total }); 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 * API
* *
@ -8274,7 +8294,6 @@ export class ProfileController extends Controller {
receiverUserId: x.id, receiverUserId: x.id,
notiLink: "", notiLink: "",
})); }));
console.log(profileNoti);
await new CallAPI() await new CallAPI()
.PostData(req, "/placement/noti/profiles", { .PostData(req, "/placement/noti/profiles", {
subject: body.subject, subject: body.subject,

View file

@ -1309,6 +1309,28 @@ export class ProfileEmployeeController extends Controller {
return new HttpSuccess(formattedData); 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 * API
* *