add project files

This commit is contained in:
2026-06-26 14:50:55 +02:00
parent f2d0cd6a14
commit 811dc6b848
55770 changed files with 7418342 additions and 2 deletions
@@ -0,0 +1,69 @@
import { useState, useEffect } from 'react';
interface ClotureInfo {
cloture: boolean;
details: {
mois_annee: string;
date_debut: string;
date_fin: string;
campus: string | null;
commentaire: string | null;
} | null;
}
interface Cloture {
id: number;
mois_annee: string;
date_debut: string;
date_fin: string;
campus: string | null;
commentaire: string | null;
}
export const useClotureCheck = () => {
const [clotures, setClotures] = useState<Cloture[]>([]);
// Charger toutes les clôtures au démarrage
useEffect(() => {
fetch('/api/clotures')
.then(res => res.json())
.then(data => {
if (data.success) {
setClotures(data.clotures);
}
})
.catch(err => console.error('Erreur chargement clôtures:', err));
}, []);
const isDateCloturee = (dateString: string, campus?: string): boolean => {
const date = new Date(dateString);
return clotures.some(cloture => {
const dateDebut = new Date(cloture.date_debut);
const dateFin = new Date(cloture.date_fin);
// Vérifier si la date est dans la période
const dateInPeriod = date >= dateDebut && date <= dateFin;
// Vérifier le campus si spécifié
const campusMatch = !cloture.campus || !campus || cloture.campus === campus;
return dateInPeriod && campusMatch;
});
};
const getClotureDetails = (dateString: string, campus?: string): Cloture | null => {
const date = new Date(dateString);
return clotures.find(cloture => {
const dateDebut = new Date(cloture.date_debut);
const dateFin = new Date(cloture.date_fin);
const dateInPeriod = date >= dateDebut && date <= dateFin;
const campusMatch = !cloture.campus || !campus || cloture.campus === campus;
return dateInPeriod && campusMatch;
}) || null;
};
return { isDateCloturee, getClotureDetails, clotures };
};