Search in sources :

Example 26 with Number

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;
}
Also used : NumberPeerReviewEventGson(ai.elimu.model.v2.gson.crowdsource.NumberPeerReviewEventGson) JSONObject(org.json.JSONObject) Number(ai.elimu.model.content.Number) NumberPeerReviewEventGson(ai.elimu.model.v2.gson.crowdsource.NumberPeerReviewEventGson) NumberContributionEventGson(ai.elimu.model.v2.gson.crowdsource.NumberContributionEventGson) Gson(com.google.gson.Gson) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 27 with Number

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;
}
Also used : Number(ai.elimu.model.content.Number) JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) NumberGson(ai.elimu.model.v2.gson.content.NumberGson) Gson(com.google.gson.Gson) NumberGson(ai.elimu.model.v2.gson.content.NumberGson) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

Number (ai.elimu.model.content.Number)27 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)19 Word (ai.elimu.model.content.Word)17 Letter (ai.elimu.model.content.Letter)10 ArrayList (java.util.ArrayList)7 Contributor (ai.elimu.model.Contributor)5 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)5 NumberContributionEvent (ai.elimu.model.contributor.NumberContributionEvent)4 LetterGson (ai.elimu.model.gson.content.LetterGson)3 NumberGson (ai.elimu.model.gson.content.NumberGson)3 WordGson (ai.elimu.model.gson.content.WordGson)3 JSONArray (org.json.JSONArray)3 Audio (ai.elimu.model.content.multimedia.Audio)2 Image (ai.elimu.model.content.multimedia.Image)2 Video (ai.elimu.model.content.multimedia.Video)2 Contributor (ai.elimu.model.contributor.Contributor)2 Gson (com.google.gson.Gson)2 IOException (java.io.IOException)2 CSVFormat (org.apache.commons.csv.CSVFormat)2 JSONObject (org.json.JSONObject)2