From 1d3e79c54669475fe22fff74b372bca43af43c2d Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 8 Feb 2026 13:43:14 +0700 Subject: [PATCH] add function for user - create house - edit house - delete house - list all member for active house --- messages/en.json | 8 +- messages/vi.json | 8 +- src/components/DataTable.tsx | 13 +- .../form/account/user-settings-form.tsx | 10 +- src/components/form/form-components.tsx | 20 ++- .../form/house/admin-create-house-form.tsx | 50 ++++-- .../form/house/admin-edit-house-form.tsx | 15 +- src/components/form/settings-form.tsx | 10 +- .../form/user/admin-create-user-form.tsx | 8 +- .../form/user/admin-set-password-form.tsx | 10 +- .../form/user/admin-set-user-role-form.tsx | 10 +- .../form/user/admin-update-user-info-form.tsx | 10 +- src/components/house/create-house-dialog.tsx | 15 +- .../house/current-user-action-group.tsx | 44 +++++ .../house/current-user-house-list.tsx | 132 ++++++++++++++ .../house/current-user-member-list.tsx | 66 +++++++ src/components/house/delete-house-dialog.tsx | 12 +- .../house/delete-user-house-dialog.tsx | 163 ++++++++++++++++++ src/components/house/edit-house-dialog.tsx | 27 ++- src/components/house/house-column.tsx | 14 +- src/components/sidebar/nav-main.tsx | 118 +++++++------ src/components/ui/scroll-area.tsx | 53 ++++++ src/components/ui/select-user.tsx | 2 +- src/components/ui/spinner.tsx | 10 ++ .../user/ban-user-confirm-dialog.tsx | 12 +- src/components/user/unban-user-dialog.tsx | 55 ++++-- src/lib/auth.ts | 11 +- src/routeTree.gen.ts | 108 ++++++++++-- src/routes/(app)/(auth)/kanri/houses.tsx | 3 +- .../(auth)/{ => management}/dashboard.tsx | 2 +- src/routes/(app)/(auth)/management/houses.tsx | 30 ++++ src/routes/(app)/(auth)/management/index.tsx | 9 + src/routes/(app)/(auth)/management/route.tsx | 6 + src/routes/(app)/route.tsx | 2 +- src/service/house.api.ts | 76 ++++++++ src/service/house.schema.ts | 4 + src/service/queries.ts | 7 +- src/service/repository.ts | 13 ++ src/types/common.d.ts | 4 - src/types/db.d.ts | 6 + 40 files changed, 1006 insertions(+), 170 deletions(-) create mode 100644 src/components/house/current-user-action-group.tsx create mode 100644 src/components/house/current-user-house-list.tsx create mode 100644 src/components/house/current-user-member-list.tsx create mode 100644 src/components/house/delete-user-house-dialog.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/spinner.tsx rename src/routes/(app)/(auth)/{ => management}/dashboard.tsx (88%) create mode 100644 src/routes/(app)/(auth)/management/houses.tsx create mode 100644 src/routes/(app)/(auth)/management/index.tsx create mode 100644 src/routes/(app)/(auth)/management/route.tsx diff --git a/messages/en.json b/messages/en.json index e1ad911..38e9fbf 100644 --- a/messages/en.json +++ b/messages/en.json @@ -49,6 +49,7 @@ "ui_delete_btn": "Delete", "ui_ban_btn": "Lock", "ui_unban_btn": "Unlock", + "ui_invite_btn": "Invite", "ui_update_password_btn": "Set password", "ui_change_role_btn": "Set role", "ui_edit_user_btn": "Edit User", @@ -58,6 +59,7 @@ "ui_change_password_btn": "Change password", "nav_label_management": "Management", "nav_label_basic": "Basic", + "nav_label_kanri": "Administrator", "nav_home": "Home", "nav_dashboard": "Dashboard", "nav_settings": "Settings", @@ -166,6 +168,9 @@ "houses_page_message_house_not_found": "House not found!", "houses_page_message_update_house_success": "Updated house successfully!", "houses_page_message_delete_house_success": "Delete house successfully!", + "houses_page_house_active_btn": "Active", + "houses_user_page_message_active_house_success": "Active \"{house}\" successfully!", + "houses_user_page_block_action_title": "Action", "backend_message": [ { "match": { @@ -174,7 +179,8 @@ "code=YOU_ARE_NOT_ALLOWED_TO_CHANGE_USERS_ROLE": "You are not allowed to change users role", "code=USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL": "Email already exists. Please choose another email!", "code=BANNED_USER": "Your account get banned, please contact administrator for more information!", - "code=VALIDATION_ERROR": "Some field value invalid!" + "code=VALIDATION_ERROR": "Some field value invalid!", + "code=USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION": "User is not a member of the house" } } ] diff --git a/messages/vi.json b/messages/vi.json index c4cd18b..f1b26e0 100644 --- a/messages/vi.json +++ b/messages/vi.json @@ -49,6 +49,7 @@ "ui_delete_btn": "Xóa", "ui_ban_btn": "Khóa", "ui_unban_btn": "Mở khóa", + "ui_invite_btn": "Mời", "ui_update_password_btn": "Đặt lại mật khẩu", "ui_change_role_btn": "Đặt lại quyền hạn", "ui_edit_user_btn": "Chỉnh sửa người dùng", @@ -59,6 +60,7 @@ "ui_edit_house_btn": "Chỉnh sửa nhà", "nav_label_management": "Quản lý", "nav_label_basic": "Cơ bản", + "nav_label_kanri": "Quản trị viên", "nav_home": "Trang chủ", "nav_dashboard": "Bảng điều khiển", "nav_settings": "Cài đặt", @@ -167,6 +169,9 @@ "houses_page_message_house_not_found": "Không tìm thấy nhà này!", "houses_page_message_update_house_success": "Cập nhật nhà thành công!", "houses_page_message_delete_house_success": "Xóa nhà thành công!", + "houses_page_house_active_btn": "Kích hoạt", + "houses_user_page_message_active_house_success": "Kích hoạt \"{house}\" thành công!", + "houses_user_page_block_action_title": "Hành động", "backend_message": [ { "match": { @@ -175,7 +180,8 @@ "code=YOU_ARE_NOT_ALLOWED_TO_CHANGE_USERS_ROLE": "Bạn không đủ quyền để chỉnh sửa quyền hạn người dùng!", "code=USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL": "Email này đã có người sử dụng. Vui lòng chọn một email khác!", "code=BANNED_USER": "Bạn đã bị quản trị viên khóa tài khoản, hãy liên hệ quản trị viên để tìm hiểu thêm!", - "code=VALIDATION_ERROR": "Có giá trị không hợp lệ!" + "code=VALIDATION_ERROR": "Có giá trị không hợp lệ!", + "code=USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION": "Người dùng này không phải thành viên nhà này" } } ] diff --git a/src/components/DataTable.tsx b/src/components/DataTable.tsx index 9b204bd..6da25e3 100644 --- a/src/components/DataTable.tsx +++ b/src/components/DataTable.tsx @@ -112,8 +112,8 @@ const DataTable = ({ -
-
+
+
{m.common_page_show({ count: pagination.totalItem, @@ -122,9 +122,12 @@ const DataTable = ({ })}
-
-
-