From 8edcfa5f854af3fc144ecb81ad2038349cc988ec Mon Sep 17 00:00:00 2001
From: Hari-stackroute <40484996+Hari-stackroute@users.noreply.github.com>
Date: Fri, 9 Jul 2021 18:44:46 +0530
Subject: [PATCH] SB-25485 fix for search for version v1/v2 roles not popuped
 when unassociated org added (#883)

---
 .../actors/search/SearchHandlerActor.java     |  4 +-
 .../user/actors/UserOrgManagementActor.java   | 65 +++++++++----------
 2 files changed, 33 insertions(+), 36 deletions(-)

diff --git a/actors/sunbird-lms-mw/actors/common/src/main/java/org/sunbird/learner/actors/search/SearchHandlerActor.java b/actors/sunbird-lms-mw/actors/common/src/main/java/org/sunbird/learner/actors/search/SearchHandlerActor.java
index e38081396..a0f0aff2c 100644
--- a/actors/sunbird-lms-mw/actors/common/src/main/java/org/sunbird/learner/actors/search/SearchHandlerActor.java
+++ b/actors/sunbird-lms-mw/actors/common/src/main/java/org/sunbird/learner/actors/search/SearchHandlerActor.java
@@ -224,7 +224,9 @@ public class SearchHandlerActor extends BaseActor {
                           scope -> {
                             String orgId = scope.get(JsonKey.ORGANISATION_ID);
                             Map<String, Object> userOrg = userOrgIdMap.get(orgId);
-                            ((List) userOrg.get(JsonKey.ROLES)).add(userRole);
+                            if (MapUtils.isNotEmpty(userOrg)) {
+                              ((List) userOrg.get(JsonKey.ROLES)).add(userRole);
+                            }
                           });
                 });
       }
