Files
HRM-System/app/Http/Controllers/BiometricAttendanceController.php

3259 lines
128 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\AttendanceRecord;
use App\Models\Employee;
use App\Models\Shift;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Inertia\Inertia;
use Carbon\Carbon;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
class BiometricAttendanceController extends Controller
{
/**
* Helper to get the correct work (shift) date for a biometric punch.
* Takes night shifts and a 4-hour window buffer into account.
*/
public static function getWorkDateForPunch($punchTime, $employee)
{
$punchTime = Carbon::parse($punchTime);
$shift = null;
if ($employee) {
$shift = $employee->relationLoaded('shift') ? $employee->shift : Shift::find($employee->shift_id);
}
if (!$shift) {
// Fallback to calendar day if no shift is assigned
return $punchTime->format('Y-m-d');
}
$graceHours = 4; // Buffer window hours
$candidateDates = [
$punchTime->copy()->subDay()->format('Y-m-d'),
$punchTime->format('Y-m-d'),
$punchTime->copy()->addDay()->format('Y-m-d'),
];
$bestDate = null;
$minDiffMinutes = null;
foreach ($candidateDates as $dateStr) {
$expectedStart = Carbon::parse($dateStr . ' ' . $shift->start_time);
$expectedEnd = Carbon::parse($dateStr . ' ' . $shift->end_time);
if ($shift->is_night_shift && $expectedEnd->lt($expectedStart)) {
$expectedEnd->addDay();
}
$windowStart = $expectedStart->copy()->subHours($graceHours);
$windowEnd = $expectedEnd->copy()->addHours($graceHours);
if ($punchTime->between($windowStart, $windowEnd)) {
// Calculate distance to closest expected time boundary
$diffStart = abs($punchTime->diffInMinutes($expectedStart));
$diffEnd = abs($punchTime->diffInMinutes($expectedEnd));
$currentDiff = min($diffStart, $diffEnd);
if (is_null($bestDate) || $currentDiff < $minDiffMinutes) {
$bestDate = $dateStr;
$minDiffMinutes = $currentDiff;
}
}
}
return $bestDate ?? $punchTime->format('Y-m-d');
}
/**
* Filter out duplicate punches that occur within 60 seconds of the previous valid punch.
*/
public static function filterDoublePunches($dayEntries)
{
$sorted = $dayEntries->sortBy('punch_time');
$filtered = collect();
foreach ($sorted as $entry) {
if ($filtered->isEmpty()) {
$filtered->push($entry);
} else {
$lastValid = $filtered->last();
$diffInSeconds = abs(Carbon::parse($entry->punch_time)->diffInSeconds(Carbon::parse($lastValid->punch_time)));
if ($diffInSeconds > 60) {
$filtered->push($entry);
}
}
}
return $filtered;
}
/**
* Determines whether a single punch is a Clock In or Clock Out based on proximity to shift boundaries.
*/
public static function routeSinglePunch($punchTime, $employee, $workDate)
{
$punchTime = Carbon::parse($punchTime);
$shift = null;
if ($employee) {
$shift = $employee->relationLoaded('shift') ? $employee->shift : Shift::find($employee->shift_id);
}
if (!$shift) {
return [
'clock_in' => $punchTime->format('H:i:s'),
'clock_out' => null,
];
}
$expectedStart = Carbon::parse($workDate . ' ' . $shift->start_time);
$expectedEnd = Carbon::parse($workDate . ' ' . $shift->end_time);
// Handle night shifts
$isNight = false;
if (property_exists($shift, 'is_night_shift') && $shift->is_night_shift) {
$isNight = true;
} elseif ($expectedEnd->lt($expectedStart)) {
$isNight = true;
}
if ($isNight && $expectedEnd->lt($expectedStart)) {
$expectedEnd->addDay();
}
$diffStart = abs($punchTime->diffInMinutes($expectedStart));
$diffEnd = abs($punchTime->diffInMinutes($expectedEnd));
if ($diffEnd < $diffStart) {
return [
'clock_in' => null,
'clock_out' => $punchTime->format('H:i:s'),
];
}
return [
'clock_in' => $punchTime->format('H:i:s'),
'clock_out' => null,
];
}
public function index(Request $request)
{
if (!Auth::user()->can('manage-biometric-attendance') && !Auth::user()->can('view-biometric-attendance')) {
return redirect()->back()->with('error', __('Permission Denied.'));
}
$query = \App\Models\BiometricAttendance::with(['branch']);
// Filter by user type if employee
if (Auth::user()->type === 'employee') {
$biometricEmpId = Auth::user()->employee?->biometric_emp_id;
if (empty($biometricEmpId)) {
$query->whereRaw('1 = 0');
} else {
$query->where('biometric_emp_id', $biometricEmpId);
}
}
// Filter by dates
if ($request->has('start_date') && !empty($request->start_date)) {
$query->whereDate('punch_time', '>=', $request->start_date);
}
if ($request->has('end_date') && !empty($request->end_date)) {
// Extend query date check by 1 day to fetch cross-midnight clock outs
$endDateExtended = Carbon::parse($request->end_date)->addDay()->format('Y-m-d');
$query->whereDate('punch_time', '<=', $endDateExtended);
}
$records = $query->get();
// Eager-load employees with shifts to prevent N+1 queries
$empIds = $records->pluck('biometric_emp_id')->unique();
$employees = \App\Models\Employee::with(['user', 'shift', 'branch'])
->whereIn('biometric_emp_id', $empIds)
->get()
->keyBy('biometric_emp_id');
$groupedAttendances = collect($records)
->groupBy(function ($item) use ($employees) {
$employee = $employees->get($item->biometric_emp_id);
$workDate = self::getWorkDateForPunch($item->punch_time, $employee);
return $item->biometric_emp_id . '_' . $workDate;
})
->map(function ($dayEntries) use ($employees) {
$sorted = self::filterDoublePunches($dayEntries);
if ($sorted->isEmpty()) {
return null;
}
$firstEntry = $sorted->first();
$lastEntry = $sorted->last();
$employee = $employees->get($firstEntry->biometric_emp_id);
$workDate = self::getWorkDateForPunch($firstEntry->punch_time, $employee);
if ($sorted->count() === 1) {
$routed = self::routeSinglePunch($firstEntry->punch_time, $employee, $workDate);
$clockIn = $routed['clock_in'];
$clockOut = $routed['clock_out'];
} else {
$clockIn = $firstEntry->punch_time->format('H:i:s');
$clockOut = $lastEntry->punch_time->format('H:i:s');
}
return [
'id' => $firstEntry->id,
'employee_code' => $firstEntry->biometric_emp_id,
'date' => $workDate,
'clock_in' => $clockIn,
'clock_out' => $clockOut,
'terminal' => ($employee && $employee->branch) ? $employee->branch->name : ($firstEntry->branch ? $firstEntry->branch->name : ($firstEntry->terminal_alias ? trim(str_replace('(Agent)', '', $firstEntry->terminal_alias)) : 'Agent')),
'sync_status' => $firstEntry->sync_status,
];
})
->filter()
->filter(function ($item) use ($request) {
// Filter the final groups to make sure work date is strictly in the requested filter window
if ($request->has('start_date') && !empty($request->start_date)) {
if ($item['date'] < $request->start_date) return false;
}
if ($request->has('end_date') && !empty($request->end_date)) {
if ($item['date'] > $request->end_date) return false;
}
return true;
})
->values();
// Attach employee names
$groupedAttendances = $groupedAttendances->map(function($item) use ($employees) {
$emp = $employees->get($item['employee_code']);
$item['name'] = $emp && $emp->user ? $emp->user->name : 'Unknown';
return $item;
});
// Search filter
if ($request->has('search') && !empty($request->search)) {
$search = strtolower($request->search);
$groupedAttendances = $groupedAttendances->filter(function ($item) use ($search) {
return str_contains(strtolower($item['name']), $search) ||
str_contains(strtolower($item['employee_code']), $search);
});
}
// Sorting
if ($request->has('sort_field') && !empty($request->sort_field)) {
$direction = $request->sort_direction ?? 'asc';
$groupedAttendances = $groupedAttendances->sortBy($request->sort_field, SORT_REGULAR, $direction === 'desc');
} else {
$groupedAttendances = $groupedAttendances->sortByDesc('date');
}
// Pagination
$perPage = $request->per_page ?? 10;
$currentPage = $request->page ?? 1;
$total = $groupedAttendances->count();
$items = $groupedAttendances->forPage($currentPage, $perPage)->values();
$biometricData = new LengthAwarePaginator(
$items,
$total,
$perPage,
$currentPage,
[
'path' => $request->url(),
'pageName' => 'page',
]
);
return Inertia::render('hr/biometric-attendance/index', [
'biometricData' => $biometricData,
'filters' => $request->all(['search', 'start_date', 'end_date', 'sort_field', 'sort_direction', 'per_page']),
'configurationMissing' => false,
]);
}
public function show(Request $request, $employeeCode, $date)
{
try {
if (!Auth::user()->can('view-biometric-attendance')) {
return response()->json([
'success' => false,
'message' => 'Permission denied'
], 403);
}
// If user is an employee, verify they are viewing their own record
if (Auth::user()->type === 'employee') {
$biometricEmpId = Auth::user()->employee?->biometric_emp_id;
if (empty($biometricEmpId) || $biometricEmpId !== $employeeCode) {
return response()->json([
'success' => false,
'message' => 'Permission denied'
], 403);
}
}
$employee = Employee::with('shift')->where('biometric_emp_id', $employeeCode)->first();
// Fetch records +/- 1 day around the requested work date to catch cross-midnight punches
$startDate = Carbon::parse($date)->subDay()->startOfDay();
$endDate = Carbon::parse($date)->addDay()->endOfDay();
$attendances = \App\Models\BiometricAttendance::where('biometric_emp_id', $employeeCode)
->whereBetween('punch_time', [$startDate, $endDate])
->orderBy('punch_time', 'asc')
->get();
// Filter in PHP to only include punches mapping to the target work date
$filteredAttendances = $attendances->filter(function ($item) use ($employee, $date) {
return self::getWorkDateForPunch($item->punch_time, $employee) === $date;
});
$dayEntries = $filteredAttendances->map(function ($item) {
return [
'id' => $item->id,
'punch_time' => $item->punch_time->format('Y-m-d H:i:s'),
'time' => $item->punch_time->format('H:i:s'),
'punch_state_display' => [
0 => 'Clock In',
1 => 'Clock Out',
2 => 'Break Out',
3 => 'Break In',
4 => 'Overtime In',
5 => 'Overtime Out',
][$item->punch_type] ?? 'Punch (' . $item->punch_type . ')',
'verify_type_display' => 'Unknown',
'terminal_alias' => $item->branch ? $item->branch->name : ($item->terminal_alias ? trim(str_replace('(Agent)', '', $item->terminal_alias)) : 'Unknown')
];
})->values();
if ($dayEntries->isEmpty()) {
return response()->json([
'success' => false,
'message' => 'No entries found for this employee and date'
], 404);
}
$attendanceRecord = null;
if ($employee) {
$attendanceRecord = AttendanceRecord::where('employee_id', $employee->user_id)
->where('date', $date)
->whereIn('created_by', getCompanyAndUsersId())
->first();
}
return response()->json([
'success' => true,
'data' => [
'entries' => $dayEntries,
'employee_code' => $employeeCode,
'date' => $date,
'attendance_record' => $attendanceRecord ? [
'clock_in' => $attendanceRecord->clock_in,
'clock_out' => $attendanceRecord->clock_out,
] : null
]
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Failed to fetch attendance details'
], 500);
}
}
public function syncAll(Request $request)
{
if (!Auth::user()->can('sync-biometric-attendance')) {
return redirect()->back()->with('error', __('Permission Denied.'));
}
$overwrite = $request->boolean('overwrite', false);
$query = \App\Models\BiometricAttendance::query();
if (!$overwrite) {
$query->where('sync_status', 'pending');
}
if ($request->has('start_date') && !empty($request->start_date)) {
$query->whereDate('punch_time', '>=', $request->start_date);
}
if ($request->has('end_date') && !empty($request->end_date)) {
// Extend query date check by 1 day to fetch cross-midnight clock outs
$endDateExtended = Carbon::parse($request->end_date)->addDay()->format('Y-m-d');
$query->whereDate('punch_time', '<=', $endDateExtended);
}
$pendingRecords = $query->get();
// Eager-load employees with shifts
$empIds = $pendingRecords->pluck('biometric_emp_id')->unique();
$employees = Employee::with(['user', 'shift'])
->whereIn('created_by', getCompanyAndUsersId())
->whereIn('biometric_emp_id', $empIds)
->get()
->keyBy('biometric_emp_id');
$groupedAttendances = $pendingRecords->groupBy(function ($item) use ($employees) {
$employee = $employees->get($item->biometric_emp_id);
$workDate = self::getWorkDateForPunch($item->punch_time, $employee);
return $item->biometric_emp_id . '_' . $workDate;
});
// Filter out groups where the calculated work date is outside range
$groupedAttendances = $groupedAttendances->filter(function ($dayEntries) use ($request, $employees) {
$first = $dayEntries->first();
$employee = $employees->get($first->biometric_emp_id);
$workDate = self::getWorkDateForPunch($first->punch_time, $employee);
if ($request->has('start_date') && !empty($request->start_date)) {
if ($workDate < $request->start_date) return false;
}
if ($request->has('end_date') && !empty($request->end_date)) {
if ($workDate > $request->end_date) return false;
}
return true;
});
$syncedCount = 0;
$updatedCount = 0;
foreach ($groupedAttendances as $key => $dayEntries) {
$sorted = self::filterDoublePunches($dayEntries);
if ($sorted->isEmpty()) {
continue;
}
$firstEntry = $sorted->first();
$lastEntry = $sorted->last();
$employee = $employees->get($firstEntry->biometric_emp_id);
if ($employee && $sorted->count() >= 1) {
$attedanceDate = self::getWorkDateForPunch($firstEntry->punch_time, $employee);
if ($sorted->count() === 1) {
$routed = self::routeSinglePunch($firstEntry->punch_time, $employee, $attedanceDate);
$clockInTime = $routed['clock_in'];
$clockOutTime = $routed['clock_out'];
} else {
$clockInTime = $firstEntry->punch_time->format('H:i:s');
$clockOutTime = $lastEntry->punch_time->format('H:i:s');
}
$attendance = AttendanceRecord::where('employee_id', $employee->user_id)
->where('date', $attedanceDate)
->whereIn('created_by', getCompanyAndUsersId())
->first();
if ($attendance) {
if ($overwrite) {
// Overwrite existing record - keep existing shift/policy if set
if (empty($attendance->shift_id)) {
$shift = Shift::where('id', $employee->shift_id)->where('status', 'active')->first() ?? Shift::whereIn('created_by', getCompanyAndUsersId())->where('status', 'active')->first();
$attendance->shift_id = $shift?->id;
}
$attendance->biometric_id = $firstEntry->id;
$attendance->branch_id = $employee->branch_id ?? $firstEntry->branch_id;
$attendance->clock_in = $clockInTime;
$attendance->clock_out = $clockOutTime;
$attendance->clock_in_source = 'zkteco';
$attendance->clock_out_source = 'zkteco';
$attendance->save();
$attendance->fresh();
$attendance->processAttendance();
$updatedCount++;
}
// Mark as synced so they don't pile up in pending
foreach ($dayEntries as $entry) {
$entry->update(['sync_status' => 'synced']);
}
} else {
$shift = Shift::where('id', $employee->shift_id)->where('status', 'active')->first() ?? Shift::whereIn('created_by', getCompanyAndUsersId())->where('status', 'active')->first();
$attendance = new AttendanceRecord();
$attendance->employee_id = $employee->user_id;
$attendance->branch_id = $employee->branch_id ?? $firstEntry->branch_id;
$attendance->biometric_id = $firstEntry->id;
$attendance->shift_id = $shift?->id;
$attendance->date = $attedanceDate;
$attendance->clock_in = $clockInTime;
$attendance->clock_out = $clockOutTime;
$attendance->clock_in_source = 'zkteco';
$attendance->clock_out_source = 'zkteco';
$attendance->created_by = creatorId();
$attendance->save();
$attendance->fresh();
$attendance->processAttendance();
// Mark as synced
foreach ($dayEntries as $entry) {
$entry->update(['sync_status' => 'synced']);
}
$syncedCount++;
}
}
}
$message = __("Bulk sync completed. Synced :synced new records.", ['synced' => $syncedCount]);
if ($updatedCount > 0) {
$message .= " " . __("Overwrote :updated existing records.", ['updated' => $updatedCount]);
}
return redirect()->back()->with('success', $message);
}
public function sync(Request $request, $id)
{
if (!Auth::user()->can('sync-biometric-attendance')) {
return redirect()->back()->with('error', __('Permission Denied.'));
}
$biometricEmpId = $request->biometric_emp_id;
$biometricId = $request->biometric_id;
$attedanceDate = $request->date;
$clockInTime = $request->clock_in;
$clockOutTime = $request->clock_out;
$employee = Employee::with(['user', 'shift', 'branch'])->whereIn('created_by', getCompanyAndUsersId())->where('biometric_emp_id', $biometricEmpId)->first();
if ($employee) {
// Check if record already exists
$exists = AttendanceRecord::where('employee_id', $employee->user_id)
->where('date', $attedanceDate)
->whereIn('created_by', getCompanyAndUsersId())
->exists();
// Find all biometric entries mapping to this work date so we can mark them all synced
$startDate = Carbon::parse($attedanceDate)->subDay()->startOfDay();
$endDate = Carbon::parse($attedanceDate)->addDay()->endOfDay();
$biometricEntries = \App\Models\BiometricAttendance::where('biometric_emp_id', $biometricEmpId)
->whereBetween('punch_time', [$startDate, $endDate])
->get()
->filter(function ($entry) use ($employee, $attedanceDate) {
return self::getWorkDateForPunch($entry->punch_time, $employee) === $attedanceDate;
});
if ($exists) {
// Just mark it as synced so it doesn't show up again
foreach ($biometricEntries as $entry) {
$entry->update(['sync_status' => 'synced']);
}
return redirect()->back()->with('error', __('Attendance record already exists for this employee and date.'));
} else {
$shift = Shift::where('id', $employee->shift_id)
->where('status', 'active')
->first() ?? Shift::whereIn('created_by', getCompanyAndUsersId())->where('status', 'active')->first();
$biometricRecord = \App\Models\BiometricAttendance::find($biometricId);
$attendance = new AttendanceRecord();
$attendance->employee_id = $employee->user_id;
$attendance->branch_id = $employee->branch_id ?? ($biometricRecord ? $biometricRecord->branch_id : null);
$attendance->biometric_id = $biometricId;
$attendance->shift_id = $shift?->id;
$attendance->date = $attedanceDate;
$attendance->clock_in = $clockInTime;
$attendance->clock_out = $clockOutTime;
$attendance->clock_in_source = 'zkteco';
$attendance->clock_out_source = 'zkteco';
$attendance->created_by = creatorId();
$attendance->save();
$attendance->fresh(); // Reload to get relationships
$attendance->processAttendance();
// Mark matching biometric entries as synced
foreach ($biometricEntries as $entry) {
$entry->update(['sync_status' => 'synced']);
}
return redirect()->back()->with('success', __('Biometric data synced successfully.'));
}
} else {
return redirect()->back()->with('error', __('Employee not found'));
}
}
public function syncCustom(Request $request)
{
if (!Auth::user()->can('sync-biometric-attendance')) {
return redirect()->back()->with('error', __('Permission Denied.'));
}
$biometricEmpId = $request->biometric_emp_id;
$attedanceDate = $request->date;
$clockInId = $request->clock_in_id;
$clockOutId = $request->clock_out_id;
if (!$clockInId || !$clockOutId) {
return redirect()->back()->with('error', __('Please select both Clock In and Clock Out punches.'));
}
$clockInRecord = \App\Models\BiometricAttendance::find($clockInId);
$clockOutRecord = \App\Models\BiometricAttendance::find($clockOutId);
if (!$clockInRecord || !$clockOutRecord) {
return redirect()->back()->with('error', __('Selected biometric records not found.'));
}
// Validate employee code matches
if ($clockInRecord->biometric_emp_id !== $biometricEmpId || $clockOutRecord->biometric_emp_id !== $biometricEmpId) {
return redirect()->back()->with('error', __('Selected biometric records do not match the employee.'));
}
$inTime = Carbon::parse($clockInRecord->punch_time);
$outTime = Carbon::parse($clockOutRecord->punch_time);
if ($outTime->lt($inTime)) {
return redirect()->back()->with('error', __('Clock Out time cannot be earlier than Clock In time.'));
}
$employee = Employee::with(['user', 'shift'])->whereIn('created_by', getCompanyAndUsersId())->where('biometric_emp_id', $biometricEmpId)->first();
if (!$employee) {
return redirect()->back()->with('error', __('Employee not found.'));
}
$shift = Shift::where('id', $employee->shift_id)->where('status', 'active')->first() ?? Shift::whereIn('created_by', getCompanyAndUsersId())->where('status', 'active')->first();
// Check if record already exists
$attendance = AttendanceRecord::where('employee_id', $employee->user_id)
->where('date', $attedanceDate)
->whereIn('created_by', getCompanyAndUsersId())
->first();
if ($attendance) {
// Update the existing record since biometrics is the source of truth
$attendance->biometric_id = $clockInId;
$attendance->branch_id = $employee->branch_id ?? $clockInRecord->branch_id;
if (empty($attendance->shift_id)) {
$attendance->shift_id = $shift?->id;
}
$attendance->clock_in = $inTime->format('H:i:s');
$attendance->clock_out = $outTime->format('H:i:s');
$attendance->clock_in_source = 'zkteco';
$attendance->clock_out_source = 'zkteco';
$attendance->save();
} else {
// Create a new record
$attendance = new AttendanceRecord();
$attendance->employee_id = $employee->user_id;
$attendance->biometric_id = $clockInId;
$attendance->branch_id = $employee->branch_id ?? $clockInRecord->branch_id;
$attendance->shift_id = $shift?->id;
$attendance->date = $attedanceDate;
$attendance->clock_in = $inTime->format('H:i:s');
$attendance->clock_out = $outTime->format('H:i:s');
$attendance->clock_in_source = 'zkteco';
$attendance->clock_out_source = 'zkteco';
$attendance->created_by = creatorId();
$attendance->save();
}
$attendance->fresh(); // Reload relationships
$attendance->processAttendance();
// Mark all matching biometric entries as synced
$startDate = Carbon::parse($attedanceDate)->subDay()->startOfDay();
$endDate = Carbon::parse($attedanceDate)->addDay()->endOfDay();
$biometricEntries = \App\Models\BiometricAttendance::where('biometric_emp_id', $biometricEmpId)
->whereBetween('punch_time', [$startDate, $endDate])
->get()
->filter(function ($entry) use ($employee, $attedanceDate) {
return self::getWorkDateForPunch($entry->punch_time, $employee) === $attedanceDate;
});
foreach ($biometricEntries as $entry) {
$entry->update(['sync_status' => 'synced']);
}
return redirect()->back()->with('success', __('Custom biometric data synced successfully.'));
}
public function getSaasDemoData()
{
$data = [
// 10/01/2025
[
"id" => 2285,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 12:54:23"
],
[
"id" => 2286,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 13:05:23"
],
[
"id" => 2287,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 14:05:23"
],
[
"id" => 2288,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 18:35:23"
],
[
"id" => 2289,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 09:05:23"
],
[
"id" => 2290,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 18:35:23"
],
[
"id" => 2291,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 09:05:00"
],
[
"id" => 2292,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 18:35:00"
],
// 10/02/2025
[
"id" => 2293,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 09:10:23"
],
[
"id" => 2294,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 13:05:23"
],
[
"id" => 2295,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 14:05:23"
],
[
"id" => 2296,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 18:35:23"
],
[
"id" => 2297,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 09:05:23"
],
[
"id" => 2298,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 18:35:23"
],
[
"id" => 2299,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 09:05:00"
],
[
"id" => 2300,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 18:35:00"
],
// 10/03/2025
[
"id" => 2301,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 09:10:23"
],
[
"id" => 2302,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 13:05:23"
],
[
"id" => 2303,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 14:05:23"
],
[
"id" => 2304,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 18:35:23"
],
[
"id" => 2305,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 09:05:23"
],
[
"id" => 2306,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 18:35:23"
],
[
"id" => 2307,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 09:05:00"
],
[
"id" => 2308,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 18:35:00"
],
// 10/06/2025
[
"id" => 2309,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 09:10:23"
],
[
"id" => 2310,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 13:05:23"
],
[
"id" => 2311,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 14:05:23"
],
[
"id" => 2312,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 18:35:23"
],
[
"id" => 2313,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 09:05:23"
],
[
"id" => 2314,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 18:35:23"
],
[
"id" => 2315,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 09:05:00"
],
[
"id" => 2316,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 18:35:00"
],
// 10/07/2025
[
"id" => 2317,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 09:10:23"
],
[
"id" => 2318,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 13:05:23"
],
[
"id" => 2319,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 14:05:23"
],
[
"id" => 2320,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 18:35:23"
],
[
"id" => 2321,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 09:05:23"
],
[
"id" => 2322,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 18:35:23"
],
[
"id" => 2323,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 09:05:00"
],
[
"id" => 2324,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 18:35:00"
],
// 10/08/2025
[
"id" => 2325,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 09:10:23"
],
[
"id" => 2326,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 13:05:23"
],
[
"id" => 2327,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 14:05:23"
],
[
"id" => 2328,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 18:35:23"
],
[
"id" => 2329,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 09:05:23"
],
[
"id" => 2330,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 18:35:23"
],
[
"id" => 2331,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 09:05:00"
],
[
"id" => 2332,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 18:35:00"
],
// 10/09/2025
[
"id" => 2333,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 09:10:23"
],
[
"id" => 2334,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 13:05:23"
],
[
"id" => 2335,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 14:05:23"
],
[
"id" => 2336,
"emp" => 10,
"emp_code" => "201",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 18:35:23"
],
[
"id" => 2337,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 09:05:23"
],
[
"id" => 2338,
"emp" => 10,
"emp_code" => "202",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 18:35:23"
],
[
"id" => 2339,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 09:05:00"
],
[
"id" => 2340,
"emp" => 10,
"emp_code" => "203",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 18:35:00"
],
];
return $data;
}
public function getNonSaasDemoData()
{
$data = [
// 10/01/2025
[
"id" => 2285,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 12:54:23"
],
[
"id" => 2286,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 13:05:23"
],
[
"id" => 2287,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 14:05:23"
],
[
"id" => 2288,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-01 18:35:23"
],
[
"id" => 2289,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 09:05:23"
],
[
"id" => 2290,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 18:35:23"
],
[
"id" => 2291,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 09:05:00"
],
[
"id" => 2292,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-01 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-01 18:35:00"
],
// 10/02/2025
[
"id" => 2293,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 09:10:23"
],
[
"id" => 2294,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 13:05:23"
],
[
"id" => 2295,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 14:05:23"
],
[
"id" => 2296,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-02 18:35:23"
],
[
"id" => 2297,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 09:05:23"
],
[
"id" => 2298,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 18:35:23"
],
[
"id" => 2299,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 09:05:00"
],
[
"id" => 2300,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-02 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-02 18:35:00"
],
// 10/03/2025
[
"id" => 2301,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 09:10:23"
],
[
"id" => 2302,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 13:05:23"
],
[
"id" => 2303,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 14:05:23"
],
[
"id" => 2304,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-03 18:35:23"
],
[
"id" => 2305,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 09:05:23"
],
[
"id" => 2306,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 18:35:23"
],
[
"id" => 2307,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 09:05:00"
],
[
"id" => 2308,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-03 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-03 18:35:00"
],
// 10/06/2025
[
"id" => 2309,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 09:10:23"
],
[
"id" => 2310,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 13:05:23"
],
[
"id" => 2311,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 14:05:23"
],
[
"id" => 2312,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-06 18:35:23"
],
[
"id" => 2313,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 09:05:23"
],
[
"id" => 2314,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 18:35:23"
],
[
"id" => 2315,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 09:05:00"
],
[
"id" => 2316,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-06 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-06 18:35:00"
],
// 10/07/2025
[
"id" => 2317,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 09:10:23"
],
[
"id" => 2318,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 13:05:23"
],
[
"id" => 2319,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 14:05:23"
],
[
"id" => 2320,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-07 18:35:23"
],
[
"id" => 2321,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 09:05:23"
],
[
"id" => 2322,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 18:35:23"
],
[
"id" => 2323,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 09:05:00"
],
[
"id" => 2324,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-07 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-07 18:35:00"
],
// 10/08/2025
[
"id" => 2325,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 09:10:23"
],
[
"id" => 2326,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 13:05:23"
],
[
"id" => 2327,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 14:05:23"
],
[
"id" => 2328,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-08 18:35:23"
],
[
"id" => 2329,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 09:05:23"
],
[
"id" => 2330,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 18:35:23"
],
[
"id" => 2331,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 09:05:00"
],
[
"id" => 2332,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-08 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-08 18:35:00"
],
// 10/09/2025
[
"id" => 2333,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 09:00:17",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 09:10:23"
],
[
"id" => 2334,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 13:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 13:05:23"
],
[
"id" => 2335,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 14:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 14:05:23"
],
[
"id" => 2336,
"emp" => 10,
"emp_code" => "101",
"first_name" => "Mrs. Elvie Towne IV",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2024-10-09 18:35:23"
],
[
"id" => 2337,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 09:05:23"
],
[
"id" => 2338,
"emp" => 10,
"emp_code" => "102",
"first_name" => "Effie Wilderman",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 18:35:23"
],
[
"id" => 2339,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 09:00:00",
"punch_state" => "255",
"punch_state_display" => "Clock In",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 09:05:00"
],
[
"id" => 2340,
"emp" => 10,
"emp_code" => "103",
"first_name" => "Tomasa Mitchell",
"last_name" => null,
"department" => "Support",
"position" => "Technical Support",
"punch_time" => "2025-10-09 18:30:00",
"punch_state" => "255",
"punch_state_display" => "Clock Out",
"verify_type" => 1,
"verify_type_display" => "Fingerprint",
"work_code" => "",
"gps_location" => null,
"area_alias" => "Operation Office",
"terminal_sn" => "COAW221061101",
"temperature" => 0.0,
"is_mask" => "-",
"terminal_alias" => "F18/ID",
"upload_time" => "2025-10-09 18:35:00"
],
];
return $data;
}
}