Commits (2)
......@@ -125,7 +125,7 @@ public class AssessmentRepositoryImpl implements AssessmentRepositoryCustom {
return result;
}
@Override
/*@Override
public List<DBObject> getAssessmentName(Date startDate, Date endDate, long subLobId) throws Exception {
// TODO Auto-generated method stub
log.debug("inside AssessmentRepositoryImpl called getAssessmentName method with parameter, startDate={},endDate={},subLobId={}",
......@@ -161,6 +161,49 @@ public class AssessmentRepositoryImpl implements AssessmentRepositoryCustom {
AggregationResults<DBObject> result = template.aggregate(agg,COLLECTION,DBObject.class);
log.debug("Response returned from AssessmentRepositoryImpl -- getAssessmentName method, result={}",result);
return result.getMappedResults();
}*/
@Override
public List<DBObject> getAssessmentName(Date startDate, Date endDate, long subLobId) throws Exception {
// TODO Auto-generated method stub
log.debug("inside AssessmentRepositoryImpl called getAssessmentName method with parameter, startDate={},endDate={},subLobId={}",
startDate,endDate,subLobId);
AggregationOperation match = Aggregation.match(new Criteria().andOperator(Criteria.where("createdDate").gte(startDate),
Criteria.where("createdDate").lt(endDate),Criteria.where("subLob._id").is(subLobId),
new Criteria().orOperator(Criteria.where("status").is(CommonUtils.Assessment_Status.Assessment_Generated),
Criteria.where("status").is(CommonUtils.Assessment_Status.Assessment_Inprogress))));
AggregationOperation lookup = Aggregation.lookup("Question_Set","_id","assessmentId","questionSet");
AggregationOperation unwind=Aggregation.unwind("questionSet",true);
Cond condOperation1 = ConditionalOperators.when(Criteria.where("questionSet.isAttempted").is(true)).then(1).otherwise(0);
Cond condOperation2 = ConditionalOperators.when(new Criteria()
.orOperator(Criteria.where("questionSet.isAttempted").is(true),Criteria.where("questionSet.isAttempted").is(false)))
.then(1).otherwise(0);
AggregationOperation project=Aggregation.project("_id","requestorName","requestorEcode","assessmentName","duration","location","createdDate",
"wrongUserId","misMatchUserId","completionDate","subLob","assessmentType").and("questionSet._id").as("setId")
.and(condOperation1).as("completedAssessment").and(condOperation2).as("totalAssessment");
AggregationOperation group = Aggregation.group("_id","requestorName","requestorEcode","assessmentName","duration","location",
"createdDate","wrongUserId","misMatchUserId","completionDate","subLob","assessmentType").sum("completedAssessment").as("completedAssessment")
.sum("totalAssessment").as("totalAssessment");
AggregationOperation lookup1 = Aggregation.lookup("Quiz_Result","_id._id","questionSet.assessmentId","quizResult");
AggregationOperation unwind1=Aggregation.unwind("quizResult",true);
Cond condOperation3 = ConditionalOperators.when(Criteria.where("quizResult.quizOutcome")
.is(CommonUtils.Quiz_Status.Pass)).then(1).otherwise(0);
Cond condOperation4 = ConditionalOperators.when(Criteria.where("quizResult.quizOutcome")
.is(CommonUtils.Quiz_Status.Fail)).then(1).otherwise(0);
Cond condOperation5 = ConditionalOperators.when(Criteria.where("quizResult.quizOutcome")
.is(CommonUtils.Quiz_Status.Pending)).then(1).otherwise(0);
AggregationOperation project1=Aggregation.project("requestorName","requestorEcode","assessmentName","duration","location",
"createdDate","wrongUserId","misMatchUserId","completionDate","completedAssessment","subLob","totalAssessment","assessmentType")
.and(condOperation3).as("passCount").and(condOperation4).as("failCount").and(condOperation5).as("pendingCount")
.and("_id._id").as("assessmentId");
AggregationOperation group1 = Aggregation.group("assessmentId","requestorName","requestorEcode","assessmentName","duration","location",
"createdDate","wrongUserId","misMatchUserId","completionDate","subLob","completedAssessment","totalAssessment","assessmentType")
.sum("passCount").as("passCount").sum("failCount").as("failCount").sum("pendingCount").as("pendingCount");
Aggregation agg = Aggregation.newAggregation(match,lookup,unwind,project,group,lookup1,unwind1,project1,group1);
AggregationResults<DBObject> result = template.aggregate(agg,COLLECTION,DBObject.class);
log.debug("Response returned from AssessmentRepositoryImpl -- getAssessmentName method, result={}",result);
return result.getMappedResults();
}
public List<DatabaseAssessmentDetails> getAssessmentForEdit(Date startDate, Date endDate, long subLobId) throws Exception {
......
......@@ -3,6 +3,8 @@
*/
package com.statestreet.dao;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
......@@ -16,10 +18,5 @@ import com.statestreet.model.QuizResult;
@Repository
public interface QuizResultRepository extends MongoRepository<QuizResult, String>,QuizResultRepositoryCustom{
List<QuizResult> findByQuestionSet_QuestionSetId(long questionSetId);
}
......@@ -513,17 +513,6 @@ AggregationOperation match = Aggregation.match(new Criteria().andOperator(Crite
.as("questionSetId").first("userId").as("userId").first("assessmentId").as("assessmentId").first("subLob").as("subLob")
.first("questionCategory").as("questionCategory");
AggregationOperation sort1 = Aggregation.sort(Sort.Direction.ASC,"quizResultId");
AggregationOperation lookup1 = Aggregation.lookup("BOT_QUIZ_MASTER","quizResultId","quizResultId","quesList");
AggregationOperation unwind1=Aggregation.unwind("quesList",false);
AggregationOperation project1 = Aggregation.project("questionId","questionType","questionText","choiceNumber","correctAnswer",
"questionStatus","matchTypeAnsList","optionList","totalMarks","quizResultId","questionSetId","userId","assessmentId","subLob",
"questionCategory").and("quesList.questionId").as("quesId");
AggregationOperation group1 = Aggregation.group("questionId","questionType","questionText","choiceNumber","correctAnswer",
"questionStatus","matchTypeAnsList","optionList","totalMarks","quizResultId","questionSetId","userId","assessmentId","subLob",
"questionCategory").push("quesId").as("quesIdList");
AggregationOperation group2 = Aggregation.group("questionType","questionText","choiceNumber","correctAnswer",
"questionStatus","matchTypeAnsList","optionList","totalMarks","quesIdList","quizResultId","questionSetId","userId","assessmentId",
"subLob","questionCategory").push("questionId").as("questionId");
AggregationOperation project2 = Aggregation.project("questionId","questionType","questionText","choiceNumber","correctAnswer",
"questionStatus","matchTypeAnsList","optionList","totalMarks","quizResultId","questionSetId","userId","assessmentId","subLob",
"questionCategory","quesIdList").and("questionId").subsetOfArray("quesIdList").as("output");
......
......@@ -59,28 +59,38 @@ public class QuizResultServiceImpl implements QuizResultService {
quizResult.setQuizDate(quizDate);
String quizDuration=Float.toString(round(Float.parseFloat(quizResult.getQuizDuration()), 2));
quizResult.setQuizDuration(quizDuration+" Minutes");
quizResult=evaluateQuizResult(quizResult);
if(quizResult.isHasDiscriptiveQuestion()==true)
String validQuiz=validateQuizResult(quizResult.getQuestionSet().getQuestionSetId());
if(validQuiz.equals(CommonUtils.FAILURE_RESULT))
{
quizResult.setQuizOutcome(CommonUtils.Quiz_Status.Pending.name());
result="{\"Quiz_Result\":\""+CommonUtils.Quiz_Status.Pending.name()+"\"}";
}
else if(quizResult.getQuizScore()<quizResult.getQuestionSet().getPassingPercent())
{
quizResult.setQuizOutcome(CommonUtils.Quiz_Status.Fail.name());
result="{\"Quiz_Result\":\""+CommonUtils.Quiz_Status.Fail.name()+"\"}";
result="{\"Quiz_Result\":\"Quiz Already evaluated.\"}";
log.debug("Response returned from QuizResultServiceImpl -- saveQuizResult method, result={}",result);
return new ResponseEntity<String>(result,HttpStatus.ALREADY_REPORTED);
}
else
{
quizResult.setQuizOutcome(CommonUtils.Quiz_Status.Pass.name());
result="{\"Quiz_Result\":\""+CommonUtils.Quiz_Status.Pass.name()+"\"}";
quizResult=evaluateQuizResult(quizResult);
if(quizResult.isHasDiscriptiveQuestion()==true)
{
quizResult.setQuizOutcome(CommonUtils.Quiz_Status.Pending.name());
result="{\"Quiz_Result\":\""+CommonUtils.Quiz_Status.Pending.name()+"\"}";
}
else if(quizResult.getQuizScore()<quizResult.getQuestionSet().getPassingPercent())
{
quizResult.setQuizOutcome(CommonUtils.Quiz_Status.Fail.name());
result="{\"Quiz_Result\":\""+CommonUtils.Quiz_Status.Fail.name()+"\"}";
}
else
{
quizResult.setQuizOutcome(CommonUtils.Quiz_Status.Pass.name());
result="{\"Quiz_Result\":\""+CommonUtils.Quiz_Status.Pass.name()+"\"}";
}
quizResultRepo.insert(quizResult);
questionSetRepo.updateAttemptCount(quizResult.getQuestionSet().getQuestionSetId());
log.debug("Response returned from QuizResultServiceImpl -- saveQuizResult method, result={}",result);
return new ResponseEntity<String>(result,HttpStatus.OK);
}
quizResultRepo.insert(quizResult);
questionSetRepo.updateAttemptCount(quizResult.getQuestionSet().getQuestionSetId());
log.debug("Response returned from QuizResultServiceImpl -- saveQuizResult method, result={}",result);
return new ResponseEntity<String>(result,HttpStatus.OK);
}
catch(Exception e)
{
......@@ -89,6 +99,23 @@ public class QuizResultServiceImpl implements QuizResultService {
}
}
private String validateQuizResult(long questionSetId) {
// TODO Auto-generated method stub
log.debug("Inside QuizResultServiceImpl called validateQuizResult method with parameter, questionSetId={}",questionSetId);
String result="";
List<QuizResult> ques=quizResultRepo.findByQuestionSet_QuestionSetId(questionSetId);
if(ques.size()>0)
{
result=CommonUtils.FAILURE_RESULT;
}
else
{
result=CommonUtils.SUCCESS_RESULT;
}
log.debug("Response returned from QuizResultServiceImpl -- validateQuizResult method, response={}",result);
return result;
}
private QuizResult evaluateQuizResult(QuizResult quizResult) throws Exception
{
int totalQuestion=0;
......