refactor: Transformation des requetes vers le back en action ajout des

erreurs 400 et refresh lors d'un envoie de formulaire
This commit is contained in:
Luc SORIGNET
2025-01-13 14:21:44 +01:00
parent c4d45426b5
commit 147a70135d
23 changed files with 2421 additions and 314 deletions

View File

@ -3,11 +3,9 @@ import React, { useState, useEffect } from 'react';
import InscriptionFormShared from '@/components/Inscription/InscriptionFormShared';
import { useSearchParams, redirect, useRouter } from 'next/navigation';
import useCsrfToken from '@/hooks/useCsrfToken';
import { FE_PARENTS_HOME_URL,
BE_SUBSCRIPTION_STUDENT_URL,
BE_SUBSCRIPTION_REGISTERFORM_URL,
BE_SUBSCRIPTION_LAST_GUARDIAN_URL } from '@/utils/Url';
import { FE_PARENTS_HOME_URL} from '@/utils/Url';
import { mockStudent } from '@/data/mockStudent';
import { fetchLastGuardian, fetchRegisterForm } from '@/app/lib/subscriptionAction';
const useFakeData = process.env.NEXT_PUBLIC_USE_FAKE_DATA === 'true';
@ -21,7 +19,7 @@ export default function Page() {
const [isLoading, setIsLoading] = useState(true);
const csrfToken = useCsrfToken();
const [currentProfil, setCurrentProfil] = useState("");
const [lastIdResponsable, setLastIdResponsable] = useState(1);
const [lastGuardianId, setLastGuardianId] = useState(1);
useEffect(() => {
if (!studentId || !idProfil) {
@ -31,37 +29,25 @@ export default function Page() {
if (useFakeData) {
setInitialData(mockStudent);
setLastIdResponsable(999);
setLastGuardianId(999);
setIsLoading(false);
} else {
Promise.all([
// Fetch eleve data
fetch(`${BE_SUBSCRIPTION_STUDENT_URL}/${studentId}`),
// Fetch last responsable ID
fetch(BE_SUBSCRIPTION_LAST_GUARDIAN_URL)
fetchRegisterForm(studentId),
// Fetch last guardian ID
fetchLastGuardian()
])
.then(async ([eleveResponse, responsableResponse]) => {
const eleveData = await eleveResponse.json();
const responsableData = await responsableResponse.json();
const formattedData = {
id: eleveData.id,
nom: eleveData.nom,
prenom: eleveData.prenom,
adresse: eleveData.adresse,
dateNaissance: eleveData.dateNaissance,
lieuNaissance: eleveData.lieuNaissance,
codePostalNaissance: eleveData.codePostalNaissance,
nationalite: eleveData.nationalite,
medecinTraitant: eleveData.medecinTraitant,
niveau: eleveData.niveau,
responsables: eleveData.responsables || []
.then(async ([studentData, guardianData]) => {
const formattedData = {
...studentData,
guardians: studentData.guardians || []
};
setInitialData(formattedData);
setLastIdResponsable(responsableData.lastid);
setLastGuardianId(guardianData.lastid);
let profils = eleveData.profils;
let profils = studentData.profils;
const currentProf = profils.find(profil => profil.id === idProfil);
if (currentProf) {
setCurrentProfil(currentProf);
@ -83,17 +69,8 @@ export default function Page() {
}
try {
const response = await fetch(`${BE_SUBSCRIPTION_REGISTERFORM_URL}/${studentId}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': csrfToken
},
credentials: 'include',
body: JSON.stringify(data),
});
const result = await response.json();
const result = await editRegisterForm(studentId, data, csrfToken);
console.log('Success:', result);
router.push(FE_PARENTS_HOME_URL);
} catch (error) {

View File

@ -67,7 +67,7 @@ export default function ParentHomePage() {
<h3 className="text-lg font-semibold">{child.student.last_name} {child.student.first_name}</h3>
<Edit className="cursor-pointer" onClick={() => handleEdit(child.student.id)} />
</div>
<StatusLabel etat={child.status } showDropdown={false}/>
<StatusLabel status={child.status } showDropdown={false}/>
</div>
))}
</div>