// inscription.js document.addEventListener('DOMContentLoaded', () => { const form = document.getElementById('inscriptionForm'); form.addEventListener('submit', async (e) => { e.preventDefault(); // Validation de tous les champs const valid = validateForm(); if (!valid) return; // Préparer les données const formData = getFormData(); try { const response = await fetch('/tables/inscriptions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); const result = await response.json(); if (response.ok) { showSuccess(result.numeroInscription); } else { alert(result.message || 'Erreur lors de l’inscription'); } } catch (err) { console.error('Erreur fetch:', err); alert('Impossible de soumettre le formulaire pour le moment.'); } }); }); // --- Validation --- function validateForm() { let valid = true; valid &= validateField('prenom', prenom.value.trim() !== '', 'Prénom requis'); valid &= validateField('nom', nom.value.trim() !== '', 'Nom requis'); valid &= validateField('dateNaissance', dateNaissance.value !== '', 'Date de naissance requise'); valid &= validateField('lieuNaissance', lieuNaissance.value.trim() !== '', 'Lieu de naissance requis'); valid &= validateField('sexe', sexe.value !== '', 'Sélectionnez le sexe'); valid &= validateField('nationalite', nationalite.value.trim() !== '', 'Nationalité requise'); valid &= validateField('adresseEleve', adresseEleve.value.trim() !== '', 'Adresse requise'); valid &= validateField('niveau', niveau.value !== '', 'Sélectionnez le niveau'); valid &= validateField('anneeScolaire', anneeScolaire.value.trim() !== '', 'Année scolaire requise'); valid &= validateField('nomParent', nomParent.value.trim() !== '', 'Nom du parent requis'); valid &= validateField('lienParente', lienParente.value !== '', 'Lien de parenté requis'); valid &= validateField('telephoneParent', telephoneParent.value.trim() !== '', 'Téléphone requis'); valid &= validateField('professionParent', professionParent.value.trim() !== '', 'Profession requise'); valid &= validateField('adresseParent', adresseParent.value.trim() !== '', 'Adresse du parent requise'); valid &= validateField('contactUrgence', contactUrgence.value.trim() !== '', 'Contact d\'urgence requis'); valid &= validateDocuments(); valid &= validateDeclaration(); return !!valid; } function validateField(id, condition, message) { const errorEl = document.getElementById(id + 'Error'); if (!condition) { errorEl.textContent = message; return false; } else { errorEl.textContent = ''; return true; } } function validateDocuments() { const docs = document.querySelectorAll('input[name="documents"]:required'); let valid = true; docs.forEach(doc => { if (!doc.checked) valid = false; }); const errorEl = document.getElementById('documentsError'); if (!valid) errorEl.textContent = 'Veuillez cocher tous les documents obligatoires.'; else errorEl.textContent = ''; return valid; } function validateDeclaration() { const decl = document.getElementById('declaration'); const errorEl = document.getElementById('declarationError'); if (!decl.checked) { errorEl.textContent = 'Vous devez accepter la déclaration.'; return false; } else { errorEl.textContent = ''; return true; } } // --- Récupération des données --- function getFormData() { return { prenom: prenom.value.trim(), nom: nom.value.trim(), dateNaissance: dateNaissance.value, lieuNaissance: lieuNaissance.value.trim(), sexe: sexe.value, nationalite: nationalite.value.trim(), adresseEleve: adresseEleve.value.trim(), niveau: niveau.value, anneeScolaire: anneeScolaire.value.trim(), ecoleOrigine: ecoleOrigine.value.trim(), nomParent: nomParent.value.trim(), lienParente: lienParente.value, telephoneParent: telephoneParent.value.trim(), emailParent: emailParent.value.trim(), professionParent: professionParent.value.trim(), adresseParent: adresseParent.value.trim(), allergies: allergies.value.trim(), conditionsMedicales: conditionsMedicales.value.trim(), contactUrgence: contactUrgence.value.trim(), documents: Array.from(document.querySelectorAll('input[name="documents"]:checked')).map(d => d.value), declaration: declaration.checked }; } // --- Affichage succès --- function showSuccess(numero) { document.getElementById('inscriptionForm').style.display = 'none'; document.getElementById('numeroInscription').textContent = numero || '—'; document.getElementById('successMessage').style.display = 'block'; } // --- Formatage de la date (optionnel) --- function formatDate(dateString) { if (!dateString) return 'N/A'; const date = new Date(dateString); return new Intl.DateTimeFormat('fr-FR', { year: 'numeric', month: '2-digit', day: '2-digit' }).format(date); }