package com.hzs.common.core.enums;

import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;

/**
 * 订单类型枚举类
 */
@AllArgsConstructor
@Getter
public enum EOrderType {

    /**
     * 注册订单
     */
    REGISTER_ORDER(1, "注册订单", 0, EnumsPrefixConstants.ORDER_TYPE + 1),

    /**
     * 升级订单
     */
    UPGRADE_ORDER(2, "升级订单", 0, EnumsPrefixConstants.ORDER_TYPE + 2),

    /**
     * 复购订单
     */
    REPURCHASE_ORDER(3, "复购订单", 0, EnumsPrefixConstants.ORDER_TYPE + 3),

    /**
     * 提货订单
     */
    PICK_ORDER(8, "提货订单", 0, EnumsPrefixConstants.ORDER_TYPE + 8),

    /**
     * 重消订单-重消专区
     */
    CONSUME_ORDER(10, "重消订单", 0, EnumsPrefixConstants.ORDER_TYPE + 10),

    /**
     * 福利订单-福利专区 bv
     */
    WELFARE_ORDER(13, "福利订单", 0, EnumsPrefixConstants.ORDER_TYPE + 13),

    /**
     * 虚拟订单（空单使用）
     */
    FICTITIOUS_ORDER(20, "虚拟订单", 0, EnumsPrefixConstants.ORDER_TYPE + 20),

    /**
     * 乐学注册订单
     */
    SPECIAL_REGISTER_ORDER(24, "乐学注册订单", 1, EnumsPrefixConstants.ORDER_TYPE + 24),

    /**
     * 乐学升级订单
     */
    SPECIAL_UPGRADE_ORDER(25, "乐学升级订单", 1, EnumsPrefixConstants.ORDER_TYPE + 25),

    /**
     * 乐学甄选订单
     */
    SPECIAL_REPURCHASE_ORDER(26, "乐学甄选", 1, EnumsPrefixConstants.ORDER_TYPE + 26),

    /**
     * 续约订单
     */
    RENEWAL_ORDER(30, "续约订单", 0, EnumsPrefixConstants.ORDER_TYPE + 30),

    /**
     * 自助购票
     */
    RETAIL_TICKET(45, "自助购票", 0, EnumsPrefixConstants.ORDER_TYPE + 45),

    ;

    /**
     * 实际值
     */
    private final int value;
    /**
     * 显示标签
     */
    private final String label;
    /**
     * 是否启用（0=是,1=否） -- 来源EYesNo
     */
    private final int enable;
    /**
     * 国际化翻译key值
     */
    private final String key;

    /**
     * 根据值，返回枚举
     *
     * @param value
     * @return
     */
    public static EOrderType getEnumByValue(int value) {
        for (EOrderType enums : EOrderType.values()) {
            if (enums.getValue() == value) {
                return enums;
            }
        }
        return null;
    }

    /**
     * 根据值，返回名称
     *
     * @param value
     * @return
     */
    public static String getLabelByValue(Integer value) {
        if (null == value) {
            return "";
        }
        for (EOrderType enums : EOrderType.values()) {
            if (enums.getValue() == value) {
                return enums.getLabel();
            }
        }
        return "";
    }


    public static List<EOrderType> getOrderTypeSpecial() {
        List<EOrderType> resultList = new ArrayList<>();
        resultList.add(EOrderType.REGISTER_ORDER);
        resultList.add(EOrderType.UPGRADE_ORDER);
        resultList.add(EOrderType.REPURCHASE_ORDER);
        return resultList;
    }


}
