chore: Application du linter

This commit is contained in:
Luc SORIGNET
2025-05-12 10:34:47 +02:00
parent 23a593dbc7
commit 425e6d73e5
56 changed files with 1140 additions and 1469 deletions

View File

@ -3,6 +3,7 @@ import React, { useState } from 'react';
import SelectChoice from '@/components/SelectChoice';
import Button from '@/components/Button';
import Table from '@/components/Table';
import logger from '@/utils/logger';
export default function Page() {
const [formData, setFormData] = useState({
@ -132,7 +133,7 @@ export default function Page() {
<div className="mt-4">
<Button
text="Enregistrer"
onClick={() => console.log('FormData:', formData)}
onClick={() => logger.debug('FormData:', formData)}
primary
className="bg-emerald-500 text-white hover:bg-emerald-600"
/>

View File

@ -4,6 +4,7 @@ import SidebarTabs from '@/components/SidebarTabs';
import EmailSender from '@/components/Admin/EmailSender';
import InstantMessaging from '@/components/Admin/InstantMessaging';
import AnnouncementScheduler from '@/components/Admin/AnnouncementScheduler';
import logger from '@/utils/logger';
export default function MessageriePage({ csrfToken }) {
const tabs = [
@ -28,7 +29,7 @@ export default function MessageriePage({ csrfToken }) {
<div className="flex h-full w-full">
<SidebarTabs
tabs={tabs}
onTabChange={(tabId) => console.log(`Onglet actif : ${tabId}`)}
onTabChange={(tabId) => logger.debug(`Onglet actif : ${tabId}`)}
/>
</div>
);

View File

@ -13,6 +13,7 @@ import {
import { useEstablishment } from '@/context/EstablishmentContext';
import { useCsrfToken } from '@/context/CsrfContext'; // Import du hook pour récupérer le csrfToken
import { useNotification } from '@/context/NotificationContext';
import { useSearchParams } from 'next/navigation'; // Ajoute cet import
export default function SettingsPage() {
const [activeTab, setActiveTab] = useState('structure');
@ -28,10 +29,22 @@ export default function SettingsPage() {
const { selectedEstablishmentId } = useEstablishment();
const csrfToken = useCsrfToken(); // Récupération du csrfToken
const { showNotification } = useNotification();
const searchParams = useSearchParams();
const handleTabClick = (tab) => {
setActiveTab(tab);
};
// Ajout : sélection automatique de l'onglet via l'ancre ou le paramètre de recherche
useEffect(() => {
const tabParam = searchParams.get('tab');
if (tabParam === 'smtp') {
setActiveTab('smtp');
} else if (tabParam === 'structure') {
setActiveTab('structure');
}
}, [searchParams]);
// Charger les paramètres SMTP existants
useEffect(() => {
if (activeTab === 'smtp') {
@ -45,12 +58,23 @@ export default function SettingsPage() {
setUseSsl(data.use_ssl || false);
})
.catch((error) => {
logger.error('Erreur lors du chargement des paramètres SMTP:', error);
showNotification(
'Erreur lors du chargement des paramètres SMTP.',
'error',
'Erreur'
);
if (error.response && error.response.status === 404) {
showNotification(
"Les données SMTP n'ont pas été trouvées.",
'warning',
'Attention'
);
} else {
logger.error(
'Erreur lors du chargement des paramètres SMTP:',
error
);
showNotification(
'Erreur lors du chargement des paramètres SMTP.',
'error',
'Erreur'
);
}
});
}
}, [activeTab, csrfToken]); // Ajouter csrfToken comme dépendance

View File

@ -151,7 +151,7 @@ export default function Page() {
// Envoyer les absences modifiées à une API
absencesToUpdate.forEach(([studentId, absenceData]) => {
console.log('Modification absence élève : ', studentId);
logger.debug('Modification absence élève : ', studentId);
saveAbsence(studentId, absenceData);
});
@ -203,7 +203,7 @@ export default function Page() {
// Appeler la fonction pour supprimer l'absence
deleteAbsences(existingAbsence.id, csrfToken)
.then(() => {
console.log(
logger.debug(
`Absence pour l'élève ${studentId} supprimée avec succès.`
);
// Mettre à jour les absences récupérées
@ -214,7 +214,7 @@ export default function Page() {
});
})
.catch((error) => {
console.error(
logger.error(
`Erreur lors de la suppression de l'absence pour l'élève ${studentId}:`,
error
);
@ -235,7 +235,7 @@ export default function Page() {
const saveAbsence = (studentId, absenceData) => {
if (!absenceData.reason || !studentId || !absenceData.moment) {
console.error('Tous les champs requis doivent être fournis.');
logger.error('Tous les champs requis doivent être fournis.');
return;
}
@ -251,7 +251,7 @@ export default function Page() {
// Modifier une absence existante
editAbsences(absenceData.id, payload, csrfToken)
.then(() => {
console.log(
logger.debug(
`Absence pour l'élève ${studentId} modifiée avec succès.`
);
// Mettre à jour fetchedAbsences et formAbsences localement
@ -265,7 +265,7 @@ export default function Page() {
}));
})
.catch((error) => {
console.error(
logger.error(
`Erreur lors de la modification de l'absence pour l'élève ${studentId}:`,
error
);
@ -274,7 +274,7 @@ export default function Page() {
// Créer une nouvelle absence
createAbsences(payload, csrfToken)
.then((response) => {
console.log(`Absence pour l'élève ${studentId} créée avec succès.`);
logger.debug(`Absence pour l'élève ${studentId} créée avec succès.`);
// Mettre à jour fetchedAbsences et formAbsences localement
setFetchedAbsences((prev) => ({
...prev,
@ -286,7 +286,7 @@ export default function Page() {
}));
})
.catch((error) => {
console.error(
logger.error(
`Erreur lors de la création de l'absence pour l'élève ${studentId}:`,
error
);

View File

@ -385,14 +385,14 @@ export default function CreateSubscriptionPage() {
const guardians = (() => {
if (formDataRef.current.selectedGuardians.length > 0) {
// Cas 3 : Des guardians sont sélectionnés
console.log('Cas 3 : Des guardians sont sélectionnés');
logger.debug('Cas 3 : Des guardians sont sélectionnés');
return formDataRef.current.selectedGuardians.map((guardianId) => ({
id: guardianId,
}));
} else if (formDataRef.current.isExistingParentProfile) {
if (initialGuardianEmail !== existingProfile?.email) {
// Cas 2 : Profil existant différent de l'ancien
console.log(
logger.debug(
"Cas 2 : Profil existant différent de l'ancien, mise à jour du profil",
{
existingProfile,
@ -415,14 +415,14 @@ export default function CreateSubscriptionPage() {
];
} else {
// Cas 4 : Profil existant avec le même email
console.log('Cas 4 : Profil existant avec le même email', {
logger.debug('Cas 4 : Profil existant avec le même email', {
existingProfile,
});
return [];
}
} else {
// Cas 1 : Profil inexistant
console.log("Cas 1 : Profil inexistant, création d'un nouveau profil");
logger.debug("Cas 1 : Profil inexistant, création d'un nouveau profil");
return [
{
profile_role_data: {
@ -444,7 +444,7 @@ export default function CreateSubscriptionPage() {
}
})();
console.log('test : ', guardians);
logger.debug('test : ', guardians);
const data = {
student: {
@ -763,10 +763,12 @@ export default function CreateSubscriptionPage() {
<div className="mx-auto p-12 space-y-12">
{registerFormID ? (
<h1 className="text-2xl font-bold">
Modifier un dossier d'inscription
Modifier un dossier d&apos;inscription
</h1>
) : (
<h1 className="text-2xl font-bold">Créer un dossier d'inscription</h1>
<h1 className="text-2xl font-bold">
Créer un dossier d&apos;inscription
</h1>
)}
{/* Sélection de l'année scolaire */}
@ -1047,7 +1049,7 @@ export default function CreateSubscriptionPage() {
{/* Montant total */}
<div className="flex items-center justify-between bg-gray-50 p-4 rounded-lg shadow-sm border border-gray-300 mt-4">
<span className="text-sm font-medium text-gray-600">
Montant total des frais d'inscription :
Montant total des frais d&apos;inscription :
</span>
<span className="text-lg font-semibold text-gray-800">
{totalRegistrationAmount}

View File

@ -321,7 +321,7 @@ export default function Page({ params: { locale } }) {
.then((data) => {
logger.debug('Success:', data);
setPopupMessage(
`Le dossier d'inscription a été correctement archivé`
"Le dossier d'inscription a été correctement archivé"
);
setPopupVisible(true);
setRegistrationForms(
@ -332,7 +332,7 @@ export default function Page({ params: { locale } }) {
.catch((error) => {
logger.error('Error archiving data:', error);
setPopupMessage(
`Erreur lors de l'archivage du dossier d'inscription.\nContactez l'administrateur.`
"Erreur lors de l'archivage du dossier d'inscription.\nContactez l'administrateur."
);
setPopupVisible(true);
});
@ -349,14 +349,14 @@ export default function Page({ params: { locale } }) {
sendRegisterForm(id)
.then((data) => {
logger.debug('Success:', data);
setPopupMessage(`Le dossier d'inscription a été envoyé avec succès`);
setPopupMessage("Le dossier d'inscription a été envoyé avec succès");
setPopupVisible(true);
setReloadFetch(true);
})
.catch((error) => {
logger.error('Error archiving data:', error);
setPopupMessage(
`Erreur lors de l'envoi du dossier d'inscription.\nContactez l'administrateur.`
"Erreur lors de l'envoi du dossier d'inscription.\nContactez l'administrateur."
);
setPopupVisible(true);
});

View File

@ -0,0 +1,31 @@
import logger from '@/utils/logger';
/**
*
* @param {*} response
* @returns
*/
export const requestResponseHandler = async (response) => {
try {
const body = await response?.json();
if (response.ok) {
return body;
}
// Throw an error with the JSON body containing the form errors
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
error.response = response;
throw error;
} catch (error) {
logger.error('Une erreur est survenue lors du traitement de la réponse', {
error,
response,
});
throw error;
}
};
export const errorHandler = (error) => {
logger.error('Error:', { error });
// Handle the error here, e.g., show a notification
throw error;
};

View File

@ -1,4 +1,5 @@
import { signOut, signIn, getSession } from 'next-auth/react';
import { signOut, signIn } from 'next-auth/react';
import { errorHandler, requestResponseHandler } from './actionsHandlers';
import {
BE_AUTH_LOGIN_URL,
BE_AUTH_REFRESH_JWT_URL,
@ -11,17 +12,6 @@ import {
} from '@/utils/Url';
import { PARENT_FILTER } from '@/utils/constants';
const requestResponseHandler = async (response) => {
const body = await response.json();
if (response.ok) {
return body;
}
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
throw error;
};
/**
* Login action
*/
@ -46,7 +36,7 @@ export const getJWT = (data) => {
body: JSON.stringify(data),
credentials: 'include',
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const refreshJWT = (data) => {
const request = new Request(`${BE_AUTH_REFRESH_JWT_URL}`, {
@ -57,7 +47,7 @@ export const refreshJWT = (data) => {
body: JSON.stringify(data),
credentials: 'include',
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
/**
@ -87,7 +77,9 @@ export const fetchProfileRoles = (
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const updateProfileRoles = (id, data, csrfToken) => {
@ -100,7 +92,7 @@ export const updateProfileRoles = (id, data, csrfToken) => {
credentials: 'include',
body: JSON.stringify(data),
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const deleteProfileRoles = async (id, csrfToken) => {
@ -127,7 +119,9 @@ export const deleteProfileRoles = async (id, csrfToken) => {
};
export const fetchProfiles = () => {
return fetch(`${BE_AUTH_PROFILES_URL}`).then(requestResponseHandler);
return fetch(`${BE_AUTH_PROFILES_URL}`)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createProfile = (data, csrfToken) => {
@ -140,7 +134,7 @@ export const createProfile = (data, csrfToken) => {
credentials: 'include',
body: JSON.stringify(data),
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const deleteProfile = (id, csrfToken) => {
@ -151,7 +145,7 @@ export const deleteProfile = (id, csrfToken) => {
},
credentials: 'include',
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const updateProfile = (id, data, csrfToken) => {
@ -164,7 +158,7 @@ export const updateProfile = (id, data, csrfToken) => {
credentials: 'include',
body: JSON.stringify(data),
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const sendNewPassword = (data, csrfToken) => {
@ -177,7 +171,7 @@ export const sendNewPassword = (data, csrfToken) => {
credentials: 'include',
body: JSON.stringify(data),
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const subscribe = (data, csrfToken) => {
@ -190,7 +184,7 @@ export const subscribe = (data, csrfToken) => {
credentials: 'include',
body: JSON.stringify(data),
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const resetPassword = (uuid, data, csrfToken) => {
@ -203,7 +197,7 @@ export const resetPassword = (uuid, data, csrfToken) => {
credentials: 'include',
body: JSON.stringify(data),
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const getResetPassword = (uuid) => {
@ -212,5 +206,7 @@ export const getResetPassword = (uuid) => {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};

View File

@ -3,23 +3,16 @@ import {
BE_GESTIONMESSAGERIE_SEND_MESSAGE_URL,
BE_GESTIONMESSAGERIE_SEARCH_RECIPIENTS_URL,
} from '@/utils/Url';
const requestResponseHandler = async (response) => {
const body = await response.json();
if (response.ok) {
return body;
}
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
throw error;
};
import { errorHandler, requestResponseHandler } from './actionsHandlers';
export const fetchMessages = (id) => {
return fetch(`${BE_GESTIONMESSAGERIE_MESSAGES_URL}/${id}`, {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const sendMessage = (data, csrfToken) => {
@ -30,7 +23,9 @@ export const sendMessage = (data, csrfToken) => {
'X-CSRFToken': csrfToken,
},
body: JSON.stringify(data),
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const searchRecipients = (establishmentId, query) => {
@ -40,5 +35,7 @@ export const searchRecipients = (establishmentId, query) => {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};

View File

@ -1,21 +1,8 @@
import { BE_PLANNING_PLANNINGS_URL, BE_PLANNING_EVENTS_URL } from '@/utils/Url';
const requestResponseHandler = async (response) => {
const body = response.status !== 204 ? await response?.json() : {};
if (response.ok) {
return body;
}
// Throw an error with the JSON body containing the form errors
const error = new Error(
body?.errorMessage ||
`Une erreur est survenue code de retour : ${response.status}`
);
error.details = body;
throw error;
};
import { errorHandler, requestResponseHandler } from './actionsHandlers';
const getData = (url) => {
return fetch(`${url}`).then(requestResponseHandler);
return fetch(`${url}`).then(requestResponseHandler).catch(errorHandler);
};
const createDatas = (url, newData, csrfToken) => {
@ -27,7 +14,9 @@ const createDatas = (url, newData, csrfToken) => {
},
body: JSON.stringify(newData),
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
const updateDatas = (url, updatedData, csrfToken) => {
@ -39,7 +28,9 @@ const updateDatas = (url, updatedData, csrfToken) => {
},
body: JSON.stringify(updatedData),
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
const removeDatas = (url, csrfToken) => {
@ -50,7 +41,9 @@ const removeDatas = (url, csrfToken) => {
'X-CSRFToken': csrfToken,
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchPlannings = (

View File

@ -8,17 +8,7 @@ import {
FE_API_DOCUSEAL_DOWNLOAD_URL,
FE_API_DOCUSEAL_GENERATE_TOKEN,
} from '@/utils/Url';
const requestResponseHandler = async (response) => {
const body = await response.json();
if (response.ok) {
return body;
}
// Throw an error with the JSON body containing the form errors
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
throw error;
};
import { errorHandler, requestResponseHandler } from './actionsHandlers';
// FETCH requests
@ -67,7 +57,7 @@ export const fetchRegistrationSchoolFileMasters = (id = null) => {
'Content-Type': 'application/json',
},
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const fetchRegistrationParentFileMasters = (id = null) => {
@ -81,7 +71,7 @@ export const fetchRegistrationParentFileMasters = (id = null) => {
'Content-Type': 'application/json',
},
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const fetchRegistrationSchoolFileTemplates = (id = null) => {
@ -95,7 +85,7 @@ export const fetchRegistrationSchoolFileTemplates = (id = null) => {
'Content-Type': 'application/json',
},
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
// CREATE requests
@ -130,7 +120,9 @@ export const createRegistrationSchoolFileMaster = (data, csrfToken) => {
'Content-Type': 'application/json',
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createRegistrationParentFileMaster = (data, csrfToken) => {
@ -142,7 +134,9 @@ export const createRegistrationParentFileMaster = (data, csrfToken) => {
'Content-Type': 'application/json',
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createRegistrationSchoolFileTemplate = (data, csrfToken) => {
@ -154,7 +148,9 @@ export const createRegistrationSchoolFileTemplate = (data, csrfToken) => {
'Content-Type': 'application/json',
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createRegistrationParentFileTemplate = (data, csrfToken) => {
@ -166,7 +162,9 @@ export const createRegistrationParentFileTemplate = (data, csrfToken) => {
'Content-Type': 'application/json',
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
// EDIT requests
@ -207,7 +205,9 @@ export const editRegistrationSchoolFileMaster = (fileId, data, csrfToken) => {
},
credentials: 'include',
}
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const editRegistrationParentFileMaster = (id, data, csrfToken) => {
@ -222,7 +222,9 @@ export const editRegistrationParentFileMaster = (id, data, csrfToken) => {
},
credentials: 'include',
}
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const editRegistrationSchoolFileTemplates = (
@ -240,7 +242,9 @@ export const editRegistrationSchoolFileTemplates = (
},
credentials: 'include',
}
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const editRegistrationParentFileTemplates = (
@ -258,7 +262,9 @@ export const editRegistrationParentFileTemplates = (
},
credentials: 'include',
}
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
// DELETE requests
@ -343,7 +349,9 @@ export const cloneTemplate = (templateId, email, is_required) => {
email,
is_required,
}),
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const downloadTemplate = (slug) => {
@ -352,7 +360,9 @@ export const downloadTemplate = (slug) => {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const generateToken = (email, id = null) => {
@ -362,5 +372,7 @@ export const generateToken = (email, id = null) => {
'Content-Type': 'application/json',
},
body: JSON.stringify({ user_email: email, id }),
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};

View File

@ -9,34 +9,28 @@ import {
BE_SCHOOL_PAYMENT_MODES_URL,
BE_SCHOOL_ESTABLISHMENT_URL,
} from '@/utils/Url';
const requestResponseHandler = async (response) => {
const body = await response.json();
if (response.ok) {
return body;
}
// Throw an error with the JSON body containing the form errors
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
throw error;
};
import { errorHandler, requestResponseHandler } from './actionsHandlers';
export const fetchSpecialities = (establishment) => {
return fetch(
`${BE_SCHOOL_SPECIALITIES_URL}?establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchTeachers = (establishment) => {
return fetch(
`${BE_SCHOOL_TEACHERS_URL}?establishment_id=${establishment}`
).then(requestResponseHandler);
return fetch(`${BE_SCHOOL_TEACHERS_URL}?establishment_id=${establishment}`)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchClasses = (establishment) => {
return fetch(
`${BE_SCHOOL_SCHOOLCLASSES_URL}?establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchClasse = (id) => {
@ -46,61 +40,79 @@ export const fetchClasse = (id) => {
};
export const fetchSchedules = () => {
return fetch(`${BE_SCHOOL_PLANNINGS_URL}`).then(requestResponseHandler);
return fetch(`${BE_SCHOOL_PLANNINGS_URL}`)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchRegistrationDiscounts = (establishment) => {
return fetch(
`${BE_SCHOOL_DISCOUNTS_URL}?filter=registration&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchTuitionDiscounts = (establishment) => {
return fetch(
`${BE_SCHOOL_DISCOUNTS_URL}?filter=tuition&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchRegistrationFees = (establishment) => {
return fetch(
`${BE_SCHOOL_FEES_URL}?filter=registration&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchTuitionFees = (establishment) => {
return fetch(
`${BE_SCHOOL_FEES_URL}?filter=tuition&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchRegistrationPaymentPlans = (establishment) => {
return fetch(
`${BE_SCHOOL_PAYMENT_PLANS_URL}?filter=registration&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchTuitionPaymentPlans = (establishment) => {
return fetch(
`${BE_SCHOOL_PAYMENT_PLANS_URL}?filter=tuition&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchRegistrationPaymentModes = (establishment) => {
return fetch(
`${BE_SCHOOL_PAYMENT_MODES_URL}?filter=registration&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchTuitionPaymentModes = (establishment) => {
return fetch(
`${BE_SCHOOL_PAYMENT_MODES_URL}?filter=tuition&establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchEstablishment = (establishment) => {
return fetch(`${BE_SCHOOL_ESTABLISHMENT_URL}/${establishment}`).then(
requestResponseHandler
);
return fetch(`${BE_SCHOOL_ESTABLISHMENT_URL}/${establishment}`)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createDatas = (url, newData, csrfToken) => {
@ -112,7 +124,9 @@ export const createDatas = (url, newData, csrfToken) => {
},
body: JSON.stringify(newData),
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const updateDatas = (url, id, updatedData, csrfToken) => {
@ -124,7 +138,9 @@ export const updateDatas = (url, id, updatedData, csrfToken) => {
},
body: JSON.stringify(updatedData),
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const removeDatas = (url, id, csrfToken) => {
@ -135,5 +151,7 @@ export const removeDatas = (url, id, csrfToken) => {
'X-CSRFToken': csrfToken,
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};

View File

@ -1,20 +1,10 @@
import { BE_SETTINGS_SMTP_URL } from '@/utils/Url';
import { errorHandler, requestResponseHandler } from './actionsHandlers';
export const PENDING = 'pending';
export const SUBSCRIBED = 'subscribed';
export const ARCHIVED = 'archived';
const requestResponseHandler = async (response) => {
const body = await response.json();
if (response.ok) {
return body;
}
// Throw an error with the JSON body containing the form errors
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
throw error;
};
export const fetchSmtpSettings = (csrfToken, establishment_id = null) => {
let url = `${BE_SETTINGS_SMTP_URL}/`;
if (establishment_id) {
@ -25,7 +15,9 @@ export const fetchSmtpSettings = (csrfToken, establishment_id = null) => {
'Content-Type': 'application/json',
'X-CSRFToken': csrfToken,
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const editSmtpSettings = (data, csrfToken) => {
@ -37,5 +29,7 @@ export const editSmtpSettings = (data, csrfToken) => {
},
body: JSON.stringify(data),
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};

View File

@ -7,19 +7,7 @@ import {
} from '@/utils/Url';
import { CURRENT_YEAR_FILTER } from '@/utils/constants';
import { useNotification } from '@/context/NotificationContext';
const requestResponseHandler = async (response) => {
const body = await response.json();
if (response.ok) {
return body;
}
// Throw an error with the JSON body containing the form errors
const error = new Error(body?.errorMessage || 'Une erreur est survenue');
error.details = body;
showNotification('Une erreur inattendue est survenue.', 'error', 'Erreur');
throw error;
};
import { errorHandler, requestResponseHandler } from './actionsHandlers';
export const fetchRegisterForms = (
establishment,
@ -36,17 +24,20 @@ export const fetchRegisterForms = (
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchRegisterForm = (id) => {
return fetch(`${BE_SUBSCRIPTION_REGISTERFORMS_URL}/${id}`) // Utilisation de studentId au lieu de codeDI
.then(requestResponseHandler);
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchLastGuardian = () => {
return fetch(`${BE_SUBSCRIPTION_LAST_GUARDIAN_ID_URL}`).then(
requestResponseHandler
);
return fetch(`${BE_SUBSCRIPTION_LAST_GUARDIAN_ID_URL}`)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const editRegisterForm = (id, data, csrfToken) => {
@ -57,7 +48,9 @@ export const editRegisterForm = (id, data, csrfToken) => {
},
body: data,
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createRegisterForm = (data, csrfToken) => {
@ -70,7 +63,9 @@ export const createRegisterForm = (data, csrfToken) => {
},
body: JSON.stringify(data),
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const sendRegisterForm = (id) => {
@ -79,7 +74,9 @@ export const sendRegisterForm = (id) => {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const resendRegisterForm = (id) => {
@ -88,7 +85,9 @@ export const resendRegisterForm = (id) => {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const archiveRegisterForm = (id) => {
const url = `${BE_SUBSCRIPTION_REGISTERFORMS_URL}/${id}/archive`;
@ -97,7 +96,9 @@ export const archiveRegisterForm = (id) => {
headers: {
'Content-Type': 'application/json',
},
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const fetchStudents = (establishment, id = null) => {
@ -110,7 +111,7 @@ export const fetchStudents = (establishment, id = null) => {
'Content-Type': 'application/json',
},
});
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export const fetchChildren = (id, establishment) => {
@ -123,7 +124,7 @@ export const fetchChildren = (id, establishment) => {
},
}
);
return fetch(request).then(requestResponseHandler);
return fetch(request).then(requestResponseHandler).catch(errorHandler);
};
export async function getRegisterFormFileTemplate(fileId) {
@ -206,7 +207,9 @@ export const dissociateGuardian = async (studentId, guardianId) => {
export const fetchAbsences = (establishment) => {
return fetch(
`${BE_SUBSCRIPTION_ABSENCES_URL}?establishment_id=${establishment}`
).then(requestResponseHandler);
)
.then(requestResponseHandler)
.catch(errorHandler);
};
export const createAbsences = (data, csrfToken) => {
@ -218,7 +221,9 @@ export const createAbsences = (data, csrfToken) => {
'Content-Type': 'application/json',
},
credentials: 'include',
}).then(requestResponseHandler);
})
.then(requestResponseHandler)
.catch(errorHandler);
};
export const editAbsences = (absenceId, payload, csrfToken) => {