refactor: changement de la philosophie de logging

This commit is contained in:
Luc SORIGNET
2025-02-22 15:28:20 +01:00
parent 508847940c
commit c7723eceee
28 changed files with 217 additions and 161 deletions

View File

@ -9,6 +9,7 @@ import { ChevronLeft, ChevronRight, Plus, ChevronDown } from 'lucide-react';
import { format, addWeeks, addMonths, addYears, subWeeks, subMonths, subYears, getWeek, setMonth, setYear } from 'date-fns';
import { fr } from 'date-fns/locale';
import { AnimatePresence, motion } from 'framer-motion'; // Ajouter cet import
import logger from '@/utils/logger';
const Calendar = ({ onDateClick, onEventClick }) => {
const { currentDate, setCurrentDate, viewType, setViewType, events, hiddenSchedules } = usePlanning();
@ -40,7 +41,7 @@ const Calendar = ({ onDateClick, onEventClick }) => {
// S'assurer que le filtrage est fait au niveau parent
const filtered = events.filter(event => !hiddenSchedules.includes(event.scheduleId));
setVisibleEvents(filtered);
console.log('Events filtrés:', filtered); // Debug
logger.debug('Events filtrés:', filtered); // Debug
}, [events, hiddenSchedules]);
const navigateDate = (direction) => {

View File

@ -8,6 +8,7 @@ import FeesSection from '@/components/Structure/Tarification/FeesSection';
import DiscountsSection from '@/components/Structure/Tarification/DiscountsSection';
import SectionTitle from '@/components/SectionTitle';
import ProgressStep from '@/components/ProgressStep';
import logger from '@/utils/logger';
const InscriptionForm = ( { students, registrationDiscounts, tuitionDiscounts, registrationFees, tuitionFees, onSubmit, currentStep, groups }) => {
const [formData, setFormData] = useState({
@ -128,7 +129,7 @@ const InscriptionForm = ( { students, registrationDiscounts, tuitionDiscounts, r
};
const submit = () => {
console.log('Submitting form data:', formData);
logger.debug('Submitting form data:', formData);
onSubmit(formData);
}

View File

@ -14,6 +14,7 @@ import { BASE_URL } from '@/utils/Url';
import DraggableFileUpload from '@/components/DraggableFileUpload';
import Modal from '@/components/Modal';
import FileStatusLabel from '@/components/FileStatusLabel';
import logger from '@/utils/logger';
// Définition des niveaux scolaires disponibles
const levels = [
@ -69,7 +70,7 @@ export default function InscriptionFormShared({
useEffect(() => {
if (studentId) {
fetchRegisterForm(studentId).then((data) => {
console.log(data);
logger.debug(data);
setFormData({
id: data?.student?.id || '',
@ -108,7 +109,7 @@ export default function InscriptionFormShared({
// Gestion du téléversement de fichiers
const handleFileUpload = async (file, fileName) => {
if (!file || !currentTemplateId || !formData.id) {
console.error('Missing required data for upload');
logger.error('Missing required data for upload');
return;
}
@ -138,7 +139,7 @@ export default function InscriptionFormShared({
}
}
} catch (error) {
console.error('Error uploading file:', error);
logger.error('Error uploading file:', error);
}
};
@ -163,7 +164,7 @@ export default function InscriptionFormShared({
await deleteRegisterFormFile(fileToDelete.id, csrfToken);
setUploadedFiles(prev => prev.filter(f => parseInt(f.template) !== templateId));
} catch (error) {
console.error('Error deleting file:', error);
logger.error('Error deleting file:', error);
}
};

View File

@ -10,6 +10,7 @@ import LevelLabel from '@/components/CustomLabels/LevelLabel';
import { DndProvider, useDrop } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import { ESTABLISHMENT_ID } from '@/utils/Url';
import logger from '@/utils/logger';
const ItemTypes = {
TEACHER: 'teacher',
@ -179,9 +180,9 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -201,9 +202,9 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -388,13 +389,13 @@ const ClassesSection = ({ classes, setClasses, teachers, handleCreate, handleEdi
setRemovePopupOnConfirm(() => () => {
handleDelete(classe.id)
.then(data => {
console.log('Success:', data);
logger.debug('Success:', data);
setPopupMessage("La classe " + classe.atmosphere_name + " a été correctement supprimée");
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
console.error('Error archiving data:', error);
logger.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression de la classe " + classe.atmosphere_name);
setPopupVisible(true);
setRemovePopupVisible(false);

View File

@ -6,6 +6,7 @@ import InputTextWithColorIcon from '@/components/InputTextWithColorIcon';
import { DndProvider } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import SpecialityItem from '@/components/Structure/Configuration/SpecialityItem';
import logger from '@/utils/logger';
const SpecialitiesSection = ({ specialities, setSpecialities, handleCreate, handleEdit, handleDelete }) => {
@ -35,7 +36,7 @@ const SpecialitiesSection = ({ specialities, setSpecialities, handleCreate, hand
setSpecialities(prevSpecialities => prevSpecialities.filter(speciality => speciality.id !== id));
})
.catch(error => {
console.error(error);
logger.error(error);
});
};
@ -49,9 +50,9 @@ const SpecialitiesSection = ({ specialities, setSpecialities, handleCreate, hand
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -71,9 +72,9 @@ const SpecialitiesSection = ({ specialities, setSpecialities, handleCreate, hand
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -155,7 +156,7 @@ const SpecialitiesSection = ({ specialities, setSpecialities, handleCreate, hand
return speciality.updated_date_formatted;
case 'ACTIONS':
return (
<div className="flex justify-center space-x-2">
<div className="flex justify-center space-x-2">
<button
type="button"
onClick={() => setEditingSpeciality(speciality.id) || setFormData(speciality)}
@ -171,13 +172,13 @@ const SpecialitiesSection = ({ specialities, setSpecialities, handleCreate, hand
setRemovePopupOnConfirm(() => () => {
handleRemoveSpeciality(speciality.id)
.then(data => {
console.log('Success:', data);
logger.debug('Success:', data);
setPopupMessage("La spécialité " + speciality.name + " a été correctement supprimée");
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
console.error('Error archiving data:', error);
logger.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression de la spécialité " + speciality.name);
setPopupVisible(true);
setRemovePopupVisible(false);

View File

@ -10,6 +10,7 @@ import { HTML5Backend } from 'react-dnd-html5-backend';
import InputText from '@/components/InputText';
import SpecialityItem from '@/components/Structure/Configuration/SpecialityItem';
import TeacherItem from './TeacherItem';
import logger from '@/utils/logger';
const ItemTypes = {
SPECIALITY: 'speciality',
@ -118,7 +119,7 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
setTeachers(prevTeachers => prevTeachers.filter(teacher => teacher.id !== id));
})
.catch(error => {
console.error(error);
logger.error(error);
});
};
@ -133,7 +134,7 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
};
createProfile(data, csrfToken)
.then(response => {
console.log('Success:', response);
logger.debug('Success:', response);
if (response.id) {
let idProfil = response.id;
newTeacher.associated_profile = idProfil;
@ -144,9 +145,9 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -154,9 +155,9 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -175,7 +176,7 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
};
updateProfile(updatedData.associated_profile, data, csrfToken)
.then(response => {
console.log('Success:', response);
logger.debug('Success:', response);
handleEdit(id, updatedData)
.then((updatedTeacher) => {
setTeachers(prevTeachers => prevTeachers.map(teacher => teacher.id === id ? { ...teacher, ...updatedTeacher } : teacher));
@ -183,17 +184,17 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
setFormData({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -371,13 +372,13 @@ const TeachersSection = ({ teachers, setTeachers, specialities, handleCreate, ha
setRemovePopupOnConfirm(() => () => {
handleRemoveTeacher(teacher.id)
.then(data => {
console.log('Success:', data);
logger.debug('Success:', data);
setPopupMessage("L'enseignant " + teacher.last_name + " " + teacher.first_name + " a été correctement supprimé");
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
console.error('Error archiving data:', error);
logger.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression de l'enseignant " + teacher.last_name + " " + teacher.first_name);
setPopupVisible(true);
setRemovePopupVisible(false);

View File

@ -9,8 +9,7 @@ import {
fetchRegisterFormFileTemplate,
createRegistrationFormFileTemplate,
editRegistrationFormFileTemplate,
deleteRegisterFormFileTemplate,
getRegisterFormFileTemplate
deleteRegisterFormFileTemplate
} from '@/app/actions/subscriptionAction';
import {
fetchRegistrationFileGroups,
@ -19,6 +18,7 @@ import {
editRegistrationFileGroup
} from '@/app/actions/registerFileGroupAction';
import RegistrationFileGroupForm from '@/components/RegistrationFileGroupForm';
import logger from '@/utils/logger';
export default function FilesManagement({ csrfToken }) {
const [fichiers, setFichiers] = useState([]);
@ -55,7 +55,7 @@ export default function FilesManagement({ csrfToken }) {
const transformedFiles = filesData.map(file => transformFileData(file, groupsData));
setFichiers(transformedFiles);
}).catch(err => {
console.log(err.message);
logger.debug(err.message);
});
}, []);
@ -70,7 +70,7 @@ export default function FilesManagement({ csrfToken }) {
}
})
.catch(error => {
console.error('Error deleting file:', error);
logger.error('Error deleting file:', error);
alert('Erreur lors de la suppression du fichier.');
});
};
@ -113,7 +113,7 @@ export default function FilesManagement({ csrfToken }) {
setIsEditing(false);
})
.catch(error => {
console.error('Error editing file:', error);
logger.error('Error editing file:', error);
alert('Erreur lors de la modification du fichier');
});
} else {
@ -125,7 +125,7 @@ export default function FilesManagement({ csrfToken }) {
setIsModalOpen(false);
})
.catch(error => {
console.error('Error uploading file:', error);
logger.error('Error uploading file:', error);
});
}
};
@ -142,7 +142,7 @@ export default function FilesManagement({ csrfToken }) {
}
setIsGroupModalOpen(false);
} catch (error) {
console.error('Error handling group:', error);
logger.error('Error handling group:', error);
alert('Erreur lors de l\'opération sur le groupe');
}
};
@ -173,7 +173,7 @@ export default function FilesManagement({ csrfToken }) {
alert('Groupe supprimé avec succès.');
})
.catch(error => {
console.error('Error deleting group:', error);
logger.error('Error deleting group:', error);
alert(error.message || 'Erreur lors de la suppression du groupe. Vérifiez qu\'aucune inscription n\'utilise ce groupe.');
});
}

View File

@ -1,5 +1,6 @@
import React from 'react';
import { History, Clock, Users } from 'lucide-react';
import logger from '@/utils/logger';
const ClassesList = ({ classes, onClassSelect, selectedClassId }) => {
const currentYear = new Date().getFullYear();
@ -7,7 +8,7 @@ const ClassesList = ({ classes, onClassSelect, selectedClassId }) => {
const currentSchoolYearStart = currentMonth >= 8 ? currentYear : currentYear - 1;
const handleClassClick = (classe) => {
console.log(`Classe sélectionnée: ${classe.atmosphere_name}, Année scolaire: ${classe.school_year}`);
logger.debug(`Classe sélectionnée: ${classe.atmosphere_name}, Année scolaire: ${classe.school_year}`);
onClassSelect(classe);
};

View File

@ -11,6 +11,7 @@ import { useClasses } from '@/context/ClassesContext';
import { ClasseFormProvider } from '@/context/ClasseFormContext';
import TabsStructure from '@/components/Structure/Configuration/TabsStructure';
import { Bookmark, Users, BookOpen, Newspaper } from 'lucide-react';
import logger from '@/utils/logger';
const ScheduleManagement = ({ handleUpdatePlanning, classes }) => {
const currentYear = new Date().getFullYear();
@ -88,7 +89,7 @@ const ScheduleManagement = ({ handleUpdatePlanning, classes }) => {
// Utiliser `handleUpdatePlanning` pour mettre à jour le planning du niveau de la classe
const planningId = selectedClass.plannings_read.find(planning => planning.niveau === selectedLevel)?.planning.id;
if (planningId) {
console.log('newSchedule : ', newSchedule)
logger.debug('newSchedule : ', newSchedule)
handleUpdatePlanning(BE_SCHOOL_PLANNINGS_URL, planningId, newSchedule);
}
};

View File

@ -4,6 +4,7 @@ import { useClasses } from '@/context/ClassesContext';
import { useClasseForm } from '@/context/ClasseFormContext';
import { BE_SCHOOL_PLANNINGS_URL } from '@/utils/Url';
import { BookOpen, Users } from 'lucide-react';
import logger from '@/utils/logger';
const SpecialityEventModal = ({ isOpen, onClose, selectedCell, existingEvent, handleUpdatePlanning, classe }) => {
const { formData, setFormData } = useClasseForm();
@ -33,7 +34,7 @@ const SpecialityEventModal = ({ isOpen, onClose, selectedCell, existingEvent, ha
useEffect(() => {
if (isOpen) {
console.log('debug : ', selectedCell);
logger.debug('debug : ', selectedCell);
if (existingEvent) {
// Mode édition
setEventData(existingEvent);
@ -112,7 +113,7 @@ const SpecialityEventModal = ({ isOpen, onClose, selectedCell, existingEvent, ha
// Appeler handleUpdatePlanning avec les arguments appropriés
const planningId = updatedPlanning ? updatedPlanning.planning.id : null;
console.log("id : ", planningId)
logger.debug("id : ", planningId)
if (planningId) {
handleUpdatePlanning(BE_SCHOOL_PLANNINGS_URL, planningId, updatedPlanning.emploiDuTemps);
}

View File

@ -4,7 +4,7 @@ import Table from '@/components/Table';
import Popup from '@/components/Popup';
import CheckBox from '@/components/CheckBox';
import InputText from '@/components/InputText';
import logger from '@/utils/logger';
import { ESTABLISHMENT_ID } from '@/utils/Url';
const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedDiscounts, handleDiscountSelection }) => {
@ -28,7 +28,7 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
setDiscounts(prevDiscounts => prevDiscounts.filter(discount => discount.id !== id));
})
.catch(error => {
console.error(error);
logger.error(error);
});
};
@ -44,7 +44,7 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
if (error && typeof error === 'object') {
setLocalErrors(error);
} else {
console.error(error);
logger.error(error);
}
});
} else {
@ -64,7 +64,7 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
if (error && typeof error === 'object') {
setLocalErrors(error);
} else {
console.error(error);
logger.error(error);
}
});
} else {
@ -87,7 +87,7 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
setDiscounts(prevDiscounts => prevDiscounts.map(discount => discount.id === id ? { ...discount, discount_type: updatedData.discount_type } : discount));
})
.catch(error => {
console.error(error);
logger.error(error);
});
};
@ -148,7 +148,7 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
return (
<div className="flex justify-center space-x-2">
{renderInputField('amount', currentData.amount, handleChange,'Montant')}
<button
type="button"
onClick={() => handleToggleDiscountTypeEdition(discount.id)}
@ -217,13 +217,13 @@ const DiscountsSection = ({ discounts, setDiscounts, handleCreate, handleEdit, h
setRemovePopupOnConfirm(() => () => {
handleRemoveDiscount(discount.id)
.then(data => {
console.log('Success:', data);
logger.debug('Success:', data);
setPopupMessage("Réduction correctement supprimé");
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
console.error('Error archiving data:', error);
logger.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression de la réduction");
setPopupVisible(true);
setRemovePopupVisible(false);

View File

@ -4,6 +4,7 @@ import Table from '@/components/Table';
import Popup from '@/components/Popup';
import CheckBox from '@/components/CheckBox';
import InputText from '@/components/InputText';
import logger from '@/utils/logger';
import { ESTABLISHMENT_ID } from '@/utils/Url';
@ -34,7 +35,7 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setFees(prevFees => prevFees.filter(fee => fee.id !== id));
})
.catch(error => {
console.error(error);
logger.error(error);
});
};
@ -49,9 +50,9 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -72,9 +73,9 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setLocalErrors({});
})
.catch((error) => {
console.error('Error:', error.message);
logger.error('Error:', error.message);
if (error.details) {
console.error('Form errors:', error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
@ -98,7 +99,7 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setFees(prevFees => prevFees.map(fee => fee.id === id ? { ...fee, is_active: !isActive } : fee));
})
.catch(error => {
console.error(error);
logger.error(error);
});
};
@ -206,13 +207,13 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
setRemovePopupOnConfirm(() => () => {
handleRemoveFee(fee.id)
.then(data => {
console.log('Success:', data);
logger.debug('Success:', data);
setPopupMessage(labelTypeFrais + " correctement supprimé");
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
console.error('Error archiving data:', error);
logger.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression du " + labelTypeFrais);
setPopupVisible(true);
setRemovePopupVisible(false);