package com.syzton.sunread.service.exam; import java.util.List; import java.util.Map; import javassist.NotFoundException; import org.joda.time.DateTime; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import com.syzton.sunread.dto.exam.VerifyExamPassDTO; import com.syzton.sunread.model.exam.CapacityQuestion; import com.syzton.sunread.model.exam.CapacityQuestion.CapacityQuestionType; import com.syzton.sunread.model.exam.Exam; import com.syzton.sunread.model.exam.Exam.ExamType; import com.syzton.sunread.model.exam.ObjectiveQuestion; import com.syzton.sunread.model.exam.SpeedQuestion; import com.syzton.sunread.model.exam.SubjectiveQuestion; public interface ExamService { public Exam add(Exam added); public Exam deleteById(Long id)throws NotFoundException; public Page<Exam> findAll(Pageable pageable) throws NotFoundException; public Exam findById(Long id) throws NotFoundException; public List<ObjectiveQuestion> takeVerifyTest(Long bookId); public List<ObjectiveQuestion> takeWordTest(Long bookId); public List<CapacityQuestion> takeCapacityTest(int level); public List<SubjectiveQuestion> takeThinkTest(Long bookId); public Exam handInVerifyPaper(Exam added); public Exam handInWordPaper(Exam added); public Exam handInCapacityTest(Exam added); public Exam handInThinkTest(Exam added); public Exam handInSpeedTest(Exam added); public List<Exam> getTodayVerifyTestStatus(Long bookId, Long studentId); public boolean isPassVerifyTest(Long bookId,Long studentId); public VerifyExamPassDTO findAllByExamTypeAndPassStatus(Long studentId,ExamType type) throws NotFoundException; public VerifyExamPassDTO findAllByExamType(Long studentId,ExamType type) throws NotFoundException; public int findPassVerifyExamPassRate(Long studentId, DateTime from,DateTime to); public int findFirstPassRate(Long studentId, DateTime from,DateTime to); public int findSecondPassRate(Long studentId, DateTime from,DateTime to); public Map<CapacityQuestionType, Integer> getStudentCapacityStatus(Long student,DateTime from,DateTime to); public List<SpeedQuestion> takeSpeedTest(long articleId); }