-- =============================================================================
-- Migration 033: Add system_configs table
-- Description: Bảng lưu trữ cấu hình chung của toàn hệ thống
-- Author: System
-- Date: 2026-06-02
-- =============================================================================

CREATE TABLE IF NOT EXISTS system_configs (
    id          UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    config_key       VARCHAR(100) UNIQUE NOT NULL,
    config_group     VARCHAR(50) NOT NULL,
    description TEXT,
    config_value     JSONB NOT NULL,
    is_active   BOOLEAN NOT NULL DEFAULT TRUE,
    created_at  TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at  TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- Index cho config_group (config_key đã có index tự động từ UNIQUE)
CREATE INDEX idx_system_configs_group ON system_configs(config_group);
CREATE INDEX idx_system_configs_group_active ON system_configs(config_group, is_active);

CREATE TRIGGER trg_system_configs_updated_at
    BEFORE UPDATE ON system_configs
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();

-- =============================================================================
-- SEED DATA
-- =============================================================================

INSERT INTO system_configs (config_key, config_group, description, config_value) VALUES

-- 2. Cấu hình chung
(
    'GENERAL_SETTINGS',
    'GENERAL',
    'Các thiết lập chung cho toàn hệ thống BeKind Admin',
    '{
        "organization_info": {
            "name": "BeKind Property",
            "contact_email": "admin@bekind.vn",
            "hotline": "1900 123 456",
            "office_address": "123 Nguyễn Huệ, Q1, TP.HCM"
        },
        "localization": {
            "timezone": "Asia/Ho_Chi_Minh",
            "default_language": "Tiếng việt",
            "date_format": "DD/MM/YYYY"
        }
    }'::jsonb
),
-- 4. Cấu hình thanh toán
(
    'PAYMENT_SETTINGS',
    'PAYMENT',
    'Cấu hình phương thức và chính sách thanh toán',
    '{
        "payment_methods": {
            "cash": true,
            "bank_transfer": true,
            "momo": false,
            "vnpay": false
        },
        "billing_cycle": {
            "invoice_generation_day": 1,
            "payment_due_offset_days": 15,
            "auto_generate_monthly": true
        }
    }'::jsonb
),

-- 5. Cấu hình thương hiệu
(
    'BRAND_SETTINGS',
    'BRAND',
    'Thiết lập thương hiệu và thông tin liên hệ hiển thị trong hệ thống',
    '{
        "company_name": "BeKind",
        "logo_id": null,
        "primary_color": "#1890ff"
    }'::jsonb
);

-- =============================================================================
-- ROLLBACK SCRIPT (Comment - for reference only)
-- =============================================================================

/*
DROP TABLE IF EXISTS system_configs;
*/

-- =============================================================================
-- END OF MIGRATION
-- =============================================================================
