$(document).ready(function() {
    const $searchForm = $('#searchForm');
    const $resultsContainer = $('#resultsContainer');
    const $resultsTableBody = $('#resultsTableBody');
    const $resultsTableHeader = $('#resultsTableHeader');
    const $eduRemarks = $('#edu_year_remarks');
    const $btnUpdateRemarks = $('#btnUpdateRemarks');
    const $remarksMsg = $('#remarksMsg');

    $searchForm.on('submit', function(e) {
        e.preventDefault();
        fetchResults();
    });

    function fetchResults() {
        const darja = $('#darja').val();
        const pDate = $('#promotionDate').val();
        const dEnd = $('#dateEnd').val();
        const term = $('#resultTerm').val();

        if (!darja || !pDate || !dEnd || !term) {
            Swal.fire('غلطی', 'تمام ضروری معلومات فراہم کریں', 'error');
            return;
        }

        $resultsContainer.fadeOut();
        
        $.ajax({
            url: 'APIs/getResultsForUpdate.php',
            method: 'GET',
            data: {
                darja: darja,
                promotionDate: pDate,
                dateEnd: dEnd,
                resultTerm: term
            },
            success: function(response) {
                if (response.success) {
                    renderTable(response.subjects, response.students);
                    $eduRemarks.val(response.edu_year_remarks);
                    $resultsContainer.fadeIn();
                } else {
                    $resultsContainer.hide();
                    Swal.fire('اطلاع', response.message, 'info');
                }
            },
            error: function() {
                Swal.fire('خرابی', 'ڈیٹا حاصل کرنے میں خرابی آئی', 'error');
            }
        });
    }

    function renderTable(subjects, students) {
        // Render Header
        let headerHtml = `
            <tr>
                <th style="width: 50px;">نمبر شمار</th>
                <th>طالب علم کا نام</th>
                <th style="width: 100px;">آئی ڈی</th>
                <th style="width: 80px;">عمل</th>
        `;
        
        subjects.forEach(sub => {
            headerHtml += `<th>${sub.subjectName}</th>`;
        });
        headerHtml += '</tr>';
        $resultsTableHeader.html(headerHtml);

        // Render Body
        let bodyHtml = '';
        students.forEach((std, index) => {
            bodyHtml += `
                <tr id="std-row-${std.stdSno}">
                    <td>${index + 1}</td>
                    <td>
                        <div class="fw-bold">${std.stdName}</div>
                        <div class="small text-muted">ولد: ${std.fatherName}</div>
                    </td>
                    <td>${std.stdSno}</td>
                    <td>
                        <button class="btn btn-sm btn-outline-danger btn-delete-result" 
                                data-stdsno="${std.stdSno}" 
                                title="نتیجہ ختم کریں">
                            <i class="bi bi-trash"></i>
                        </button>
                    </td>
            `;

            subjects.forEach(sub => {
                const markInfo = std.marks[sub.sno];
                if (markInfo) {
                    bodyHtml += `
                        <td class="text-center">
                            <a href="javascript:void(0)" 
                               class="btn btn-sm btn-link text-decoration-none fw-bold edit-mark" 
                               data-resultsno="${markInfo.resultSno}" 
                               data-currentmarks="${markInfo.obtMarks}"
                               data-subjectname="${sub.subjectName}"
                               data-stdname="${std.stdName}">
                                ${markInfo.obtMarks}
                            </a>
                        </td>
                    `;
                } else {
                    bodyHtml += '<td class="text-center text-muted">-</td>';
                }
            });

            bodyHtml += '</tr>';
        });
        $resultsTableBody.html(bodyHtml);
    }

    // Handle Mark Update
    $(document).on('click', '.edit-mark', function() {
        const $el = $(this);
        const resultSno = $el.data('resultsno');
        const currentMarks = $el.data('currentmarks');
        const subjectName = $el.data('subjectname');
        const stdName = $el.data('stdname');

        Swal.fire({
            title: 'نمبر تبدیل کریں',
            html: `<div class="urdu-regular pb-2">${stdName} (${subjectName})</div>`,
            input: 'number',
            inputValue: currentMarks,
            showCancelButton: true,
            confirmButtonText: 'تبدیل کریں',
            cancelButtonText: 'منسوخ کریں',
            inputValidator: (value) => {
                if (!value && value !== '0') {
                    return 'کچھ لکھنا ضروری ہے!';
                }
            }
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: 'APIs/updateMark.php',
                    method: 'POST',
                    data: JSON.stringify({
                        resultSno: resultSno,
                        obtMarks: result.value
                    }),
                    contentType: 'application/json',
                    success: function(response) {
                        if (response.success) {
                            $el.text(result.value).data('currentmarks', result.value);
                            Toast.fire({
                                icon: 'success',
                                title: response.message
                            });
                        } else {
                            Swal.fire('غلطی', response.message, 'error');
                        }
                    }
                });
            }
        });
    });

    // Handle Delete Result
    $(document).on('click', '.btn-delete-result', function() {
        const stdSno = $(this).data('stdsno');
        const darja = $('#darja').val();
        const pDate = $('#promotionDate').val();
        const dEnd = $('#dateEnd').val();
        const term = $('#resultTerm').val();

        Swal.fire({
            title: 'کیا آپ واقعی یہ نتیجہ ختم کرنا چاہتے ہیں؟',
            text: "یہ عمل واپس نہیں لیا جا سکتا!",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#d33',
            cancelButtonColor: '#3085d6',
            confirmButtonText: 'جی ہاں، مٹا دیں!',
            cancelButtonText: 'منسوخ'
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: 'APIs/deleteStudentResult.php',
                    method: 'POST',
                    data: JSON.stringify({
                        stdSno: stdSno,
                        darja: darja,
                        pDate: pDate,
                        dEnd: dEnd,
                        term: term
                    }),
                    contentType: 'application/json',
                    success: function(response) {
                        if (response.success) {
                            $(`#std-row-${stdSno}`).fadeOut();
                            Toast.fire({
                                icon: 'success',
                                title: response.message
                            });
                        } else {
                            Swal.fire('غلطی', response.message, 'error');
                        }
                    }
                });
            }
        });
    });

    // Handle Remarks Update
    $btnUpdateRemarks.on('click', function() {
        const darja = $('#darja').val();
        const pDate = $('#promotionDate').val();
        const dEnd = $('#dateEnd').val();
        const term = $('#resultTerm').val();
        const remarks = $eduRemarks.val();

        $btnUpdateRemarks.prop('disabled', true).html('<span class="spinner-border spinner-border-sm me-2"></span>اپڈیٹ ہو رہا ہے...');

        $.ajax({
            url: 'APIs/updateEduRemarks.php',
            method: 'POST',
            data: JSON.stringify({
                darja: darja,
                pDate: pDate,
                dEnd: dEnd,
                term: term,
                remarks: remarks
            }),
            contentType: 'application/json',
            success: function(response) {
                $btnUpdateRemarks.prop('disabled', false).text('اپڈیٹ کریں');
                if (response.success) {
                    Toast.fire({
                        icon: 'success',
                        title: response.message
                    });
                } else {
                    Swal.fire('غلطی', response.message, 'error');
                }
            },
            error: function() {
                $btnUpdateRemarks.prop('disabled', false).text('اپڈیٹ کریں');
                Swal.fire('خرابی', 'ریمارکس اپڈیٹ کرنے میں خرابی آئی', 'error');
            }
        });
    });

    // Toast configuration
    const Toast = Swal.mixin({
        toast: true,
        position: 'top-end',
        showConfirmButton: false,
        timer: 3000,
        timerProgressBar: true
    });
});
