/**
 * CMS Pages Management Script
 */
$(document).ready(function () {
    const apiBase = 'APIs/cms_api.php';

    // Initialize TinyMCE
    tinymce.init({
        selector: '#pageContentEditor',
        height: 500,
        directionality: 'rtl',
        plugins: 'advlist autolink lists link image charmap preview anchor searchreplace visualblocks code fullscreen insertdatetime media table help wordcount',
        toolbar: 'undo redo | blocks | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | help',
        content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:16px; direction: rtl; }',
        images_upload_url: 'APIs/cms_upload.php',
        relative_urls: false,
        remove_script_host: true,
        document_base_url: '/web/'
    });

    loadPages();

    function loadPages() {
        $.getJSON(`${apiBase}?action=get_pages`, function (res) {
            if (res.success) {
                let rows = '';
                res.data.forEach((p, i) => {
                    const statusBadge = p.status === 'published' ? 'bg-success' : 'bg-secondary';
                    const statusLabel = p.status === 'published' ? 'پبلش' : 'ڈرافٹ';
                    rows += `
                        <tr class="urdu-regular">
                            <td class="px-4">${i + 1}</td>
                            <td class="fw-bold">${p.title}</td>
                            <td class="dir-ltr text-end">${p.slug}</td>
                            <td class="text-center"><span class="badge ${statusBadge}">${statusLabel}</span></td>
                            <td class="text-center px-4">
                                <div class="btn-group btn-group-sm">
                                    <button class="btn btn-outline-primary btn-edit" data-page='${JSON.stringify(p)}'><i class="bi bi-pencil"></i></button>
                                    <button class="btn btn-outline-danger btn-delete" data-id="${p.id}"><i class="bi bi-trash"></i></button>
                                </div>
                            </td>
                        </tr>
                    `;
                });
                $('#pagesTableBody').html(rows || '<tr><td colspan="5" class="text-center p-4">کوئی صفحہ نہیں ملا</td></tr>');
            }
        });
    }

    $('#btnNewPage').on('click', function () {
        $('#pageForm')[0].reset();
        $('#pageId').val('');
        tinymce.get('pageContentEditor').setContent('');
        $('#pageModalTitle').text('نیا صفحہ (Create New Page)');
        $('#pageModal').modal('show');
    });

    $(document).on('click', '.btn-edit', function () {
        const p = $(this).data('page');
        $('#pageId').val(p.id);
        $('#pageTitle').val(p.title);
        $('#pageSlug').val(p.slug);
        $('#pageStatus').val(p.status);
        $('#metaTitle').val(p.meta_title);
        $('#metaDesc').val(p.meta_description);
        tinymce.get('pageContentEditor').setContent(p.content || '');

        $('#pageModalTitle').text('ترمیم صفحہ (Edit Page)');
        $('#pageModal').modal('show');
    });

    $('#pageForm').on('submit', function (e) {
        e.preventDefault();
        const data = {
            action: 'save_page',
            id: $('#pageId').val(),
            title: $('#pageTitle').val(),
            slug: $('#pageSlug').val(),
            status: $('#pageStatus').val(),
            meta_title: $('#metaTitle').val(),
            meta_description: $('#metaDesc').val(),
            content: tinymce.get('pageContentEditor').getContent()
        };

        const $btn = $('#btnSavePage');
        $btn.prop('disabled', true).html('<span class="spinner-border spinner-border-sm"></span>');

        $.ajax({
            url: apiBase,
            method: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(data),
            success: function (res) {
                $btn.prop('disabled', false).html('<i class="bi bi-cloud-arrow-up me-2"></i> محفوظ کریں');
                if (res.success) {
                    $('#pageModal').modal('hide');
                    Swal.fire('کامیابی', res.message, 'success');
                    loadPages();
                } else {
                    Swal.fire('خرابی', res.message, 'error');
                }
            }
        });
    });

    $('#btnAiGenerateContent').on('click', function () {
        const title = $('#pageTitle').val().trim();
        const slug = $('#pageSlug').val().trim();
        if (!title) {
            Swal.fire('توجہ', 'برائے مہربانی پہلے صفحہ کا عنوان (Title) درج کریں', 'info');
            return;
        }

        const currentContent = tinymce.get('pageContentEditor').getContent();
        if (currentContent && currentContent.length > 50) {
            Swal.fire({
                title: 'کیا آپ موجودہ مواد کو تبدیل کرنا چاہتے ہیں؟',
                text: 'AI نیا مواد تیار کرے گا جو موجودہ مواد کی جگہ لے لے گا۔',
                icon: 'question',
                showCancelButton: true,
                confirmButtonText: 'جی ہاں، نیا بنائیں',
                cancelButtonText: 'کینسل'
            }).then((result) => {
                if (result.isConfirmed) generateAiText('generate_ai_content', { title, slug }, (val) => tinymce.get('pageContentEditor').setContent(val), '#btnAiGenerateContent');
            });
        } else {
            generateAiText('generate_ai_content', { title, slug }, (val) => tinymce.get('pageContentEditor').setContent(val), '#btnAiGenerateContent');
        }
    });

    $('#btnAiGenerateMetaTitle').on('click', function () {
        const title = $('#pageTitle').val().trim();
        if (!title) return Swal.fire('توجہ', 'پہلے عنوان درج کریں', 'info');
        generateAiText('generate_ai_meta_title', { title }, (val) => $('#metaTitle').val(val), '#btnAiGenerateMetaTitle');
    });

    $('#btnAiGenerateMetaDesc').on('click', function () {
        const title = $('#pageTitle').val().trim();
        const content = tinymce.get('pageContentEditor').getContent({ format: 'text' }).substring(0, 500);
        if (!title) return Swal.fire('توجہ', 'پہلے عنوان درج کریں', 'info');
        generateAiText('generate_ai_meta_description', { title, content }, (val) => $('#metaDesc').val(val), '#btnAiGenerateMetaDesc');
    });

    function generateAiText(action, params, callback, btnId) {
        const $btn = $(btnId);
        const oldHtml = $btn.html();
        $btn.prop('disabled', true).html('<span class="spinner-border spinner-border-sm"></span>');

        $.ajax({
            url: apiBase,
            method: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({ action: action, ...params }),
            success: function (res) {
                $btn.prop('disabled', false).html(oldHtml);
                if (res.success) {
                    callback(res.content);
                    if (action === 'generate_ai_content') Swal.fire('کامیابی', 'AI نے مواد کامیابی سے تیار کرلیا ہے', 'success');
                } else {
                    Swal.fire({
                        title: 'خرابی',
                        text: res.message || 'مواد تیار کرنے میں ناکامی',
                        icon: 'error'
                    });
                }
            },
            error: function () {
                $btn.prop('disabled', false).html(oldHtml);
                Swal.fire('خرابی', 'سرور سے رابطہ ختم ہوگیا', 'error');
            }
        });
    }

    $(document).on('click', '.btn-delete', function () {
        const id = $(this).data('id');
        Swal.fire({
            title: 'کیا آپ واقعی یہ صفحہ مٹانا چاہتے ہیں؟',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: 'جی ہاں',
            cancelButtonText: 'کینسل'
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: apiBase,
                    method: 'POST',
                    contentType: 'application/json',
                    data: JSON.stringify({ action: 'delete_page', id: id }),
                    success: function (res) {
                        if (res.success) {
                            Swal.fire('کامیابی', 'صفحہ مٹادیا گیا', 'success');
                            loadPages();
                        }
                    }
                });
            }
        });
    });
});
