@extends('layouts.admin') @section('title', setting('school_name', 'ShulePoint') . ' | ' . $device->name) @section('page-title', $device->name) @section('content') All devices

Device details

Network
{{ $device->ip_address }}:{{ $device->port }}
Model
{{ $device->model ?? '—' }}
Serial
{{ $device->serial_number ?? '—' }}
Location
{{ $device->location ?? '—' }}
Used for
{{ ucfirst($device->purpose) }}
Last seen
{{ $device->last_seen_at?->diffForHumans() ?? 'Never' }}
Last sync
{{ $device->last_sync_at?->diffForHumans() ?? 'Never' }}
Status
@if($device->is_active)Active @elseDisabled@endif

Offline CSV import

@csrf

Columns: user_id, timestamp [, state] — e.g. 104, 2026-09-19 07:12:00. Used when the panel is unreachable.

Punch log {{ number_format($logs->total()) }} total

@forelse($logs as $l) @empty @endforelse
TimeEnrol IDMatched toStateAttendance
{{ $l->punch_time->format('Y-m-d H:i') }} {{ $l->device_user_id }} @if($l->learner){{ $l->learner->first_name }} {{ $l->learner->last_name }} {{ $l->learner->admission_no }} @elseif($l->staff){{ $l->staff->first_name }} {{ $l->staff->last_name }} {{ $l->staff->staff_no }} @elseUnmatched@endif {{ $l->punch_state == 1 ? 'Check-out' : 'Check-in' }} @if($l->attendance_id)Marked @elseif($l->processed)Logged @elsePending@endif

No punches yet

Pull attendance from the device or import a CSV.

@endsection