$(document).ready(function () {
    const $searchForm = $('#searchForm');
    const $resultsSection = $('#resultsSection');
    const $resultsTableBody = $('#resultsTableBody');
    const $formAlert = $('#formAlert');
    const $promotionActionRow = $('#promotionActionRow');

    let currentStudents = [];


    // Search for Students
    $searchForm.on('submit', function (e) {
        e.preventDefault();

        const darja = $('#darja1').val();
        const pDate = $('#promotionDates').val();
        const eDate = $('#dateEnds').val();

        if (!darja || !pDate || !eDate) {
            showAlert('تمام معلومات منتخب کریں', 'danger');
            return;
        }

        $resultsSection.addClass('d-none');
        showAlert('ڈیٹا لوڈ ہو رہا ہے...', 'info');

        $.ajax({
            url: 'APIs/getStudentsForPromotion.php',
            method: 'GET',
            data: { darja: darja, promotionDates: pDate, dateEnds: eDate },
            dataType: 'json',
            success: function (response) {
                if (response.success) {
                    currentStudents = response.students;
                    renderTable();
                    $resultsSection.removeClass('d-none');
                    showAlert('', ''); // Clear alert

                    // Set default dates in promotion section
                    $('#promotionDateNew').val(pDate);
                    $('#dateEndNew').val(eDate);
                } else {
                    showAlert(response.message, 'warning');
                }
            },
            error: function () {
                showAlert('سرور سے رابطہ کرنے میں ناکامی آئی', 'danger');
            }
        });
    });

    function renderTable() {
        let html = '';
        if (currentStudents.length === 0) {
            html = '<tr><td colspan="8" class="text-center text-muted">کوئی طالب علم نہیں ملا</td></tr>';
            $promotionActionRow.addClass('d-none');
        } else {
            currentStudents.forEach((student, index) => {
                html += `
                    <tr id="row_${student.sno}">
                        <td class="text-center">${index + 1}</td>
                        <td class="fw-bold ps-3">${student.stdName} <span class="text-muted small mx-1">ولد</span> ${student.fatherName}</td>
                        <td class="text-center">${student.registrationNo}</td>
                        <td class="text-center">${student.dob}</td>
                        <td class="text-center">${student.RollNumber}</td>
                        <td><small>${student.permanentAddress}</small></td>
                        <td class="text-center"><span class="badge bg-light text-dark border">${student.darjaName}</span></td>
                        <td class="text-center">
                            <div class="form-check d-flex justify-content-center">
                                <input class="form-check-input student-select-radio" type="radio" 
                                       name="stdRadio" value="${student.sno}" 
                                       title="انفرادی طور پر منتقل کریں">
                            </div>
                        </td>
                    </tr>
                `;
            });
            $promotionActionRow.removeClass('d-none');
        }
        $resultsTableBody.html(html);
    }

    // Individual Promotion via Radio Button
    $(document).on('change', '.student-select-radio', function () {
        const studentId = $(this).val();
        const toDarja = $('#toDarja').val();
        const newPDate = $('#promotionDateNew').val();
        const newEDate = $('#dateEndNew').val();

        if (!toDarja || !newPDate || !newEDate) {
            Swal.fire('توجہ', 'منتقلی کے لیے درجہ اور تاریخیں منتخب کریں', 'warning');
            $(this).prop('checked', false);
            return;
        }

        Swal.fire({
            title: 'کیا آپ اس طالب علم کو منتخب کردہ درجہ میں منتقل کرنا چاہتے ہیں؟',
            icon: 'question',
            showCancelButton: true,
            confirmButtonText: 'جی ہاں، منتقل کریں',
            cancelButtonText: 'منسوخ کریں'
        }).then((result) => {
            if (result.isConfirmed) {
                performPromotion([studentId], toDarja, newPDate, newEDate);
            } else {
                $(this).prop('checked', false);
            }
        });
    });

    // Bulk Promotion
    $('#btnBulkPromote').on('click', function () {
        const toDarja = $('#toDarja').val();
        const newPDate = $('#promotionDateNew').val();
        const newEDate = $('#dateEndNew').val();
        const studentIds = currentStudents.map(s => s.sno);

        if (!toDarja || !newPDate || !newEDate) {
            Swal.fire('توجہ', 'منتقلی کے لیے درجہ اور تاریخیں منتخب کریں', 'warning');
            return;
        }

        Swal.fire({
            title: 'کیا آپ اس درجہ کے تمام طلباء کو منتخب کردہ درجہ میں منتقل کرنا چاہتے ہیں؟',
            text: "اس عمل کے بعد طلباء کی موجودہ پوزیشن غیر فعال ہو جائے گی۔",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#198754',
            confirmButtonText: 'جی ہاں، سب کو منتقل کریں',
            cancelButtonText: 'منسوخ کریں'
        }).then((result) => {
            if (result.isConfirmed) {
                performPromotion(studentIds, toDarja, newPDate, newEDate);
            }
        });
    });

    function performPromotion(ids, darja, pDate, eDate) {
        $.ajax({
            url: 'APIs/promoteStudents.php',
            method: 'POST',
            data: JSON.stringify({
                studentIds: ids,
                toDarja: darja,
                promotionDate: pDate,
                dateEnd: eDate
            }),
            contentType: 'application/json',
            success: function (response) {
                if (response.success) {
                    Swal.fire('کامیابی', response.message, 'success');
                    // Remove promoted students from current list
                    currentStudents = currentStudents.filter(s => !ids.includes(s.sno.toString()) && !ids.includes(parseInt(s.sno)));
                    renderTable();
                } else {
                    Swal.fire('غلطی', response.message, 'error');
                }
            },
            error: function () {
                Swal.fire('خرابی', 'منتقلی کے عمل میں خرابی آئی', 'error');
            }
        });
    }

    // Roll Number Update
    $('#btnUpdateRollNumbers').on('click', function () {
        const darjaSno = $('#darja1').val();
        const pDate = $('#promotionDates').val();
        const eDate = $('#dateEnds').val();

        Swal.fire({
            title: 'رول نمبرز کی تبدیلی',
            text: "جہاں سے رول نمبر شروع کرنا ہو وہ نمبر یہاں لکھیں:",
            input: 'number',
            inputValue: 0,
            showCancelButton: true,
            confirmButtonText: 'تبدیل کریں',
            cancelButtonText: 'منسوخ کریں',
            inputValidator: (value) => {
                if (!value && value !== '0') {
                    return 'براہ کرم ایک نمبر لکھیں'
                }
            }
        }).then((result) => {
            if (result.isConfirmed) {
                const startFrom = result.value;
                $('#rolUptMsg').html('<span class="spinner-border spinner-border-sm"></span>');

                $.ajax({
                    url: 'APIs/updateRollNumbers.php',
                    method: 'POST',
                    data: JSON.stringify({
                        darjaSno: darjaSno,
                        promotionDates: pDate,
                        dateEnds: eDate,
                        startFrom: startFrom
                    }),
                    contentType: 'application/json',
                    success: function (response) {
                        if (response.success) {
                            Swal.fire('کامیابی', response.message, 'success');
                            $('#rolUptMsg').text(response.message).addClass('text-success');
                            // Refresh student list to show new roll numbers
                            $searchForm.submit();
                        } else {
                            Swal.fire('غلطی', response.message, 'error');
                            $('#rolUptMsg').text('خرابی').addClass('text-danger');
                        }
                    },
                    error: function () {
                        Swal.fire('خرابی', 'رول نمبرز کی تبدیلی میں خرابی آئی', 'error');
                        $('#rolUptMsg').text('سرور کی خرابی').addClass('text-danger');
                    }
                });
            }
        });
    });

    function showAlert(message, type) {
        if (!message) {
            $formAlert.html('');
            return;
        }
        $formAlert.html(`<div class="alert alert-${type} alert-dismissible fade show" role="alert">
            ${message}
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>`);
    }
});
