3266 lines
129 KiB
PHP
3266 lines
129 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\AttendancePolicy;
|
|
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;
|
|
}
|
|
if (empty($attendance->attendance_policy_id)) {
|
|
$policy = AttendancePolicy::where('id', $employee->attendance_policy_id)->where('status', 'active')->first() ?? AttendancePolicy::whereIn('created_by', getCompanyAndUsersId())->where('status', 'active')->first();
|
|
$attendance->attendance_policy_id = $policy?->id;
|
|
}
|
|
|
|
$attendance->biometric_id = $firstEntry->id;
|
|
$attendance->branch_id = $employee->branch_id ?? $firstEntry->branch_id;
|
|
$attendance->clock_in = $clockInTime;
|
|
$attendance->clock_out = $clockOutTime;
|
|
$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();
|
|
$policy = AttendancePolicy::where('id', $employee->attendance_policy_id)->where('status', 'active')->first() ?? AttendancePolicy::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->attendance_policy_id = $policy?->id;
|
|
$attendance->date = $attedanceDate;
|
|
$attendance->clock_in = $clockInTime;
|
|
$attendance->clock_out = $clockOutTime;
|
|
$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();
|
|
|
|
$policy = AttendancePolicy::where('id', $employee->attendance_policy_id)
|
|
->where('status', 'active')
|
|
->first() ?? AttendancePolicy::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->attendance_policy_id = $policy?->id;
|
|
$attendance->date = $attedanceDate;
|
|
$attendance->clock_in = $clockInTime;
|
|
$attendance->clock_out = $clockOutTime;
|
|
$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();
|
|
$policy = AttendancePolicy::where('id', $employee->attendance_policy_id)->where('status', 'active')->first() ?? AttendancePolicy::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;
|
|
}
|
|
if (empty($attendance->attendance_policy_id)) {
|
|
$attendance->attendance_policy_id = $policy?->id;
|
|
}
|
|
$attendance->clock_in = $inTime->format('H:i:s');
|
|
$attendance->clock_out = $outTime->format('H:i:s');
|
|
$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->attendance_policy_id = $policy?->id;
|
|
$attendance->date = $attedanceDate;
|
|
$attendance->clock_in = $inTime->format('H:i:s');
|
|
$attendance->clock_out = $outTime->format('H:i:s');
|
|
$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;
|
|
}
|
|
}
|