(function($){
    $(document).on('click', '.bwdk-copy-json', function(e){
        e.preventDefault();
        var ta = $(this).closest('.bwdk-woo-panel, #bwdk_meta').find('.bwdk-code').get(0);
        if (!ta) return;
        var text = ta.innerText || ta.textContent || '';
        navigator.clipboard.writeText(text).then(function(){
            try{
                wp.data && wp.data.dispatch('core/notices')?.createNotice('success','کپی شد.',{isDismissible:true});
            }catch(e){}
        });
    });

    $(document).on('click', '.bwdk-copy-order-url', function(e){
        e.preventDefault();
        var ta = $(this).closest('.bwdk-woo-panel, #bwdk_meta').find('.bwdk-order-url').get(0);
        if (!ta) return;
        var text = ta.innerText || ta.textContent || '';
        navigator.clipboard.writeText(text).then(function(){
            try{
                wp.data && wp.data.dispatch('core/notices')?.createNotice('success','کپی شد.',{isDismissible:true});
            }catch(e){}
        });
    });
    // Sync/Verify order button handler
    $(document).on('click', '.bwdk-sync-order', function (e) {
        e.preventDefault();
        var $btn = $(this);
        var orderId = $btn.data('order-id');
        var orderUuid = $btn.data('order-uuid');
        
        if (!orderId) {
            Swal.fire({
                title: 'خطا',
                text: 'شناسه سفارش مشخص نیست',
                icon: 'error',
                confirmButtonText: 'باشه',
            });
            return;
        }

        // Disable button to prevent double-click
        $btn.prop('disabled', true);

        // Show loading
        Swal.fire({
            title: 'در حال به‌روزرسانی...',
            text: 'لطفاً صبر کنید',
            icon: 'info',
            allowOutsideClick: false,
            allowEscapeKey: false,
            showConfirmButton: false,
            didOpen: function() {
                Swal.showLoading();
            }
        });

        // Use AJAX instead of form submit for better error handling
        $.ajax({
            url: bwdk_admin_ajax.ajax_url,
            type: 'POST',
            dataType: 'json',
            data: {
                action: 'bwdk_sync_order',
                order_id: orderId,
                nonce: bwdk_admin_ajax.nonce
            },
            success: function(response) {
                if (response.success) {
                    // Success - redirect to order edit page
                    // The PHP handler will redirect, but if it doesn't, we'll reload
                    Swal.fire({
                        title: 'موفق',
                        text: response.data && response.data.message ? response.data.message : 'وضعیت سفارش به‌روزرسانی شد',
                        icon: 'success',
                        confirmButtonText: 'باشه',
                        allowOutsideClick: false,
                    }).then(function() {
                        // Reload page to show updated status
                        window.location.reload();
                    });
                } else {
                    // Error response
                    Swal.fire({
                        title: 'خطا',
                        text: response.data && response.data.message ? response.data.message : 'خطا در به‌روزرسانی سفارش',
                        icon: 'error',
                        confirmButtonText: 'باشه',
                    });
                    $btn.prop('disabled', false);
                }
            },
            error: function(xhr, status, error) {
                // Network or server error
                var errorMessage = 'خطا در ارتباط با سرور';
                if (xhr.responseJSON && xhr.responseJSON.data && xhr.responseJSON.data.message) {
                    errorMessage = xhr.responseJSON.data.message;
                } else if (xhr.responseText) {
                    try {
                        var jsonResponse = JSON.parse(xhr.responseText);
                        if (jsonResponse.data && jsonResponse.data.message) {
                            errorMessage = jsonResponse.data.message;
                        }
                    } catch(e) {
                        // Not JSON, use default message
                    }
                }
                
                Swal.fire({
                    title: 'خطا',
                    text: errorMessage,
                    icon: 'error',
                    confirmButtonText: 'باشه',
                });
                $btn.prop('disabled', false);
            }
        });
    });

    $('.bwdk-refund-digipay').on('click', function (e) {
        e.preventDefault();


        Swal.fire({
            title: "آیا مطمئن هستید؟",
            text: "این عملیات غیرقابل بازگشت است.",
            showCancelButton: true,
            icon: "warning",
            confirmButtonText: "بله. مسترد کن!",
            cancelButtonText: "خیر",
            showLoaderOnConfirm: true,
            preConfirm: async () => {
                try {

                   await $.post({
                        url: bwdk_admin_ajax.ajax_url,
                        dataType: 'json',
                        data: {
                            action: 'bwdk_refund_digipay',
                            order_id:$(this).data("order-id"),
                            order_uuid:$(this).data("order-uuid"),
                        },
                        success: function (response) {
                            if (response.data.status){
                                Swal.fire({
                                    title: 'عملیات با موفقیت انجام شد.',
                                    text: response.data.message,
                                    icon: "success",
                                    confirmButtonText: "باشه",
                                });
                                location.reload()

                            }
                            else{
                                Swal.fire({
                                    title: 'خطا',
                                    text: response.data.message,
                                    icon: "error",
                                    confirmButtonText: "باشه",
                                });
                            }
                        },
                        error: function (response) {
                            Swal.fire({
                                title: 'خطا',
                                text: response.data.message,
                                icon: "error",
                                confirmButtonText: "باشه",
                            });
                        }
                    });

                } catch (error) {
                    Swal.fire({
                        title: 'خطا',
                        text: response.data.message,
                        icon: "error",
                        confirmButtonText: "باشه",
                    });
                }
            },
            allowOutsideClick: () => !Swal.isLoading()
        })


    });
})(jQuery);

