// Événement lorsque le DOM est entièrement chargé
document.addEventListener('DOMContentLoaded', function () {
  /* ----------  Init  ------------ */
  const modals = document.querySelectorAll('.modal');

  M.Modal.init(modals);

  // Cache les liens de la navbar
  document.getElementById('navSelect').style.display = 'none';

  /* ----------  EVENNEMENT  ------------ */
  // Ecoute de l'événement 'input' au champ matricule
  document.getElementById('matricule').addEventListener('input', function () {
    validateField('matricule', true);
    updateSubmitButtonState('authForm');
  });

  // Écoute de l'événement de soumission du formulaire
  document.getElementById('authForm').addEventListener('submit', function (event) {
    // Empêche le comportement par défaut du formulaire
    event.preventDefault();

    const matricule = document.getElementById('matricule').value;

    // Récupération des informations du parcours
    (async () => {
      try {
        const data = await fetchWithJson(`/auth/verifyMatricule/${matricule}`, 'GET');

        if (data.valid) {
          // Récupération du token et stockage dans le localStorage
          const token = data.token;
          localStorage.setItem('jwtToken', token);

          // Cache les liens de la navbar
          document.getElementById('navSelect').style.display = 'block';

          // Redirige vers la page d'accueil
          window.location.replace('/');
        } else {
          // Affiche un modal si le matricule est invalide
          const elem = document.getElementById('wrongMatriculeModal');
          const instance = M.Modal.getInstance(elem);

          // Met à jour le matricule affiché dans le modal
          document.getElementById('displayedMatricule').innerText = matricule;

          const adminListElement = document.getElementById('adminList');
          adminListElement.innerHTML = "";

          data.admins.items.forEach(admin => {
            adminListElement.innerHTML += `
              <tr>
                <td>${admin.matricule}</td>
                <td>${admin.nom}</td>
                <td>${admin.prenom}</td>
                <td>${admin.mail}</td>
              </tr>
            `
          })

          instance.open();
        }
      } catch (error) {
        console.error("Erreur lors de la récupération des informations du matricule:", error);
      }
    })();
  });

  updateSubmitButtonState('authForm');
});
