package org.springblade.modules.martial.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.martial.pojo.entity.MartialRegistrationOrder;

import java.util.List;

/**
 * 报名订单视图对象
 * 包含关联的赛事、项目和选手信息
 *
 * @author BladeX
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "报名订单视图对象")
public class MartialRegistrationOrderVO extends MartialRegistrationOrder {

	private static final long serialVersionUID = 1L;

	/**
	 * 赛事名称
	 */
	@Schema(description = "赛事名称")
	private String competitionName;

	/**
	 * 赛事地点
	 */
	@Schema(description = "赛事地点")
	private String location;

	/**
	 * 赛事开始时间
	 */
	@Schema(description = "赛事开始时间")
	private String startTime;

	/**
	 * 赛事结束时间
	 */
	@Schema(description = "赛事结束时间")
	private String endTime;

	/**
	 * 报名项目名称列表（逗号分隔）
	 */
	@Schema(description = "报名项目名称")
	private String projectNames;

	/**
	 * 报名项目列表
	 */
	@Schema(description = "报名项目列表")
	private List<ProjectInfo> projectList;

	/**
	 * 参赛选手名称列表（逗号分隔）
	 */
	@Schema(description = "参赛选手名称")
	private String athleteNames;

	/**
	 * 参赛选手列表
	 */
	@Schema(description = "参赛选手列表")
	private List<AthleteInfo> athleteList;

	/**
	 * 项目信息
	 */
	@Data
	@Schema(description = "项目信息")
	public static class ProjectInfo {
		@Schema(description = "项目ID")
		private Long id;

		@Schema(description = "项目名称")
		private String projectName;

		@Schema(description = "项目类型")
		private String projectType;
	}

	/**
	 * 选手信息
	 */
	@Data
	@Schema(description = "选手信息")
	public static class AthleteInfo {
		@Schema(description = "选手ID")
		private Long id;

		@Schema(description = "选手姓名")
		private String playerName;

		@Schema(description = "性别")
		private Integer gender;

		@Schema(description = "身份证号")
		private String idCard;
	}
}
