diff --git a/app/Http/Controllers/AttendanceRecordController.php b/app/Http/Controllers/AttendanceRecordController.php index c93cafaf0..cf872d1e8 100644 --- a/app/Http/Controllers/AttendanceRecordController.php +++ b/app/Http/Controllers/AttendanceRecordController.php @@ -893,19 +893,34 @@ class AttendanceRecordController extends Controller ->get() ->groupBy('employee_id'); - $users = $usersRaw->map(function($user) use ($dates, $dailyRecords, $approvedLeaves) { + // Fetch working days indices from settings [0=Sun, 1=Mon, ..., 6=Sat] + $globalSettings = settings(); + $workingDaysIndices = json_decode($globalSettings['working_days'] ?? '[1,2,3,4,5]', true); + + $users = $usersRaw->map(function($user) use ($dates, $dailyRecords, $approvedLeaves, $workingDaysIndices) { $grid = []; $userRecords = $dailyRecords->has($user->id) ? $dailyRecords[$user->id]->keyBy('date') : collect(); foreach ($dates as $d) { $dateKey = $d['date']; - // Default matrix values based on time mechanics - $isPast = \Carbon\Carbon::parse($dateKey)->isBefore(\Carbon\Carbon::today()); + // Default matrix values based on time mechanics and global settings + $dateObj = \Carbon\Carbon::parse($dateKey); + $isPast = $dateObj->isBefore(\Carbon\Carbon::today()); + $dateIndex = $dateObj->dayOfWeek; $isWeekend = ($d['day_name'] === 'Sat' || $d['day_name'] === 'Sun'); + $isRestDay = !in_array($dateIndex, $workingDaysIndices); - $status = $isPast ? '--' : ($isWeekend ? 'W' : '--'); - $label = 'Not Marked'; + if ($isRestDay) { + $status = 'RD'; + $label = 'Rest Day'; + } else if ($isWeekend) { + $status = 'W'; + $label = 'Weekend'; + } else { + $status = '--'; + $label = 'Not Marked'; + } $recordDetail = null; if ($userRecords->has($dateKey)) { diff --git a/storage/logs/laravel.log b/storage/logs/laravel.log index 15446d8f5..4513a3a0e 100755 --- a/storage/logs/laravel.log +++ b/storage/logs/laravel.log @@ -3537,3 +3537,21 @@ Error: proc_open(/dev/tty): Failed to open stream: Device not configured at /Use #88 /Applications/Herd.app/Contents/Resources/valet/server.php(167): require('/Users/dvapp/Do...') #89 {main} "} +[2026-04-28 10:23:41] local.INFO: Calendar Debug Dinh Chavez 2026-04-04: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:41] local.INFO: Calendar Debug Dinh Chavez 2026-04-05: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:41] local.INFO: Calendar Debug Dinh Chavez 2026-04-06: {"workedHours":6.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"23:10","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:42] local.INFO: Calendar Debug Dinh Chavez 2026-04-04: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:42] local.INFO: Calendar Debug Dinh Chavez 2026-04-05: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:42] local.INFO: Calendar Debug Dinh Chavez 2026-04-06: {"workedHours":6.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"23:10","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:43] local.INFO: Calendar Debug Dinh Chavez 2026-04-04: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:43] local.INFO: Calendar Debug Dinh Chavez 2026-04-05: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:43] local.INFO: Calendar Debug Dinh Chavez 2026-04-06: {"workedHours":6.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"23:10","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:55] local.INFO: Calendar Debug Dinh Chavez 2026-04-04: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:55] local.INFO: Calendar Debug Dinh Chavez 2026-04-05: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:55] local.INFO: Calendar Debug Dinh Chavez 2026-04-06: {"workedHours":6.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"23:10","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:58] local.INFO: Calendar Debug Dinh Chavez 2026-04-04: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:58] local.INFO: Calendar Debug Dinh Chavez 2026-04-05: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:58] local.INFO: Calendar Debug Dinh Chavez 2026-04-06: {"workedHours":6.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"23:10","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:59] local.INFO: Calendar Debug Dinh Chavez 2026-04-04: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:59] local.INFO: Calendar Debug Dinh Chavez 2026-04-05: {"workedHours":5.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"00:00","isLateDynamic":false,"db_status":"present"} +[2026-04-28 10:23:59] local.INFO: Calendar Debug Dinh Chavez 2026-04-06: {"workedHours":6.016666666666667,"workingHours":9.0,"shiftStart":"00:00","clockIn":"23:10","isLateDynamic":false,"db_status":"present"}