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; }