diff --git a/src/main/java/com/ffii/lioner/modules/lioner/client/service/ClientService.java b/src/main/java/com/ffii/lioner/modules/lioner/client/service/ClientService.java index f6d3f06..206a77a 100644 --- a/src/main/java/com/ffii/lioner/modules/lioner/client/service/ClientService.java +++ b/src/main/java/com/ffii/lioner/modules/lioner/client/service/ClientService.java @@ -10,6 +10,7 @@ import com.ffii.core.support.AbstractBaseEntityService; import com.ffii.core.support.JdbcDao; import com.ffii.core.utils.BeanUtils; import com.ffii.core.utils.Params; +import com.ffii.lioner.modules.common.SecurityUtils; import com.ffii.lioner.modules.common.service.AuditLogService; import com.ffii.lioner.modules.lioner.client.entity.Client; import com.ffii.lioner.modules.lioner.client.entity.ClientRepository; @@ -194,6 +195,9 @@ public class ClientService extends AbstractBaseEntityService> list(Map args){ + long currentUserId = SecurityUtils.getUser().get().getId(); + args.put("currentUserId", currentUserId); + StringBuilder sql = new StringBuilder("SELECT" + " (select fullname from user where id = client.createdBy) as createdByName, " + " id, " @@ -213,6 +217,11 @@ public class ClientService extends AbstractBaseEntityService commonField.setFna_a_life_less_5(fieldValue); case "fna_a_life_above_5" -> commonField.setFna_a_life_above_5(fieldValue); - case "fna_a_primary" -> commonField.setEduPri(fieldValue); - case "fna_a_secondary" -> commonField.setEduSec(fieldValue); - case "fna_a_tertiary" -> commonField.setEduPostSec(fieldValue); + //case "fna_a_primary" -> commonField.setEduPri(fieldValue); + //case "fna_a_secondary" -> commonField.setEduSec(fieldValue); + // case "fna_a_tertiary" -> commonField.setEduPostSec(fieldValue); case "fna_a_marital" -> commonField.setMaritalStatus(fieldValue); case "fna_a_contact" -> commonField.setContactNo(fieldValue); @@ -3339,9 +3344,9 @@ public class PdfService extends AbstractBaseEntityService commonField.setOccupationTitle(fieldValue); case "fill_10" -> commonField.setContactNo(fieldValue); - case "toggle_1" -> commonField.setEduPri(fieldValue); - case "toggle_2" -> commonField.setEduSec(fieldValue); - case "toggle_3" -> commonField.setEduPostSec(fieldValue); + // case "toggle_1" -> commonField.setEduPri(fieldValue); + //case "toggle_2" -> commonField.setEduSec(fieldValue); + // case "toggle_3" -> commonField.setEduPostSec(fieldValue); case "fill_11" -> { if(fieldValue != null){ @@ -3499,10 +3504,10 @@ public class PdfService extends AbstractBaseEntityService commonField.getOthers().put("sourceOther", fieldValue); case "Field_Wealth4" -> commonField.getOthers().put("sourceOtherDesc", fieldValue); - case "Checkbox_EudcationPri" -> commonField.setEduPri(fieldValue); - case "Checkbox_EudcationSec" -> commonField.setEduSec(fieldValue); - case "Checkbox_EudcationPostSec" -> commonField.setEduPostSec(fieldValue); - case "Checkbox_EudcationTer" -> commonField.setEduUni(fieldValue); + //case "Checkbox_EudcationPri" -> commonField.setEduPri(fieldValue); + //case "Checkbox_EudcationSec" -> commonField.setEduSec(fieldValue); + //case "Checkbox_EudcationPostSec" -> commonField.setEduPostSec(fieldValue); + //case "Checkbox_EudcationTer" -> commonField.setEduUni(fieldValue); /* Page3 End */ /* Page7 Start */ @@ -3808,10 +3813,10 @@ public class PdfService extends AbstractBaseEntityService commonField.setEduPri(fieldValue); - case "ch2_5_1s" -> commonField.setEduSec(fieldValue); - case "ch2_5_1m" -> commonField.setEduPostSec(fieldValue); - case "ch2_5_1u" -> commonField.setEduUni(fieldValue); + //case "ch2_5_1p" -> commonField.setEduPri(fieldValue); + //case "ch2_5_1s" -> commonField.setEduSec(fieldValue); + //case "ch2_5_1m" -> commonField.setEduPostSec(fieldValue); + //case "ch2_5_1u" -> commonField.setEduUni(fieldValue); case "ch2_5_2w" -> commonField.setFna_a_life_0(fieldValue); case "ch2_5_2_less5" -> commonField.setFna_a_life_less_5(fieldValue); diff --git a/src/main/java/com/ffii/lioner/modules/user/req/NewLionerUserReq.java b/src/main/java/com/ffii/lioner/modules/user/req/NewLionerUserReq.java index bdaf08e..722ab7d 100644 --- a/src/main/java/com/ffii/lioner/modules/user/req/NewLionerUserReq.java +++ b/src/main/java/com/ffii/lioner/modules/user/req/NewLionerUserReq.java @@ -20,6 +20,8 @@ public class NewLionerUserReq { @NotNull private Boolean twoFactorEnabled; + private List consultantIds; + @Size(max = 30) @NotBlank @Pattern(regexp = "^[A-Za-z0-9]+$") @@ -251,5 +253,12 @@ public class NewLionerUserReq { this.name = name; } + public List getConsultantIds() { + return consultantIds; + } + + public void setConsultantIds(List consultantIds) { + this.consultantIds = consultantIds; + } } diff --git a/src/main/java/com/ffii/lioner/modules/user/req/UpdateUserReq.java b/src/main/java/com/ffii/lioner/modules/user/req/UpdateUserReq.java index 3c5857d..0023045 100644 --- a/src/main/java/com/ffii/lioner/modules/user/req/UpdateUserReq.java +++ b/src/main/java/com/ffii/lioner/modules/user/req/UpdateUserReq.java @@ -17,6 +17,8 @@ public class UpdateUserReq { @NotNull private Boolean twoFactorEnabled; + private List consultantIds; + @Size(max = 90) @NotBlank private String name; @@ -168,4 +170,11 @@ public class UpdateUserReq { this.twoFactorEnabled = twoFactorEnabled; } + public List getConsultantIds() { + return consultantIds; + } + + public void setConsultantIds(List consultantIds) { + this.consultantIds = consultantIds; + } } diff --git a/src/main/java/com/ffii/lioner/modules/user/service/UserService.java b/src/main/java/com/ffii/lioner/modules/user/service/UserService.java index faf2ef6..48b47cf 100644 --- a/src/main/java/com/ffii/lioner/modules/user/service/UserService.java +++ b/src/main/java/com/ffii/lioner/modules/user/service/UserService.java @@ -370,6 +370,9 @@ public class UserService extends AbstractBaseEntityService new NotFoundException()); } + @Transactional + public void updateConsultantAssignments(Long userId, List consultantIds) { + // 1. Remove old assignments + Map args = Map.of( + "userId", userId); + + jdbcDao.executeUpdate("DELETE FROM user_consultant WHERE userId = :userId", args); + + // 2. Add new assignments + if (consultantIds != null) { + for (Long cId : consultantIds) { + args = Map.of( + "userId", userId, + "cId", cId); + + jdbcDao.executeUpdate("INSERT INTO user_consultant (userId, consultantId) VALUES (:userId, :cId)", + args); + } + } + } + + public List listUserConsultantId(long userId) { + String sql = "SELECT consultantId FROM user_consultant WHERE userId = :userId"; + List> rows = jdbcDao.queryForList(sql, Map.of("userId", userId)); + + return rows.stream() + .map(row -> (Long) row.get("consultantId")) + .collect(Collectors.toList()); + } + } diff --git a/src/main/java/com/ffii/lioner/modules/user/service/res/LoadUserRes.java b/src/main/java/com/ffii/lioner/modules/user/service/res/LoadUserRes.java index 3ae7733..60491ff 100644 --- a/src/main/java/com/ffii/lioner/modules/user/service/res/LoadUserRes.java +++ b/src/main/java/com/ffii/lioner/modules/user/service/res/LoadUserRes.java @@ -9,15 +9,17 @@ public class LoadUserRes { private Integer groupId; private List authIds; private List groupIds; + private List consultantIds; public LoadUserRes() { } - public LoadUserRes(User data, Integer groupId, List authIds, List groupIds) { + public LoadUserRes(User data, Integer groupId, List authIds, List groupIds, List consultantIds) { this.data = data; this.groupId = groupId; this.authIds = authIds; this.groupIds = groupIds; + this.consultantIds = consultantIds; } public User getData() { @@ -52,4 +54,8 @@ public class LoadUserRes { this.groupId = groupId; } + public List getConsultantIds() { return consultantIds; } + + public void setConsultantIds(List consultantIds) { this.consultantIds = consultantIds; } + } diff --git a/src/main/java/com/ffii/lioner/modules/user/web/UserController.java b/src/main/java/com/ffii/lioner/modules/user/web/UserController.java index 60ed43b..67d09f5 100644 --- a/src/main/java/com/ffii/lioner/modules/user/web/UserController.java +++ b/src/main/java/com/ffii/lioner/modules/user/web/UserController.java @@ -107,7 +107,8 @@ public class UserController { userService.find(id).orElseThrow(NotFoundException::new), userService.getUserGroupId(id), userService.listUserAuthId(id), - userService.listUserGroupId(id)); + userService.listUserGroupId(id), + userService.listUserConsultantId(id)); return userRes; } diff --git a/src/main/resources/db/changelog/changes/37_user_consultant/01_add_user_consultant.sql b/src/main/resources/db/changelog/changes/37_user_consultant/01_add_user_consultant.sql new file mode 100644 index 0000000..ec57ece --- /dev/null +++ b/src/main/resources/db/changelog/changes/37_user_consultant/01_add_user_consultant.sql @@ -0,0 +1,9 @@ +--liquibase formatted sql + +--changeset vin:add user consultant + +CREATE TABLE user_consultant ( + userId BIGINT NOT NULL, + consultantId BIGINT NOT NULL, + PRIMARY KEY (userId, consultantId) +); \ No newline at end of file