// ============================================
// CONFIGURATION
// ============================================
const API_BASE_URL = '../../../../../model/api/inscription.php';
let CANDIDAT_ID = document.getElementById("candidat_id").value ;



// ============================================
// CHARGEMENT DES INSCRIPTIONS
// ============================================


/**
 * Charge et affiche les inscriptions de l'étudiant
 */

function showSpinner(show) {
    const overlay = document.getElementById('spinnerOverlay');
    if (show) {
        overlay.classList.add('show');
    } else {
        overlay.classList.remove('show');
    }
}

async function loadInscriptions() {
    const container = document.getElementById('inscriptionsContainer');

    showSpinner(true);

    try {
        const response = await fetch(`${API_BASE_URL}?action=get_by_candidat&candidat_id=${CANDIDAT_ID}`);
        const result = await response.json();

        showSpinner(false);

        if (result.success && result.data && result.data.length > 0) {
            displayInscriptions(result.data);
            document.getElementById('totalCount').textContent = result.data.length;
        } else {
            displayEmptyInscriptions();
            document.getElementById('totalCount').textContent = '0';
        }
    } catch (error) {
        showSpinner(false);
        console.error('Erreur lors du chargement des inscriptions:', error);
        container.innerHTML = `
            <div class="empty-state">
                <div class="empty-icon"><i class="fas fa-exclamation-circle text-danger"></i></div>
                <h3>Erreur de chargement</h3>
                <p>Impossible de charger vos inscriptions. Veuillez réessayer.</p>
                <button class="btn btn-custom-primary" onclick="loadInscriptions()">
                    <i class="fas fa-sync me-2"></i>Réessayer
                </button>
            </div>
        `;
    }
}

/**
 * Affiche les inscriptions sous forme de cartes
 */
function displayInscriptions(inscriptions) {
    const container = document.getElementById('inscriptionsContainer');

    let html = '';

    inscriptions.forEach((inscription, index) => {
        let statusLabel = inscription.etat_inscription || 'En attente';
        if (inscription.etat_inscription === 'BROUILLON' || inscription.etat_inscription === 'EN_COURS') {
            statusLabel = 'En cours de traitement';
        }

        const statusClass = getStatusClass(inscription.etat_inscription);

        // Formater la date
        const dateInscription = inscription.date_inscription ? new Date(inscription.date_inscription).toLocaleDateString('fr-FR') : 'N/A';

        html += `
            <div class="inscription-card">
                <div class="card-header">
                    <div>
                        <span class="concours-title">
                            <i class="fas fa-trophy me-2" style="color: #b7d22b;"></i>
                            ${inscription.concours_label || inscription.label || 'Concours'}
                        </span>
                        ${inscription.concours_code ? `<span class="concours-code ms-2">${inscription.concours_code}</span>` : ''}
                    </div>
                    <div>
                      
                        <span class="status-badge ${statusClass}">${statusLabel}</span>
                    </div>
                </div>
                <div class="card-body">
                    <div class="info-grid">
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-user me-1"></i> Candidat</span>
                            <span class="info-value">${inscription.prenom || ''} ${inscription.nom || ''}</span>
                        </div>
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-id-card me-1"></i> CIN</span>
                            <span class="info-value">${inscription.cin || '-'}</span>
                        </div>
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-envelope me-1"></i> Email</span>
                            <span class="info-value">${inscription.email || '-'}</span>
                        </div>
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-calendar me-1"></i> Date d'inscription</span>
                            <span class="info-value">${dateInscription}</span>
                        </div>
                        ${inscription.type_diplome_obtenu ? `
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-graduation-cap me-1"></i> Diplôme</span>
                            <span class="info-value">${inscription.type_diplome_libelle || inscription.type_diplome_obtenu}</span>
                        </div>
                        ` : ''}
                        ${inscription.moyenne_general_calcule ? `
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-chart-line me-1"></i> Moyenne</span>
                            <span class="info-value"><strong>${inscription.moyenne_general_calcule}/20</strong></span>
                        </div>
                        ` : ''}
                        ${inscription.specialite_diplome ? `
                        <div class="info-item">
                            <span class="info-label"><i class="fas fa-code me-1"></i> Spécialité</span>
                            <span class="info-value">${inscription.specialite_diplome}</span>
                        </div>
                        ` : ''}
                    </div>
                </div>
                <div class="card-footer-actions">
                    <button onclick="deleteInscription(${inscription.id})" class="btn btn-danger">
                        <i class="fas fa-trash-alt me-2"></i>Supprimer
                    </button>
                </div>
            </div>
        `;
    });

    container.innerHTML = html;
}

