fix: Suppression d'un profil uniquement s'il ne contient aucun guardian

rattaché à un élève qui n'en a pas d'autre
This commit is contained in:
N3WT DE COMPET
2025-05-03 15:53:19 +02:00
parent ac0672f334
commit 330018edfd
5 changed files with 64 additions and 33 deletions

View File

@ -7,6 +7,5 @@
"phone": "Téléphone",
"birthdate": "Date de naissance",
"profession": "Profession",
"address": "Adresse",
"add_responsible": "Ajouter un responsable"
"address": "Adresse"
}

View File

@ -885,20 +885,9 @@ export default function Page({ params: { locale } }) {
{
name: t('mainContactMail'),
transform: (row) =>
row.student.guardians && row.student.guardians.length > 0 ? (
row.student.guardians && row.student.guardians.length > 0 && (
row.student.guardians[0].associated_profile_email
) : (
<div className="flex justify-center h-full">
<button
className="flex items-center gap-2 text-blue-600 font-semibold hover:text-blue-800 transition duration-200 underline decoration-blue-600 hover:decoration-blue-800"
onClick={() => handleOpenAddGuardian(row.student)}
>
<span className="px-3 py-1 bg-blue-100 rounded-full hover:bg-blue-200 transition duration-200">
Ajouter un responsable
</span>
</button>
</div>
),
)
},
{
name: t('phone'),

View File

@ -92,15 +92,29 @@ export const updateProfileRoles = (id, data, csrfToken) => {
return fetch(request).then(requestResponseHandler);
};
export const deleteProfileRoles = (id, csrfToken) => {
const request = new Request(`${BE_AUTH_PROFILES_ROLES_URL}/${id}`, {
method: 'DELETE',
headers: {
'X-CSRFToken': csrfToken,
},
credentials: 'include',
});
return fetch(request).then(requestResponseHandler);
export const deleteProfileRoles = async (id, csrfToken) => {
const response = await fetch(
`${BE_AUTH_PROFILES_ROLES_URL}/${id}`,
{
method: 'DELETE',
headers: {
'X-CSRFToken': csrfToken,
},
credentials: 'include',
}
);
if (!response.ok) {
// Extraire le message d'erreur du backend
const errorData = await response.json();
const errorMessage =
errorData?.error || 'Une erreur est survenue lors de la suppression du profil.';
// Jeter une erreur avec le message spécifique
throw new Error(errorMessage);
}
return response.json();
};
export const fetchProfiles = () => {

View File

@ -91,7 +91,7 @@ const ProfileDirectory = ({
setPopupVisible(true);
})
.catch((error) => {
setPopupMessage('Erreur lors de la suppression du profil.');
setPopupMessage(error.message);
setPopupVisible(true);
});
setConfirmPopupVisible(false);