package com.competition.modules.biz.contest.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.competition.common.result.PageResult;
import com.competition.modules.biz.contest.dto.CreateRegistrationDto;
import com.competition.modules.biz.contest.dto.QueryRegistrationDto;
import com.competition.modules.biz.contest.entity.BizContestRegistration;

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

public interface IContestRegistrationService extends IService<BizContestRegistration> {

    Map<String, Object> createRegistration(CreateRegistrationDto dto, Long tenantId, Long creatorId);

    PageResult<Map<String, Object>> findAll(QueryRegistrationDto dto, Long tenantId, boolean isSuperTenant);

    Map<String, Object> getStats(Long contestId, Long tenantId, boolean isSuperAdmin);

    Map<String, Object> findDetail(Long id, Long tenantId);

    Map<String, Object> getMyRegistration(Long contestId, Long userId, Long tenantId);

    void reviewRegistration(Long id, String state, String reason, Long operatorId, Long tenantId);

    void revokeReview(Long id, Long tenantId);

    void batchReview(List<Long> ids, String state, String reason, Long operatorId, Long tenantId);

    void addTeacher(Long registrationId, Long teacherUserId, Long tenantId, Long creatorId);

    void removeTeacher(Long registrationId, Long teacherUserId, Long tenantId);

    void removeRegistration(Long id, Long tenantId);
}
