{{--
    文件功能：百家乐买单活动前台弹窗

    用于在娱乐大厅中查看当前买单活动、历史活动、
    以及当前用户在每次活动中的补偿领取状态。
--}}

<div id="baccarat-loss-cover-modal"
    style="display:none; position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:9997; justify-content:center; align-items:center;">
    <div
        style="width:720px; max-width:96vw; max-height:88vh; border-radius:8px; overflow:hidden; box-shadow:0 8px 32px rgba(0,0,0,.3); background:#fff; display:flex; flex-direction:column;">
        <div
            style="background:linear-gradient(135deg,#15803d,#22c55e); color:#fff; padding:12px 16px; display:flex; align-items:center; justify-content:space-between;">
            <div style="flex: 1;">
                <div style="font-size:15px; font-weight:bold;">🎁 你玩游戏我买单</div>
                <div style="font-size:11px; color:rgba(255,255,255,.82); margin-top:2px;">查看活动历史、个人记录与补偿领取状态</div>
            </div>
            {{-- 金币余额 --}}
            <div
                style="font-size:12px; color:#dcfce7; display:flex; align-items:center; gap:3px; margin-right: 12px;
                        background:rgba(0,0,0,.2); padding:2px 8px; border-radius:10px;">
                💰 <strong id="blc-modal-jjb" style="color:#ffe082; font-size:13px;">--</strong> 金币
            </div>
            <span onclick="closeBaccaratLossCoverModal()"
                style="cursor:pointer; font-size:18px; opacity:.85;">&times;</span>
        </div>

        <div style="display:flex; gap:8px; padding:10px 14px; background:#f0fdf4; border-bottom:1px solid #dcfce7;">
            <button type="button" id="blc-tab-overview"
                onclick="switchBaccaratLossCoverTab('overview')"
                style="padding:6px 14px; border:none; border-radius:999px; background:#15803d; color:#fff; font-size:12px; font-weight:bold; cursor:pointer;">
                当前活动
            </button>
            <button type="button" id="blc-tab-history"
                onclick="switchBaccaratLossCoverTab('history')"
                style="padding:6px 14px; border:none; border-radius:999px; background:#dcfce7; color:#166534; font-size:12px; font-weight:bold; cursor:pointer;">
                活动历史
            </button>
        </div>

        <div style="flex:1; overflow-y:auto; background:#f6fff8; padding:14px;">
            <div id="blc-overview-pane">
                <div id="blc-current-event"
                    style="background:#fff; border:1px solid #dcfce7; border-radius:10px; padding:18px; color:#166534; text-align:center;">
                    加载中…
                </div>
            </div>

            <div id="blc-history-pane" style="display:none;">
                <div id="blc-history-list"
                    style="display:flex; flex-direction:column; gap:10px; color:#166534;">
                    加载中…
                </div>
            </div>
        </div>

        <div style="padding:10px 16px; background:#fff; border-top:1px solid #dcfce7; text-align:center;">
            <button type="button" onclick="closeBaccaratLossCoverModal()"
                style="padding:8px 28px; border:none; border-radius:8px; background:#dcfce7; color:#166534; font-size:12px; font-weight:bold; cursor:pointer;">
                关闭
            </button>
        </div>
    </div>
</div>

