UNPKG

alliance-calendar

Version:

Calendrier Alliance Digital

110 lines (104 loc) 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isHoliday = isHoliday; var _moment = _interopRequireDefault(require("moment")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * Calcule la date de Pâques pour une année donnée (algorithme de Gauss) * @param {number} year - L'année * @returns {moment.Moment} - La date de Pâques */ function getEasterDate(year) { var a = year % 19; var b = Math.floor(year / 100); var c = year % 100; var d = Math.floor(b / 4); var e = b % 4; var f = Math.floor((b + 8) / 25); var g = Math.floor((b - f + 1) / 3); var h = (19 * a + b - d - g + 15) % 30; var i = Math.floor(c / 4); var k = c % 4; var l = (32 + 2 * e + 2 * i - h - k) % 7; var m = Math.floor((a + 11 * h + 22 * l) / 451); var month = Math.floor((h + l - 7 * m + 114) / 31); var day = (h + l - 7 * m + 114) % 31 + 1; return (0, _moment["default"])(new Date(year, month - 1, day)); } /** * Vérifie si une date est un jour férié en France * @param {moment.Moment} date - La date à vérifier * @returns {boolean} - true si c'est un jour férié, false sinon */ function isHoliday(date) { if (!date || !_moment["default"].isMoment(date)) { return false; } var year = date.year(); var month = date.month() + 1; // moment months are 0-indexed var day = date.date(); // Jours fériés fixes var fixedHolidays = [{ month: 1, day: 1 }, // Jour de l'An { month: 5, day: 1 }, // Fête du Travail { month: 5, day: 8 }, // Victoire en Europe { month: 7, day: 14 }, // Fête Nationale { month: 8, day: 15 }, // Assomption { month: 11, day: 1 }, // Toussaint { month: 11, day: 11 }, // Armistice { month: 12, day: 25 } // Noël ]; // Vérifier les jours fériés fixes for (var _i = 0, _fixedHolidays = fixedHolidays; _i < _fixedHolidays.length; _i++) { var holiday = _fixedHolidays[_i]; if (month === holiday.month && day === holiday.day) { return true; } } // Calculer les jours fériés variables basés sur Pâques var easter = getEasterDate(year); var easterMonday = (0, _moment["default"])(easter).add(1, 'day'); var ascension = (0, _moment["default"])(easter).add(39, 'days'); var whitMonday = (0, _moment["default"])(easter).add(50, 'days'); // Vérifier les jours fériés variables var variableHolidays = [easter, easterMonday, ascension, whitMonday]; for (var _i2 = 0, _variableHolidays = variableHolidays; _i2 < _variableHolidays.length; _i2++) { var _holiday = _variableHolidays[_i2]; if (date.format('YYYY-MM-DD') === _holiday.format('YYYY-MM-DD')) { return true; } } return false; }