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

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.util.List;

@Data
@Schema(description = "创建赛事DTO")
public class CreateContestDto {

    @NotBlank(message = "赛事名称不能为空")
    @Schema(description = "赛事名称")
    private String contestName;

    @NotBlank(message = "赛事类型不能为空")
    @Schema(description = "赛事类型")
    private String contestType;

    @Schema(description = "可见性")
    private String visibility;

    @Schema(description = "目标城市列表")
    private List<String> targetCities;

    @Schema(description = "最小年龄")
    private Integer ageMin;

    @Schema(description = "最大年龄")
    private Integer ageMax;

    @NotBlank(message = "开始时间不能为空")
    @Schema(description = "开始时间")
    private String startTime;

    @NotBlank(message = "结束时间不能为空")
    @Schema(description = "结束时间")
    private String endTime;

    @Schema(description = "地址")
    private String address;

    @Schema(description = "赛事内容")
    private String content;

    @Schema(description = "赛事关联租户ID列表")
    private List<Integer> contestTenants;

    @Schema(description = "封面图URL")
    private String coverUrl;

    @Schema(description = "海报URL")
    private String posterUrl;

    @Schema(description = "联系人姓名")
    private String contactName;

    @Schema(description = "联系人电话")
    private String contactPhone;

    @Schema(description = "联系人二维码")
    private String contactQrcode;

    @Schema(description = "主办方")
    private Object organizers;

    @Schema(description = "协办方")
    private Object coOrganizers;

    @Schema(description = "赞助方")
    private Object sponsors;

    @NotBlank(message = "报名开始时间不能为空")
    @Schema(description = "报名开始时间")
    private String registerStartTime;

    @NotBlank(message = "报名结束时间不能为空")
    @Schema(description = "报名结束时间")
    private String registerEndTime;

    @Schema(description = "报名状态")
    private String registerState;

    @Schema(description = "是否需要审核")
    private Boolean requireAudit;

    @Schema(description = "允许的年级列表")
    private List<Integer> allowedGrades;

    @Schema(description = "允许的班级列表")
    private List<Integer> allowedClasses;

    @Schema(description = "团队最小人数")
    private Integer teamMinMembers;

    @Schema(description = "团队最大人数")
    private Integer teamMaxMembers;

    @Schema(description = "提交规则")
    private String submitRule;

    @NotBlank(message = "提交开始时间不能为空")
    @Schema(description = "提交开始时间")
    private String submitStartTime;

    @NotBlank(message = "提交结束时间不能为空")
    @Schema(description = "提交结束时间")
    private String submitEndTime;

    @Schema(description = "作品类型")
    private String workType;

    @Schema(description = "作品要求")
    private String workRequirement;

    @Schema(description = "评审规则ID")
    private Long reviewRuleId;

    @NotBlank(message = "评审开始时间不能为空")
    @Schema(description = "评审开始时间")
    private String reviewStartTime;

    @NotBlank(message = "评审结束时间不能为空")
    @Schema(description = "评审结束时间")
    private String reviewEndTime;

    @Schema(description = "结果发布时间")
    private String resultPublishTime;
}
