sort admin

This commit is contained in:
adisak 2025-09-23 11:54:17 +07:00
parent 57c9a84c40
commit d999241536
3 changed files with 54 additions and 10 deletions

View file

@ -127,6 +127,8 @@ export class DevelopmentRequestController extends Controller {
@Query("keyword") keyword: string = "",
@Query("page") page: number = 1,
@Query("pageSize") pageSize: number = 10,
@Query("sortBy") sortBy?: string,
@Query("descending") descending?: boolean,
) {
let data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_OFFICER");
const orgRevisionPublish = await this.orgRevisionRepository
@ -134,7 +136,7 @@ export class DevelopmentRequestController extends Controller {
.where("orgRevision.orgRevisionIsDraft = false")
.andWhere("orgRevision.orgRevisionIsCurrent = true")
.getOne();
const [lists, total] = await AppDataSource.getRepository(DevelopmentRequest)
let query = await AppDataSource.getRepository(DevelopmentRequest)
.createQueryBuilder("developmentRequest")
.leftJoinAndSelect("developmentRequest.profile", "profile")
.leftJoinAndSelect("profile.current_holders", "current_holders")
@ -249,9 +251,20 @@ export class DevelopmentRequestController extends Controller {
}),
)
.orderBy("developmentRequest.createdAt", "DESC")
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
if (sortBy) {
query = query.orderBy(
`developmentRequest.${sortBy}`,
descending ? "DESC" : "ASC"
);
}
const [lists, total] = await query
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
const _data = lists.map((item) => ({ ...item, profile: null }));
return new HttpSuccess({ data: _data, total });
}

View file

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

View file

@ -116,6 +116,8 @@ export class ProfileEditController extends Controller {
@Query("pageSize") pageSize: number = 10,
@Query("keyword") keyword: string = "",
@Query("status") status: string = "",
@Query("sortBy") sortBy?: string,
@Query("descending") descending?: boolean,
) {
let data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_OFFICER");
const orgRevisionPublish = await this.orgRevisionRepository
@ -123,7 +125,7 @@ export class ProfileEditController extends Controller {
.where("orgRevision.orgRevisionIsDraft = false")
.andWhere("orgRevision.orgRevisionIsCurrent = true")
.getOne();
let [getProfileEdit, total] = await AppDataSource.getRepository(ProfileEdit)
let query = await AppDataSource.getRepository(ProfileEdit)
.createQueryBuilder("ProfileEdit")
.leftJoinAndSelect("ProfileEdit.profile", "profile")
.leftJoinAndSelect("profile.current_holders", "current_holders")
@ -214,10 +216,27 @@ export class ProfileEditController extends Controller {
);
}),
)
.orderBy("ProfileEdit.createdAt", "DESC")
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
.orderBy("ProfileEdit.createdAt", "DESC")
if (sortBy) {
if(sortBy == "fullname"){
query = query.orderBy(
`profile.firstName`,
descending ? "DESC" : "ASC"
);
}else{
query = query.orderBy(
`ProfileEdit.${sortBy}`,
descending ? "DESC" : "ASC"
);
}
}
const [getProfileEdit, total] = await query
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
const _data = getProfileEdit.map((item) => ({
id: item.id,
idcard: item.profile.citizenId,