@extends('layouts.admin') @section('title', setting('school_name', 'ShulePoint') . ' | Biometric Devices') @section('page-title', 'Biometric Devices') @section('content') {{-- Stat strip (same widgets as Dashboard) --}}
composer require rats/zkteco — the system will use it automatically when present.
On the device, enrol each learner/staff and note their User ID number.
Then enter that same number as the Biometric ID on the learner / staff record (admission or staff number also works as a fallback).
Unmatched punches appear below so you can enrol them and re-pull.
| Device | Network | Use | Last sync | Status | Actions |
|---|---|---|---|---|---|
| {{ $d->name }} {{ $d->model ?? 'ZKTeco panel' }}@if($d->location) · {{ $d->location }}@endif {{ $d->logs_count }} punch(es) · {{ $d->today_logs_count }} today · {{ $d->unprocessed_logs_count }} unmatched | {{ $d->ip_address }}:{{ $d->port }} |
{{ ucfirst($d->purpose) }} | {{ $d->last_sync_at?->diffForHumans() ?? 'Never' }} @if($d->last_seen_at)seen {{ $d->last_seen_at->diffForHumans() }}@endif | @if($d->is_active)Active @elseDisabled@endif | |
|
No devices yet Add the first biometric scanner using the form. | |||||
| Time | Enrol ID | Device | Matched to | State |
|---|---|---|---|---|
| {{ $l->punch_time->format('Y-m-d H:i') }} | {{ $l->device_user_id }} |
{{ $l->device->name ?? '—' }} | @if($l->learner){{ $l->learner->first_name }} {{ $l->learner->last_name }} @elseif($l->staff){{ $l->staff->first_name }} {{ $l->staff->last_name }} @elseUnmatched@endif | {{ $l->punch_state == 1 ? 'Check-out' : 'Check-in' }} |
| No punches synced yet — open a device and choose Pull attendance. | ||||