diff --git a/BACKEND/Modules/Admin/app/Http/Controllers/TrackingController.php b/BACKEND/Modules/Admin/app/Http/Controllers/TrackingController.php index ffe0b34..bfba961 100755 --- a/BACKEND/Modules/Admin/app/Http/Controllers/TrackingController.php +++ b/BACKEND/Modules/Admin/app/Http/Controllers/TrackingController.php @@ -263,8 +263,7 @@ class TrackingController extends Controller $startDate = $request->input('fromDate'); $endDate = $request->input('toDate'); - $trackingData = Tracking::where('user_id', $userID) - ->where('status', 'check in'); + $trackingData = Tracking::where('user_id', $userID); if ($startDate && $endDate) { $trackingData->whereBetween( @@ -290,11 +289,11 @@ class TrackingController extends Controller $lateMorning = 0; $onTimeAfternoon = 0; $lateAfternoon = 0; - $datesChecked = []; + $valueTracking = $trackingData->get(); $trackingData->get()->groupBy(function ($record) { return Carbon::parse($record->time_string)->toDateString(); - })->each(function ($records, $date) use (&$onTimeMorning, &$lateMorning, &$onTimeAfternoon, &$lateAfternoon, &$datesChecked) { + })->each(function ($records, $date) use ($trackingData, &$onTimeMorning, &$lateMorning, &$onTimeAfternoon, &$lateAfternoon, &$datesChecked) { $morningCheck = $records->filter(function ($record) { return Carbon::parse($record->time_string)->hour < 12; })->sortBy('time_string')->first(); @@ -305,6 +304,12 @@ class TrackingController extends Controller $morningTime = Carbon::parse($date)->setTime(7, 40, 0); $afternoonTime = Carbon::parse($date)->setTime(13, 10, 0); + $checkOutAfternoonTime = Carbon::parse($date)->setTime(15, 00, 0); + $checkOutAfternoon = $trackingData->where( + DB::raw("STR_TO_DATE(time_string, '%Y-%m-%d %H:%i:%s')"), + '<=', + $date . ' 23:59:59' + )->where("status", "check out")->first(); if ($morningCheck) { $checkInTime = Carbon::parse($morningCheck->time_string); @@ -323,8 +328,10 @@ class TrackingController extends Controller $lateAfternoon++; } } else { - // Default to on time if no afternoon check-in - $onTimeAfternoon++; + // check if not check-in afternoon but has check out + if ($checkOutAfternoon && $checkOutAfternoonTime->lessThanOrEqualTo(Carbon::parse($checkOutAfternoon->time_string))) { + $onTimeAfternoon++; + } } }); @@ -333,7 +340,7 @@ class TrackingController extends Controller 'late_morning' => $lateMorning, 'on_time_afternoon' => $onTimeAfternoon, 'late_afternoon' => $lateAfternoon, - 'value' => $trackingData->get() + 'value' => $valueTracking ]); } }