From 8f0cf16f707ac1cd51f0d619fa1c5ea0ba023f68 Mon Sep 17 00:00:00 2001 From: N3WT DE COMPET Date: Sat, 31 May 2025 03:03:51 +0200 Subject: [PATCH] fix: searchTerm inscription --- .../views/register_form_views.py | 10 ++++++- .../app/[locale]/admin/subscriptions/page.js | 26 +++++++------------ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Back-End/Subscriptions/views/register_form_views.py b/Back-End/Subscriptions/views/register_form_views.py index 87e19ec..18479f5 100644 --- a/Back-End/Subscriptions/views/register_form_views.py +++ b/Back-End/Subscriptions/views/register_form_views.py @@ -88,6 +88,7 @@ class RegisterFormView(APIView): filter = request.GET.get('filter', '').strip() page_size = request.GET.get('page_size', None) establishment_id = request.GET.get('establishment_id', None) + search = request.GET.get('search', '').strip() # <-- Ajout du paramètre search # Gestion du page_size if page_size is not None: @@ -113,7 +114,14 @@ class RegisterFormView(APIView): registerForms_List = None 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: return JsonResponse({'error': 'aucune donnée trouvée', 'count': 0}, safe=False) diff --git a/Front-End/src/app/[locale]/admin/subscriptions/page.js b/Front-End/src/app/[locale]/admin/subscriptions/page.js index ecc9a6b..821fa93 100644 --- a/Front-End/src/app/[locale]/admin/subscriptions/page.js +++ b/Front-End/src/app/[locale]/admin/subscriptions/page.js @@ -133,9 +133,8 @@ export default function Page({ params: { locale } }) { const registerFormCurrrentYearDataHandler = (data) => { if (data) { const { registerForms, count, page_size } = data; - if (registerForms) { - setRegistrationFormsDataCurrentYear(registerForms); - } + setRegistrationFormsDataCurrentYear(registerForms); + const calculatedTotalPages = count === 0 ? count : Math.ceil(count / page_size); setTotalCurrentYear(count); @@ -153,9 +152,8 @@ export default function Page({ params: { locale } }) { const registerFormNextYearDataHandler = (data) => { if (data) { const { registerForms, count, page_size } = data; - if (registerForms) { - setRegistrationFormsDataNextYear(registerForms); - } + setRegistrationFormsDataNextYear(registerForms); + const calculatedTotalPages = count === 0 ? count : Math.ceil(count / page_size); setTotalNextYear(count); @@ -173,9 +171,7 @@ export default function Page({ params: { locale } }) { const registerFormHistoricalDataHandler = (data) => { if (data) { const { registerForms, count, page_size } = data; - if (registerForms) { - setRegistrationFormsDataHistorical(registerForms); - } + setRegistrationFormsDataHistorical(registerForms); const calculatedTotalPages = count === 0 ? count : Math.ceil(count / page_size); @@ -225,12 +221,11 @@ export default function Page({ params: { locale } }) { fetchDataAndSetState(); } - }, [selectedEstablishmentId, reloadFetch, currentSchoolYearPage, searchTerm]); + }, [selectedEstablishmentId, reloadFetch]); useEffect(() => { if (selectedEstablishmentId) { const fetchDataAndSetState = () => { - setIsLoading(true); fetchRegisterForms( selectedEstablishmentId, CURRENT_YEAR_FILTER, @@ -247,7 +242,6 @@ export default function Page({ params: { locale } }) { .then(registerFormHistoricalDataHandler) .catch(requestErrorHandler); - setIsLoading(false); setReloadFetch(false); }; @@ -256,7 +250,7 @@ export default function Page({ params: { locale } }) { }, 500); // Debounce la recherche return () => clearTimeout(timeoutId); } - }, [searchTerm]); + }, [searchTerm, selectedEstablishmentId, currentSchoolYearPage, itemsPerPage]); /** * UseEffect to update page count of tab @@ -705,7 +699,7 @@ export default function Page({ params: { locale } }) { ]; let emptyMessage; - if (activeTab === CURRENT_YEAR_FILTER) { + if (activeTab === CURRENT_YEAR_FILTER && searchTerm === '') { emptyMessage = ( ); - } else if (activeTab === NEXT_YEAR_FILTER) { + } else if (activeTab === NEXT_YEAR_FILTER && searchTerm === '') { emptyMessage = ( ); - } else if (activeTab === HISTORICAL_FILTER) { + } else if (activeTab === HISTORICAL_FILTER && searchTerm === '') { emptyMessage = (