package com.qmth.exam.reserve.service;

import java.io.File;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.boot.core.collection.PageResult;
import com.qmth.exam.reserve.bean.login.LoginUser;
import com.qmth.exam.reserve.bean.stdapply.*;
import com.qmth.exam.reserve.entity.StudentApplyEntity;
import com.qmth.exam.reserve.entity.StudentEntity;

public interface StudentApplyService extends IService<StudentApplyEntity> {

    PageResult<StudentApplyVO> page(StudentApplyReq req);

    void cancel(LoginUser user, Long id);

    List<Map<String, Object>> importPreExam(LoginUser user, Long teachingId, Integer level, InputStream inputStream);

    void autoAssign(Long taskId, Long userId);

    void autoLayout(Long teachingId);

    File downloadSignIn(Long teachingId, Long agentId, Long examDate);

    int countApplyFinishForExamSiteAndTimePeriod(Long examSiteId, Long timePeriodId);

    List<SignInVO> listSignInDate(Long taskId);

    List<String[]> listExamSiteAvailable(List<CategoryVO> examSiteList);

    List<StudentApplyExport> listStudentApplyDetail(StudentApplyReq req);

    List<StudentExport> listStudentNoApply(Long teachingId);

    void exportNoApplyStudent(Long teachingId, Long id);

    void exportStudentApplyDetail(StudentApplyReq req, Long operateId);

    boolean saveOrUpdateStudentApply(StudentApplyEntity studentApplyEntity);
}
