package com.yonge.cooleshow.common.enums;

import lombok.Getter;

import java.util.Optional;

/**
 * @author: James
 * @date: 2018/8/20 上午11:29
 * @description:
 */
@Getter
public enum EStatus {

    DELETE(-1, "删除"),
    DISABLE(0, "禁用"),
    ENABLE(1, "启用"),
    SELECTED(2, "选择");

    private final int value;
    private final String name;

    EStatus(Integer value, String name) {
        this.value = value;
        this.name = name;
    }

    /**
     * 校验参数合法性
     * @param value 数据状态
     * @return boolean
     */
    public static boolean invalid(Integer value) {
        if (value != null) {
            EStatus[] values = EStatus.values();
            for (EStatus item : values) {
                if (item.getValue() == value) {
                    return false;
                }
            }
        }
        return true;
    }

    /**
     * 数据状态
     * @param value 状态值
     * @return EStatus
     */
    public static EStatus get(int value) {
        EStatus[] values = EStatus.values();
        for (EStatus item : values) {
            if (item.getValue() == value) {
                return item;
            }
        }
        return ENABLE;
    }

    /**
     * 状态匹配
     * @param dataType 匹配类型
     * @return boolean
     */
    public boolean match(Integer dataType) {
        return getValue() == Optional.ofNullable(dataType).orElse(-99);
    }

}
