package org.dromara.main.service;

import org.dromara.main.domain.bo.MainExamEvaluationBo;
import org.dromara.main.domain.bo.MainExamEvaluationSyncBo;
import org.dromara.main.domain.vo.MainExamApplyListVo;
import org.dromara.main.domain.vo.MainExamSyncEmployeeOptionVo;
import org.dromara.main.domain.vo.MainExamEvaluationVo;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;


public interface IMainExamEvaluationService {

    /**
     * 查询测评详情
     */
    MainExamEvaluationVo queryById(Long id);

    /**
     * 分页查询测评列表
     */
    TableDataInfo<MainExamEvaluationVo> queryPageList(MainExamEvaluationBo bo, PageQuery pageQuery);

    /**
     * 查询测评列表
     */
    List<MainExamEvaluationVo> queryList(MainExamEvaluationBo bo);

    /**
     * 新增测评
     */
    Boolean insertByBo(MainExamEvaluationBo bo);

    /**
     * 修改测评
     */
    Boolean updateByBo(MainExamEvaluationBo bo);

    /**
     * 删除测评
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 批量更新状态
     */
    Boolean updateStatus(List<Long> ids, String status);

    /**
     * 单个更新状态
     */
    Boolean updateStatus(Long id, String status);

    /**
     * 同步第三方数据
     */
    Boolean syncThirdPartyData();

    Map<Long, Map<String, Long>> getParticipantStats(Collection<Long> ids);

    List<MainExamSyncEmployeeOptionVo> getSyncEmployeeOptions();

    Boolean syncToEmployees(MainExamEvaluationSyncBo bo);

    TableDataInfo<MainExamApplyListVo> getApplyList(Long evaluationId, String keyword, PageQuery pageQuery);

    List<MainExamApplyListVo> queryApplyList(Long evaluationId, String keyword);

    Boolean removeApply(Long applyId);
}
