fix: searchTerm inscription

This commit is contained in:
N3WT DE COMPET
2025-05-31 03:03:51 +02:00
parent 78d96f82f9
commit 8f0cf16f70
2 changed files with 19 additions and 17 deletions

View File

@ -88,6 +88,7 @@ class RegisterFormView(APIView):
filter = request.GET.get('filter', '').strip() filter = request.GET.get('filter', '').strip()
page_size = request.GET.get('page_size', None) page_size = request.GET.get('page_size', None)
establishment_id = request.GET.get('establishment_id', None) establishment_id = request.GET.get('establishment_id', None)
search = request.GET.get('search', '').strip() # <-- Ajout du paramètre search
# Gestion du page_size # Gestion du page_size
if page_size is not None: if page_size is not None:
@ -113,7 +114,14 @@ class RegisterFormView(APIView):
registerForms_List = None registerForms_List = None
if registerForms_List: if registerForms_List:
registerForms_List = registerForms_List.filter(establishment=establishment_id).order_by('-last_update') registerForms_List = registerForms_List.filter(establishment=establishment_id)
# Ajout du filtre search sur le nom et prénom de l'élève
if search:
registerForms_List = registerForms_List.filter(
Q(student__first_name__icontains=search) |
Q(student__last_name__icontains=search)
)
registerForms_List = registerForms_List.order_by('-last_update')
if not registerForms_List: if not registerForms_List:
return JsonResponse({'error': 'aucune donnée trouvée', 'count': 0}, safe=False) return JsonResponse({'error': 'aucune donnée trouvée', 'count': 0}, safe=False)

View File

@ -133,9 +133,8 @@ export default function Page({ params: { locale } }) {
const registerFormCurrrentYearDataHandler = (data) => { const registerFormCurrrentYearDataHandler = (data) => {
if (data) { if (data) {
const { registerForms, count, page_size } = data; const { registerForms, count, page_size } = data;
if (registerForms) {
setRegistrationFormsDataCurrentYear(registerForms); setRegistrationFormsDataCurrentYear(registerForms);
}
const calculatedTotalPages = const calculatedTotalPages =
count === 0 ? count : Math.ceil(count / page_size); count === 0 ? count : Math.ceil(count / page_size);
setTotalCurrentYear(count); setTotalCurrentYear(count);
@ -153,9 +152,8 @@ export default function Page({ params: { locale } }) {
const registerFormNextYearDataHandler = (data) => { const registerFormNextYearDataHandler = (data) => {
if (data) { if (data) {
const { registerForms, count, page_size } = data; const { registerForms, count, page_size } = data;
if (registerForms) {
setRegistrationFormsDataNextYear(registerForms); setRegistrationFormsDataNextYear(registerForms);
}
const calculatedTotalPages = const calculatedTotalPages =
count === 0 ? count : Math.ceil(count / page_size); count === 0 ? count : Math.ceil(count / page_size);
setTotalNextYear(count); setTotalNextYear(count);
@ -173,9 +171,7 @@ export default function Page({ params: { locale } }) {
const registerFormHistoricalDataHandler = (data) => { const registerFormHistoricalDataHandler = (data) => {
if (data) { if (data) {
const { registerForms, count, page_size } = data; const { registerForms, count, page_size } = data;
if (registerForms) {
setRegistrationFormsDataHistorical(registerForms); setRegistrationFormsDataHistorical(registerForms);
}
const calculatedTotalPages = const calculatedTotalPages =
count === 0 ? count : Math.ceil(count / page_size); count === 0 ? count : Math.ceil(count / page_size);
@ -225,12 +221,11 @@ export default function Page({ params: { locale } }) {
fetchDataAndSetState(); fetchDataAndSetState();
} }
}, [selectedEstablishmentId, reloadFetch, currentSchoolYearPage, searchTerm]); }, [selectedEstablishmentId, reloadFetch]);
useEffect(() => { useEffect(() => {
if (selectedEstablishmentId) { if (selectedEstablishmentId) {
const fetchDataAndSetState = () => { const fetchDataAndSetState = () => {
setIsLoading(true);
fetchRegisterForms( fetchRegisterForms(
selectedEstablishmentId, selectedEstablishmentId,
CURRENT_YEAR_FILTER, CURRENT_YEAR_FILTER,
@ -247,7 +242,6 @@ export default function Page({ params: { locale } }) {
.then(registerFormHistoricalDataHandler) .then(registerFormHistoricalDataHandler)
.catch(requestErrorHandler); .catch(requestErrorHandler);
setIsLoading(false);
setReloadFetch(false); setReloadFetch(false);
}; };
@ -256,7 +250,7 @@ export default function Page({ params: { locale } }) {
}, 500); // Debounce la recherche }, 500); // Debounce la recherche
return () => clearTimeout(timeoutId); return () => clearTimeout(timeoutId);
} }
}, [searchTerm]); }, [searchTerm, selectedEstablishmentId, currentSchoolYearPage, itemsPerPage]);
/** /**
* UseEffect to update page count of tab * UseEffect to update page count of tab
@ -705,7 +699,7 @@ export default function Page({ params: { locale } }) {
]; ];
let emptyMessage; let emptyMessage;
if (activeTab === CURRENT_YEAR_FILTER) { if (activeTab === CURRENT_YEAR_FILTER && searchTerm === '') {
emptyMessage = ( emptyMessage = (
<AlertMessage <AlertMessage
type="warning" type="warning"
@ -713,7 +707,7 @@ export default function Page({ params: { locale } }) {
message="Veuillez procéder à la création d'un nouveau dossier d'inscription pour l'année scolaire en cours." message="Veuillez procéder à la création d'un nouveau dossier d'inscription pour l'année scolaire en cours."
/> />
); );
} else if (activeTab === NEXT_YEAR_FILTER) { } else if (activeTab === NEXT_YEAR_FILTER && searchTerm === '') {
emptyMessage = ( emptyMessage = (
<AlertMessage <AlertMessage
type="info" type="info"
@ -721,7 +715,7 @@ export default function Page({ params: { locale } }) {
message="Aucun dossier n'a encore été créé pour la prochaine année scolaire." message="Aucun dossier n'a encore été créé pour la prochaine année scolaire."
/> />
); );
} else if (activeTab === HISTORICAL_FILTER) { } else if (activeTab === HISTORICAL_FILTER && searchTerm === '') {
emptyMessage = ( emptyMessage = (
<AlertMessage <AlertMessage
type="info" type="info"