Unverified Commit ace278e7 authored by Mahesh Kumar Gangula's avatar Mahesh Kumar Gangula Committed by GitHub
Browse files

Merge pull request #341 from PradyumnaNagendra/release-3.8.0

Issue #SB-23777 fix: Update course batch issue fix
parents 0b75e596 96b8abbc
master 4.0.0_RC4 4.1.0-loadtest-fixes SB-25890 SB-25890-1 bootcamp collection-csv dependabot/maven/course-mw/course-actors-common/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/course-actors-common/org.postgresql-postgresql-42.4.1 dependabot/maven/course-mw/enrolment-actor/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-cassandra-utils/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-notification/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-platform-core/actor-core/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-platform-core/actor-util/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-platform-core/auth-verifier/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-platform-core/common-util/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 dependabot/maven/course-mw/sunbird-util/sunbird-platform-core/common-util/org.apache.kafka-kafka-clients-0.10.2.2 dependabot/maven/service/com.fasterxml.jackson.core-jackson-databind-2.12.7.1 helmchart release-3.8.0 release-3.9.0 release-4.0.0 release-4.1.0 release-4.2.0 release-4.4.0 release-4.5.0 release-4.6.0 release-4.8.0 release-4.9.0 release-5.0.0 release-5.0.1 release-5.0.2 release-5.1.0 release-5.2.0 release-5.2.1 release-5.3.0 release-5.3.1 release-5.4.0 release-5.3.1_RC1 release-5.3.0_RC1 release-5.2.0_RC2 release-5.2.0_RC1 release-5.1.0_RC2 release-5.1.0_RC1 release-5.0.1_RC3 release-5.0.1_RC2 release-5.0.1_RC1 release-5.0.0_RC6 release-5.0.0_RC5 release-5.0.0_RC4 release-5.0.0_RC3 release-5.0.0_RC2 release-5.0.0_RC1 release-4.9.0_RC4 release-4.9.0_RC3 release-4.9.0_RC2 release-4.9.0_RC1 release-4.8.0_RC2 release-4.8.0_RC1 release-4.6.0_RC10 release-4.6.0_RC9 release-4.6.0_RC8 release-4.6.0_RC7 release-4.6.0_RC6 release-4.6.0_RC5 release-4.6.0_RC4 release-4.6.0_RC3 release-4.6.0_RC2 release-4.6.0_RC1 release-4.5.0_RC4 release-4.5.0_RC3 release-4.5.0_RC2 release-4.5.0_RC1 release-4.4.0_RC3 release-4.4.0_RC2 release-4.4.0_RC1 release-4.2.0_RC1 release-4.1.0_RC4 release-4.1.0_RC3 release-4.1.0_RC2 release-4.1.0_RC1 release-4.0.0_RC7 release-4.0.0_RC6 release-4.0.0_RC5 release-4.0.0_RC4 release-4.0.0_RC3 release-4.0.0_RC2 release-4.0.0_RC1 release-3.9.0_RC7 release-3.9.0_RC6 release-3.9.0_RC5 release-3.9.0_RC4 release-3.9.0_RC3 release-3.9.0_RC2 release-3.9.0_RC1 release-3.8.0_RC9 release-3.8.0_RC8 release-3.8.0_RC7 release-3.8.0_RC6
No related merge requests found
Showing with 44 additions and 36 deletions
+44 -36
......@@ -118,14 +118,16 @@ public class SearchHandlerActor extends BaseActor {
List<String> creatorIds = content.stream().filter(map -> map.containsKey(CREATED_BY)).map(map -> (String) map.get(CREATED_BY)).collect(Collectors.toList());
List<Map<String, Object>> userDetails = userOrgService.getUsersByIds(creatorIds, (String) context.getOrDefault(JsonKey.X_AUTH_TOKEN, ""));
logger.info(requestContext, "SearchHandlerActor::populateCreatorDetails::userDetails : " + userDetails);
List<Map<String, Object>> creatorDetails = userDetails.stream().map(user -> new HashMap<String, Object>() {{
put(JsonKey.ID, user.get(JsonKey.ID));
put(JsonKey.FIRST_NAME, user.get(JsonKey.FIRST_NAME));
put(JsonKey.LAST_NAME, user.get(JsonKey.LAST_NAME));
}}).collect(Collectors.toList());
Map<String, Object> tempResult = CollectionUtils.isNotEmpty(creatorDetails) ? creatorDetails.stream().collect(Collectors.toMap(s -> (String) s.remove("id"), s -> s)) : new HashMap<>();
if (MapUtils.isNotEmpty(tempResult)) {
content.stream().filter(map -> tempResult.containsKey(map.get(CREATED_BY))).map(map -> map.put("creatorDetails", tempResult.get((String) map.get(CREATED_BY)))).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(userDetails)) {
List<Map<String, Object>> creatorDetails = userDetails.stream().map(user -> new HashMap<String, Object>() {{
put(JsonKey.ID, user.get(JsonKey.ID));
put(JsonKey.FIRST_NAME, user.get(JsonKey.FIRST_NAME));
put(JsonKey.LAST_NAME, user.get(JsonKey.LAST_NAME));
}}).collect(Collectors.toList());
Map<String, Object> tempResult = CollectionUtils.isNotEmpty(creatorDetails) ? creatorDetails.stream().collect(Collectors.toMap(s -> (String) s.remove("id"), s -> s)) : new HashMap<>();
if (MapUtils.isNotEmpty(tempResult)) {
content.stream().filter(map -> tempResult.containsKey(map.get(CREATED_BY))).map(map -> map.put("creatorDetails", tempResult.get((String) map.get(CREATED_BY)))).collect(Collectors.toList());
}
}
}
}
......
......@@ -5,6 +5,7 @@ import com.mashape.unirest.http.HttpMethod;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.sunbird.common.exception.ProjectCommonException;
import org.sunbird.common.models.response.Response;
......@@ -176,16 +177,16 @@ public class UserOrgServiceImpl implements UserOrgService {
}
String relativeUrl = getConfigValue(SUNBIRD_GET_SINGLE_USER_API) + FORWARD_SLASH + id;
Response response = getUserOrgResponse(relativeUrl, HttpMethod.GET, requestMap, headers);
if (response != null) {
if (response != null && ResponseCode.OK == response.getResponseCode()) {
return (Map<String, Object>) response.get(RESPONSE);
}
return null;
} else
return new HashMap<>();
}
@Override
public List<Map<String, Object>> getUsersByIds(List<String> ids, String authToken) {
List<CompletableFuture<Map<String, Object>>> futures = ids.stream().map(id -> getUserDetail(id, authToken)).collect(Collectors.toList());
return futures.stream().map(CompletableFuture::join).collect(Collectors.toList());
return futures.stream().map(CompletableFuture::join).filter(map -> MapUtils.isNotEmpty(map)).collect(Collectors.toList());
}
@Override
......
......@@ -356,34 +356,39 @@ public class CourseBatchManagementActor extends BaseActor {
private void validateMentors(CourseBatch courseBatch, String authToken, RequestContext requestContext) {
List<String> mentors = courseBatch.getMentors();
if (CollectionUtils.isNotEmpty(mentors)) {
mentors = mentors.stream().distinct().collect(Collectors.toList());
courseBatch.setMentors(mentors);
String batchCreatorRootOrgId = getRootOrg(courseBatch.getCreatedBy(), authToken);
List<Map<String, Object>> mentorDetailList = userOrgService.getUsersByIds(mentors, authToken);
logger.info(requestContext, "CourseBatchManagementActor::validateMentors::mentorDetailList : " + mentorDetailList);
Map<String, Map<String, Object>> mentorDetails =
mentorDetailList
.stream()
.collect(Collectors.toMap(map -> (String) map.get(JsonKey.ID), map -> map));
for (String userId : mentors) {
Map<String, Object> result = mentorDetails.get(userId);
String mentorRootOrgId = getRootOrgFromUserMap(result);
if (!batchCreatorRootOrgId.equals(mentorRootOrgId)) {
throw new ProjectCommonException(
ResponseCode.userNotAssociatedToRootOrg.getErrorCode(),
ResponseCode.userNotAssociatedToRootOrg.getErrorMessage(),
ResponseCode.CLIENT_ERROR.getResponseCode(),
userId);
}
if ((ProjectUtil.isNull(result))
|| (ProjectUtil.isNotNull(result) && result.isEmpty())
|| (ProjectUtil.isNotNull(result)
&& result.containsKey(JsonKey.IS_DELETED)
&& ProjectUtil.isNotNull(result.get(JsonKey.IS_DELETED))
&& (Boolean) result.get(JsonKey.IS_DELETED))) {
throw new ProjectCommonException(
ResponseCode.invalidUserId.getErrorCode(),
ResponseCode.invalidUserId.getErrorMessage(),
ResponseCode.CLIENT_ERROR.getResponseCode());
if(CollectionUtils.isNotEmpty(mentorDetailList)){
Map<String, Map<String, Object>> mentorDetails =
mentorDetailList.stream().collect(Collectors.toMap(map -> (String) map.get(JsonKey.ID), map -> map));
for(String mentorId: mentors) {
Map<String, Object> result = mentorDetails.getOrDefault(mentorId, new HashMap<>());
if(MapUtils.isEmpty(result) || (result.containsKey(JsonKey.IS_DELETED) && (Boolean) result.get(JsonKey.IS_DELETED))) {
throw new ProjectCommonException(
ResponseCode.invalidUserId.getErrorCode(),
ResponseCode.invalidUserId.getErrorMessage(),
ResponseCode.CLIENT_ERROR.getResponseCode());
} else {
String mentorRootOrgId = getRootOrgFromUserMap(result);
if (!batchCreatorRootOrgId.equals(mentorRootOrgId)) {
throw new ProjectCommonException(
ResponseCode.userNotAssociatedToRootOrg.getErrorCode(),
ResponseCode.userNotAssociatedToRootOrg.getErrorMessage(),
ResponseCode.CLIENT_ERROR.getResponseCode(),
mentorId);
}
}
}
} else {
logger.info( requestContext,"Invalid mentors for batchId: " + courseBatch.getBatchId() +", mentors: " + mentors);
throw new ProjectCommonException(
ResponseCode.invalidUserId.getErrorCode(),
ResponseCode.invalidUserId.getErrorMessage(),
ResponseCode.CLIENT_ERROR.getResponseCode());
}
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment