package com.lesingle.creation.service;

import com.lesingle.creation.dto.judge.*;
import com.lesingle.creation.vo.judge.JudgeVO;

import java.util.List;

/**
 * 竞赛评委服务接口
 */
public interface ContestJudgeService {

    /**
     * 创建评委
     * @param dto 创建评委请求
     * @param creatorId 创建人 ID
     * @return 评委详情
     */
    JudgeVO create(CreateJudgeDTO dto, Long creatorId);

    /**
     * 更新评委
     * @param id 评委 ID
     * @param dto 更新评委请求
     * @return 评委详情
     */
    JudgeVO update(Long id, UpdateJudgeDTO dto);

    /**
     * 删除评委
     * @param id 评委 ID
     */
    void delete(Long id);

    /**
     * 批量删除评委
     * @param ids 评委 ID 列表
     */
    void batchDelete(List<Long> ids);

    /**
     * 获取评委详情
     * @param id 评委 ID
     * @return 评委详情
     */
    JudgeVO getDetail(Long id);

    /**
     * 查询活动的评委列表
     * @param contestId 活动 ID
     * @return 评委列表
     */
    List<JudgeVO> listByContest(Long contestId);

    /**
     * 冻结评委
     * @param id 评委 ID
     * @return 评委详情
     */
    JudgeVO freeze(Long id);

    /**
     * 解冻评委
     * @param id 评委 ID
     * @return 评委详情
     */
    JudgeVO unfreeze(Long id);
}
