fixing the days of the week

This commit is contained in:
2026-09-18 21:32:34 -04:00
parent 72590283d0
commit 58d3499070
+29 -2
View File
@@ -29,6 +29,31 @@ function isSameLocalDate(firstDate: Date, secondDate: Date): boolean {
); );
} }
function getWeekStart(date: Date): Date {
const weekStart = new Date(date);
weekStart.setHours(0, 0, 0, 0);
weekStart.setDate(weekStart.getDate() - weekStart.getDay());
return weekStart;
}
function addDays(date: Date, days: number): Date {
const nextDate = new Date(date);
nextDate.setDate(nextDate.getDate() + days);
return nextDate;
}
function isScheduleInWeek(schedule: Schedule, weekStart: Date, weekEndExclusive: Date): boolean {
if (!schedule.enter_time) {
return false;
}
const enterDate = new Date(schedule.enter_time);
return (
!Number.isNaN(enterDate.getTime()) && enterDate >= weekStart && enterDate < weekEndExclusive
);
}
function getTodaySchedules(schedules: Schedule[], today: Date): Schedule[] { function getTodaySchedules(schedules: Schedule[], today: Date): Schedule[] {
return schedules.filter((schedule) => { return schedules.filter((schedule) => {
if (!schedule.enter_time) { if (!schedule.enter_time) {
@@ -132,6 +157,8 @@ export function UsersPage({ backendPreference }: UsersPageProps) {
const selectedUser = users.find((user) => user.id === selectedUserId) ?? null; const selectedUser = users.find((user) => user.id === selectedUserId) ?? null;
const today = new Date(); const today = new Date();
const currentWeekStart = getWeekStart(today);
const currentWeekEndExclusive = addDays(currentWeekStart, 7);
const schedulesByUser = useMemo(() => { const schedulesByUser = useMemo(() => {
return schedules.reduce<Record<string, Schedule[]>>((accumulator, schedule) => { return schedules.reduce<Record<string, Schedule[]>>((accumulator, schedule) => {
@@ -406,8 +433,8 @@ export function UsersPage({ backendPreference }: UsersPageProps) {
const company = companies.find((item) => item.id === user.company_id); const company = companies.find((item) => item.id === user.company_id);
const daysWorked = new Set( const daysWorked = new Set(
userSchedules userSchedules
.filter((schedule) => schedule.enter_time) .filter((schedule) => isScheduleInWeek(schedule, currentWeekStart, currentWeekEndExclusive))
.map((schedule) => schedule.day_of_week), .map((schedule) => new Date(schedule.enter_time as string).getDay()),
).size; ).size;
return ( return (