<script>
    (function() {
        const SUMMARY_URL = '{{ route('baccarat-loss-cover.summary') }}';
        const HISTORY_URL = '{{ route('baccarat-loss-cover.history') }}';

        function escapeHtml(text) {
            const div = document.createElement('div');
            div.textContent = text ?? '';
            return div.innerHTML;
        }

        function formatTime(value) {
            if (!value) return '—';
            return new Date(value).toLocaleString('zh-CN', {
                month: '2-digit',
                day: '2-digit',
                hour: '2-digit',
                minute: '2-digit'
            });
        }

        function syncUserGold(amount) {
            if (typeof amount !== 'number' || !window.chatContext) return;
            window.chatContext.userJjb = Number(window.chatContext.userJjb || 0) + amount;
            window.chatContext.myGold = Number(window.chatContext.myGold || 0) + amount;

            const hallGold = document.getElementById('game-hall-jjb');
            if (hallGold) {
                hallGold.textContent = Number(window.chatContext.userJjb || 0).toLocaleString();
            }
            const modalGold = document.getElementById('blc-modal-jjb');
            if (modalGold) {
                modalGold.textContent = Number(window.chatContext.userJjb || 0).toLocaleString();
            }
        }

        function renderCurrentEvent(event) {
            const container = document.getElementById('blc-current-event');
            if (!event) {
                container.innerHTML = `
                    <div style="font-size:30px; margin-bottom:10px;">📭</div>
                    <div style="font-size:16px; font-weight:bold; color:#166534;">当前暂无进行中的买单活动</div>
                    <div style="font-size:12px; color:#4b5563; margin-top:8px;">可以在输入框上方的管理员按钮中创建新活动，也可以在这里查看历史记录。</div>
                `;
                return;
            }

            const myRecord = event.my_record;
            const claimButton = event.status === 'claimable' && myRecord?.claim_status === 'pending'
                ? `<button type="button" onclick="claimBaccaratLossCover(${event.id})" style="padding:8px 18px;border:none;border-radius:999px;background:#16a34a;color:#fff;font-size:12px;font-weight:bold;cursor:pointer;">领取补偿</button>`
                : '';

            container.innerHTML = `
                <div style="display:flex; justify-content:space-between; align-items:flex-start; gap:12px; text-align:left;">
                    <div style="flex:1;">
                        <div style="font-size:18px; font-weight:900; color:#166534;">${escapeHtml(event.title)}</div>
                        <div style="font-size:12px; color:#4b5563; margin-top:6px; line-height:1.7;">${escapeHtml(event.description || '活动期间参与百家乐，输掉的金币可在活动结束后领取补偿。')}</div>
                    </div>
                    <span style="padding:4px 10px; border-radius:999px; background:#dcfce7; color:#166534; font-size:12px; font-weight:bold;">${escapeHtml(event.status_label)}</span>
                </div>
                <div style="display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin-top:16px; text-align:left;">
                    <div style="background:#f0fdf4; border-radius:8px; padding:12px;">
                        <div style="font-size:11px; color:#6b7280;">开启人</div>
                        <div style="font-size:14px; font-weight:bold; color:#166534; margin-top:3px;">${escapeHtml(event.creator_username)}</div>
                    </div>
                    <div style="background:#f0fdf4; border-radius:8px; padding:12px;">
                        <div style="font-size:11px; color:#6b7280;">活动时间</div>
                        <div style="font-size:13px; font-weight:bold; color:#166534; margin-top:3px;">${formatTime(event.starts_at)} - ${formatTime(event.ends_at)}</div>
                    </div>
                    <div style="background:#f0fdf4; border-radius:8px; padding:12px;">
                        <div style="font-size:11px; color:#6b7280;">最终已发补偿</div>
                        <div style="font-size:14px; font-weight:bold; color:#166534; margin-top:3px;">${Number(event.total_claimed_amount || 0).toLocaleString()} 金币</div>
                    </div>
                    <div style="background:#f0fdf4; border-radius:8px; padding:12px;">
                        <div style="font-size:11px; color:#6b7280;">我的状态</div>
                        <div style="font-size:14px; font-weight:bold; color:#166534; margin-top:3px;">${escapeHtml(myRecord?.claim_status_label || '未参与')}</div>
                    </div>
                </div>
                ${myRecord ? `
                    <div style="margin-top:16px; background:#fffbeb; border:1px solid #fde68a; border-radius:10px; padding:14px; text-align:left;">
                        <div style="font-size:13px; font-weight:bold; color:#a16207; margin-bottom:8px;">我的活动记录</div>
                        <div style="display:grid; grid-template-columns:repeat(2,1fr); gap:8px; font-size:12px; color:#4b5563;">
                            <div>累计下注：<b style="color:#166534;">${Number(myRecord.total_bet_amount || 0).toLocaleString()}</b></div>
                            <div>累计输掉：<b style="color:#b91c1c;">${Number(myRecord.total_loss_amount || 0).toLocaleString()}</b></div>
                            <div>可领补偿：<b style="color:#166534;">${Number(myRecord.compensation_amount || 0).toLocaleString()}</b></div>
                            <div>已领补偿：<b style="color:#166534;">${Number(myRecord.claimed_amount || 0).toLocaleString()}</b></div>
                        </div>
                        ${claimButton ? `<div style="margin-top:12px;">${claimButton}</div>` : ''}
                    </div>
                ` : ''}
            `;
        }

        function renderHistory(events) {
            const container = document.getElementById('blc-history-list');
            if (!events || events.length === 0) {
                container.innerHTML = '<div style="text-align:center;color:#6b7280;padding:24px 0;">暂无活动记录</div>';
                return;
            }

            container.innerHTML = events.map(event => {
                const myRecord = event.my_record;
                const claimButton = event.status === 'claimable' && myRecord?.claim_status === 'pending'
                    ? `<button type="button" onclick="claimBaccaratLossCover(${event.id})" style="padding:6px 14px;border:none;border-radius:999px;background:#16a34a;color:#fff;font-size:12px;font-weight:bold;cursor:pointer;">领取补偿</button>`
                    : '';

                return `
                    <div style="background:#fff; border:1px solid #dcfce7; border-left:4px solid #16a34a; border-radius:8px; padding:14px;">
                        <div style="display:flex; justify-content:space-between; gap:10px; align-items:flex-start;">
                            <div style="flex:1;">
                                <div style="font-size:15px; font-weight:bold; color:#166534;">${escapeHtml(event.title)}</div>
                                <div style="font-size:12px; color:#4b5563; margin-top:4px;">开启人：${escapeHtml(event.creator_username)} ｜ ${formatTime(event.starts_at)} - ${formatTime(event.ends_at)}</div>
                            </div>
                            <span style="padding:4px 10px; border-radius:999px; background:#f0fdf4; color:#166534; font-size:12px; font-weight:bold;">${escapeHtml(event.status_label)}</span>
                        </div>
                        <div style="display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-top:12px; font-size:12px; color:#4b5563;">
                            <div>最终补偿发放：<b style="color:#166534;">${Number(event.total_claimed_amount || 0).toLocaleString()}</b></div>
                            <div>本次总输金币：<b style="color:#b91c1c;">${Number(event.total_loss_amount || 0).toLocaleString()}</b></div>
                            <div>我的状态：<b style="color:#166534;">${escapeHtml(myRecord?.claim_status_label || '未参与')}</b></div>
                            <div>我的可领：<b style="color:#166534;">${Number(myRecord?.compensation_amount || 0).toLocaleString()}</b></div>
                        </div>
                        ${myRecord ? `<div style="margin-top:8px; font-size:12px; color:#6b7280;">累计下注 ${Number(myRecord.total_bet_amount || 0).toLocaleString()} ｜ 累计输掉 ${Number(myRecord.total_loss_amount || 0).toLocaleString()} ｜ 已领 ${Number(myRecord.claimed_amount || 0).toLocaleString()}</div>` : ''}
                        ${claimButton ? `<div style="margin-top:10px;">${claimButton}</div>` : ''}
                    </div>
                `;
            }).join('');
        }

        async function loadSummary() {
            const current = document.getElementById('blc-current-event');
            current.innerHTML = '加载中…';

            try {
                const response = await fetch(`${SUMMARY_URL}?scene=overview`, {
                    headers: {
                        'Accept': 'application/json'
                    }
                });
                const data = await response.json();
                renderCurrentEvent(data.event || null);
            } catch (error) {
                current.innerHTML = '<div style="color:#dc2626;">活动摘要加载失败，请稍后重试。</div>';
            }
        }

        async function loadHistory() {
            const list = document.getElementById('blc-history-list');
            list.innerHTML = '加载中…';

            try {
                const response = await fetch(HISTORY_URL, {
                    headers: {
                        'Accept': 'application/json'
                    }
                });
                const data = await response.json();
                renderHistory(data.events || []);
            } catch (error) {
                list.innerHTML = '<div style="color:#dc2626;">活动历史加载失败，请稍后重试。</div>';
            }
        }

        window.switchBaccaratLossCoverTab = function(tab) {
            const overview = document.getElementById('blc-overview-pane');
            const history = document.getElementById('blc-history-pane');
            const overviewBtn = document.getElementById('blc-tab-overview');
            const historyBtn = document.getElementById('blc-tab-history');

            if (tab === 'history') {
                overview.style.display = 'none';
                history.style.display = 'block';
                overviewBtn.style.background = '#dcfce7';
                overviewBtn.style.color = '#166534';
                historyBtn.style.background = '#15803d';
                historyBtn.style.color = '#fff';
                return;
            }

            overview.style.display = 'block';
            history.style.display = 'none';
            overviewBtn.style.background = '#15803d';
            overviewBtn.style.color = '#fff';
            historyBtn.style.background = '#dcfce7';
            historyBtn.style.color = '#166534';
        };

        window.openBaccaratLossCoverModal = async function(tab = 'overview') {
            document.getElementById('baccarat-loss-cover-modal').style.display = 'flex';
            const modalGold = document.getElementById('blc-modal-jjb');
            if (modalGold) {
                modalGold.textContent = Number(window.chatContext?.userJjb || 0).toLocaleString();
            }
            window.switchBaccaratLossCoverTab(tab);
            await Promise.all([loadSummary(), loadHistory()]);
        };

        window.closeBaccaratLossCoverModal = function() {
            document.getElementById('baccarat-loss-cover-modal').style.display = 'none';
        };

        window.claimBaccaratLossCover = async function(eventId) {
            try {
                const response = await fetch(`/baccarat-loss-cover/${eventId}/claim`, {
                    method: 'POST',
                    headers: {
                        'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')?.content || '',
                        'Accept': 'application/json'
                    }
                });
                const data = await response.json();

                if (data.ok) {
                    syncUserGold(Number(data.amount || 0));
                    if (window.chatDialog?.alert) {
                        await window.chatDialog.alert(data.message || '补偿领取成功', '系统通知', '#16a34a');
                    }
                    await Promise.all([loadSummary(), loadHistory()]);
                    return;
                }

                if (window.chatDialog?.alert) {
                    await window.chatDialog.alert(data.message || '领取失败', '提示', '#f59e0b');
                }
            } catch (error) {
                if (window.chatDialog?.alert) {
                    await window.chatDialog.alert('领取失败，请稍后重试。', '提示', '#dc2626');
                }
            }
        };

        document.getElementById('baccarat-loss-cover-modal').addEventListener('click', function(event) {
            if (event.target === this) {
                closeBaccaratLossCoverModal();
            }
        });
    })();
</script>
