sort admin

This commit is contained in:
adisak 2025-09-23 14:56:38 +07:00
parent d999241536
commit 8b40eb0ad5
3 changed files with 66 additions and 9 deletions

View file

@ -56,11 +56,14 @@ export class ProfileDevelopmentEmployeeController extends Controller {
@Query("page") page: number = 1, @Query("page") page: number = 1,
@Query("pageSize") pageSize: number = 10, @Query("pageSize") pageSize: number = 10,
@Query() searchKeyword: string = "", @Query() searchKeyword: string = "",
@Query("sortBy") sortBy?: string,
@Query("descending") descending?: boolean,
) { ) {
let _workflow = await new permission().Workflow(req, profileId, "SYS_REGISTRY_EMP"); let _workflow = await new permission().Workflow(req, profileId, "SYS_REGISTRY_EMP");
if (_workflow == false) if (_workflow == false)
await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_EMP", profileId); await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_EMP", profileId);
const [profileDevelopment, total] = await AppDataSource.getRepository(ProfileDevelopment)
let query = await AppDataSource.getRepository(ProfileDevelopment)
.createQueryBuilder("profileDevelopment") .createQueryBuilder("profileDevelopment")
.where({ profileEmployeeId: profileId }) .where({ profileEmployeeId: profileId })
.andWhere( .andWhere(
@ -100,9 +103,19 @@ export class ProfileDevelopmentEmployeeController extends Controller {
}), }),
) )
.orderBy("profileDevelopment.createdAt", "ASC") .orderBy("profileDevelopment.createdAt", "ASC")
if (sortBy) {
query = query.orderBy(
`profileDevelopment.${sortBy}`,
descending ? "DESC" : "ASC"
);
}
const [profileDevelopment, total] = await query
.skip((page - 1) * pageSize) .skip((page - 1) * pageSize)
.take(pageSize) .take(pageSize)
.getManyAndCount(); .getManyAndCount();
return new HttpSuccess({ data: profileDevelopment, total }); return new HttpSuccess({ data: profileDevelopment, total });
} }

View file

@ -110,6 +110,8 @@ export class ProfileEditEmployeeController extends Controller {
@Query("pageSize") pageSize: number = 10, @Query("pageSize") pageSize: number = 10,
@Query("keyword") keyword: string = "", @Query("keyword") keyword: string = "",
@Query("status") status: string = "", @Query("status") status: string = "",
@Query("sortBy") sortBy?: string,
@Query("descending") descending?: boolean,
) { ) {
let data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_EMP"); let data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_EMP");
const orgRevisionPublish = await this.orgRevisionRepository const orgRevisionPublish = await this.orgRevisionRepository
@ -117,7 +119,8 @@ export class ProfileEditEmployeeController extends Controller {
.where("orgRevision.orgRevisionIsDraft = false") .where("orgRevision.orgRevisionIsDraft = false")
.andWhere("orgRevision.orgRevisionIsCurrent = true") .andWhere("orgRevision.orgRevisionIsCurrent = true")
.getOne(); .getOne();
let [getProfileEdit, total] = await AppDataSource.getRepository(ProfileEdit)
let query = await AppDataSource.getRepository(ProfileEdit)
.createQueryBuilder("ProfileEdit") .createQueryBuilder("ProfileEdit")
.leftJoinAndSelect("ProfileEdit.profileEmployee", "profileEmployee") .leftJoinAndSelect("ProfileEdit.profileEmployee", "profileEmployee")
.leftJoinAndSelect("profileEmployee.current_holders", "current_holders") .leftJoinAndSelect("profileEmployee.current_holders", "current_holders")
@ -209,9 +212,25 @@ export class ProfileEditEmployeeController extends Controller {
}), }),
) )
.orderBy("ProfileEdit.createdAt", "DESC") .orderBy("ProfileEdit.createdAt", "DESC")
.skip((page - 1) * pageSize)
.take(pageSize) if (sortBy) {
.getManyAndCount(); if(sortBy == "fullname"){
query = query.orderBy(
`profileEmployee.firstName`,
descending ? "DESC" : "ASC"
);
}else{
query = query.orderBy(
`ProfileEdit.${sortBy}`,
descending ? "DESC" : "ASC"
);
}
}
let [getProfileEdit, total] = await query
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
const _data = getProfileEdit.map((item) => ({ const _data = getProfileEdit.map((item) => ({
id: item.id, id: item.id,

View file

@ -1504,6 +1504,8 @@ export class ProfileEmployeeTempController extends Controller {
@Query() isProbation?: boolean, @Query() isProbation?: boolean,
@Query() isRetire?: boolean, @Query() isRetire?: boolean,
@Query() type?: string, @Query() type?: string,
@Query("sortBy") sortBy?: string,
@Query("descending") descending?: boolean,
) { ) {
let _data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_TEMP"); let _data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_TEMP");
let queryLike = let queryLike =
@ -1525,7 +1527,8 @@ export class ProfileEmployeeTempController extends Controller {
if (!findRevision) { if (!findRevision) {
throw new HttpError(HttpStatus.NOT_FOUND, "not found. OrgRevision"); throw new HttpError(HttpStatus.NOT_FOUND, "not found. OrgRevision");
} }
const [record, total] = await this.profileRepo
let query = await this.profileRepo
.createQueryBuilder("profileEmployee") .createQueryBuilder("profileEmployee")
.leftJoinAndSelect("profileEmployee.posLevel", "posLevel") .leftJoinAndSelect("profileEmployee.posLevel", "posLevel")
.leftJoinAndSelect("profileEmployee.posType", "posType") .leftJoinAndSelect("profileEmployee.posType", "posType")
@ -1638,9 +1641,31 @@ export class ProfileEmployeeTempController extends Controller {
} }
}), }),
) )
.skip((page - 1) * pageSize)
.take(pageSize) if (sortBy) {
.getManyAndCount(); if(sortBy == "posLevel"){
query = query.orderBy(
`posLevel.posLevelName`,
descending ? "DESC" : "ASC"
);
}else if(sortBy == "posType"){
query = query.orderBy(
`posType.posTypeName`,
descending ? "DESC" : "ASC"
);
}else{
query = query.orderBy(
`profileEmployee.${sortBy}`,
descending ? "DESC" : "ASC"
);
}
}
const [record, total] = await query
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
const data = await Promise.all( const data = await Promise.all(
record.map((_data) => { record.map((_data) => {
const shortName = const shortName =