package com.dayou.utils;

import com.dayou.enums.CodeMsgEnumInterface;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.dayou.enums.CodeMsgEnumInterface;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @ignore
 */
public class EnumFactory {

    private static Map<String, CommonEnum> enumMap;
    private static Map<String, List<String>> map;

    static {
        enumMap = Maps.newHashMap();
        CommonEnum[] commonEnums = CommonEnum.values();
        for (CommonEnum commonEnum : commonEnums) {
            enumMap.put(commonEnum.getCode(), commonEnum);
        }

        map = Maps.newHashMap();
        enumMap.forEach((k, v) -> {
            map.put(k, v.values);
        });
    }

    public static List<String> getEnumByKey(String key) {
        CommonEnum commonEnum = enumMap.get(key);
        if (commonEnum != null) {
            return commonEnum.getMsg();
        }
        return null;
    }

    public static Map<String, List<String>> getAllEnum() {
        return map;
    }

    /**
     * 特别注意
     * 此处的值不用轻易修改，很多枚举值是固定的有业务含义
     */
    public enum CommonEnum implements CodeMsgEnumInterface<String, List<String>> {
        USER_TYPE("员工类型", Lists.newArrayList("正式员工", "实习员工","试用期员工")),
        SEX("性别", Lists.newArrayList("男", "女")),
        POLITICAL_STATUS("政治面貌", Lists.newArrayList("群众","中国共产党员","中国共产主义青年团团员", "中国共产党预备党员", "中国国民党革命委员会会员",
                "中国民主同盟盟员", "中国民主建国会会员", "中国民主促进会会员", "中国农工民主党党员", "中国致工党党员", "九三学社社员", "台湾民主自治同盟盟员",
                "无党派民主人士")),
        HIRE_TYPE("聘用类型", Lists.newArrayList("专职", "兼职", "兼课")),
        HIRE_DUTY("聘任专业技术职务", Lists.newArrayList("高级", "中级", "初级", "高级工", "中级工", "技师")),
        EDUCATION("全日制学历(学位)", Lists.newArrayList("本科", "硕士研究生", "博士研究生", "专科", "专科以下")),
        DEGREE("学位", Lists.newArrayList("学士", "硕士", "博士")),
        MAX_EDUCATION("最高学历(学位)", Lists.newArrayList("高中及以下", "中专", "大专", "本科", "研究生")),
        JOB_LEVEL("职位等级", Lists.newArrayList("正高级", "副高级", "中级", "初级")),
        QUALIFICATION_LEVEL("职业资格证书", Lists.newArrayList("高级技师(一级)", "技师(二级)", "高级", "中级", "初级")),


        CHARACTER_MAJOR("特色专业", Lists.newArrayList("国家级", "省级", "地市级", "校级")),
        CARD_TYPE("证件类型", Lists.newArrayList("居民身份证", "户口簿","军官证", "士兵证", "文职干部证", "部队离退休证", "香港特区护照/身份证明", "澳门特区护照/身份证明",
                "台湾居民来往大陆通行证", "境外永久居住证", "护照",  "其他")),
        NATION("国籍地区", Lists.newArrayList("中国", "其他国家")),
        FOREIGN("港澳台侨外", Lists.newArrayList("非港澳台湾侨", "香港同胞", "香港同胞亲属", "澳门同胞", "澳门同胞亲属", "台湾同胞", "台湾同胞亲属", "华侨",
                "侨眷", "归侨", "归侨子女", "归国留学人员", "非华裔中国人", "外籍华裔人", "外国人", "其他")),
        MARRIAGE("婚姻状况", Lists.newArrayList("未婚", "已婚")),
        NATIONALITY("民族", Lists.newArrayList("汉族", "蒙古族", "回族", "藏族", "维吾尔族", "苗族", "彝族", "壮族", "布依族", "朝鲜族", "满族",
                "侗族", "瑶族", "白族", "土家族", "哈尼族", "哈萨克族", "傣族", "黎族", "傈僳族", "佤族", "畲族", "高山族", "拉祜族", "水族", "东乡族",
                "纳西族", "景颇族", "柯尔克孜族", "土族", "达斡尔族", "仫佬族", "羌族", "布朗族", "撒拉族", "毛南族", "仡佬族", "锡伯族", "阿昌族", "普米族",
                "塔吉克族", "怒族", "乌孜别克族", "俄罗斯族", "鄂温克族", "德昂族", "保安族", "裕固族", "京族", "塔塔尔族", "独龙族", "鄂伦春族", "赫哲族", "门巴族"
                , "珞巴族", "基诺族", "其他", "外国血统")),
        HEALTH("健康状况", Lists.newArrayList("健康或良好", "一般或较弱", "有慢性病", "残疾")),
        HK_STATE("户口性质", Lists.newArrayList("农业户口", "非农业户口")),

        WEEK("星期",Lists.newArrayList("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日")),

        ITEM_STATE("项目状态",Lists.newArrayList("已完成","进行中","未开始")),
        CUSTOMER_LEVEL("客户等级",Lists.newArrayList("重点客户","一般客户","普通客户")),
        ;
        private String code;
        private List<String> values;

        CommonEnum(String code, List<String> values) {
            this.code = code;
            this.values = values;
        }

        @Override
        public String getCode() {
            return code;
        }

        @Override
        public List<String> getMsg() {
            return values;
        }
    }
}
