package com.wechat.common;

import com.wechat.common.utils.StringsUtils;

public final class CommonEnum {

    /** 不提供构造函数 */
    private CommonEnum()
    {
    }
    
    
    /**
     * 是否删除
     */
    public enum IS_DELETE implements IEnum {
        /** 0: 未删除 */
        NO("未删除", "0"),
        /** 1： 删除 */
        YES("删除", "1");
      

        /** 值 */
        private String label;

        /** 键 */
        private String code;

        /**
         * 取得枚举区分
         * 
         * @return String
         */
        public String getEnumName() {
            return "IS_DELETE";
        }

        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private IS_DELETE(String label, String code)
        {
            this.label = label;
            this.code = code;
        }

        /**
         * 根据键取得值
         * 
         * @param code String
         * @return String
         */
        public static String getEnumLabel(String code) {
            for (IS_DELETE c : IS_DELETE.values()) {
                if (StringsUtils.isEqual(c.getCode(), code)) {
                    return c.label;
                }
            }
            return null;
        }

        /**
         * 根据值取得第一个匹配的键
         * 
         * @param label String
         * @return String
         */
        public static String getEnumCode(String label) {
            for (IS_DELETE c : IS_DELETE.values()) {
                if (StringsUtils.isEqual(c.getLabel(), label)) {
                    return c.code;
                }
            }
            return null;
        }


        /**
         * get
         * 
         * @return String
         */
        public String getLabel() {
            return label;
        }

        /**
         * set
         * 
         * @return String
         */
        public String getCode() {
            return code;
        }

        /**
         * String转换，中间加横杠
         * 
         * @return String
         */
        @Override
        public String toString() {
            return this.label;
        }

        /**
         * 转换成value
         * 
         * @return String
         */
        public String toValueString() {
            return String.valueOf(this.code);
        }

        /**
         * 转换成label
         * 
         * @return String
         */
        public String toLabelString() {
            return String.valueOf(this.label);
        }
    }
    
    

    /**
     * 微信客服消息类别
     */
    public enum SERVICE_MSG_TYPE {
        /** 文本 */
        TXT("text"),
        /** 图片 */
        IMAGE("image"),
        /** 语音 */
        VOICE("voice"),
        /** 视频 */
        VIDEO("video"),
        /** 音乐 */
        MUSIC("music"),
        /** 图文 */
        NEWS("news");
      

        /** 值 */
        private String label;
        
        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private SERVICE_MSG_TYPE(String label)
        {
            this.label = label;
        }

        public String getLabel() {
            return label;
        }
    }

    
    
    /**
     * 子菜单类型及关键词对应关系
     */
    public enum SUB_BTN_TYPE implements IEnum {
        /** click - key */
    	CLICK("key", "click"),
        /** view - url */
        VIEW("url", "view");
      

        /** 值 */
        private String label;

        /** 键 */
        private String code;


        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private SUB_BTN_TYPE(String label, String code)
        {
            this.label = label;
            this.code = code;
        }

        /**
         * 根据键取得值
         * 
         * @param code String
         * @return String
         */
        public static String getEnumLabel(String code) {
            for (SUB_BTN_TYPE c : SUB_BTN_TYPE.values()) {
                if (StringsUtils.isEqual(c.getCode(), code)) {
                    return c.label;
                }
            }
            return null;
        }

        /**
         * 根据值取得第一个匹配的键
         * 
         * @param label String
         * @return String
         */
        public static String getEnumCode(String label) {
            for (SUB_BTN_TYPE c : SUB_BTN_TYPE.values()) {
                if (StringsUtils.isEqual(c.getLabel(), label)) {
                    return c.code;
                }
            }
            return null;
        }


        /**
         * get
         * 
         * @return String
         */
        public String getLabel() {
            return label;
        }

        /**
         * set
         * 
         * @return String
         */
        public String getCode() {
            return code;
        }

    }
    
    
    /**
     * 退款原因
     */
    public enum REFOUND_REASON implements IEnum {
        ZERO("团购失败", "0"),
        ONE("随机优惠减免", "1"),
        TWO("超出成团指定人数", "2"),
        THREE("售后维权", "3"),
        FOUR("您参与的抽奖活动未中奖", "4"),
        NINE("淘豆商城", "9");

        /** 值 */
        private String label;

        /** 键 */
        private String code;

        /**
         * 取得枚举区分
         * 
         * @return String
         */
        public String getEnumName() {
            return "REFOUND_REASON";
        }

        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private REFOUND_REASON(String label, String code)
        {
            this.label = label;
            this.code = code;
        }

        /**
         * 根据键取得值
         * 
         * @param code String
         * @return String
         */
        public static String getEnumLabel(String code) {
            for (REFOUND_REASON c : REFOUND_REASON.values()) {
                if (StringsUtils.isEqual(c.getCode(), code)) {
                    return c.label;
                }
            }
            return null;
        }

