/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.martial.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 比赛项目实体类
 *
 * @author BladeX
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("martial_project")
@Schema(description = "比赛项目")
public class MartialProject extends TenantEntity {

	private static final long serialVersionUID = 1L;

	/**
	 * 赛事ID
	 */
	@Schema(description = "赛事ID")
	private Long competitionId;

	/**
	 * 所属场地ID
	 */
	@Schema(description = "所属场地ID")
	private Long venueId;

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

	/**
	 * 项目编码
	 */
	@Schema(description = "项目编码")
	private String projectCode;

	/**
	 * 组别(男子组/女子组)
	 */
	@Schema(description = "组别")
	private String category;

	/**
	 * 项目类型(1-套路,2-散打,3-器械,4-对练)
	 */
	@Schema(description = "项目类型")
	@com.baomidou.mybatisplus.annotation.TableField("event_type")
	private Integer eventType;

	/**
	 * 类型(1-个人,2-双人,3-集体)
	 */
	@Schema(description = "类型")
	private Integer type;

	/**
	 * 最少参赛人数
	 */
	@Schema(description = "最少参赛人数")
	private Integer minParticipants;

	/**
	 * 最多参赛人数
	 */
	@Schema(description = "最多参赛人数")
	private Integer maxParticipants;

	/**
	 * 最小年龄
	 */
	@Schema(description = "最小年龄")
	private Integer minAge;

	/**
	 * 最大年龄
	 */
	@Schema(description = "最大年龄")
	private Integer maxAge;

	/**
	 * 性别限制(0-不限,1-仅男,2-仅女)
	 */
	@Schema(description = "性别限制")
	private Integer genderLimit;

	/**
	 * 预估时长(分钟)
	 */
	@Schema(description = "预估时长")
	private Integer estimatedDuration;

	/**
	 * 报名费用
	 */
	@Schema(description = "报名费用")
	private BigDecimal price;

	/**
	 * 报名开始时间
	 */
	@Schema(description = "报名开始时间")
	private LocalDateTime registrationStartTime;

	/**
	 * 报名结束时间
	 */
	@Schema(description = "报名结束时间")
	private LocalDateTime registrationEndTime;

	/**
	 * 难度系数(默认1.00)
	 */
	@Schema(description = "难度系数")
	private BigDecimal difficultyCoefficient;

	/**
	 * 报名截止时间
	 */
	@Schema(description = "报名截止时间")
	private LocalDateTime registrationDeadline;

	/**
	 * 项目描述
	 */
	@Schema(description = "项目描述")
	private String description;

	/**
	 * 排序
	 */
	@Schema(description = "排序")
	private Integer sortOrder;

}
