diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index 75fb5724..692783b4 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -4164,6 +4164,7 @@ export class ProfileController extends Controller { keyword?: string; }, ) { + const [firstName, lastName] = body.keyword ? body.keyword.split(" ") : ["", ""]; const [findProfile, total] = await AppDataSource.getRepository(Profile) .createQueryBuilder("profile") .leftJoinAndSelect("profile.posLevel", "posLevel") @@ -4177,7 +4178,10 @@ export class ProfileController extends Controller { .leftJoinAndSelect("current_holders.orgChild4", "orgChild4") .leftJoinAndSelect("current_holders.positions", "positions") .leftJoinAndSelect("positions.posExecutive", "posExecutive") - .where(`profile.prefix LIKE :keyword`, { + .where(`profile.position LIKE :keyword`, { + keyword: `%${body.keyword}%`, + }) + .orWhere(`profile.prefix LIKE :keyword`, { keyword: `%${body.keyword}%`, }) .orWhere(`profile.firstName LIKE :keyword`, { @@ -4186,15 +4190,20 @@ export class ProfileController extends Controller { .orWhere(`profile.lastName LIKE :keyword`, { keyword: `%${body.keyword}%`, }) - .orWhere(`profile.position LIKE :keyword`, { - keyword: `%${body.keyword}%`, - }) .orWhere(`posLevel.posLevelName LIKE :keyword`, { keyword: `%${body.keyword}%`, }) .orWhere(`posType.posTypeName LIKE :keyword`, { keyword: `%${body.keyword}%`, }) + .orWhere( + new Brackets((qb) => { + if (body.keyword) { + qb.where(`profile.firstName LIKE :firstName`, { firstName: `%${firstName}%` }) + .orWhere(`profile.lastName LIKE :lastName`, { lastName: `%${lastName}%` }); + } + }) + ) .orderBy("profile.citizenId", "ASC") .skip((body.page - 1) * body.pageSize) .take(body.pageSize)