/** * Utilitaires pour la gestion des jours de travail * Logique : Lundi-Vendredi sont les jours de travail */ /** * Calcule le jour de travail précédent selon la logique métier : * - Lundi → Vendredi (au lieu de Dimanche) * - Mardi-Vendredi → jour précédent * - Samedi → Vendredi * - Dimanche → Vendredi */ export function getPreviousWorkday(date: Date): Date { const result = new Date(date); result.setHours(0, 0, 0, 0); const dayOfWeek = result.getDay(); // 0 = Dimanche, 1 = Lundi, ..., 6 = Samedi switch (dayOfWeek) { case 1: // Lundi → Vendredi précédent result.setDate(result.getDate() - 3); break; case 0: // Dimanche → Vendredi précédent result.setDate(result.getDate() - 2); break; case 6: // Samedi → Vendredi précédent result.setDate(result.getDate() - 1); break; default: // Mardi-Vendredi → jour précédent result.setDate(result.getDate() - 1); break; } return result; } /** * Calcule le jour de travail suivant selon la logique métier : * - Vendredi → Lundi suivant * - Samedi → Lundi suivant * - Dimanche → Lundi suivant * - Lundi-Jeudi → jour suivant */ export function getNextWorkday(date: Date): Date { const result = new Date(date); result.setHours(0, 0, 0, 0); const dayOfWeek = result.getDay(); // 0 = Dimanche, 1 = Lundi, ..., 6 = Samedi switch (dayOfWeek) { case 5: // Vendredi → Lundi suivant result.setDate(result.getDate() + 3); break; case 6: // Samedi → Lundi suivant result.setDate(result.getDate() + 2); break; case 0: // Dimanche → Lundi suivant result.setDate(result.getDate() + 1); break; default: // Lundi-Jeudi → jour suivant result.setDate(result.getDate() + 1); break; } return result; } /** * Vérifie si une date est un jour de travail (Lundi-Vendredi) */ export function isWorkday(date: Date): boolean { const dayOfWeek = date.getDay(); return dayOfWeek >= 1 && dayOfWeek <= 5; // Lundi (1) à Vendredi (5) } /** * Retourne le nom du jour en français */ export function getDayName(date: Date): string { const days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']; return days[date.getDay()]; }