diff --git a/Back-End/Subscriptions/views/register_form_views.py b/Back-End/Subscriptions/views/register_form_views.py index 53efedc..309c268 100644 --- a/Back-End/Subscriptions/views/register_form_views.py +++ b/Back-End/Subscriptions/views/register_form_views.py @@ -74,7 +74,6 @@ class RegisterFormView(APIView): """ # Récupération des paramètres filter = request.GET.get('filter', '').strip() - search = request.GET.get('search', '').strip() page_size = request.GET.get('page_size', None) establishment_id = request.GET.get('establishment_id', None) @@ -98,7 +97,6 @@ class RegisterFormView(APIView): registerForms_List = RegistrationForm.objects.filter(school_year=next_year) elif filter == 'historical': registerForms_List = RegistrationForm.objects.filter(school_year__in=historical_years) - registerForms_List = bdd.getObjects(RegistrationForm, 'status', RegistrationForm.RegistrationFormStatus.RF_VALIDATED) else: registerForms_List = None diff --git a/Front-End/src/app/[locale]/admin/subscriptions/createSubscription/page.js b/Front-End/src/app/[locale]/admin/subscriptions/createSubscription/page.js index e4bfccd..835d7b5 100644 --- a/Front-End/src/app/[locale]/admin/subscriptions/createSubscription/page.js +++ b/Front-End/src/app/[locale]/admin/subscriptions/createSubscription/page.js @@ -90,20 +90,26 @@ export default function CreateSubscriptionPage() { const isSubmitDisabled = () => { // Vérifie si les champs requis sont remplis - const requiredFields = ['schoolYear', 'studentLastName', 'studentFirstName']; - const hasErrors = requiredFields.some((field) => getLocalError(field) !== ''); - + const requiredFields = [ + 'schoolYear', + 'studentLastName', + 'studentFirstName', + ]; + const hasErrors = requiredFields.some( + (field) => getLocalError(field) !== '' + ); + // Vérifie si un groupe de fichiers est sélectionné const isFileGroupSelected = formData.selectedFileGroup !== null; - + // Vérifie si au moins un frais de scolarité est sélectionné const hasSelectedTuitionFees = formData.selectedTuitionFees.length > 0; - + // Vérifie les conditions spécifiques pour le responsable const isGuardianValid = isNewResponsable ? getLocalError('guardianEmail') === '' : formData.selectedGuardians.length > 0; - + // Retourne true si une des conditions n'est pas remplie return ( hasErrors || diff --git a/Front-End/src/app/[locale]/admin/subscriptions/page.js b/Front-End/src/app/[locale]/admin/subscriptions/page.js index 5f34679..7abf408 100644 --- a/Front-End/src/app/[locale]/admin/subscriptions/page.js +++ b/Front-End/src/app/[locale]/admin/subscriptions/page.js @@ -71,14 +71,20 @@ export default function Page({ params: { locale } }) { const currentSchoolYear = getCurrentSchoolYear(); // Exemple : "2024-2025" const nextSchoolYear = getNextSchoolYear(); // Exemple : "2025-2026" const historicalYears = getHistoricalYears(); + const [totalCurrentSchoolYearPages, setTotalCurrentSchoolYearPages] = + useState(1); + const [totalNextSchoolYearPages, setTotalNextSchoolYearPages] = useState(1); + const [totalHistoricalPages, setTotalHistoricalPages] = useState(1); + const [currentSchoolYearPage, setCurrentSchoolYearPage] = useState(1); + const [currentSchoolNextYearPage, setCurrentSchoolNextYearPage] = useState(1); + const [currentSchoolHistoricalYearPage, setCurrentSchoolHistoricalYearPage] = + useState(1); const [searchTerm, setSearchTerm] = useState(''); const [alertPage, setAlertPage] = useState(false); const [isLoading, setIsLoading] = useState(false); const [activeTab, setActiveTab] = useState('currentYear'); - const [currentPage, setCurrentPage] = useState(1); - const [totalPages, setTotalPages] = useState(1); const [totalCurrentYear, setTotalCurrentYear] = useState(0); - const [totalSubscribed, setTotalNextYear] = useState(0); + const [totalNextYear, setTotalNextYear] = useState(0); const [totalHistorical, setTotalHistorical] = useState(0); const [itemsPerPage, setItemsPerPage] = useState(10); // Définir le nombre d'éléments par page @@ -131,7 +137,7 @@ export default function Page({ params: { locale } }) { * @param {Array} data.registerForms - The array of registration forms. * @param {number} data.count - The total count of registration forms. */ - const registerFormPendingDataHandler = (data) => { + const registerFormCurrrentYearDataHandler = (data) => { if (data) { const { registerForms, count, page_size } = data; if (registerForms) { @@ -140,7 +146,7 @@ export default function Page({ params: { locale } }) { const calculatedTotalPages = count === 0 ? 1 : Math.ceil(count / page_size); setTotalCurrentYear(count); - setTotalPages(calculatedTotalPages); + setTotalCurrentSchoolYearPages(calculatedTotalPages); } }; @@ -151,13 +157,16 @@ export default function Page({ params: { locale } }) { * @param {Array} data.registerForms - An array of registration forms. * @param {number} data.count - The total count of subscribed forms. */ - const registerFormSubscribedDataHandler = (data) => { + const registerFormNextYearDataHandler = (data) => { if (data) { const { registerForms, count, page_size } = data; - setTotalNextYear(count); if (registerForms) { setRegistrationFormsDataNextYear(registerForms); } + const calculatedTotalPages = + count === 0 ? 1 : Math.ceil(count / page_size); + setTotalNextYear(count); + setTotalNextSchoolYearPages(calculatedTotalPages); } }; @@ -168,14 +177,17 @@ export default function Page({ params: { locale } }) { * @param {Array} data.registerForms - The array of archived register forms. * @param {number} data.count - The total count of archived register forms. */ - const registerFormArchivedDataHandler = (data) => { + const registerFormHistoricalDataHandler = (data) => { if (data) { const { registerForms, count, page_size } = data; - - setTotalHistorical(count); if (registerForms) { setRegistrationFormsDataHistorical(registerForms); } + + const calculatedTotalPages = + count === 0 ? 1 : Math.ceil(count / page_size); + setTotalHistorical(count); + setTotalHistoricalPages(calculatedTotalPages); } }; @@ -187,11 +199,11 @@ export default function Page({ params: { locale } }) { fetchRegisterForms( selectedEstablishmentId, CURRENT_YEAR, - currentPage, + currentSchoolYearPage, itemsPerPage, searchTerm ) - .then(registerFormPendingDataHandler) + .then(registerFormCurrrentYearDataHandler) .catch(requestErrorHandler), fetchClasses(selectedEstablishmentId) @@ -201,10 +213,10 @@ export default function Page({ params: { locale } }) { .catch(requestErrorHandler), fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR) - .then(registerFormSubscribedDataHandler) + .then(registerFormNextYearDataHandler) .catch(requestErrorHandler), fetchRegisterForms(selectedEstablishmentId, HISTORICAL) - .then(registerFormArchivedDataHandler) + .then(registerFormHistoricalDataHandler) .catch(requestErrorHandler), fetchProfiles() .then((data) => { @@ -227,7 +239,7 @@ export default function Page({ params: { locale } }) { fetchDataAndSetState(); } - }, [selectedEstablishmentId, reloadFetch, currentPage, searchTerm]); + }, [selectedEstablishmentId, reloadFetch, currentSchoolYearPage, searchTerm]); useEffect(() => { if (selectedEstablishmentId) { @@ -236,17 +248,17 @@ export default function Page({ params: { locale } }) { fetchRegisterForms( selectedEstablishmentId, CURRENT_YEAR, - currentPage, + currentSchoolYearPage, itemsPerPage, searchTerm ) - .then(registerFormPendingDataHandler) + .then(registerFormCurrrentYearDataHandler) .catch(requestErrorHandler); fetchRegisterForms(selectedEstablishmentId, NEXT_YEAR) - .then(registerFormSubscribedDataHandler) + .then(registerFormNextYearDataHandler) .catch(requestErrorHandler); fetchRegisterForms(selectedEstablishmentId, HISTORICAL) - .then(registerFormArchivedDataHandler) + .then(registerFormHistoricalDataHandler) .catch(requestErrorHandler); setIsLoading(false); @@ -265,13 +277,15 @@ export default function Page({ params: { locale } }) { */ useEffect(() => { if (activeTab === 'currentYear') { - setTotalPages(Math.ceil(totalCurrentYear / itemsPerPage)); + setTotalCurrentSchoolYearPages( + Math.ceil(totalCurrentYear / itemsPerPage) + ); } else if (activeTab === 'nextYear') { - setTotalPages(Math.ceil(totalSubscribed / itemsPerPage)); + setTotalNextSchoolYearPages(Math.ceil(totalNextYear / itemsPerPage)); } else if (activeTab === 'historical') { - setTotalPages(Math.ceil(totalHistorical / itemsPerPage)); + setTotalHistoricalPages(Math.ceil(totalHistorical / itemsPerPage)); } - }, [currentPage]); + }, [currentSchoolYearPage]); const handleSepaFileUpload = (file, row) => { if (!file || !row) { @@ -377,7 +391,7 @@ export default function Page({ params: { locale } }) { }; const handlePageChange = (newPage) => { - setCurrentPage(newPage); + setCurrentSchoolYearPage(newPage); }; const updateRF = (updatedData) => { @@ -756,7 +770,7 @@ export default function Page({ params: { locale } }) { <> {nextSchoolYear} - ({totalSubscribed}) + ({totalNextYear}) > } @@ -813,7 +827,7 @@ export default function Page({ params: { locale } }) {