// =============================================================================
// PAGAMENTO M-PESA DE ANÚNCIOS
// Usado no passo pós-submissão ([imz_submeter_anuncio]) e no painel do
// anunciante ([imz_meus_anuncios], botão "Pagar agora").
// =============================================================================

(function () {
    'use strict';

    function showMessage(el, text, type) {
        if (!el) return;
        el.innerHTML = '<div class="imz-message imz-message-' + (type || 'warning') + '" style="margin:0;">' + text + '</div>';
    }

    document.addEventListener('click', function (e) {
        var btn = e.target.closest('#imz-ad-pay-btn, .imz-ad-pay-now');
        if (!btn || typeof imz_ad_pay_data === 'undefined') return;

        var container = btn.closest('.imz-ad-payment-step, .imz-my-ad-card');
        if (!container) return;

        var adId = btn.getAttribute('data-ad-id') || container.getAttribute('data-ad-id');
        var phoneInput = container.querySelector('input[type="tel"]');
        var msgEl = container.querySelector('#imz-ad-pay-messages, .imz-form-messages');
        var phone = phoneInput ? phoneInput.value.trim() : '';

        if (!/^[0-9]{9}$/.test(phone)) {
            showMessage(msgEl, 'Introduza um número M-Pesa válido (9 dígitos, ex: 84xxxxxxx).', 'error');
            return;
        }

        btn.disabled = true;
        showMessage(msgEl, '📲 Pedido enviado! Insira o seu PIN no telemóvel para confirmar o pagamento…', 'warning');

        var fd = new FormData();
        fd.append('action', 'imz_ad_initiate_payment');
        fd.append('ad_id', adId);
        fd.append('phone', phone);
        fd.append('nonce', imz_ad_pay_data.nonce);

        fetch(imz_ad_pay_data.ajax_url, { method: 'POST', body: fd })
            .then(function (r) { return r.json(); })
            .then(function (result) {
                if (!result.success) {
                    throw new Error((result.data && result.data.message) || 'Erro desconhecido.');
                }
                showMessage(msgEl, '✅ ' + result.data.message, 'success');

                // Esconder o formulário de pagamento
                var payWrap = phoneInput ? phoneInput.closest('.imz-form-group, .imz-my-ad-pay') : null;
                if (payWrap) payWrap.remove();
                btn.remove();

                // No painel do anunciante: atualizar o badge para "Em aprovação"
                var badge = container.querySelector('.imz-ad-status-badge');
                if (badge) {
                    badge.className = 'imz-ad-status-badge imz-ad-status-pendente';
                    badge.textContent = 'Em aprovação';
                }
            })
            .catch(function (error) {
                showMessage(msgEl, '❌ ' + error.message, 'error');
                btn.disabled = false;
            });
    });
})();