/**
 * Affiche le message quand aucune inscription n'est trouvée
 */
function displayEmptyInscriptions() {
    const container = document.getElementById('inscriptionsContainer');
    container.innerHTML = `
        <div class="empty-state">
            <div class="empty-icon"><i class="fas fa-file-alt"></i></div>
            <h3>Aucune inscription trouvée</h3>
            <p>Vous n'avez pas encore d'inscription active. Parcourez les concours disponibles et inscrivez-vous dès maintenant !</p>
            <button class="btn btn-custom-primary" onclick="switchTab('concours-disponibles')">
                <i class="fas fa-search me-2"></i>Voir les concours disponibles
            </button>
        </div>
    `;
}

// ============================================
// CHARGEMENT DES CONCOURS DISPONIBLES
// ============================================

/**
 * Charge et affiche les concours disponibles
 */
async function loadAvailableConcours() {
    const container = document.getElementById('concoursContainer');

    showSpinner(true);

    try {
        // Récupérer d'abord les inscriptions existantes pour savoir où l'étudiant est déjà inscrit
        const inscriptionsResponse = await fetch(`${API_BASE_URL}?action=get_by_candidat&candidat_id=${CANDIDAT_ID}`);
        const inscriptionsResult = await inscriptionsResponse.json();

        // Récupérer les concours disponibles
        const concoursResponse = await fetch(`${API_BASE_URL}?action=get_available_concours&candidat_id=${CANDIDAT_ID}`);
        const concoursResult = await concoursResponse.json();

        showSpinner(false);

        if (concoursResult.success && concoursResult.data && concoursResult.data.length > 0) {
            // Extraire les IDs des concours auxquels l'étudiant est déjà inscrit
            const subscribedConcoursIds = [];
            if (inscriptionsResult.success && inscriptionsResult.data) {
                inscriptionsResult.data.forEach(ins => {
                    if (ins.concours_id) {
                        subscribedConcoursIds.push(ins.concours_id);
                    }
                });
            }

            displayAvailableConcours(concoursResult.data, subscribedConcoursIds);
            document.getElementById('availableCount').textContent = concoursResult.data.length;
        } else {
            displayEmptyConcours();
            document.getElementById('availableCount').textContent = '0';
        }
    } catch (error) {
        showSpinner(false);
        console.error('Erreur lors du chargement des concours:', error);
        container.innerHTML = `
            <div class="empty-state">
                <div class="empty-icon"><i class="fas fa-exclamation-circle text-danger"></i></div>
                <h3>Erreur de chargement</h3>
                <p>Impossible de charger les concours disponibles. Veuillez réessayer.</p>
                <button class="btn btn-custom-primary" onclick="loadAvailableConcours()">
                    <i class="fas fa-sync me-2"></i>Réessayer
                </button>
            </div>
        `;
    }
}

/**
 * Affiche les concours disponibles sous forme de cartes
 */
