/**
 * education-wizards.js — ویجت EduBrain
 */
;(function (global) {
    'use strict';

    const API = () => (global.ACC_CHAT_CFG?.api_base || '/acc-engine/api.php/acc/v1').replace(/\/$/, '');

    const ROUTES = [
        { key: 'session_book', icon: '📚', title: 'رزرو جلسه' },
        { key: 'placement', icon: '🧠', title: 'Placement EduBrain' },
        { key: 'konkur', icon: '🎯', title: 'مسیر کنکور' },
        { key: 'skill', icon: '🎵', title: 'مهارت (موسیقی/زبان)' },
    ];

    const DOMAINS = {
        math: 'ریاضی', physics: 'فیزیک', chemistry: 'شیمی', biology: 'زیست',
        english: 'زبان انگلیسی', music: 'موسیقی', programming: 'برنامه‌نویسی',
    };

    function esc(s) {
        return String(s ?? '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
    }

    async function quote(payload) {
        const r = await fetch(`${API()}/education/visitor/quote`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(payload),
        });
        return r.json();
    }

    async function aiChat(message, history) {
        const r = await fetch(`${API()}/education/visitor/ai`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ message, history }),
        });
        return r.json();
    }

    function sessionFormHtml() {
        const domOpts = Object.entries(DOMAINS).map(([k, v]) => `<option value="${k}">${esc(v)}</option>`).join('');
        return `
            <label class="cw-wiz-lbl">نوع جلسه</label>
            <select class="cw-visitor-input" id="cw-edu-stype" data-key="session_type">
                <option value="academic">تحصیلی</option><option value="skill">مهارتی</option>
            </select>
            <label class="cw-wiz-lbl">حوزه</label>
            <select class="cw-visitor-input" id="cw-edu-domain" data-key="domain">${domOpts}</select>
            <label class="cw-wiz-lbl">نحوه برگزاری</label>
            <select class="cw-visitor-input" id="cw-edu-delivery" data-key="delivery_mode">
                <option value="virtual">مجازی</option><option value="in_person">حضوری</option>
            </select>
            <label class="cw-wiz-lbl">محل</label>
            <select class="cw-visitor-input" id="cw-edu-venue" data-key="venue_type">
                <option value="online">آنلاین</option>
                <option value="home">منزل</option>
                <option value="school">مدرسه</option>
                <option value="institute">مؤسسه</option>
            </select>
            <label class="cw-wiz-lbl">مدت (دقیقه)</label>
            <input class="cw-visitor-input" id="cw-edu-dur" data-key="duration_min" type="number" value="90">
            <label class="cw-wiz-lbl">فاصله (کیلومتر — برای منزل)</label>
            <input class="cw-visitor-input" id="cw-edu-km" data-key="distance_km" type="number" value="0">
            <div id="cw-edu-quote-out" style="margin-top:10px;font-size:12px;color:#334155;"></div>
            <button type="button" class="cw-wiz-btn" id="cw-edu-quote-btn">محاسبه پیش‌فاکتور</button>
        `;
    }

    function placementFormHtml() {
        return Object.entries(DOMAINS).map(([k, v]) => `
            <label class="cw-wiz-lbl">${esc(v)} — درصد تسلط (۰–۱۰۰)</label>
            <input class="cw-visitor-input cw-edu-plc" data-domain="${k}" type="number" min="0" max="100" value="50">
        `).join('') + `<p style="font-size:11px;color:#64748b;margin-top:8px;">برای Placement کامل وارد پورتال EduBrain شوید.</p>`;
    }

    global.EduWizards = {
        ROUTES,
        renderWizard(type, container) {
            if (!container) return;
            if (type === 'session_book' || type === 'skill' || type === 'konkur') {
                container.innerHTML = sessionFormHtml();
                const btn = container.querySelector('#cw-edu-quote-btn');
                btn?.addEventListener('click', async () => {
                    const payload = {};
                    container.querySelectorAll('[data-key]').forEach(el => {
                        payload[el.dataset.key] = el.type === 'number' ? +el.value : el.value;
                    });
                    const out = container.querySelector('#cw-edu-quote-out');
                    out.textContent = 'در حال محاسبه…';
                    try {
                        const q = await quote(payload);
                        if (q.lines) {
                            out.innerHTML = q.lines.map(l => `<div>${esc(l.label)}: ${Number(l.amount).toLocaleString('fa-IR')} ریال</div>`).join('')
                                + `<strong style="display:block;margin-top:6px;">جمع: ${Number(q.total).toLocaleString('fa-IR')} ریال</strong>`;
                        } else {
                            out.textContent = q.message || 'خطا';
                        }
                    } catch (e) {
                        out.textContent = 'خطا در ارتباط';
                    }
                });
                return;
            }
            if (type === 'placement') {
                container.innerHTML = placementFormHtml();
                return;
            }
            container.innerHTML = '<p>از تب چت سوال بپرسید یا وارد education.php شوید.</p>';
        },
        async sendAiMessage(message, history) {
            return aiChat(message, history);
        },
    };
})(typeof window !== 'undefined' ? window : global);
