package com.seeyon.apps.src_powerfeeinvoice.utils;

import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager;
import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumBean;
import com.seeyon.ctp.common.po.ctpenumnew.CtpEnumItem;
import com.seeyon.ctp.util.JDBCAgent;

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

public class EnumMapUtils {
    public static String getEnumItemValue(String rootPCode, String groupValue, String targetValue) {
        if(targetValue == null || "null".equals(targetValue) || "".equals(targetValue)){
            return "";
        }
        String queryIdSql = "SELECT ce.ID FROM ctp_enum ce inner join ctp_enum cei on ce.`PARENT_ID` = cei.ID where CEI.`PROGRAM_CODE` = ? and ce.`ENUMNAME` = ?";
        Long enumId = null;
        JDBCAgent agent = new JDBCAgent();
        try {
            agent.execute(queryIdSql, Arrays.asList(rootPCode,groupValue));
            List<Map<String, Object>> list = (List<Map<String, Object>>) agent.resultSetToList();
            if(list == null || list.size() == 0) {
                return "";
            }
            Map map = list.get(0);
            enumId = (Long)map.get("ID");
        } catch (Exception e) {
            return "";
        }finally {
            agent.close();
        }
        EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
        CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
        if(ctpEnumBean == null) {
            return "";
        }
        List<CtpEnumItem> ctpEnumItems =  ctpEnumBean.getItems();
        if(ctpEnumBean.getItems() == null) {
            return "";
        }
        for (CtpEnumItem enumItem : ctpEnumItems) {
            if(enumItem.getShowvalue().equals(targetValue)) {
                return enumItem.getId() + "";
            }
        }
        return "";
    }

    public static String getEnumItemValueByEnumId(String showValue,long enumId) {
        EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
        CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
        if(ctpEnumBean == null) {
            return "";
        }
        List<CtpEnumItem> ctpEnumItems =  ctpEnumBean.getItems();
        if(ctpEnumBean.getItems() == null) {
            return "";
        }
        for (CtpEnumItem enumItem : ctpEnumItems) {
            if(enumItem.getShowvalue().equals(showValue)) {
                return enumItem.getId() + "";
            }
        }
        return "";
    }

    public static String getEnumItemValueByEnumIdAndEnumValue(String value,long enumId) {
        EnumManager enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew");
        CtpEnumBean ctpEnumBean = enumManagerNew.getEnum(enumId);
        if(ctpEnumBean == null) {
            return "";
        }
        List<CtpEnumItem> ctpEnumItems =  ctpEnumBean.getItems();
        if(ctpEnumBean.getItems() == null) {
            return "";
        }
        for (CtpEnumItem enumItem : ctpEnumItems) {
            if(enumItem.getValue().equals(value)) {
                return enumItem.getId() + "";
            }
        }
        return "";
    }
}
