fix: defer attendance settlement until lesson end
This commit is contained in:
@@ -61,7 +61,11 @@ export class AttendanceSettlementService {
|
||||
}
|
||||
}
|
||||
for (const session of sessions) {
|
||||
if (session.status === 'in_progress' && session.schedule) {
|
||||
if (
|
||||
session.status === 'in_progress' &&
|
||||
session.schedule &&
|
||||
this.hasOccurrenceEnded(session.schedule, session.lessonDate, clock)
|
||||
) {
|
||||
candidates.set(`${session.scheduleId}|${session.lessonDate}`, {
|
||||
schedule: session.schedule,
|
||||
lessonDate: session.lessonDate,
|
||||
@@ -163,6 +167,18 @@ export class AttendanceSettlementService {
|
||||
return null;
|
||||
}
|
||||
|
||||
private hasOccurrenceEnded(
|
||||
schedule: ClassSchedule,
|
||||
lessonDate: string,
|
||||
clock: { date: string; minutes: number },
|
||||
): boolean {
|
||||
const occurrenceEndDate = this.isOvernight(schedule)
|
||||
? this.shiftDate(lessonDate, 1)
|
||||
: lessonDate;
|
||||
if (clock.date !== occurrenceEndDate) return clock.date > occurrenceEndDate;
|
||||
return clock.minutes >= this.toMinutes(schedule.endTime);
|
||||
}
|
||||
|
||||
private isOvernight(schedule: ClassSchedule): boolean {
|
||||
return this.toMinutes(schedule.endTime) <= this.toMinutes(schedule.startTime);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user