fix report & comment reset pass

This commit is contained in:
Bright 2025-02-24 10:58:07 +07:00
parent 0be55a03a9
commit db9875a84b
3 changed files with 128 additions and 138 deletions

View file

@ -174,13 +174,13 @@ export class ReportController extends Controller {
async registryOfficer(
@Query() node?: number,
@Query() nodeId?: string,
@Query() posTypeName?: string,
@Query() posLevelName?: string,
@Query() posType?: string,
@Query() posLevel?: string,
@Query() position?: string,
@Query() posExecutiveName?: string,
@Query() gender?: string,
@Query() relationship?: string,
@Query() degree?: string,
@Query() status?: string,
@Query() education?: string,
@Query() startDateAppoint?: Date,
@Query() endDateAppoint?: Date,
@Query() ageMin?: number,
@ -251,58 +251,60 @@ export class ReportController extends Controller {
})
.andWhere(IsLeavecondition.join(" AND "), parameters)
.andWhere(
new Brackets((qb) => {
qb.orWhere(
posTypeName != null && posTypeName != ""
? "registryOfficer.posTypeName LIKE :posTypeName"
: "1=1",
{
posTypeName: `%${posTypeName}%`,
},
);
qb.orWhere(
posLevelName != null && posLevelName != ""
? "registryOfficer.posLevelName LIKE :posLevelName"
: "1=1",
{
posLevelName: `%${posLevelName}%`,
},
);
qb.orWhere(
position != null && position != "" ? "registryOfficer.position LIKE :position" : "1=1",
{
position: `%${position}%`,
},
);
qb.orWhere(
posExecutiveName != null && posExecutiveName != ""
? "registryOfficer.posExecutiveName LIKE :posExecutiveName"
: "1=1",
{
posExecutiveName: `%${posExecutiveName}%`,
},
);
qb.orWhere(
gender != null && gender != "" ? "registryOfficer.gender LIKE :gender" : "1=1",
{
gender: `%${gender}%`,
},
);
qb.orWhere(
relationship != null && relationship != ""
? "registryOfficer.relationship LIKE :relationship"
: "1=1",
{
relationship: `%${relationship}%`,
},
);
qb.orWhere(
degree != null && degree != "" ? "registryOfficer.degree LIKE :degree" : "1=1",
{
degree: `%${degree}%`,
},
);
}),
posType != null && posType != ""
? "registryOfficer.posTypeName LIKE :posTypeName"
: "1=1",
{
posTypeName: `%${posType}%`,
}
)
.andWhere(
posLevel != null && posLevel != ""
? "registryOfficer.posLevelName LIKE :posLevelName"
: "1=1",
{
posLevelName: `%${posLevel}%`,
}
)
.andWhere(
position != null && position != ""
? "registryOfficer.position LIKE :position"
: "1=1",
{
position: `%${position}%`,
}
)
.andWhere(
posExecutiveName != null && posExecutiveName != ""
? "registryOfficer.posExecutiveName LIKE :posExecutiveName"
: "1=1",
{
posExecutiveName: `%${posExecutiveName}%`,
}
)
.andWhere(
gender != null && gender != ""
? "registryOfficer.gender LIKE :gender"
: "1=1",
{
gender: `%${gender}%`,
}
)
.andWhere(
status != null && status != ""
? "registryOfficer.relationship LIKE :relationship"
: "1=1",
{
relationship: `%${status}%`,
}
)
.andWhere(
education != null && education != ""
? "registryOfficer.degree LIKE :degree"
: "1=1",
{
degree: `%${education}%`,
}
)
.orderBy(`registryOfficer.${sortBy}`, sort)
.getManyAndCount();
@ -469,12 +471,12 @@ export class ReportController extends Controller {
async registryEmployee(
@Query() node?: number,
@Query() nodeId?: string,
@Query() posTypeName?: string,
@Query() posLevelName?: string,
@Query() posType?: string,
@Query() posLevel?: string,
@Query() position?: string,
@Query() gender?: string,
@Query() relationship?: string,
@Query() degree?: string,
@Query() status?: string,
@Query() education?: string,
@Query() startDateAppoint?: Date,
@Query() endDateAppoint?: Date,
@Query() isProbation?: boolean,
@ -545,50 +547,52 @@ export class ReportController extends Controller {
.andWhere(IsLeavecondition.join(" AND "), parameters)
.andWhere("registryEmployee.employeeClass = 'PERM'")
.andWhere(
new Brackets((qb) => {
qb.orWhere(
posTypeName != null && posTypeName != ""
? "registryEmployee.posTypeName LIKE :posTypeName"
: "1=1",
{
posTypeName: `%${posTypeName}%`,
},
);
qb.orWhere(
posLevelName != null && posLevelName != ""
? "registryEmployee.posLevelName LIKE :posLevelName"
: "1=1",
{
posLevelName: `%${posLevelName}%`,
},
);
qb.orWhere(
position != null && position != "" ? "registryEmployee.position LIKE :position" : "1=1",
{
position: `%${position}%`,
},
);
qb.orWhere(
gender != null && gender != "" ? "registryEmployee.gender LIKE :gender" : "1=1",
{
gender: `%${gender}%`,
},
);
qb.orWhere(
relationship != null && relationship != ""
? "registryEmployee.relationship LIKE :relationship"
: "1=1",
{
relationship: `%${relationship}%`,
},
);
qb.orWhere(
degree != null && degree != "" ? "registryEmployee.degree LIKE :degree" : "1=1",
{
degree: `%${degree}%`,
},
);
}),
posType != null && posType != ""
? "registryOfficer.posTypeName LIKE :posTypeName"
: "1=1",
{
posTypeName: `%${posType}%`,
}
)
.andWhere(
posLevel != null && posLevel != ""
? "registryOfficer.posLevelName LIKE :posLevelName"
: "1=1",
{
posLevelName: `%${posLevel}%`,
}
)
.andWhere(
position != null && position != ""
? "registryOfficer.position LIKE :position"
: "1=1",
{
position: `%${position}%`,
}
)
.andWhere(
gender != null && gender != ""
? "registryOfficer.gender LIKE :gender"
: "1=1",
{
gender: `%${gender}%`,
}
)
.andWhere(
status != null && status != ""
? "registryOfficer.relationship LIKE :relationship"
: "1=1",
{
relationship: `%${status}%`,
}
)
.andWhere(
education != null && education != ""
? "registryOfficer.degree LIKE :degree"
: "1=1",
{
degree: `%${education}%`,
}
)
.orderBy(`registryEmployee.${sortBy}`, sort)
.getManyAndCount();

View file

@ -830,18 +830,4 @@ export class KeycloakController extends Controller {
return result;
}
@Post("user/reset-password")
async forgetPassword(
@Request() request: { user: { sub: string; preferred_username: string } },
@Body()
body: {
username: string;
},
) {
const result = await resetPassword(body.username);
if (!result) {
throw new Error("Failed. Cannot change password.");
}
return result;
}
}

View file

@ -767,26 +767,26 @@ export async function changeUserPassword(userId: string, newPassword: string) {
// Function to reset password
export async function resetPassword(username: string) {
try {
if (!API_KEY || !AUTH_ACCOUNT_SECRET) {
throw new Error("KC_CLIENT_ID and KC_SECRET are required to used this feature.");
}
const body = new URLSearchParams();
body.append("client_id", "gettoken");
body.append("client_secret", AUTH_ACCOUNT_SECRET?.toString());
body.append("grant_type", "client_credentials");
const tokenResponse = await fetch(`${process.env.KC_URL}/realms/${process.env.KC_REALMS}/protocol/openid-connect/token`, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
api_key: API_KEY,
},
body: body
});
if (!tokenResponse.ok) {
throw new Error("Failed to get admin token");
}
const tokenData = await tokenResponse.json();
const adminToken = tokenData.access_token;
// if (!API_KEY || !AUTH_ACCOUNT_SECRET) {
// throw new Error("KC_CLIENT_ID and KC_SECRET are required to used this feature.");
// }
// const body = new URLSearchParams();
// body.append("client_id", "gettoken");
// body.append("client_secret", AUTH_ACCOUNT_SECRET?.toString());
// body.append("grant_type", "client_credentials");
// const tokenResponse = await fetch(`${process.env.KC_URL}/realms/${process.env.KC_REALMS}/protocol/openid-connect/token`, {
// method: "POST",
// headers: {
// "Content-Type": "application/x-www-form-urlencoded",
// api_key: API_KEY,
// },
// body: body
// });
// if (!tokenResponse.ok) {
// throw new Error("Failed to get admin token");
// }
// const tokenData = await tokenResponse.json();
// const adminToken = tokenData.access_token;
const users = await fetch(`${KC_URL}/admin/realms/${KC_REALMS}/users?email=${encodeURIComponent(username)}`, {
headers: {