@extends('layouts.app') @php use Illuminate\Support\Facades\Storage; @endphp @section('content')
Pantau kehadiran, catat aktivitas khusus, dan lihat validasi terbaru dalam satu tampilan yang nyaman dibaca.
Sukses
{{ session('status') }}
Peringatan
{{ $errors->first('absensi') }}
@if($errors->has('show_confirm_button')) @endifPeriksa kembali
Total data yang diterima: {{ number_format($verifiedCount ?? 0) }}
Pastikan Anda menekan tombol Absen Masuk dan Absen Keluar dalam satu hari kerja agar status tercatat sebagai Benar.
Total data yang ditolak: {{ number_format($rejectedCount ?? 0) }}
Jika salah satu dari absen masuk atau keluar belum dilakukan, data akan ditandai Tidak Diterima. Lengkapi keduanya untuk menghindari penolakan.
| # | Tanggal | Masuk | Keluar | Durasi | Status | Validasi | Jobdesk | Catatan Pegawai | Catatan Admin | Selfie | Aksi |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $items->firstItem() + $i }} | {{ $row->clock_in ? $row->clock_in->timezone(config('app.timezone'))->format('d M Y') : '-' }} | {{ $row->clock_in ? $row->clock_in->timezone(config('app.timezone'))->format('H:i') : '-' }} | {{ $row->clock_out ? $row->clock_out->timezone(config('app.timezone'))->format('H:i') : '-' }} | @php $in = $row->clock_in ? $row->clock_in->timezone(config('app.timezone')) : null; $out = $row->clock_out ? $row->clock_out->timezone(config('app.timezone')) : null; $minutes = ($in && $out) ? $out->diffInMinutes($in) : 0; $dur = $minutes ? sprintf('%02d jam %02d mnt', intdiv($minutes,60), $minutes%60) : '-'; @endphp{{ $dur }} | @php $status = $effectiveStatus($row); @endphp{{ strtoupper($status) }} | @php $isVerified = $row->is_verified; $statusLower = $status; $verifyClass = $isVerified ? 'pill-success' : 'pill-danger'; if ($statusLower === 'sakit') { $verifyClass = 'pill-warning'; } elseif ($statusLower === 'izin') { $verifyClass = 'pill-info'; } @endphp@php // Asumsi $item->clock_in dan $item->clock_out adalah Carbon instance $durasiJam = ($row->clock_in && $row->clock_out) ? $row->clock_in->diffInHours($row->clock_out) : 0; @endphp @if($durasiJam < 12) DITOLAK @else BENAR @endif | {{ $row->jobdesk ? strtoupper($row->jobdesk) : 'Belum ditetapkan' }} | @php $userNote = $row->note ? trim($row->note) : null; @endphp{{ $userNote ?? 'Tidak ada catatan pegawai' }} | @php $adminNote = $row->admin_note ? trim($row->admin_note) : null; @endphp{{ $adminNote ?? 'Tidak ada catatan admin' }} |
@php
$selfieRoute = null;
if ($row->selfie_photo) {
$basename = basename($row->selfie_photo);
$selfieRoute = route('selfie.show', ['filename' => $basename]);
}
$hasLocation = $row->clock_in_latitude && $row->clock_in_longitude;
@endphp
@if($selfieRoute)
@else
@if($hasLocation)
Tidak ada selfie
@endif
Lat
{{ number_format($row->clock_in_latitude, 6) }}
Lon
{{ number_format($row->clock_in_longitude, 6) }}
Akurasi
{{ $row->clock_in_accuracy ? round($row->clock_in_accuracy) . 'm' : '-' }}
Lokasi
{{ $row->clock_in_location_name ?? '-' }}
|
Edit |
| Belum ada data absensi. | |||||||||||