Skip to content

Commit

Permalink
Merge pull request #4 from project-sunbird/lms-service
Browse files Browse the repository at this point in the history
Lms service
  • Loading branch information
niharikasingh84 authored Jul 22, 2019
2 parents ed11957 + 10ca44c commit d8bb373
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -285,17 +287,9 @@ private void getPageData(Request actorMessage) throws Exception {
filterMap.remove(JsonKey.CREATED_BY);
Map<String, Object> reqFilters = (Map<String, Object>) req.get(JsonKey.FILTERS);

/** if orgId is not then consider default page */
if (StringUtils.isBlank(orgId)) {
orgId = "NA";
}
ProjectLogger.log(
"Fetching data from Cache for " + orgId + ":" + pageName, LoggerEnum.INFO.name());
Map<String, Object> pageMapData =
PageCacheLoaderService.getDataFromCache(
ActorOperations.GET_PAGE_DATA.getValue(), orgId + ":" + pageName, Map.class);

Map<String, Object> pageMap = pageMapData;
Map<String, Object> pageMap = getPageMapData(pageName, orgId);
if(null == pageMap && StringUtils.isNotBlank(orgId))
pageMap = getPageMapData(pageName, "NA");

if (null == pageMap) {
throw new ProjectCommonException(
Expand Down Expand Up @@ -380,15 +374,16 @@ private void getPageData(Request actorMessage) throws Exception {

Future<Iterable<Map<String, Object>>> sectionsFuture =
Futures.sequence(sectionList, getContext().dispatcher());
Map<String, Object> finalPageMap = pageMap;
Future<Response> response =
sectionsFuture.map(
new Mapper<Iterable<Map<String, Object>>, Response>() {
@Override
public Response apply(Iterable<Map<String, Object>> sections) {
ArrayList<Map<String, Object>> sectionList = Lists.newArrayList(sections);
Map<String, Object> result = new HashMap<>();
result.put(JsonKey.NAME, pageMap.get(JsonKey.NAME));
result.put(JsonKey.ID, pageMap.get(JsonKey.ID));
result.put(JsonKey.NAME, finalPageMap.get(JsonKey.NAME));
result.put(JsonKey.ID, finalPageMap.get(JsonKey.ID));
result.put(JsonKey.SECTIONS, sectionList);
Response response = new Response();
response.put(JsonKey.RESPONSE, result);
Expand Down Expand Up @@ -418,9 +413,10 @@ public Response apply(Iterable<Map<String, Object>> sections) {
private void getPageSetting(Request actorMessage) {
Map<String, Object> req = actorMessage.getRequest();
String pageName = (String) req.get(JsonKey.ID);
String organisationId = (StringUtils.isNotBlank((String) req.get(JsonKey.ORGANISATION_ID)))? (String) req.get(JsonKey.ORGANISATION_ID) : "NA";
Response response =
PageCacheLoaderService.getDataFromCache(
ActorOperations.GET_PAGE_SETTING.name(), pageName, Response.class);
ActorOperations.GET_PAGE_SETTING.name(), organisationId + ":" + pageName, Response.class);
if (response == null) {
response =
cassandraOperation.getRecordsByProperty(
Expand All @@ -429,13 +425,24 @@ private void getPageSetting(Request actorMessage) {
(List<Map<String, Object>>) response.getResult().get(JsonKey.RESPONSE);
if (!(result.isEmpty())) {
Map<String, Object> pageDO = result.get(0);
if(!StringUtils.equalsIgnoreCase("NA", organisationId)){
List<Map<String, Object>> resp = result.stream().filter(res -> (StringUtils.equalsIgnoreCase(organisationId, (String)res.get(JsonKey.ORGANISATION_ID)))).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(resp)){
pageDO = resp.get(0);
}else {
throw new ProjectCommonException(
ResponseCode.pageDoesNotExist.getErrorCode(),
ResponseCode.pageDoesNotExist.getErrorMessage(),
ResponseCode.RESOURCE_NOT_FOUND.getResponseCode());
}
}
Map<String, Object> responseMap = getPageSetting(pageDO);
response.getResult().put(JsonKey.PAGE, responseMap);
response.getResult().remove(JsonKey.RESPONSE);
}

PageCacheLoaderService.putDataIntoCache(
ActorOperations.GET_PAGE_SETTING.name(), pageName, response);
ActorOperations.GET_PAGE_SETTING.name(), organisationId + ":" + pageName, response);
}
sender().tell(response, self());
}
Expand Down Expand Up @@ -759,6 +766,10 @@ private Map<String, Object> getPageSetting(Map<String, Object> pageDO) {
responseMap.put(JsonKey.NAME, pageDO.get(JsonKey.NAME));
responseMap.put(JsonKey.ID, pageDO.get(JsonKey.ID));

if(null != pageDO.get(JsonKey.ORGANISATION_ID)){
responseMap.put(JsonKey.ORGANISATION_ID, pageDO.get(JsonKey.ORGANISATION_ID));
}

if (pageDO.containsKey(JsonKey.APP_MAP) && null != pageDO.get(JsonKey.APP_MAP)) {
responseMap.put(JsonKey.APP_SECTIONS, parsePage(pageDO, JsonKey.APP_MAP));
}
Expand Down Expand Up @@ -816,4 +827,18 @@ private void validateOrg(String orgId) {
ResponseCode.CLIENT_ERROR.getResponseCode());
}
}

private Map<String,Object> getPageMapData(String pageName, String orgId) {
/** if orgId is not then consider default page */
if (StringUtils.isBlank(orgId)) {
orgId = "NA";
}
ProjectLogger.log(
"Fetching data from Cache for " + orgId + ":" + pageName, LoggerEnum.INFO.name());
Map<String, Object> pageMapData =
PageCacheLoaderService.getDataFromCache(
ActorOperations.GET_PAGE_DATA.getValue(), orgId + ":" + pageName, Map.class);

return pageMapData;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,10 @@ private void enrollCourseBatch(Request actorMessage) {
Map<String, Object> courseMap = (Map<String, Object>) actorMessage.getRequest();
CourseBatch courseBatch = courseBatchDao.readById((String) courseMap.get(JsonKey.BATCH_ID));
validateCourseBatch(
courseBatch, courseMap, (String) actorMessage.getContext().get(JsonKey.REQUESTED_BY));
courseBatch,
courseMap,
(String) actorMessage.getContext().get(JsonKey.REQUESTED_BY),
ActorOperations.ENROLL_COURSE.getValue());

UserCourses userCourseResult = userCourseDao.read(UserCoursesService.getPrimaryKey(courseMap));

Expand Down Expand Up @@ -165,7 +168,10 @@ private void unenrollCourseBatch(Request actorMessage) {
Map<String, Object> request = actorMessage.getRequest();
CourseBatch courseBatch = courseBatchDao.readById((String) request.get(JsonKey.BATCH_ID));
validateCourseBatch(
courseBatch, request, (String) actorMessage.getContext().get(JsonKey.REQUESTED_BY));
courseBatch,
request,
(String) actorMessage.getContext().get(JsonKey.REQUESTED_BY),
ActorOperations.UNENROLL_COURSE.getValue());
UserCourses userCourseResult = userCourseDao.read(UserCoursesService.getPrimaryKey(request));
UserCoursesService.validateUserUnenroll(userCourseResult);
Response result = updateUserCourses(userCourseResult);
Expand Down Expand Up @@ -249,7 +255,10 @@ public static Map<String, Object> getCourseObjectFromEkStep(
* @Params
*/
private void validateCourseBatch(
CourseBatch courseBatchDetails, Map<String, Object> request, String requestedBy) {
CourseBatch courseBatchDetails,
Map<String, Object> request,
String requestedBy,
String actorOperation) {

if (ProjectUtil.isNull(courseBatchDetails)) {
ProjectCommonException.throwClientErrorException(
Expand Down Expand Up @@ -280,7 +289,9 @@ private void validateCourseBatch(
if (StringUtils.isNotBlank(courseBatchDetails.getEnrollmentEndDate())) {
courseBatchEnrollmentEndDate = format.parse(courseBatchDetails.getEnrollmentEndDate());
}
if (courseBatchEnrollmentEndDate != null && courseBatchEnrollmentEndDate.before(todaydate)) {
if (ActorOperations.ENROLL_COURSE.getValue().equals(actorOperation)
&& courseBatchEnrollmentEndDate != null
&& courseBatchEnrollmentEndDate.before(todaydate)) {
ProjectLogger.log(
"CourseEnrollmentActor validateCourseBatch Enrollment Date has ended.",
LoggerEnum.INFO.name());
Expand Down
3 changes: 2 additions & 1 deletion service/app/controllers/pagemanagement/PageController.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public Promise<Result> updatePage() {
* @param pageId String
* @return Promise<Result>
*/
public Promise<Result> getPageSetting(String pageId) {
public Promise<Result> getPageSetting(String pageId, String organisationId) {

try {
ProjectLogger.log(
Expand All @@ -88,6 +88,7 @@ public Promise<Result> getPageSetting(String pageId) {
reqObj.setRequestId(ExecutionContext.getRequestId());
reqObj.setEnv(getEnvironment());
reqObj.getRequest().put(JsonKey.ID, pageId);
reqObj.getRequest().put(JsonKey.ORGANISATION_ID, organisationId);
return actorResponseHandler(getActorRef(), reqObj, timeout, null, request());
} catch (Exception e) {
return Promise.<Result>pure(createCommonExceptionResponse(e, request()));
Expand Down
2 changes: 1 addition & 1 deletion service/conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ POST /v1/content/link/search @controllers.badging.BadgeAssocia
# Page Management APIs
POST /v1/page/create @controllers.pagemanagement.PageController.createPage()
PATCH /v1/page/update @controllers.pagemanagement.PageController.updatePage()
GET /v1/page/read/:pageId @controllers.pagemanagement.PageController.getPageSetting(pageId:String)
GET /v1/page/read/:pageId @controllers.pagemanagement.PageController.getPageSetting(pageId:String, organisationId:String ?= null)
GET /v1/page/all/settings @controllers.pagemanagement.PageController.getPageSettings()
POST /v1/page/assemble @controllers.pagemanagement.PageController.getPageData()

Expand Down

0 comments on commit d8bb373

Please sign in to comment.