feat: Gestion multi-profil multi-école

This commit is contained in:
N3WT DE COMPET
2025-03-09 16:22:28 +01:00
parent 95c154a4a2
commit 16178296ec
51 changed files with 1621 additions and 802 deletions

View File

@ -39,47 +39,61 @@ export default function DashboardPage() {
const [classes, setClasses] = useState([]);
const [establishmentId, setEstablishmentId] = useState(null);
useEffect(() => {
// Fetch data for classes
fetchClasses().then(data => {
setClasses(data);
logger.info('Classes fetched:', data);
const nbMaxStudents = data.reduce((acc, classe) => acc + classe.number_of_students, 0);
const nbStudents = data.reduce((acc, classe) => acc + classe.students.length, 0);
setStructureCapacity(nbMaxStudents);
setTotalStudents(nbStudents);
getSession()
.then(session => {
if (session && session.user) {
setEstablishmentId(session.user.establishment);
}
})
.catch(error => {
logger.error('Error fetching classes:', error);
.catch(err => {
logger.error('Error fetching session:', err);
});
}, []);
fetchRegisterForms().then(data => {
logger.info('Pending registrations fetched:', data);
setPendingRegistration(data.count);
})
.catch(error => {
logger.error('Error fetching pending registrations:', error);
});
useEffect(() => {
if (establishmentId) {
// Fetch data for classes
fetchClasses(establishmentId).then(data => {
setClasses(data);
logger.info('Classes fetched:', data);
const nbMaxStudents = data.reduce((acc, classe) => acc + classe.number_of_students, 0);
const nbStudents = data.reduce((acc, classe) => acc + classe.students.length, 0);
setStructureCapacity(nbMaxStudents);
setTotalStudents(nbStudents);
fetchUpcomingEvents().then(data => {
setUpcomingEvents(data);
}).catch(error => {
logger.error('Error fetching upcoming events:', error);
});
})
.catch(error => {
logger.error('Error fetching classes:', error);
});
// Simulation de chargement des données
setTimeout(() => {
setMonthlyStats({
inscriptions: [150, 180, 210, 245],
completionRate: 78
});
setIsLoading(false);
}, 1000);
}
, []);
fetchRegisterForms().then(data => {
logger.info('Pending registrations fetched:', data);
setPendingRegistration(data.count);
})
.catch(error => {
logger.error('Error fetching pending registrations:', error);
});
fetchUpcomingEvents().then(data => {
setUpcomingEvents(data);
}).catch(error => {
logger.error('Error fetching upcoming events:', error);
});
// Simulation de chargement des données
setTimeout(() => {
setMonthlyStats({
inscriptions: [150, 180, 210, 245],
completionRate: 78
});
setIsLoading(false);
}, 1000);
}
}
, [establishmentId]);
if (isLoading) return <Loader />;