mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 16:03:21 +00:00
feat: Utilisation de l'établissement en variable de session / gestion de
la page des inscriptions en fonction de l'établissement / mise à jour du mock_data à l'init
This commit is contained in:
@ -15,6 +15,7 @@ import { MoreVertical, Send, Edit, Trash2, FileText, CheckCircle, Plus } from '
|
||||
import Modal from '@/components/Modal';
|
||||
import InscriptionForm from '@/components/Inscription/InscriptionForm'
|
||||
import AffectationClasseForm from '@/components/AffectationClasseForm'
|
||||
import { getSession } from 'next-auth/react';
|
||||
|
||||
import {
|
||||
PENDING,
|
||||
@ -52,8 +53,6 @@ import { useCsrfToken } from '@/context/CsrfContext';
|
||||
import { ESTABLISHMENT_ID } from '@/utils/Url';
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
const useFakeData = process.env.NEXT_PUBLIC_USE_FAKE_DATA === 'true';
|
||||
|
||||
export default function Page({ params: { locale } }) {
|
||||
const t = useTranslations('subscriptions');
|
||||
const [registrationForms, setRegistrationForms] = useState([]);
|
||||
@ -88,6 +87,8 @@ export default function Page({ params: { locale } }) {
|
||||
const [tuitionFees, setTuitionFees] = useState([]);
|
||||
const [groups, setGroups] = useState([]);
|
||||
|
||||
const [establishmentId, setEstablishmentId] = useState(null);
|
||||
|
||||
const csrfToken = useCsrfToken();
|
||||
|
||||
const openModal = () => {
|
||||
@ -166,115 +167,131 @@ const registerFormArchivedDataHandler = (data) => {
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
const fetchInitialData = async () => {
|
||||
try {
|
||||
const [classesData, studentsData] = await Promise.all([
|
||||
fetchClasses(),
|
||||
fetchStudents()
|
||||
]);
|
||||
getSession()
|
||||
.then(session => {
|
||||
if (session && session.user) {
|
||||
setEstablishmentId(session.user.establishment);
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
logger.error('Error fetching session:', err);
|
||||
});
|
||||
}, []);
|
||||
|
||||
setClasses(classesData);
|
||||
setEleves(studentsData);
|
||||
logger.debug('Success - Classes:', classesData);
|
||||
logger.debug('Success - Students:', studentsData);
|
||||
} catch (error) {
|
||||
logger.error('Error fetching initial data:', error);
|
||||
}
|
||||
useEffect(() => {
|
||||
if (establishmentId) {
|
||||
const fetchInitialData = () => {
|
||||
Promise.all([
|
||||
fetchClasses(),
|
||||
fetchStudents(establishmentId) // Utiliser l'ID de l'établissement ici
|
||||
])
|
||||
.then(([classesData, studentsData]) => {
|
||||
setClasses(classesData);
|
||||
setEleves(studentsData);
|
||||
logger.debug('Success - Classes:', classesData);
|
||||
logger.debug('Success - Students:', studentsData);
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error('Error fetching initial data:', error);
|
||||
});
|
||||
};
|
||||
|
||||
fetchInitialData();
|
||||
}, []);
|
||||
}
|
||||
}, [establishmentId]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
const fetchDataAndSetState = () => {
|
||||
|
||||
setIsLoading(true);
|
||||
if (!useFakeData) {
|
||||
fetchRegisterForms(PENDING, currentPage, itemsPerPage, searchTerm)
|
||||
.then(registerFormPendingDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegisterForms(SUBSCRIBED)
|
||||
.then(registerFormSubscribedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegisterForms(ARCHIVED)
|
||||
.then(registerFormArchivedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegistrationTemplateMaster()
|
||||
.then((data)=> {
|
||||
logger.debug(data);
|
||||
|
||||
setTemplateMasters(data)
|
||||
})
|
||||
.catch((err)=>{ err = err.message; logger.debug(err);})
|
||||
fetchRegistrationDiscounts()
|
||||
.then(data => {
|
||||
setRegistrationDiscounts(data);
|
||||
})
|
||||
.catch(requestErrorHandler)
|
||||
fetchTuitionDiscounts()
|
||||
.then(data => {
|
||||
setTuitionDiscounts(data);
|
||||
})
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegistrationFees()
|
||||
.then(data => {
|
||||
setRegistrationFees(data);
|
||||
})
|
||||
.catch(requestErrorHandler)
|
||||
fetchTuitionFees()
|
||||
.then(data => {
|
||||
setTuitionFees(data);
|
||||
})
|
||||
.catch(requestErrorHandler);
|
||||
fetchRegistrationFileGroups()
|
||||
.then(data => {
|
||||
setGroups(data);
|
||||
})
|
||||
.catch(error => logger.error('Error fetching file groups:', error));
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
setRegistrationFormsDataPending(mockFicheInscription);
|
||||
}, 1000);
|
||||
}
|
||||
setIsLoading(false);
|
||||
setReloadFetch(false);
|
||||
};
|
||||
|
||||
|
||||
fetchDataAndSetState();
|
||||
}, [reloadFetch, currentPage]);
|
||||
|
||||
useEffect(() => {
|
||||
if (establishmentId) {
|
||||
const fetchDataAndSetState = () => {
|
||||
setIsLoading(true);
|
||||
Promise.all([
|
||||
fetchRegisterForms(establishmentId, PENDING, currentPage, itemsPerPage, searchTerm)
|
||||
.then(registerFormPendingDataHandler)
|
||||
.catch(requestErrorHandler),
|
||||
fetchRegisterForms(establishmentId, SUBSCRIBED)
|
||||
.then(registerFormSubscribedDataHandler)
|
||||
.catch(requestErrorHandler),
|
||||
fetchRegisterForms(establishmentId, ARCHIVED)
|
||||
.then(registerFormArchivedDataHandler)
|
||||
.catch(requestErrorHandler),
|
||||
fetchRegistrationTemplateMaster()
|
||||
.then(data => {
|
||||
setTemplateMasters(data);
|
||||
})
|
||||
.catch(err => {
|
||||
logger.debug(err.message);
|
||||
}),
|
||||
fetchRegistrationDiscounts()
|
||||
.then(data => {
|
||||
setRegistrationDiscounts(data);
|
||||
})
|
||||
.catch(requestErrorHandler),
|
||||
fetchTuitionDiscounts()
|
||||
.then(data => {
|
||||
setTuitionDiscounts(data);
|
||||
})
|
||||
.catch(requestErrorHandler),
|
||||
fetchRegistrationFees()
|
||||
.then(data => {
|
||||
setRegistrationFees(data);
|
||||
})
|
||||
.catch(requestErrorHandler),
|
||||
fetchTuitionFees()
|
||||
.then(data => {
|
||||
setTuitionFees(data);
|
||||
})
|
||||
.catch(requestErrorHandler),
|
||||
fetchRegistrationFileGroups()
|
||||
.then(data => {
|
||||
setGroups(data);
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error('Error fetching file groups:', error);
|
||||
})
|
||||
])
|
||||
.then(() => {
|
||||
setIsLoading(false);
|
||||
setReloadFetch(false);
|
||||
})
|
||||
.catch(err => {
|
||||
logger.error(err);
|
||||
setIsLoading(false);
|
||||
setReloadFetch(false);
|
||||
});
|
||||
};
|
||||
|
||||
fetchDataAndSetState();
|
||||
}
|
||||
}, [establishmentId, reloadFetch, currentPage, searchTerm]);
|
||||
|
||||
useEffect(() => {
|
||||
if (establishmentId) {
|
||||
const fetchDataAndSetState = () => {
|
||||
|
||||
setIsLoading(true);
|
||||
if (!useFakeData) {
|
||||
fetchRegisterForms(PENDING, currentPage, itemsPerPage, searchTerm)
|
||||
.then(registerFormPendingDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegisterForms(SUBSCRIBED)
|
||||
.then(registerFormSubscribedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegisterForms(ARCHIVED)
|
||||
.then(registerFormArchivedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegistrationTemplateMaster()
|
||||
.then((data)=> {setTemplateMasters(data)})
|
||||
.catch((err)=>{ err = err.message; logger.debug(err);});
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
setRegistrationFormsDataPending(mockFicheInscription);
|
||||
}, 1000);
|
||||
}
|
||||
fetchRegisterForms(establishmentId, PENDING, currentPage, itemsPerPage, searchTerm)
|
||||
.then(registerFormPendingDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegisterForms(establishmentId, SUBSCRIBED)
|
||||
.then(registerFormSubscribedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegisterForms(establishmentId, ARCHIVED)
|
||||
.then(registerFormArchivedDataHandler)
|
||||
.catch(requestErrorHandler)
|
||||
fetchRegistrationTemplateMaster()
|
||||
.then((data)=> {setTemplateMasters(data)})
|
||||
.catch((err)=>{ err = err.message; logger.debug(err);});
|
||||
|
||||
setIsLoading(false);
|
||||
setReloadFetch(false);
|
||||
};
|
||||
}
|
||||
|
||||
const timeoutId = setTimeout(() => {
|
||||
fetchDataAndSetState();
|
||||
}, 500); // Debounce la recherche
|
||||
return () => clearTimeout(timeoutId);
|
||||
const timeoutId = setTimeout(() => {
|
||||
fetchDataAndSetState();
|
||||
}, 500); // Debounce la recherche
|
||||
return () => clearTimeout(timeoutId);
|
||||
}
|
||||
}, [searchTerm]);
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user