Checkpoint: Amélioration de la gestion d'erreurs pour la modification des séquences : ajout de validation dans parseLocalDateTime, protection contre les valeurs nulles dans handleEdit avec fonction safeFormatDate, remplacement de invalidate() par refetch() pour forcer le rafraîchissement immédiat, et ajout de logs détaillés côté serveur pour faciliter le débogage.

This commit is contained in:
Manus Sandbox
2025-11-12 12:01:14 -05:00
parent 7135a9d2c6
commit f266e8dde8
4 changed files with 40 additions and 12 deletions

View File

@@ -58,11 +58,12 @@ export default function AdminSequences() {
});
const updateMutation = trpc.sequences.update.useMutation({
onSuccess: () => {
onSuccess: async () => {
toast.success("Séquence modifiée avec succès");
setIsEditOpen(false);
setEditingSequence(null);
utils.sequences.list.invalidate();
// Forcer un refetch immédiat au lieu d'une simple invalidation
await utils.sequences.list.refetch();
},
onError: (error) => {
toast.error(`Erreur : ${error.message}`);
@@ -93,17 +94,31 @@ export default function AdminSequences() {
const handleEdit = (sequence: any) => {
setEditingSequence(sequence);
// Fonction helper pour formater une date en toute sécurité
const safeFormatDate = (dateValue: any): string => {
if (!dateValue) return "";
try {
const date = new Date(dateValue);
if (isNaN(date.getTime())) return "";
return format(date, "yyyy-MM-dd'T'HH:mm");
} catch (error) {
console.error('Erreur de formatage de date:', error, dateValue);
return "";
}
};
setFormData({
formationId: sequence.formationId.toString(),
nom: sequence.nom,
lieu: sequence.lieu,
capaciteMax: sequence.capaciteMax.toString(),
dateBlocage: format(new Date(sequence.dateBlocage), "yyyy-MM-dd'T'HH:mm"),
statut: sequence.statut,
dates: sequence.dates.map((d: any) => ({
dateDebut: format(new Date(d.dateDebut), "yyyy-MM-dd'T'HH:mm"),
dateFin: format(new Date(d.dateFin), "yyyy-MM-dd'T'HH:mm"),
ordre: d.ordre,
nom: sequence.nom || "",
lieu: sequence.lieu || "",
capaciteMax: sequence.capaciteMax?.toString() || "12",
dateBlocage: safeFormatDate(sequence.dateBlocage),
statut: sequence.statut || "ouverte",
dates: (sequence.dates || []).map((d: any) => ({
dateDebut: safeFormatDate(d.dateDebut),
dateFin: safeFormatDate(d.dateFin),
ordre: d.ordre || 1,
})),
});
setIsEditOpen(true);