package com.home4j.service;

import com.home4j.entity.Config;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.transaction.Transactional;

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

/**
 * 配置服务
 */
@ApplicationScoped
public class ConfigService {

    // 默认配置值
    private static final Map<String, String> DEFAULTS = new HashMap<>();
    static {
        DEFAULTS.put(Config.KEY_SITE_TITLE, "Home4j");
        DEFAULTS.put(Config.KEY_SITE_SUBTITLE, "我的导航页");
        DEFAULTS.put(Config.KEY_THEME, "light");
        DEFAULTS.put(Config.KEY_FOOTER_TEXT, "Powered by Home4j");
        DEFAULTS.put(Config.KEY_SEARCH_ENGINE, "https://www.google.com/search");
        DEFAULTS.put(Config.KEY_SHOW_SEARCH, "true");
        DEFAULTS.put(Config.KEY_VIEW_MODE, "icon");
        DEFAULTS.put(Config.KEY_COLUMNS, "4");
        DEFAULTS.put(Config.KEY_BACKGROUND_IMAGE, "");
        DEFAULTS.put(Config.KEY_BACKGROUND_OVERLAY, "0.5");
    }

    /**
     * 获取配置值
     */
    public String get(String key) {
        return Config.getValue(key, DEFAULTS.get(key));
    }

    /**
     * 获取配置值（带默认值）
     */
    public String get(String key, String defaultValue) {
        return Config.getValue(key, defaultValue);
    }

    /**
     * 设置配置值
     */
    @Transactional
    public void set(String key, String value) {
        Config.setValue(key, value, null);
    }

    /**
     * 设置配置值（带描述）
     */
    @Transactional
    public void set(String key, String value, String description) {
        Config.setValue(key, value, description);
    }

    /**
     * 获取所有配置
     */
    public Map<String, String> getAll() {
        Map<String, String> result = new HashMap<>(DEFAULTS);
        List<Config> configs = Config.listAll();
        for (Config config : configs) {
            result.put(config.configKey, config.configValue);
        }
        return result;
    }

    /**
     * 获取网站标题
     */
    public String getSiteTitle() {
        return get(Config.KEY_SITE_TITLE);
    }

    /**
     * 获取网站副标题
     */
    public String getSiteSubtitle() {
        return get(Config.KEY_SITE_SUBTITLE);
    }

    /**
     * 获取当前主题
     */
    public String getTheme() {
        return get(Config.KEY_THEME);
    }

    /**
     * 获取页脚文本
     */
    public String getFooterText() {
        return get(Config.KEY_FOOTER_TEXT);
    }

    /**
     * 获取搜索引擎URL
     */
    public String getSearchEngine() {
        return get(Config.KEY_SEARCH_ENGINE);
    }

    /**
     * 是否显示搜索框
     */
    public boolean isShowSearch() {
        return "true".equals(get(Config.KEY_SHOW_SEARCH));
    }

    /**
     * 获取视图模式 (icon/list)
     */
    public String getViewMode() {
        return get(Config.KEY_VIEW_MODE);
    }

    /**
     * 获取列数
     */
    public int getColumns() {
        try {
            return Integer.parseInt(get(Config.KEY_COLUMNS));
        } catch (NumberFormatException e) {
            return 4;
        }
    }

    /**
     * 获取背景图URL
     */
    public String getBackgroundImage() {
        return get(Config.KEY_BACKGROUND_IMAGE, "");
    }

    /**
     * 获取背景遮罩透明度
     */
    public String getBackgroundOverlay() {
        return get(Config.KEY_BACKGROUND_OVERLAY, "0.5");
    }
}
