From 1279cf51a7ae0e8ae04f793f2e354114f21dc69b Mon Sep 17 00:00:00 2001 From: Karthikeyan Rajendran <70887864+karthik-tarento@users.noreply.github.com> Date: Thu, 13 Jun 2024 14:21:36 +0530 Subject: [PATCH] 4.8.12 first name fix (#81) (#82) * Adding validations in create user API for firstName (#79) * Adding validations in create user API for firstName * Review comments * Adding firstName formatting to update API as well * formatting code * Resolving conflicts * Resolving conflicts * Update JsonKey.java * Changing variable from stringBuilder to string (#80) --------- Co-authored-by: Sreerag K S <58926794+sreeragksgh@users.noreply.github.com> --- .../main/java/org/sunbird/keys/JsonKey.java | 2 +- .../user/validator/UserRequestValidator.java | 18 +++++++++++++++++ .../impl/ExtendedUserProfileServiceImpl.java | 20 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java b/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java index 0a7d8e1d6e..106320ce93 100644 --- a/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java +++ b/core/platform-common/src/main/java/org/sunbird/keys/JsonKey.java @@ -643,7 +643,6 @@ public final class JsonKey { public static final String LAST_LOGIN = "last_login"; public static final String FIRST_LOGIN = "first_login"; public static final String EDATA = "edata"; - public static final String SELF_REGISTRATION = "self_registration"; public static final String CREATEDBY = "createdby"; public static final String CONTEXT_TYPE = "contextType"; @@ -651,5 +650,6 @@ public final class JsonKey { public static final String CONTEXT_TOKEN = "contextToken"; public static final String OTP_VALIDATION_SECRET_KEY = "otpValidationSecretKey"; public static final String OTP_EXPIRATION_TIME_TOKEN = "otpExpirationTimeToken"; + public static final String PERSONAL_DETAILS = "personalDetails"; private JsonKey() {} } diff --git a/service/src/main/java/org/sunbird/actor/user/validator/UserRequestValidator.java b/service/src/main/java/org/sunbird/actor/user/validator/UserRequestValidator.java index 02c7f8de32..b71ed37ad3 100644 --- a/service/src/main/java/org/sunbird/actor/user/validator/UserRequestValidator.java +++ b/service/src/main/java/org/sunbird/actor/user/validator/UserRequestValidator.java @@ -62,6 +62,7 @@ public void validateCreateUserRequest(Request userRequest) { validateUserType(userRequest.getRequest(), null, userRequest.getRequestContext()); phoneValidation(userRequest); validatePassword((String) userRequest.getRequest().get(JsonKey.PASSWORD)); + formatFirstName(userRequest); } public static boolean isGoodPassword(String password) { @@ -80,6 +81,20 @@ private void validatePassword(String password) { } } + private void formatFirstName(Request userRequest) { + String firstName = (String) userRequest.getRequest().get(JsonKey.FIRST_NAME); + String[] words = firstName.split("\\s+"); + StringBuilder modifiedFirstName = new StringBuilder(); + for (String word : words) { + if (word.length() > 0) { + modifiedFirstName.append(Character.toUpperCase(word.charAt(0))) + .append(word.substring(1).toLowerCase()) + .append(" "); + } + } + userRequest.getRequest().put(JsonKey.FIRST_NAME,modifiedFirstName.toString()); + } + /** * This method will validate location type * @@ -437,6 +452,9 @@ private void updateUserBasicValidation(Request userRequest) { ResponseCode.mandatoryParamsMissing, MessageFormat.format( ResponseCode.mandatoryParamsMissing.getErrorMessage(), JsonKey.FIRST_NAME)); + } else if (userRequest.getRequest().containsKey(JsonKey.FIRST_NAME) + && (StringUtils.isNotBlank((String) userRequest.getRequest().get(JsonKey.FIRST_NAME)))){ + formatFirstName(userRequest); } if ((userRequest.getRequest().containsKey(JsonKey.EMAIL) diff --git a/service/src/main/java/org/sunbird/service/user/impl/ExtendedUserProfileServiceImpl.java b/service/src/main/java/org/sunbird/service/user/impl/ExtendedUserProfileServiceImpl.java index 30511fd40f..f52487571e 100644 --- a/service/src/main/java/org/sunbird/service/user/impl/ExtendedUserProfileServiceImpl.java +++ b/service/src/main/java/org/sunbird/service/user/impl/ExtendedUserProfileServiceImpl.java @@ -19,6 +19,13 @@ public class ExtendedUserProfileServiceImpl implements ExtendedUserProfileServic public void validateProfile(Request userRequest) { if (userRequest!=null && userRequest.get(JsonKey.PROFILE_DETAILS)!=null) { try{ + Map profileDetails = (Map) userRequest.get(JsonKey.PROFILE_DETAILS); + if (profileDetails.get(JsonKey.PERSONAL_DETAILS) != null) { + Map personalDetails = (Map) profileDetails.get(JsonKey.PERSONAL_DETAILS); + if (personalDetails.get(JsonKey.FIRST_NAME) != null) { + personalDetails.put(JsonKey.FIRST_NAME, formatFirstName((String) profileDetails.get(JsonKey.FIRST_NAME))); + } + } String userProfile = mapper.writeValueAsString(userRequest.getRequest().get(JsonKey.PROFILE_DETAILS)); JSONObject obj = new JSONObject(userProfile); UserExtendedProfileSchemaValidator.validate(SCHEMA, obj); @@ -33,4 +40,17 @@ public void validateProfile(Request userRequest) { } } } + + private String formatFirstName(String firstName) { + String[] words = firstName.split("\\s+"); + StringBuilder modifiedFirstName = new StringBuilder(); + for (String word : words) { + if (word.length() > 0) { + modifiedFirstName.append(Character.toUpperCase(word.charAt(0))) + .append(word.substring(1).toLowerCase()) + .append(" "); + } + } + return modifiedFirstName.toString(); + } } \ No newline at end of file