package com.lesingle.creation.service;

import com.lesingle.creation.dto.notice.*;
import com.lesingle.creation.vo.notice.NoticeVO;

import java.util.List;

/**
 * 竞赛公告服务接口
 */
public interface ContestNoticeService {

    /**
     * 创建公告
     * @param dto 创建公告请求
     * @param creatorId 创建人 ID
     * @return 公告详情
     */
    NoticeVO create(CreateNoticeDTO dto, Long creatorId);

    /**
     * 更新公告
     * @param id 公告 ID
     * @param dto 更新公告请求
     * @return 公告详情
     */
    NoticeVO update(Long id, UpdateNoticeDTO dto);

    /**
     * 删除公告
     * @param id 公告 ID
     */
    void delete(Long id);

    /**
     * 发布公吿
     * @param id 公告 ID
     * @return 公告详情
     */
    NoticeVO publish(Long id);

    /**
     * 获取公告详情
     * @param id 公告 ID
     * @return 公告详情
     */
    NoticeVO getDetail(Long id);

    /**
     * 查询活动的公告列表
     * @param contestId 活动 ID
     * @return 公告列表
     */
    List<NoticeVO> listByContest(Long contestId);
}
