$(document).ready(function () {
    const apiBase = 'APIs/accounts_api.php';

    // === Dashboard Logic ===
    if ($('#accountsDashboard').length) {
        loadDashboardSummary();
    }

    function loadDashboardSummary() {
        $.getJSON(`${apiBase}?action=get_summary`, function (res) {
            if (res.success) {
                // Today's stats
                $('#todayIncome').text(`Rs. ${res.today.income}`);
                $('#todayExpense').text(`Rs. ${res.today.expense}`);
                $('#todayBalance').text(`Rs. ${res.today.balance}`);

                // Overall stats
                $('#totalIncome').text(`Rs. ${res.overall.income}`);
                $('#totalExpense').text(`Rs. ${res.overall.expense}`);
                $('#totalBalance').text(`Rs. ${res.overall.balance}`);
            }
        });
    }

    // === Transactions Logic ===
    if ($('#transactionsTable').length) {
        loadTransactions();
        loadCategories();
    }

    function loadCategories() {
        $.getJSON(`${apiBase}?action=get_categories`, function (res) {
            if (res.success) {
                let options = '<option value="">تمام زمرے (All Categories)</option>';
                res.data.forEach(cat => {
                    options += `<option value="${cat.id}">${cat.category_name} (${cat.category_type === 'income' ? 'آمدنی' : 'اخراجات'})</option>`;
                });
                $('#filterCategory, #txnCategory').html(options);
            }
        });
    }

    function loadTransactions() {
        const start = $('#filterStart').val();
        const end = $('#filterEnd').val();
        const type = $('#filterType').val();
        const cat = $('#filterCategory').val();

        $('#transactionsTableBody').html('<tr><td colspan="8" class="text-center p-4"><div class="spinner-border text-primary"></div></td></tr>');

        $.getJSON(`${apiBase}?action=get_transactions&start_date=${start}&end_date=${end}&type=${type}&category_id=${cat}`, function (res) {
            if (res.success) {
                let rows = '';
                if (res.data.length === 0) {
                    rows = '<tr><td colspan="8" class="text-center p-4 urdu-regular">کوئی ٹرانزیکشن نہیں ملی (No transactions found)</td></tr>';
                } else {
                    res.data.forEach((t, i) => {
                        const typeBadge = t.txn_type === 'income' ? 'bg-success-subtle text-success' : 'bg-danger-subtle text-danger';
                        const typeLabel = t.txn_type === 'income' ? 'آمدنی' : 'اخراجات';
                        rows += `
                            <tr class="urdu-regular">
                                <td>${i + 1}</td>
                                <td>${t.txn_date}</td>
                                <td><span class="badge ${typeBadge} px-3 py-2">${typeLabel}</span></td>
                                <td>${t.category_name}</td>
                                <td class="fw-bold fs-5">Rs. ${t.amount}</td>
                                <td>${t.payment_method}</td>
                                <td>${t.description || '-'}</td>
                                <td><div class="btn-group btn-group-sm">
                                        <button class="btn btn-outline-primary btn-edit" data-txn='${JSON.stringify(t)}'><i class="bi bi-pencil"></i></button>
                                        <button class="btn btn-outline-danger btn-delete" data-id="${t.id}"><i class="bi bi-trash"></i></button>
                                    </div>
                                </td>
                            </tr>
                        `;
                    });
                }
                $('#transactionsTableBody').html(rows);
            }
        });
    }

    // === Filter Actions ===
    $('#btnFilter').on('click', loadTransactions);

    // === Transaction Modal & Form ===
    $('#btnAddNew').on('click', function () {
        $('#txnForm')[0].reset();
        $('#txnId').val('');
        $('#txnModalTitle').text('نئی ٹرانزیکشن (Add New Transaction)');
        $('#txnModal').modal('show');
    });

    $(document).on('click', '.btn-edit', function () {
        const t = $(this).data('txn');
        $('#txnId').val(t.id);
        $('#txnDate').val(t.txn_date);
        $('#txnType').val(t.txn_type);
        $('#txnCategory').val(t.category_id);
        $('#txnAmount').val(t.amount);
        $('#txnMethod').val(t.payment_method);
        $('#txnRef').val(t.reference_no);
        $('#txnDesc').val(t.description);

        $('#txnModalTitle').text('ترمیم ٹرانزیکشن (Edit Transaction)');
        $('#txnModal').modal('show');
    });

    $('#txnForm').on('submit', function (e) {
        e.preventDefault();
        const data = {
            action: 'save_transaction',
            id: $('#txnId').val(),
            txn_date: $('#txnDate').val(),
            txn_type: $('#txnType').val(),
            category_id: $('#txnCategory').val(),
            amount: $('#txnAmount').val(),
            payment_method: $('#txnMethod').val(),
            reference_no: $('#txnRef').val(),
            description: $('#txnDesc').val()
        };

        const $btn = $('#btnSave');
        $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).text('محفوظ کریں (Save)');
                if (res.success) {
                    $('#txnModal').modal('hide');
                    Swal.fire('کامیابی', res.message, 'success');
                    loadTransactions();
                    if ($('#accountsDashboard').length) loadDashboardSummary();
                } else {
                    Swal.fire('خرابی', res.message, 'error');
                }
            }
        });
    });

    $(document).on('click', '.btn-delete', function () {
        const id = $(this).data('id');
        Swal.fire({
            title: 'کیا آپ واقعی یہ ڈیلیٹ کرنا چاہتے ہیں؟',
            text: "اس عمل کو واپس نہیں لیا جا سکے گا!",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#d33',
            cancelButtonColor: '#3085d6',
            confirmButtonText: 'جی ہاں، ڈیلیٹ کریں!',
            cancelButtonText: 'کینسل'
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: apiBase,
                    method: 'POST',
                    contentType: 'application/json',
                    data: JSON.stringify({ action: 'delete_transaction', id: id }),
                    success: function (res) {
                        if (res.success) {
                            Swal.fire('ڈیلیٹ شدہ', res.message, 'success');
                            loadTransactions();
                            if ($('#accountsDashboard').length) loadDashboardSummary();
                        }
                    }
                });
            }
        });
    });

    // === Categories Page Logic ===
    if ($('#categoriesTableBody').length) {
        loadCategoriesList();
    }

    function loadCategoriesList() {
        $.getJSON(`${apiBase}?action=get_categories`, function (res) {
            if (res.success) {
                let rows = '';
                res.data.forEach((c, i) => {
                    const typeBadge = c.category_type === 'income' ? 'bg-success-subtle text-success' : 'bg-danger-subtle text-danger';
                    const typeLabel = c.category_type === 'income' ? 'آمدنی' : 'اخراجات';
                    rows += `
                        <tr class="urdu-regular">
                            <td class="px-4">${i + 1}</td>
                            <td>${c.category_name}</td>
                            <td><span class="badge ${typeBadge} px-3 py-2">${typeLabel}</span></td>
                            <td class="px-4 text-center">
                                <div class="btn-group btn-group-sm">
                                    <button class="btn btn-outline-primary btn-edit-cat" data-cat='${JSON.stringify(c)}'><i class="bi bi-pencil"></i></button>
                                    <button class="btn btn-outline-danger btn-delete-cat" data-id="${c.id}"><i class="bi bi-trash"></i></button>
                                </div>
                            </td>
                        </tr>
                    `;
                });
                $('#categoriesTableBody').html(rows || '<tr><td colspan="4" class="text-center p-4">کوئی زمرہ نہیں ملا</td></tr>');
            }
        });
    }

    $('#btnNewCategory').on('click', function () {
        $('#catForm')[0].reset();
        $('#catId').val('');
        $('#catModalTitle').text('نیا زمرہ (New Category)');
        $('#catModal').modal('show');
    });

    $(document).on('click', '.btn-edit-cat', function () {
        const c = $(this).data('cat');
        $('#catId').val(c.id);
        $('#catName').val(c.category_name);
        $('#catType').val(c.category_type);
        $('#catModalTitle').text('ترمیم زمرہ (Edit Category)');
        $('#catModal').modal('show');
    });

    $('#catForm').on('submit', function (e) {
        e.preventDefault();
        const data = {
            action: 'save_category',
            id: $('#catId').val(),
            category_name: $('#catName').val(),
            category_type: $('#catType').val()
        };

        $.ajax({
            url: apiBase,
            method: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(data),
            success: function (res) {
                if (res.success) {
                    $('#catModal').modal('hide');
                    Swal.fire('کامیابی', res.message, 'success');
                    loadCategoriesList();
                } else {
                    Swal.fire('خرابی', res.message, 'error');
                }
            }
        });
    });

    $(document).on('click', '.btn-delete-cat', function () {
        const id = $(this).data('id');
        Swal.fire({
            title: 'حذف کریں؟',
            text: "کیا آپ واقعی یہ زمرہ ڈیلیٹ کرنا چاہتے ہیں؟",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: 'جی ہاں',
            cancelButtonText: 'نہیں'
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: apiBase,
                    method: 'POST',
                    contentType: 'application/json',
                    data: JSON.stringify({ action: 'delete_category', id: id }),
                    success: function (res) {
                        if (res.success) {
                            Swal.fire('حذف شدہ', res.message, 'success');
                            loadCategoriesList();
                        } else {
                            Swal.fire('خرابی', res.message, 'error');
                        }
                    }
                });
            }
        });
    });
});
