fix enrollment for the new school-year
Tests / PHPUnit (push) Successful in 1m26s

This commit is contained in:
root
2026-08-07 23:43:31 -04:00
parent b6f3b14e7b
commit 1ef2800f12
66 changed files with 8997 additions and 498 deletions
+21 -5
View File
@@ -8,12 +8,28 @@ document.addEventListener('DOMContentLoaded', () => {
const gradeRE = /^[A-Za-z0-9\s-]{1,20}$/;
const MIN_AGE = 5, MAX_AGE = 18;
const parseDateOnly = (value) => {
const match = String(value || '').match(/^(\d{4})-(\d{2})-(\d{2})$/);
if (!match) return new Date(NaN);
return new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3])));
};
const ageReferenceDate = () => {
const configured = window.appConfig?.schoolYearAgeDeadline;
const configuredDate = parseDateOnly(configured);
if (!isNaN(configuredDate.getTime())) return configuredDate;
const now = new Date();
const year = now.getMonth() >= 8 ? now.getFullYear() : now.getFullYear() - 1;
return new Date(Date.UTC(year, 8, 1));
};
const calcAge = (d) => {
const dob = new Date(d);
const today = new Date();
let a = today.getFullYear() - dob.getFullYear();
const m = today.getMonth() - dob.getMonth();
if (m < 0 || (m === 0 && today.getDate() < dob.getDate())) a--;
const dob = parseDateOnly(d);
const reference = ageReferenceDate();
let a = reference.getUTCFullYear() - dob.getUTCFullYear();
const m = reference.getUTCMonth() - dob.getUTCMonth();
if (m < 0 || (m === 0 && reference.getUTCDate() < dob.getUTCDate())) a--;
return a;
};