@extends('layouts.app')
@php
$pageTitle = 'ADMS Dashboard';
$pageHeading = 'Operational Dashboard';
$pageDescription = 'Monitoring device, transaksi, command queue, dan integrasi user dalam satu tampilan.';
$sessionRole = strtolower((string) (($currentUser['role'] ?? null) ?: (!empty($currentUser['is_superuser']) ? 'admin' : 'viewer')));
@endphp
@section('content')
@php
$expiredCode = \App\Services\Device\CommandQueue::RETURN_EXPIRED;
@endphp
@if (($offlineDevices ?? collect())->isNotEmpty())
{{ $offlineDevices->count() }} perangkat sedang offline
Buka Device Management
| Emp Code | Punch Time | State | Terminal | Upload Time |
|---|---|---|---|---|
| {{ $item->emp_code }} | {{ $item->punch_time }} | {{ $transactionStateLabels[(int) $item->punch_state] ?? ('UNKNOWN (' . $item->punch_state . ')') }} | {{ $item->terminal_sn }} | {{ $item->upload_time }} |
| Belum ada transaksi. | ||||
| Terminal | Content | Commit | Return |
|---|---|---|---|
|
{{ $item->terminal_alias ?: $item->terminal_sn ?: $item->terminal_id }}
@if (($item->terminal_alias ?? null) && ($item->terminal_sn ?? null))
{{ $item->terminal_sn }}
@endif
|
{{ $item->commit_time }} | @if (is_null($item->return_time)) Pending @elseif ((int) $item->return_value === \App\Services\Device\CommandQueue::RETURN_ACK_OPERLOG) Success via OPERLOG @elseif ((int) $item->return_value === 0) Success @elseif ((int) $item->return_value === $expiredCode) Expired @else Error ({{ $item->return_value }}) @endif | |
| Belum ada command device. | |||
| Alias | Serial Number | IP | State | User Qty | Transaction Qty | Last Poll | Last Data Sync | Last Activity |
|---|---|---|---|---|---|---|---|---|
|
{{ $device->alias }}
@if ((int) $device->status !== 1 && $device->create_time && \Illuminate\Support\Carbon::parse($device->create_time)->isToday())
New Device
@endif
|
{{ $device->sn }} | {{ $device->ip_address }} |
@if ((int) $device->status !== 1)
Ping Blocked
@elseif (empty($device->first_sync_at))
Waiting First Sync
@else
{{ $device->presence_label }}
@php
$activityClass = match ($device->presence_activity_type ?? null) {
'polling' => 'dashboard-status--info',
'data_sync' => 'dashboard-status--success',
default => 'dashboard-status--pending',
};
@endphp
{{ $device->presence_activity_label }}
@endif
@if ((int) $device->status !== 1)
Pending approval, belum boleh sync.
@elseif (empty($device->first_sync_at))
Approved, tapi feedback pertama dari mesin belum masuk.
@else
{{ $device->presence_meta }}
@endif
|
{{ $device->user_count }}
DB: {{ $device->db_user_count ?? 0 }}
|
{{ $device->transaction_count }}
DB: {{ $device->db_transaction_count ?? 0 }}
|
{{ $device->push_time ?: '-' }}
@if (! empty($device->push_time))
{{ \Illuminate\Support\Carbon::parse($device->push_time)->diffForHumans() }}
@else
Belum ada poll
@endif
|
{{ $device->upload_time ?: '-' }}
@if (! empty($device->upload_time))
{{ \Illuminate\Support\Carbon::parse($device->upload_time)->diffForHumans() }}
@else
Belum ada sync data
@endif
|
{{ $device->last_activity ?: '-' }}
{{ $device->presence_meta ?? 'Belum ada heartbeat' }}
First sync: {{ $device->first_sync_at ?: '-' }}
|
| Belum ada device yang tersimpan. | ||||||||