Commits (3)
......@@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.mongodb.config.EnableMongoAuditing;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import com.statestreet.dao.RoleRepository;
......@@ -15,7 +16,7 @@ import com.statestreet.utils.CommonUtils;
@ComponentScan("com.statestreet.*")
@EnableMongoRepositories(
basePackageClasses = UserRepository.class)
@EnableMongoAuditing
@SpringBootApplication
public class SBApplication {
......
......@@ -168,7 +168,8 @@ public class AssessmentRepositoryImpl implements AssessmentRepositoryCustom {
// 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),
/*
* 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))));
......@@ -201,6 +202,36 @@ public class AssessmentRepositoryImpl implements AssessmentRepositoryCustom {
"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);
*/
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("requestorName","requestorEcode","assessmentName","duration","location","createdDate",
"wrongUserId","misMatchUserId","completionDate","subLob","assessmentType").and("questionSet._id").as("setId")
.and(condOperation1).as("completedAssessment").and(condOperation2).as("totalAssessment").and("_id").as("assessmentId");
AggregationOperation lookup1 = Aggregation.lookup("Quiz_Result","setId","questionSet._id","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("assessmentId","requestorName","requestorEcode","assessmentName","duration","location",
"createdDate","wrongUserId","misMatchUserId","completionDate","completedAssessment","subLob","totalAssessment","setId","assessmentType")
.and(condOperation3).as("passCount").and(condOperation4).as("failCount").and(condOperation5).as("pendingCount");
AggregationOperation group = Aggregation.group("assessmentId","requestorName","requestorEcode","assessmentName","duration","location",
"createdDate","wrongUserId","misMatchUserId","completionDate","subLob","assessmentType").sum("completedAssessment").as("completedAssessment")
.sum("totalAssessment").as("totalAssessment").sum("passCount").as("passCount").sum("failCount").as("failCount").sum("pendingCount").as("pendingCount");
Aggregation agg = Aggregation.newAggregation(match,lookup,unwind,project,lookup1,unwind1,project1,group);
AggregationResults<DBObject> result = template.aggregate(agg,COLLECTION,DBObject.class);
log.debug("Response returned from AssessmentRepositoryImpl -- getAssessmentName method, result={}",result);
return result.getMappedResults();
......
......@@ -3,6 +3,7 @@
*/
package com.statestreet.model;
import java.time.LocalDateTime;
import java.util.Date;
import javax.validation.constraints.NotBlank;
......@@ -10,6 +11,8 @@ import javax.validation.constraints.NotNull;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.domain.Persistable;
import org.springframework.data.mongodb.core.mapping.Document;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -27,10 +30,9 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Document(collection="Quiz_Result")
public class QuizResult {
public class QuizResult implements Persistable<String>{
@Id
private long quizId;
@CreatedDate
@JsonFormat(pattern ="yyyy-MMM-dd")
private Date quizDate;
private boolean hasDiscriptiveQuestion;
......@@ -47,4 +49,21 @@ public class QuizResult {
private String quizDuration;
@NotNull
private QuestionSet questionSet;
@CreatedDate
private LocalDateTime createdDate;
@Version
private Long version;
@Override
public String getId() {
// TODO Auto-generated method stub
return Long.toString(quizId);
}
@Override
public boolean isNew() {
// TODO Auto-generated method stub
return createdDate == null;
}
}
......@@ -134,7 +134,7 @@ public class QuizResultServiceImpl implements QuizResultService {
if(quesMaster.getType().equals(CommonUtils.QuestionType.Maq.name()))
{
totalMarks=totalMarks+quesMaster.getTotalMarks();
if(quesMaster.getCorrectAnswer().size() == quesMaster.getSelectedAnswer().size())
if(quesMaster.getCorrectAnswer().size() >= quesMaster.getSelectedAnswer().size())
{
int marks=0;
for(Option objOption:quesMaster.getSelectedAnswer())
......