refactor attendance calculations to handle multiple entry/exit times and improve time tracking accuracy
This commit is contained in:
@@ -54,15 +54,25 @@ export const useAttendanceStore = defineStore('attendanceStore', () => {
|
||||
|
||||
for (let d = 1; d <= daysInMonth.value; d++) {
|
||||
const dateStr = `${year.value}-${month.value.toString().padStart(2, '0')}-${d.toString().padStart(2, '0')}`
|
||||
const dayData = response.days.find((day) => day.check_in.startsWith(dateStr)) || {}
|
||||
const dayEntries = response.days.filter((day) => day.check_in && day.check_in.startsWith(dateStr))
|
||||
|
||||
// Sort entries by check-in time to ensure correct order
|
||||
dayEntries.sort((a, b) => new Date(a.check_in) - new Date(b.check_in))
|
||||
|
||||
const entryTimes = dayEntries.map((entry) => utils.extractTimeFromDateString(entry.check_in))
|
||||
const exitTimes = dayEntries.map((entry) => utils.extractTimeFromDateString(entry.check_out))
|
||||
const attendance_reason_ids = dayEntries.flatMap(
|
||||
(entry) => entry.attendance_reason_ids || [],
|
||||
)
|
||||
|
||||
const isPublicHoliday = response.public_holidays.some((h) => h.date === dateStr)
|
||||
const alert = dayData.attendance_reason_ids?.length > 0
|
||||
const alert = attendance_reason_ids.length > 0
|
||||
|
||||
const day = {
|
||||
dayOfMonth: d,
|
||||
dayOfWeek: utils.getDayOfWeek(dateStr),
|
||||
entryTime: utils.extractTimeFromDateString(dayData.check_in),
|
||||
exitTime: utils.extractTimeFromDateString(dayData.check_out),
|
||||
entryTime: entryTimes,
|
||||
exitTime: exitTimes,
|
||||
isSickLeave: false,
|
||||
isHolidayLeave: false,
|
||||
isPublicHoliday: isPublicHoliday,
|
||||
|
||||
Reference in New Issue
Block a user