<?php
// app/view/admin/pedagogie/affectation_module/create-edit/modal.php

// Ce fichier est inclus dans la page principale
// Les variables $affectation et $isEdit sont définies avant l'inclusion
?>

<div class="modal-overlay" id="affectationModal">
    <div class="modal modal-lg">
        <div class="modal-header">
            <h2 id="modalTitle"><?= $isEdit ? 'Modifier l\'Affectation' : 'Nouvelle Affectation' ?></h2>
            <button class="modal-close" onclick="closeAffectationModal()">&times;</button>
        </div>

        <div class="modal-body">
            <form id="affectationForm">
                <input type="hidden" id="affectationId" value="<?= $isEdit ? $affectation['id'] : '' ?>">

                <div class="form-section">
                    <h3 class="section-title">
                        <i class="fas fa-info-circle"></i>
                        Informations de l'affectation
                    </h3>

                    <div class="form-row">
                        <div class="form-group">
                            <label>Module <span class="required">*</span></label>
                            <select id="module_id" class="form-control" required>
                                <option value="">Sélectionner un module</option>
                                <!-- Les options seront chargées via JavaScript -->
                            </select>
                        </div>

                        <div class="form-group">
                            <label>Professeur <span class="required">*</span></label>
                            <select id="employee_id" class="form-control" required>
                                <option value="">Sélectionner un professeur</option>
                                <!-- Les options seront chargées via JavaScript -->
                            </select>
                        </div>
                    </div>

                    <div class="form-row">
                        <div class="form-group">
                            <label>Filière <span class="required">*</span></label>
                            <select id="filiere_id" class="form-control" required>
                                <option value="">Sélectionner une filière</option>
                                <!-- Les options seront chargées via JavaScript -->
                            </select>
                        </div>

                        <div class="form-group">
                            <label>Semestre <span class="required">*</span></label>
                            <select id="semstre_id" class="form-control" required>
                                <option value="">Sélectionner un semestre</option>
                                <!-- Les options seront chargées via JavaScript -->
                            </select>
                        </div>
                    </div>

                    <div class="form-row">
                        <div class="form-group full-width">
                            <label>Année Universitaire <span class="required">*</span></label>
                            <select id="annee_universitaire" class="form-control" required>
                                <option value="">Sélectionner une année</option>
                                <?php
                                $currentYear = date('Y');
                                for ($i = 0; $i < 5; $i++) {
                                    $year = $currentYear - $i;
                                    $annee = $year . '-' . ($year + 1);
                                    $selected = ($isEdit && $affectation['annee_universitaire'] == $annee) ? 'selected' : '';
                                    echo "<option value='$annee' $selected>$annee</option>";
                                }
                                ?>
                            </select>
                            <small class="form-text text-muted">Année universitaire de l'affectation</small>
                        </div>
                    </div>
                </div>

            </form>
        </div>

        <div class="modal-footer">
            <button class="btn btn-secondary" onclick="closeAffectationModal()">
                <i class="fas fa-times"></i> Annuler
            </button>
            <button class="btn btn-primary" onclick="saveAffectation()">
                <i class="fas fa-save"></i> Enregistrer
            </button>
        </div>
    </div>
</div>

