Files
gongxue-base/apps/server/src/attendance/attendance-time.ts

42 lines
1.3 KiB
TypeScript

import dayjs from '../common/dayjs';
export function toMinutes(time: string): number {
const [hour, minute] = time.split(':').map(Number);
return hour * 60 + minute;
}
export function getCourseClock(date: Date): { date: string; minutes: number } {
const d = dayjs(date);
return {
date: d.format('YYYY-MM-DD'),
minutes: d.hour() * 60 + d.minute(),
};
}
export function shiftDate(date: string, days: number): string {
return dayjs.utc(`${date}T00:00:00.000Z`).add(days, 'day').format('YYYY-MM-DD');
}
export function mapLessonScheduleTimeToSession(startTime: string): string {
const hour = parseInt(startTime.slice(0, 2), 10);
if (hour < 8) return 'morning_reading';
if (hour < 12) return 'morning';
if (hour < 17) return 'afternoon';
if (hour < 20) return 'evening_study';
return 'night_check';
}
export function isClassStudentActiveOnDate(
classStudent: Pick<
import('../entities/class-student.entity').ClassStudent,
'joinDate' | 'leaveDate' | 'status'
>,
lessonDate: string,
): boolean {
const status = classStudent.status ?? 'active';
if (!['active', 'left'].includes(status)) return false;
if (classStudent.joinDate && classStudent.joinDate > lessonDate) return false;
if (classStudent.leaveDate && classStudent.leaveDate < lessonDate) return false;
return true;
}