/**
 * KSEF Admin Modals & AJAX Handlers
 */

jQuery(function($) {
    'use strict';

    // Detail modal
    var $modal = $('#ksef-detail-modal');
    var $modalBody = $('#ksef-modal-body');
    var $modalClose = $('.ksef-modal-close');

    // Open detail modal
    $(document).on('click', '.ksef-detail-btn', function(e) {
        e.preventDefault();

        var invoiceId = $(this).data('invoice-id');
        var type = $(this).data('type');

        // Show loading
        $modalBody.html('<p style="text-align: center; padding: 20px;"><em>Ładowanie...</em></p>');
        $modal.show();

        // Fetch invoice details via AJAX
        $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: {
                action: 'ksef_get_invoice_detail',
                invoice_id: invoiceId,
                type: type,
                nonce: KsefWpData.nonce
            },
            success: function(response) {
                if (response.success) {
                    $modalBody.html(response.data.html);
                } else {
                    $modalBody.html('<p style="color: red;">Błąd: ' + response.data + '</p>');
                }
            },
            error: function() {
                $modalBody.html('<p style="color: red;">Błąd komunikacji z serwerem.</p>');
            }
        });
    });

    // Close modal
    $modalClose.on('click', function() {
        $modal.hide();
    });

    // Close modal on background click
    $modal.on('click', function(e) {
        if ($(e.target).is($modal)) {
            $modal.hide();
        }
    });

    // Retry offline invoice
    $(document).on('click', '.ksef-retry-btn', function(e) {
        e.preventDefault();

        if (!confirm('Wyślij tę fakturę ponownie do KSeF?')) {
            return;
        }

        var invoiceId = $(this).data('invoice-id');
        var $btn = $(this);

        $btn.prop('disabled', true).text('Wysyłanie...');

        $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: {
                action: 'ksef_retry_offline_invoice',
                invoice_id: invoiceId,
                nonce: KsefWpData.nonce
            },
            success: function(response) {
                if (response.success) {
                    alert('Faktura wysłana ponownie.');
                    location.reload();
                } else {
                    alert('Błąd: ' + response.data);
                    $btn.prop('disabled', false).text('Wyślij');
                }
            },
            error: function() {
                alert('Błąd komunikacji.');
                $btn.prop('disabled', false).text('Wyślij');
            }
        });
    });

    // Add contractor mapping
    $(document).on('click', '.ksef-add-contractor-btn', function(e) {
        e.preventDefault();

        var nip = prompt('Podaj NIP dostawcy (10 cyfr):');
        if (!nip) return;

        nip = nip.replace(/[^0-9]/g, '');
        if (nip.length !== 10) {
            alert('NIP musi zawierać dokładnie 10 cyfr.');
            return;
        }

        var name = prompt('Podaj nazwę dostawcy:');
        if (!name) return;

        $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: {
                action: 'ksef_add_contractor',
                nip: nip,
                name: name,
                nonce: KsefWpData.nonce
            },
            success: function(response) {
                if (response.success) {
                    alert('Dostawca dodany. Przekierowanie...');
                    location.reload();
                } else {
                    alert('Błąd: ' + response.data);
                }
            },
            error: function() {
                alert('Błąd komunikacji.');
            }
        });
    });
});