<script>
    // =========================================
    // AFFECTATION MODAL FUNCTIONS
    // =========================================

    // Charger les données pour les selects

    const API_SEMESTRE_URL = '/est-concours/model/api/semestre.php'
    const API_MODULE_URL = '/est-concours/model/api/module.php'
    const API_EMPLOYEE_URL = '/est-concours/model/api/employee.php'

    function loadSelectOptions() {
        // Charger les modules
        fetch('/est-concours/model/api/module.php?action=all')
            .then(r => r.json())
            .then(result => {
                if (result.success) {
                    const select = document.getElementById('module_id');
                    const currentValue = select.value;
                    select.innerHTML = '<option value="">Sélectionner un module</option>';
                    result.data.forEach(m => {
                        const selected = (currentValue == m.id) ? 'selected' : '';
                        select.innerHTML += `<option value="${m.id}" ${selected}>${m.code} - ${m.libelle}</option>`;
                    });
                }
            });

        // Charger les professeurs
        fetch('/est-concours/model/api/employee.php?action=all&type=professeur')
            .then(r => r.json())
            .then(result => {
                if (result.success) {
                    const select = document.getElementById('employee_id');
                    const currentValue = select.value;
                    select.innerHTML = '<option value="">Sélectionner un professeur</option>';
                    result.data.forEach(e => {
                        const selected = (currentValue == e.id) ? 'selected' : '';
                        select.innerHTML += `<option value="${e.id}" ${selected}>${e.nom} ${e.prenom}</option>`;
                    });
                }
            });

        // Charger les filières
        fetch('/est-concours/model/api/filiere.php?action=all')
            .then(r => r.json())
            .then(result => {
                if (result.success) {
                    const select = document.getElementById('filiere_id');
                    const currentValue = select.value;
                    select.innerHTML = '<option value="">Sélectionner une filière</option>';
                    result.data.forEach(f => {
                        const selected = (currentValue == f.id) ? 'selected' : '';
                        select.innerHTML += `<option value="${f.id}" ${selected}>${f.code} - ${f.libelle}</option>`;
                    });
                }
            });

        // Charger les semestres

        fetch(`${API_SEMESTRE_URL}?action=all`)
            .then(r => r.json())
            .then(result => {
                if (result.success) {
                    const select = document.getElementById('semstre_id');
                    const currentValue = select.value;
                    select.innerHTML = '<option value="">Sélectionner un semestre</option>';
                    result.data.forEach(s => {
                        const selected = (currentValue == s.id) ? 'selected' : '';
                        select.innerHTML += `<option value="${s.id}" ${selected}>${s.code} - ${s.libelle}</option>`;
                    });
                }
            });
    }

    let affectationModal = null;

    function openAffectationModal(data = null) {
        const modal = document.getElementById('affectationModal');
        const title = document.getElementById('modalTitle');
        const form = document.getElementById('affectationForm');

        // Charger les options des selects
        loadSelectOptions();

        if (data && data.id) {
            // Mode édition
            title.textContent = 'Modifier l\'Affectation';
            document.getElementById('affectationId').value = data.id;

            // Attendre que les selects soient chargés pour définir les valeurs
            setTimeout(() => {
                document.getElementById('module_id').value = data.module_id || '';
                document.getElementById('employee_id').value = data.employee_id || '';
                document.getElementById('filiere_id').value = data.filiere_id || '';
                document.getElementById('semstre_id').value = data.semstre_id || '';
                document.getElementById('annee_universitaire').value = data.annee_universitaire || '';
            }, 300);
        } else {
            // Mode création
            title.textContent = 'Nouvelle Affectation';
            form.reset();
            document.getElementById('affectationId').value = '';
        }

        modal.classList.add('active');
        document.body.style.overflow = 'hidden';
    }

    function closeAffectationModal() {
        const modal = document.getElementById('affectationModal');
        modal.classList.remove('active');
        document.body.style.overflow = '';
    }

    async function saveAffectation() {
        const id = document.getElementById('affectationId').value;
        const data = {
            module_id: document.getElementById('module_id').value,
            filiere_id: document.getElementById('filiere_id').value,
            semstre_id: document.getElementById('semstre_id').value,
            employee_id: document.getElementById('employee_id').value,
            annee_universitaire: document.getElementById('annee_universitaire').value
        };

        // Validation
        if (!data.module_id) {
            showToast('Veuillez sélectionner un module', 'warning');
            return;
        }
        if (!data.employee_id) {
            showToast('Veuillez sélectionner un professeur', 'warning');
            return;
        }
        if (!data.filiere_id) {
            showToast('Veuillez sélectionner une filière', 'warning');
            return;
        }
        if (!data.semstre_id) {
            showToast('Veuillez sélectionner un semestre', 'warning');
            return;
        }
        if (!data.annee_universitaire) {
            showToast('Veuillez sélectionner l\'année universitaire', 'warning');
            return;
        }

        const method = id ? 'PUT' : 'POST';
        const url = id
            ? `/est-concours/model/api/affectation_module.php?id=${id}`
            : '/est-concours/model/api/affectation_module.php';

        const saveBtn = document.querySelector('#affectationModal .btn-primary');
        const orig = saveBtn.innerHTML;
        saveBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Enregistrement...';
        saveBtn.disabled = true;

        try {
            const response = await fetch(url, {
                method: method,
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json'
                },
                body: JSON.stringify(data)
            });

            const result = await response.json();

            saveBtn.innerHTML = orig;
            saveBtn.disabled = false;

            if (result.success) {
                showToast(result.message, 'success');
                closeAffectationModal();
                if (typeof loadAffectations === 'function') {
                    loadAffectations();
                }
                if (typeof loadStats === 'function') {
                    loadStats();
                }
            } else {
                showToast('Erreur: ' + result.message, 'error');
            }
        } catch (error) {
            console.error('Erreur:', error);
            saveBtn.innerHTML = orig;
            saveBtn.disabled = false;
            showToast('Une erreur est survenue lors de l\'enregistrement', 'error');
        }
    }

    // Close modal on overlay click
    document.addEventListener('DOMContentLoaded', function() {
        const modal = document.getElementById('affectationModal');
        if (modal) {
            modal.addEventListener('click', function(e) {
                if (e.target === this) {
                    closeAffectationModal();
                }
            });
        }

        // Close modal on Escape key
        document.addEventListener('keydown', function(e) {
            if (e.key === 'Escape') {
                closeAffectationModal();
            }
        });
    });
</script>