251210:1709 Frontend: reeactor organization and run build
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled

This commit is contained in:
admin
2025-12-10 17:09:11 +07:00
parent aa96cd90e3
commit c8a0f281ef
140 changed files with 3780 additions and 1473 deletions

View File

@@ -50,20 +50,68 @@ export class UserService {
}
}
// 2. ดึงข้อมูลทั้งหมด
async findAll(): Promise<User[]> {
return this.usersRepository.find({
select: [
'user_id',
'username',
'email',
'firstName',
'lastName',
'isActive',
'createdAt',
'updatedAt',
],
});
// 2. ดึงข้อมูลทั้งหมด (Search & Pagination)
async findAll(params?: any): Promise<any> {
const {
search,
roleId,
primaryOrganizationId,
page = 1,
limit = 100,
} = params || {};
// Create query builder
const query = this.usersRepository
.createQueryBuilder('user')
.leftJoinAndSelect('user.preference', 'preference') // Optional
.leftJoinAndSelect('user.assignments', 'assignments')
.leftJoinAndSelect('assignments.role', 'role')
.select([
'user.user_id',
'user.username',
'user.email',
'user.firstName',
'user.lastName',
'user.lineId',
'user.primaryOrganizationId',
'user.isActive',
'user.createdAt',
'user.updatedAt',
'assignments.id',
'role.roleId',
'role.roleName',
]);
// Apply Filters
if (search) {
query.andWhere(
'(user.username LIKE :search OR user.email LIKE :search OR user.firstName LIKE :search OR user.lastName LIKE :search)',
{ search: `%${search}%` }
);
}
if (primaryOrganizationId) {
query.andWhere('user.primaryOrganizationId = :orgId', {
orgId: primaryOrganizationId,
});
}
if (roleId) {
query.andWhere('role.roleId = :roleId', { roleId });
}
// Pagination
query.skip((page - 1) * limit).take(limit);
const [data, total] = await query.getManyAndCount();
return {
data,
total,
page,
limit,
totalPages: Math.ceil(total / limit),
};
}
// 3. ดึงข้อมูลรายคน