diff --git a/actors/sunbird-lms-mw/actors/user/src/main/java/org/sunbird/user/actors/UserOrgManagementActor.java b/actors/sunbird-lms-mw/actors/user/src/main/java/org/sunbird/user/actors/UserOrgManagementActor.java
index 5092711c4..882ddb27d 100644
--- a/actors/sunbird-lms-mw/actors/user/src/main/java/org/sunbird/user/actors/UserOrgManagementActor.java
+++ b/actors/sunbird-lms-mw/actors/user/src/main/java/org/sunbird/user/actors/UserOrgManagementActor.java
@@ -39,26 +39,24 @@ public class UserOrgManagementActor extends BaseActor {
 
   private void insertUserOrgDetails(Request request) {
     Map<String, Object> requestMap = request.getRequest();
+    String callerId = (String) requestMap.remove(JsonKey.CALLER_ID);
     // Register user to given orgId(not root orgId)
     String organisationId = (String) requestMap.get(JsonKey.ORGANISATION_ID);
+    if (StringUtils.isNotBlank(callerId)) {
+      requestMap.put(JsonKey.ASSOCIATION_TYPE, AssociationMechanism.SYSTEM_UPLOAD);
+    }
     if (StringUtils.isNotBlank(organisationId)) {
-      String callerId = (String) requestMap.remove(JsonKey.CALLER_ID);
-      if (StringUtils.isNotBlank(callerId)) {
-        requestMap.put(JsonKey.ASSOCIATION_TYPE, AssociationMechanism.SYSTEM_UPLOAD);
-      }
-
       requestMap.put(JsonKey.HASHTAGID, organisationId);
       Util.registerUserToOrg(requestMap, request.getRequestContext());
-
-      if ((StringUtils.isNotBlank(organisationId)
-              && StringUtils.isNotBlank((String) requestMap.get(JsonKey.ROOT_ORG_ID))
-              && !organisationId.equalsIgnoreCase((String) requestMap.get(JsonKey.ROOT_ORG_ID)))
-          || StringUtils.isBlank(organisationId)) {
-        // Add user to root org
-        requestMap.put(JsonKey.ORGANISATION_ID, requestMap.get(JsonKey.ROOT_ORG_ID));
-        requestMap.put(JsonKey.HASHTAGID, requestMap.get(JsonKey.ORGANISATION_ID));
-        Util.registerUserToOrg(requestMap, request.getRequestContext());
-      }
+    }
+    if ((StringUtils.isNotBlank(organisationId)
+            && StringUtils.isNotBlank((String) requestMap.get(JsonKey.ROOT_ORG_ID))
+            && !organisationId.equalsIgnoreCase((String) requestMap.get(JsonKey.ROOT_ORG_ID)))
+        || StringUtils.isBlank(organisationId)) {
+      // Add user to root org
+      requestMap.put(JsonKey.ORGANISATION_ID, requestMap.get(JsonKey.ROOT_ORG_ID));
+      requestMap.put(JsonKey.HASHTAGID, requestMap.get(JsonKey.ORGANISATION_ID));
+      Util.registerUserToOrg(requestMap, request.getRequestContext());
     }
     Response response = new Response();
     response.put(JsonKey.RESPONSE, JsonKey.SUCCESS);
@@ -67,31 +65,28 @@ public class UserOrgManagementActor extends BaseActor {
 
   private void updateUserOrgDetails(Request request) {
     Map<String, Object> requestMap = request.getRequest();
+    String callerId = (String) requestMap.remove(JsonKey.CALLER_ID);
     String organisationId = (String) requestMap.get(JsonKey.ORGANISATION_ID);
+    List<Map<String, Object>> userOrgListDb =
+        UserUtil.getUserOrgDetails(
+            false, (String) requestMap.get(JsonKey.ID), request.getRequestContext());
+    Map<String, Object> userOrgDbMap = new HashMap<>();
+    if (CollectionUtils.isNotEmpty(userOrgListDb)) {
+      userOrgListDb.forEach(
+          userOrg -> userOrgDbMap.put((String) userOrg.get(JsonKey.ORGANISATION_ID), userOrg));
+    }
     if (StringUtils.isNotBlank(organisationId)) {
-      String callerId = (String) requestMap.remove(JsonKey.CALLER_ID);
-      List<Map<String, Object>> userOrgListDb =
-          UserUtil.getUserOrgDetails(
-              false, (String) requestMap.get(JsonKey.ID), request.getRequestContext());
-      Map<String, Object> userOrgDbMap = new HashMap<>();
-      if (CollectionUtils.isNotEmpty(userOrgListDb)) {
-        userOrgListDb.forEach(
-            userOrg -> userOrgDbMap.put((String) userOrg.get(JsonKey.ORGANISATION_ID), userOrg));
-      }
-
       Map<String, Object> userOrg = (Map<String, Object>) userOrgDbMap.get(organisationId);
       requestMap.put(JsonKey.ASSOCIATION_TYPE, getAssociationType(userOrg, callerId, requestMap));
       Util.upsertUserOrgData(requestMap, request.getRequestContext());
-
-      if ((StringUtils.isNotBlank(organisationId)
-              && !organisationId.equalsIgnoreCase((String) requestMap.get(JsonKey.ROOT_ORG_ID)))
-          || StringUtils.isBlank(organisationId)) {
-        Map<String, Object> rootUserOrg =
-            (Map<String, Object>) userOrgDbMap.get(requestMap.get(JsonKey.ROOT_ORG_ID));
-        requestMap.put(
-            JsonKey.ASSOCIATION_TYPE, getAssociationType(rootUserOrg, callerId, requestMap));
-        Util.upsertUserOrgData(requestMap, request.getRequestContext());
-      }
+    }
+    if ((StringUtils.isNotBlank(organisationId)
+            && !organisationId.equalsIgnoreCase((String) requestMap.get(JsonKey.ROOT_ORG_ID)))
+        || StringUtils.isBlank(organisationId)) {
+      Map<String, Object> userOrg =
+          (Map<String, Object>) userOrgDbMap.get(requestMap.get(JsonKey.ROOT_ORG_ID));
+      requestMap.put(JsonKey.ASSOCIATION_TYPE, getAssociationType(userOrg, callerId, requestMap));
+      Util.upsertUserOrgData(requestMap, request.getRequestContext());
     }
     Response response = new Response();
     response.put(JsonKey.RESPONSE, JsonKey.SUCCESS);
-- 
GitLab