package com.yonge.cooleshow.biz.dal.dto;

import com.yonge.cooleshow.common.entity.BaseEntity;
import com.yonge.cooleshow.common.enums.HardLevelEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @Author: liweifan
 * @Data: 2022-08-04 10:19:49
 */
@ApiModel(value = "ActivityEvaluationDto对象", description = "评测活动表数据传输对象")
public class ActivityEvaluationDto extends BaseEntity {
	private static final long serialVersionUID = 1L;

	@ApiModelProperty("活动id ")
	@NotNull(message = "活动id不能为空")
	private Long activityId;

	@ApiModelProperty("曲目id 多个用,分割 ")
	//@NotBlank(message = "曲子id不能为空")
	private String musicSheetIds; // 评测活动曲目ID
	@ApiModelProperty("活动老师id 多个用,分割 ")
	private String teacherIds; // 分享活动老师ID

	@ApiModelProperty("评测曲目信息 ")
	private List<EvaluationInfo> evaluationInfos;

	public String getTeacherIds() {
		return teacherIds;
	}

	public void setTeacherIds(String teacherIds) {
		this.teacherIds = teacherIds;
	}

	public Long getActivityId() {
		return activityId;
	}

	public void setActivityId(Long activityId) {
		this.activityId = activityId;
	}

	public String getMusicSheetIds() {

		return musicSheetIds;
	}

	public void setMusicSheetIds(String musicSheetIds) {
		this.musicSheetIds = musicSheetIds;
	}

	public List<EvaluationInfo> getEvaluationInfos() {
		return evaluationInfos;
	}

	public void setEvaluationInfos(List<EvaluationInfo> evaluationInfos) {
		this.evaluationInfos = evaluationInfos;
	}

	/**
	 * 评测活动内容
	 */
	@Data
	@NoArgsConstructor
	@AllArgsConstructor
	public static class EvaluationInfo implements Serializable {

		@ApiModelProperty("主键 ")
		private Long id;

		@ApiModelProperty("评测难度 BEGINNER 入门级 ADVANCED 进阶级 PERFORMER 大师级 ")
		private HardLevelEnum evaluationDifficulty;

		private Date updateTime;
		private Long updateBy;


		public EvaluationInfo updateTime(Date updateTime) {
			this.updateTime = updateTime;
			return this;
		}

		public EvaluationInfo updateBy(Long updateBy) {
			this.updateBy = updateBy;
			return this;
		}
	}
}