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

import com.yonge.cooleshow.biz.dal.enums.AccompanimentTypeEnum;
import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
import com.yonge.cooleshow.common.enums.YesOrNoEnum;
import com.yonge.toolset.base.page.QueryInfo;
import com.yonge.toolset.base.util.StringUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * Description
 *
 * @author: liujunchi
 * @date: 2022-03-30
 */
@ApiModel(value = "MusicSheetSearch对象", description = "曲目表查询对象")
public class MusicSheetSearch  extends QueryInfo{

    @ApiModelProperty(value = "曲目音频类型 MP3：mp3, MIDI:midi,")
    private AudioTypeEnum audioType;

    @ApiModelProperty("曲目编号/名称")
    private String idAndName;

    @ApiModelProperty("标签id（多个逗号隔开）")
    private String musicTagIds;

    @ApiModelProperty(hidden = true)
    private List<Long> musicTagIdList;

    @ApiModelProperty("声部id（多个逗号隔开）")
    private String subjectIds;

    @ApiModelProperty(hidden = true)
    private List<Long> subjectIdList;

    @ApiModelProperty(value = "曲目来源类型 TEACHER 老师 PLATFORM 平台")
    private SourceTypeEnum sourceType;

    @ApiModelProperty("曲目状态（0：停用，1：启用））")
    private YesOrNoEnum state;

    @ApiModelProperty("曲目审核状态(DOING:待审核;PASS:通过;UNPASS:未通过 OUT_SALE : 下架)")
    private AuthStatusEnum auditStatus;

    @ApiModelProperty(value = "创建人id （老师id）")
    private Long createBy;

    @ApiModelProperty("活动id（活动添加曲目列表必传）")
    private Long activityId;

    @ApiModelProperty(value = "假删除 false : 未删除 true：已删除",hidden = true)
    private Boolean delFlag = false;

    @ApiModelProperty(value = "收费类型(FREE:免费;VIP:会员;CHARGE:单曲收费)")
    private ChargeTypeEnum chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)

    @ApiModelProperty(value = "查看我自己的曲目")
    private Boolean myself;


    @ApiModelProperty(value = "是否置顶(0:否;1:是)")
    private YesOrNoEnum topFlag;  //是否置顶(0:否;1:是)
    
    @ApiModelProperty(value = "精品标志(0:否;1:是)")
    private YesOrNoEnum exquisiteFlag;

    @ApiModelProperty(value = "是否审核时可见 （0:否  1：是）",hidden = true)
    private YesOrNoEnum auditVersion;

    @ApiModelProperty(value = "伴奏类型 HOMEMODE:自制伴奏  COMMON:普通伴奏")
    private AccompanimentTypeEnum accompanimentType;

    public AudioTypeEnum getAudioType() {
        return audioType;
    }

    public void setAudioType(AudioTypeEnum audioType) {
        this.audioType = audioType;
    }

    public AccompanimentTypeEnum getAccompanimentType() {
        return accompanimentType;
    }

    public void setAccompanimentType(AccompanimentTypeEnum accompanimentType) {
        this.accompanimentType = accompanimentType;
    }

    public YesOrNoEnum getAuditVersion() {
        return auditVersion;
    }

    public void setAuditVersion(YesOrNoEnum auditVersion) {
        this.auditVersion = auditVersion;
    }

    public YesOrNoEnum getTopFlag() {
        return topFlag;
    }

    public void setTopFlag(YesOrNoEnum topFlag) {
        this.topFlag = topFlag;
    }

    public YesOrNoEnum getExquisiteFlag() {
		return exquisiteFlag;
	}

	public void setExquisiteFlag(YesOrNoEnum exquisiteFlag) {
		this.exquisiteFlag = exquisiteFlag;
	}

	public Boolean getMyself() {
        return myself;
    }

    public void setMyself(Boolean myself) {
        this.myself = myself;
    }

    public ChargeTypeEnum getChargeType() {
        return chargeType;
    }

    public void setChargeType(ChargeTypeEnum chargeType) {
        this.chargeType = chargeType;
    }

    public String getIdAndName() {
        return idAndName;
    }

    public void setIdAndName(String idAndName) {
        this.idAndName = idAndName;
    }

    public List<Long> getMusicTagIdList() {
        return musicTagIdList;
    }

    public void setMusicTagIdList(List<Long> musicTagIdList) {
        this.musicTagIdList = musicTagIdList;
    }

    public List<Long> getSubjectIdList() {
        return this.subjectIdList;
    }

    public void setSubjectIdList(List<Long> subjectIdList) {
        this.subjectIdList = subjectIdList;
    }

    public String getMusicTagIds() {
        return musicTagIds;
    }

    public void setMusicTagIds(String musicTagIds) {
        this.musicTagIds = musicTagIds;
        if (StringUtils.isNotBlank(musicTagIds)) {
            this.musicTagIdList = StringUtil.toLongList(musicTagIds);
        }
    }

    public String getSubjectIds() {
        return subjectIds;
    }

    public void setSubjectIds(String subjectIds) {
        this.subjectIds = subjectIds;
        if (StringUtils.isNotBlank(subjectIds)) {
            this.subjectIdList = StringUtil.toLongList(subjectIds);
        }
    }

    public YesOrNoEnum getState() {
        return state;
    }

    public void setState(YesOrNoEnum state) {
        this.state = state;
    }

    public AuthStatusEnum getAuditStatus() {
        return auditStatus;
    }

    public void setAuditStatus(AuthStatusEnum auditStatus) {
        this.auditStatus = auditStatus;
    }

    public Long getCreateBy() {
        return createBy;
    }

    public void setCreateBy(Long createBy) {
        this.createBy = createBy;
    }

    public Boolean getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(Boolean delFlag) {
        this.delFlag = delFlag;
    }

    public SourceTypeEnum getSourceType() {
        return sourceType;
    }

    public void setSourceType(SourceTypeEnum sourceType) {
        this.sourceType = sourceType;
    }

    public Long getActivityId() {
        return activityId;
    }

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