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 = (