From 646be814baf6bce42dd95cc570d9ac796e2ea1b5 Mon Sep 17 00:00:00 2001 From: Marnuri Nitish <NitishM@cardiff.ac.uk> Date: Wed, 11 Dec 2024 15:55:08 +0000 Subject: [PATCH] Create api methods for delete and update --- .../admin/controllers/AdminApiController.java | 26 +++++++++++++++++++ .../admin/dao/AdminRepository.java | 2 ++ .../admin/dao/AdminRepositoryImpl.java | 11 ++++++++ .../admin/models/ManageUser.java | 1 + .../admin/services/AdminService.java | 2 ++ .../admin/services/AdminServiceImpl.java | 14 ++++++++++ 6 files changed, 56 insertions(+) create mode 100644 src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java diff --git a/src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java b/src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java new file mode 100644 index 0000000..8f8aea4 --- /dev/null +++ b/src/main/java/polish_community_group_11/polish_community/admin/controllers/AdminApiController.java @@ -0,0 +1,26 @@ +package polish_community_group_11.polish_community.admin.controllers; + +import org.springframework.web.bind.annotation.*; +import polish_community_group_11.polish_community.admin.models.AdminBoard; +import polish_community_group_11.polish_community.admin.models.ManageUser; +import polish_community_group_11.polish_community.admin.services.AdminService; + +@RestController +public class AdminApiController { + private final AdminService adminService; + + public AdminApiController(AdminService adminService) { + this.adminService = adminService; + } + + @PutMapping("admin/edit/role/{role_name}") + public void changeUserRole(@PathVariable("role_name") String role_name, + @ModelAttribute ManageUser user){ + adminService.updateUserRole(user,role_name); + } + + @DeleteMapping("admin/delete/{user_id}") + public void removeUser(@PathVariable("user_id") int user_id){ + adminService.deleteUser(user_id); + } +} diff --git a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java index 9cad39f..fc773c9 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepository.java @@ -9,4 +9,6 @@ import java.util.List; public interface AdminRepository { List<ManageUser> getUserManagementInfo() throws SQLException; AdminBoard getBoardManagementInfo() throws SQLException; + int updateUserRole(ManageUser user); + void deleteUser(int userId); } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java index 0f62d3a..3659da4 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/dao/AdminRepositoryImpl.java @@ -31,6 +31,7 @@ public class AdminRepositoryImpl implements AdminRepository { rs.getString("fullname"), rs.getString("email"), rs.getBoolean("enabled"), + rs.getInt("role_id"), rs.getString("role_name") ); }; @@ -93,4 +94,14 @@ public class AdminRepositoryImpl implements AdminRepository { } return dashboard; } + + public int updateUserRole(ManageUser user){ + String sql="UPDATE users SET role_id=? WHERE id =?"; + return jdbc.update(sql,user.getRole_id(),user.getId()); + } + + public void deleteUser(int userId){ + String sql="DELETE FROM users WHERE id =?"; + jdbc.update(sql,userId); + } } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java b/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java index 73c638c..154adb4 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/models/ManageUser.java @@ -12,5 +12,6 @@ public class ManageUser { private String fullName; private String email; private Boolean enabled; + private int role_id; private String role; } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java index da2d1b9..1534096 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminService.java @@ -9,4 +9,6 @@ import java.util.List; public interface AdminService { List<ManageUser> getUserManagementInfo() throws SQLException; AdminBoard getBoardManagementInfo() throws SQLException; + void updateUserRole(ManageUser user,String roleName); + void deleteUser(int userId); } diff --git a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java index b3e9103..2d7d6eb 100644 --- a/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java +++ b/src/main/java/polish_community_group_11/polish_community/admin/services/AdminServiceImpl.java @@ -21,4 +21,18 @@ public class AdminServiceImpl implements AdminService { public AdminBoard getBoardManagementInfo() throws SQLException{ return adminRepository.getBoardManagementInfo(); } + + public void updateUserRole(ManageUser user, String roleName){ + boolean needsUpdate=roleName.toLowerCase().equals(user.getRole().toLowerCase())? + false:true; + if(needsUpdate){ + int updatedRoleId=roleName.toLowerCase().equals("admin")?1:2; + user.setRole_id(updatedRoleId); + adminRepository.updateUserRole(user); + } + } + + public void deleteUser(int userId){ + adminRepository.deleteUser(userId); + } } -- GitLab