package com.lesingle.modules.biz.review.service;

import com.lesingle.common.result.PageResult;
import com.lesingle.modules.biz.review.dto.CreateScoreDto;
import com.lesingle.modules.biz.review.dto.MarkContestWorkViolationDto;

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

public interface IContestReviewService {

    Map<String, Object> assignWork(Long contestId, Long workId, List<Long> judgeIds, Long creatorId);

    Map<String, Object> batchAssignWorks(Long contestId, List<Long> workIds, List<Long> judgeIds, Long creatorId);

    Map<String, Object> autoAssignWorks(Long contestId, Long creatorId);

    Map<String, Object> score(CreateScoreDto dto, Long judgeId, Long tenantId);

    Map<String, Object> markViolation(Long workId, MarkContestWorkViolationDto dto, Long judgeId);

    Map<String, Object> updateScore(Long scoreId, CreateScoreDto dto, Long judgeId);

    List<Map<String, Object>> getAssignedWorks(Long judgeId, Long contestId);

    List<Map<String, Object>> getJudgeContests(Long judgeId);

    PageResult<Map<String, Object>> getJudgeContestWorks(Long judgeId, Long contestId, Long page, Long pageSize, String workNo, String accountNo, String reviewStatus);

    Map<String, Object> getReviewProgress(Long contestId);

    Map<String, Object> getWorkStatusStats(Long contestId);

    List<Map<String, Object>> getWorkScores(Long workId);

    Map<String, Object> calculateFinalScore(Long workId);

    Map<String, Object> getJudgeContestDetail(Long judgeId, Long contestId);
}
