package com.jeeplus.sys.feign;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.jeeplus.sys.service.DictTypeService;
import com.jeeplus.sys.service.dto.DictValueDTO;
import com.jeeplus.sys.utils.DictUtils;
import com.jeeplus.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class DictApiImpl implements IDictApi {

    @Autowired
    private DictTypeService dictTypeService;

    @Override
    public String getDictValue(String label, String type, String defaultValue) {
        return DictUtils.getDictValue ( label, type, defaultValue );
    }

    @Override
    public String getDictLabel(String value, String type, String defaultLabel) {
        return DictUtils.getDictLabel ( value, type, defaultLabel );
    }

    @Override
    public String getDictMap(String dict) {
        return JSON.toJSONString(DictUtils.getDictMap().get(dict));
    }

    @Override
    public String getDictListMapByDict(String dict) {
        List<DictValueDTO> dictValueDTOS = DictUtils.getDictMap().get(dict);
        Map<String,Object> resultMap = new HashMap<>();
        for (DictValueDTO dictValueDTO : dictValueDTOS) {
            if(StringUtils.isNotBlank(dictValueDTO.getLabel()) && StringUtils.isNotBlank(dictValueDTO.getValue())){
                resultMap.put(dictValueDTO.getValue(),dictValueDTO.getLabel());
            }
        }
        return JSON.toJSONString(resultMap);
    }

    @Override
    public String getDictValueListMapByDict(String dict) {
        List<DictValueDTO> dictValueDTOS = DictUtils.getDictMap().get(dict);
        Map<String,Object> resultMap = new HashMap<>();
        for (DictValueDTO dictValueDTO : dictValueDTOS) {
            if(StringUtils.isNotBlank(dictValueDTO.getLabel()) && StringUtils.isNotBlank(dictValueDTO.getValue())){
                resultMap.put(dictValueDTO.getLabel(),dictValueDTO.getValue());
            }
        }
        return JSON.toJSONString(resultMap);
    }

    @Override
    public void updateDictValue(String label, String value) {
        dictTypeService.updateDictValue(label, value);
    }
}
