use of ai.elimu.model.content.Number in project webapp by elimu-ai.
the class NumberPeerReviewsRestController method handlePostRequest.
@RequestMapping(method = RequestMethod.POST)
public String handlePostRequest(HttpServletRequest request, HttpServletResponse response, @RequestBody String requestBody) {
logger.info("handlePostRequest");
// Validate the Contributor.
JSONObject jsonObject = new JSONObject();
String providerIdGoogle = request.getHeader("providerIdGoogle");
logger.info("providerIdGoogle: " + providerIdGoogle);
if (StringUtils.isBlank(providerIdGoogle)) {
jsonObject.put("result", "error");
jsonObject.put("errorMessage", "Missing providerIdGoogle");
response.setStatus(HttpStatus.BAD_REQUEST.value());
String jsonResponse = jsonObject.toString();
logger.info("jsonResponse: " + jsonResponse);
return jsonResponse;
}
// Lookup the Contributor by ID
Contributor contributor = contributorDao.readByProviderIdGoogle(providerIdGoogle);
logger.info("contributor: " + contributor);
if (contributor == null) {
jsonObject.put("result", "error");
jsonObject.put("errorMessage", "The Contributor was not found.");
response.setStatus(HttpStatus.UNPROCESSABLE_ENTITY.value());
String jsonResponse = jsonObject.toString();
logger.info("jsonResponse: " + jsonResponse);
return jsonResponse;
}
try {
// Convert from Gson (POJO) to JPA/Hibernate
logger.info("requestBody: " + requestBody);
NumberPeerReviewEventGson numberPeerReviewEventGson = new Gson().fromJson(requestBody, NumberPeerReviewEventGson.class);
NumberContributionEvent numberContributionEvent = numberContributionEventDao.read(numberPeerReviewEventGson.getNumberContributionEvent().getId());
NumberPeerReviewEvent numberPeerReviewEvent = new NumberPeerReviewEvent();
numberPeerReviewEvent.setContributor(contributor);
numberPeerReviewEvent.setNumberContributionEvent(numberContributionEvent);
numberPeerReviewEvent.setApproved(numberPeerReviewEventGson.isApproved());
numberPeerReviewEvent.setComment(numberPeerReviewEventGson.getComment());
numberPeerReviewEvent.setTime(Calendar.getInstance());
numberPeerReviewEvent.setPlatform(Platform.CROWDSOURCE_APP);
numberPeerReviewEventDao.create(numberPeerReviewEvent);
String contentUrl = "http://" + EnvironmentContextLoaderListener.PROPERTIES.getProperty("content.language").toLowerCase() + ".elimu.ai/content/number/edit/" + numberContributionEvent.getNumber().getId();
DiscordHelper.sendChannelMessage("Number peer-reviewed: " + contentUrl, "\"" + numberContributionEvent.getNumber().getValue() + "\"", "Comment: \"" + numberPeerReviewEvent.getComment() + "\"", numberPeerReviewEvent.isApproved(), null);
// Update the number's peer review status
int approvedCount = 0;
int notApprovedCount = 0;
for (NumberPeerReviewEvent peerReviewEvent : numberPeerReviewEventDao.readAll(numberContributionEvent)) {
if (peerReviewEvent.isApproved()) {
approvedCount++;
} else {
notApprovedCount++;
}
}
logger.info("approvedCount: " + approvedCount);
logger.info("notApprovedCount: " + notApprovedCount);
Number number = numberContributionEvent.getNumber();
if (approvedCount >= notApprovedCount) {
number.setPeerReviewStatus(PeerReviewStatus.APPROVED);
} else {
number.setPeerReviewStatus(PeerReviewStatus.NOT_APPROVED);
}
numberDao.update(number);
} catch (Exception ex) {
logger.error(ex);
jsonObject.put("result", "error");
jsonObject.put("errorMessage", ex.getMessage());
response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
}
String jsonResponse = jsonObject.toString();
logger.info("jsonResponse: " + jsonResponse);
response.setStatus(HttpStatus.CREATED.value());
return jsonResponse;
}
use of ai.elimu.model.content.Number in project webapp by elimu-ai.
the class NumbersRestController method handleGetRequest.
@RequestMapping(method = RequestMethod.GET)
public String handleGetRequest() {
logger.info("handleGetRequest");
JSONArray numbersJsonArray = new JSONArray();
for (Number number : numberDao.readAllOrdered()) {
NumberGson numberGson = JpaToGsonConverter.getNumberGson(number);
String json = new Gson().toJson(numberGson);
numbersJsonArray.put(new JSONObject(json));
}
String jsonResponse = numbersJsonArray.toString();
logger.info("jsonResponse: " + jsonResponse);
return jsonResponse;
}
Aggregations