package cn.com.qmth.stmms.biz.mark.service;

import java.util.List;
import java.util.Set;

import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
import cn.com.qmth.stmms.common.enums.LibraryStatus;

public interface MarkLibraryService {

    MarkLibrary findById(int id);

    List<MarkLibrary> findByStudentId(int studentId);

    long countByQuery(MarkLibrarySearchQuery query);

    MarkLibrarySearchQuery findByQuery(MarkLibrarySearchQuery query);

    List<MarkLibrary> findUnMarked(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
            int pageNumber, int pageSize);

    long countByExamAndSubjectAndGroupAndStatus(int examId, String subjectCode, int groupNumber, LibraryStatus status);

    long countByMarker(int markerId);

    List<Integer> findTagCampusId(int examId);

    List<String> findTagSubjectCode(int examId);

    List<MarkLibrary> findByStudentAndGroup(int studentId, int groupNumber);

    List<MarkLibrary> findByStudentIdAndStatus(int studentId, LibraryStatus status);

    List<Object[]> findScoreCount(int examId, String subjectCode, Integer groupNumber, Integer id, LibraryStatus status);

    List<Double> findScore(int examId, String subjectCode, Integer groupNumber, LibraryStatus status);

    List<MarkLibrary> findUnMarked(Integer examId, String subjectCode, Integer groupNumber, Set<String> classSet,
            Integer markerId, int pageNumber, int pageSize);
}
