{{-- Header --}}

Log Absensi

Riwayat check-in/out (mobile geotagging & manual) — dikelompokkan per hari-karyawan: {{ number_format($groupCount) }} hari · {{ number_format($logCount) }} log.

@if ($search || $date_from || $date_to || $type || $source || $project_id || $staff_type) @endif @php $exportParams = ['from' => $date_from, 'to' => $date_to, 'type' => $type, 'source' => $source, 'project' => $project_id, 'staff_type' => $staff_type, 'q' => $search]; @endphp CSV Export Excel
@forelse ($rows as $row) {{-- Jam Masuk --}} {{-- Jam Keluar --}} {{-- Jml Jam Lembur --}} {{-- Sumber --}} {{-- Foto selfie masuk & keluar --}} @empty @endforelse
Tanggal NIK Nama Shift Proyek Jam Masuk Jam Keluar Jml Jam Lembur Sumber Foto Selfie Aksi
{{ $row['date_label'] }} {{ $row['nik'] ?: '-' }} {{ $row['name'] }}
@if ($row['shift']) {{ $row['shift'] }} @endif @if ($row['day_off']) Day Off @endif @if (! $row['shift'] && ! $row['day_off']) @endif
@if ($row['project']) {{ $row['project'] }} @else @endif @if ($row['in'])
{{ $row['in']['time'] ?? '-' }}
{{ $row['in']['loc'] ?? 'Tanpa lokasi' }} @if ($row['in']['lat'] !== null && $row['in']['lon'] !== null) @endif
@if ($row['in']['acc'] !== null)
{{ $row['in']['acc'] }} m
@endif @else @endif
@if ($row['out'])
{{ $row['out']['time'] ?? '-' }}
{{ $row['out']['loc'] ?? 'Tanpa lokasi' }} @if ($row['out']['lat'] !== null && $row['out']['lon'] !== null) @endif
@if ($row['out']['acc'] !== null)
{{ $row['out']['acc'] }} m
@endif @else @endif
@if ($row['lembur'] > 0) {{ $row['lembur'] }} jam @else @endif @php $srcIn = $row['in'] ? ($row['in']['is_mobile'] ? 'Mobile' : 'Manual') : null; $srcOut = $row['out'] ? ($row['out']['is_mobile'] ? 'Mobile' : 'Manual') : null; $src = trim(implode('/', array_unique(array_filter([$srcIn, $srcOut])))); $mock = ($row['in'] && $row['in']['is_mocked']) || ($row['out'] && $row['out']['is_mocked']); @endphp @if ($src) {{ $src }} @else @endif @if ($mock) Mock! @endif
@if ($row['photo_in'] && $row['reg_face_id']) @elseif ($row['photo_in']) @else @endif

Masuk

@if ($row['photo_out'] && $row['reg_face_id']) @elseif ($row['photo_out']) @else @endif

Keluar

Tidak ada log absensi untuk filter ini.

{{-- Modal lihat foto selfie --}}
Foto selfie absensi
{{-- Modal banding wajah selfie vs terdaftar --}}

Perbandingan Wajah

Selfie absen

Selfie Saat Absen

Wajah terdaftar

Wajah Terdaftar

{{-- Modal peta lokasi absensi (Google Maps embed) — Livewire-native --}} @if ($locOpen)
{{-- Header --}}

Lokasi Absensi

{{ $locSub }}

{{-- Peta --}} {{-- Footer --}}

{{ $locLat }}, {{ $locLon }}

@if ($locAcc)

Akurasi: {{ $locAcc }}

@endif
@endif {{-- Modal Edit Hari Absensi (jam masuk & keluar sekaligus) --}} {{-- Modal Edit / Input Manual — Livewire-native (tanpa Alpine) --}} @if ($editOpen)

{{ $eInId || $eOutId ? 'Edit Log Absensi' : 'Input Manual Absen' }}

{{ $eInId || $eOutId ? 'Perbaiki jam masuk & jam keluar karyawan (1 baris = 1 hari).' : 'Tambah absensi manual baru untuk karyawan & tanggal tertentu.' }}

@if ($editError)
{{ $editError }}
@endif
@error('eEmployeeId')

{{ $message }}

@enderror

Kosongkan utk menghapus log masuk.

Kosongkan utk menghapus log keluar.

@endif