        /**
         * 根据值取得第一个匹配的键
         * 
         * @param label String
         * @return String
         */
        public static String getEnumCode(String label) {
            for (REFOUND_REASON c : REFOUND_REASON.values()) {
                if (StringsUtils.isEqual(c.getLabel(), label)) {
                    return c.code;
                }
            }
            return null;
        }


        /**
         * get
         * 
         * @return String
         */
        public String getLabel() {
            return label;
        }

        /**
         * set
         * 
         * @return String
         */
        public String getCode() {
            return code;
        }

        /**
         * String转换，中间加横杠
         * 
         * @return String
         */
        @Override
        public String toString() {
            return this.label;
        }

        /**
         * 转换成value
         * 
         * @return String
         */
        public String toValueString() {
            return String.valueOf(this.code);
        }

        /**
         * 转换成label
         * 
         * @return String
         */
        public String toLabelString() {
            return String.valueOf(this.label);
        }
    }
    
    /**
     * 职位发布时间
     */
    public enum POSITION_PUB_TIME {
        /** 1周内 */
        WEEK("1"),
        /** 1月内 */
        MONTH("2"),
        /** 3月内 */
        MONTHS("3"),
        /** 半年内 */
        YEAR("4"),
    	/** 没有的 */
        NONE("9");

        /** 值 */
        private String value;
        
        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private POSITION_PUB_TIME(String value)
        {
            this.value = value;
        }

        public String getValue() {
            return value;
        }

 		// 根据value返回枚举类型,主要在switch中使用
	     public static POSITION_PUB_TIME getByValue(String value) {
	        for (POSITION_PUB_TIME tim : values()) {
	             if (tim.getValue().equals(value)) {
	                 return tim;
	             }
	        }
	         return NONE;
	     }
    }

    
    /**
     *酒店筹开类型
     */
    public enum PREPARE_FLAG {
        /** 运营酒店 */
        OPENING("0"),
        /** 筹开酒店 */
        OPERATING("1"),
        /** 酒店集团 */
        GROUP("9");

        /** 值 */
        private String value;
        
        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private PREPARE_FLAG(String value)
        {
            this.value = value;
        }

        public String getValue() {
            return value;
        }

 		// 根据value返回枚举类型,主要在switch中使用
	     public static PREPARE_FLAG getByValue(String value) {
	        for (PREPARE_FLAG tim : values()) {
	             if (tim.getValue().equals(value)) {
	                 return tim;
	             }
	        }
	         return OPENING;
	     }
    }
    
    /**
     *酒店筹开类型
     */
    public enum PICTURE_FILE_TYPE  implements IEnum{
    	/**  JPEG (jpg) */
        JPG("jpg", "ffd8ff"), 
        /** JPEG (jpg) */
		JPG2("jpg", "ffd8ffe000104a464946"),  
		/** PNG (png) */
        PNG("png", "89504e47"), 
        /** PNG (png) */
		PNG2("png", "89504e470d0a1a0a0000"), 
		 /**  GIF (gif) */
        GIF("gif", "47494638"),
        /**  Windows Bitmap (bmp) */
        BMP("bmp", "424d"), 
        /**  16色位图(bmp) */
        BMP2("bmp", "424d228c010000000000"), 
        /**  24位位图(bmp) */
        BMP3("bmp", "424d8240090000000000"), 
        /**  256色位图(bmp) */
        BMP4("bmp", "424d8e1b030000000000"); 
    	
    	 /** 值 */
        private String label;

        /** 键 */
        private String code;

        /**
         * 取得枚举区分
         * 
         * @return String
         */
        public String getEnumName() {
            return "PICTURE_FILE_TYPE";
        }

        /**
         * 构造函数
         * 
         * @param label String
         * @param code String
         */
        private PICTURE_FILE_TYPE(String label, String code)
        {
            this.label = label;
            this.code = code;
        }

        /**
         * 根据键取得值
         * 
         * @param code String
         * @return String
         */
        public static String getEnumLabel(String code) {
            for (PICTURE_FILE_TYPE c : PICTURE_FILE_TYPE.values()) {
                if (StringsUtils.isEqual(c.getCode(), code)) {
                    return c.label;
                }
            }
            return null;
        }

        /**
         * 根据值取得第一个匹配的键
         * 
         * @param label String
         * @return String
         */
        public static String getEnumCode(String label) {
            for (PICTURE_FILE_TYPE c : PICTURE_FILE_TYPE.values()) {
                if (StringsUtils.isEqual(c.getLabel(), label)) {
                    return c.code;
                }
            }
            return null;
        }


        /**
         * get
         * 
         * @return String
         */
        public String getLabel() {
            return label;
        }

        /**
         * set
         * 
         * @return String
         */
        public String getCode() {
            return code;
        }

        /**
         * String转换
         * 
         * @return String
         */
        @Override
        public String toString() {
            return this.label;
        }

		 
    }
    

    

}