function displayAvailableConcours(concours, subscribedIds) {
    const container = document.getElementById('concoursContainer');

    if (!concours || concours.length === 0) {
        displayEmptyConcours();
        return;
    }

    let html = `<div class="row g-4">`;

    concours.forEach(concour => {
        const isSubscribed = subscribedIds.includes(concour.id);
        const hasDetails = concour.details && concour.details.length > 0;
        const diplomes = hasDetails ? concour.details.map(d => d.libelle).join(', ') : 'Aucun diplôme spécifié';

        html += `
            <div class="col-md-6 col-lg-4">
                <div class="concours-available-card">
                    <div class="concours-icon">
                        <i class="fas fa-trophy"></i>
                    </div>
                    <h5>${concour.label || concour.code}</h5>
                    <div class="diplome-list">
                        <i class="fas fa-graduation-cap me-1"></i>
                        ${diplomes}
                    </div>
                    ${concour.description ? `<p class="text-muted small mt-2">${concour.description.substring(0, 100)}${concour.description.length > 100 ? '...' : ''}</p>` : ''}
                    ${concour.filliere ? `<p class="text-muted small"><i class="fas fa-folder me-1"></i> Filière: ${concour.filliere}</p>` : ''}
                    <div class="mt-3">
                        ${isSubscribed ? `
                            <span class="badge bg-success"><i class="fas fa-check me-1"></i>Déjà inscrit</span>
                        ` : `
                            <a href="../create/index.php?concours_id=${concour.id}" class="btn btn-subscribe w-100">
                                <i class="fas fa-pen me-2"></i>S'inscrire à ce concours
                            </a>
                        `}
                    </div>
                </div>
            </div>
        `;
    });

    html += `</div>`;
    container.innerHTML = html;
}

/**
 * Affiche le message quand aucun concours n'est disponible
 */
function displayEmptyConcours() {
    const container = document.getElementById('concoursContainer');
    container.innerHTML = `
        <div class="empty-state">
            <div class="empty-icon"><i class="fas fa-trophy"></i></div>
            <h3>Aucun concours disponible</h3>
            <p>Aucun concours n'est disponible pour le moment. Revenez plus tard pour découvrir les nouvelles opportunités.</p>
        </div>
    `;
}

// ============================================
// FONCTIONS UTILITAIRES
// ============================================

function getStatusClass(status) {
    const classes = {
        'EN_ATTENTE': 'en_attente',
        'VALIDE': 'valide',
        'REJETE': 'rejete',
        'EN_COURS': 'en_cours'
    };
    return classes[status] || 'en_attente';
}

function getStatusLabel(status) {
    const labels = {
        'EN_ATTENTE': 'En attente',
        'VALIDE': 'Validé',
        'REJETE': 'Rejeté',
        'EN_COURS': 'En cours'
    };
    return labels[status] || status || 'En attente';
}

function getResultClass(result) {
    const classes = {
        'ADMIS': 'admis',
        'LISTE_ATTENTE': 'liste_attente',
        'NON_ADMIS': 'non_admis'
    };
    return classes[result] || '';
}

function getResultLabel(result) {
    const labels = {
        'ADMIS': 'Admis',
        'LISTE_ATTENTE': 'Liste d\'attente',
        'NON_ADMIS': 'Non admis'
    };
    return labels[result] || result || '';
}

// ============================================
// INITIALISATION
// ============================================

document.addEventListener('DOMContentLoaded', function() {
    // Charger les inscriptions par défaut
    loadInscriptions();

    // Auto-fermeture des notifications après 5 secondes
    setTimeout(() => {
        const notifications = document.querySelectorAll('.notification');
        notifications.forEach(notification => {
            setTimeout(() => {
                if (notification.parentElement) {
                    notification.style.animation = 'slideOutRight 0.3s ease';
                    setTimeout(() => {
                        notification.remove();
                    }, 300);
                }
            }, 5000);
        });
    }, 1000);
});
// ============================================
// SUPPRESSION D'UNE INSCRIPTION
// ============================================
async function deleteInscription(id) {
    // Confirmation b un simple confirm pop-up
    if (!confirm("Voulez-vous vraiment supprimer cette inscription ?")) {
        return;
    }

    showSpinner(true);

    try {
        // Appeler l'API avec la méthode DELETE et l'ID passés en paramètre URL
        const response = await fetch(`${API_BASE_URL}?id=${id}`, {
            method: 'DELETE'
        });

        const result = await response.json();
        showSpinner(false);

        if (result.success) {
            alert('Inscription supprimée avec succès !');
            // Recharger la liste après la suppression
            loadInscriptions();
        } else {
            alert('Erreur: ' + (result.message || 'Impossible de supprimer.'));
        }
    } catch (error) {
        showSpinner(false);
        console.error('Erreur lors de la suppression:', error);
        alert('Une erreur est survenue lors de la suppression.');
    }
}