MIF_E31230910_MP-HRIS-WEB/resources/views/laporan-lembur/index.blade.php

122 lines
6.4 KiB
PHP

@extends('layouts.app')
@section('title', 'Laporan Lembur')
@section('content')
<div class="space-y-6">
<x-page-header title="Laporan Lembur" subtitle="Rekapitulasi jam dan poin lembur pegawai bulanan.">
<x-slot:actions>
<div class="flex gap-2">
<a href="{{ route('laporan-lembur.exportExcel', ['bulan' => $bulan, 'tahun' => $tahun]) }}" class="inline-flex items-center justify-center px-4 py-2 border border-emerald-600 font-medium rounded-lg text-emerald-700 bg-emerald-50 hover:bg-emerald-100 transition-colors shadow-sm text-sm h-[42px]">
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg>
Export Excel
</a>
</div>
</x-slot:actions>
</x-page-header>
<div class="bg-white rounded-xl shadow-sm border border-slate-200 overflow-hidden">
<div class="p-4 border-b border-slate-100 bg-slate-50/50">
<form action="{{ route('laporan-lembur.index') }}" method="GET" class="flex flex-wrap gap-4 items-end">
<div class="w-full md:w-40">
<x-select label="Bulan" name="bulan" onchange="this.form.submit()">
@for($i=1; $i<=12; $i++)
@php $val = str_pad($i, 2, '0', STR_PAD_LEFT); @endphp
<option value="{{ $val }}" {{ $bulan == $val ? 'selected' : '' }}>
{{ \Carbon\Carbon::create()->month((int)$i)->translatedFormat('F') }}
</option>
@endfor
</x-select>
</div>
<div class="w-full md:w-32">
<x-select label="Tahun" name="tahun" onchange="this.form.submit()">
@for($i=date('Y'); $i>=2023; $i--)
<option value="{{ $i }}" {{ $tahun == $i ? 'selected' : '' }}>{{ $i }}</option>
@endfor
</x-select>
</div>
<div class="w-full md:w-48">
<x-select label="Divisi" name="id_divisi" onchange="this.form.submit()">
<option value="">Semua Divisi</option>
@foreach($divisiList as $div)
<option value="{{ $div->id_divisi }}" {{ ($divisiId ?? '') == $div->id_divisi ? 'selected' : '' }}>
{{ $div->nama_divisi }}
</option>
@endforeach
</x-select>
</div>
<div class="flex-1 min-w-[200px]">
<x-input type="text" name="search" label="Cari Pegawai" value="{{ $search }}" placeholder="Nama/NIK..."
class="!mb-0" oninput="if(this.value.length === 0) this.form.submit()" />
</div>
<div class="pb-1">
<x-button type="submit" variant="secondary" class="h-[42px]">
Filter
</x-button>
</div>
</form>
</div>
<div class="overflow-x-auto">
<x-table>
<x-slot:header>
<th class="px-6 py-4 text-xs font-bold text-slate-500 uppercase tracking-wider text-left">Pegawai</th>
<th class="px-6 py-4 text-xs font-bold text-slate-500 uppercase tracking-wider text-center">Jml Hari Lembur</th>
<th class="px-6 py-4 text-xs font-bold text-slate-500 uppercase tracking-wider text-right">Durasi (Menit / Jam)</th>
<th class="px-6 py-4 text-xs font-bold text-slate-500 uppercase tracking-wider text-center">Poin Diperoleh</th>
</x-slot:header>
@forelse($pegawai as $p)
<tr class="hover:bg-slate-50 transition border-b border-slate-50 last:border-b-0">
<td class="px-6 py-4 whitespace-nowrap">
<div class="flex items-center">
<x-avatar :name="$p->nama_lengkap" class="mr-3" />
<div>
<div class="font-bold text-slate-800">{{ $p->nama_lengkap }}</div>
<div class="text-xs text-slate-500">{{ $p->nik ?? '-' }} {{ $p->divisi->nama_divisi ?? '-' }}</div>
</div>
</div>
</td>
<td class="px-6 py-4 text-center whitespace-nowrap">
<span class="inline-flex items-center justify-center px-2.5 py-1 text-sm font-semibold rounded-full bg-slate-100 text-slate-700">
{{ $rekap[$p->id]['jumlah_hari'] }} Hari
</span>
</td>
<td class="px-6 py-4 text-right whitespace-nowrap">
<div class="flex flex-col items-end">
<span class="font-bold text-slate-800 text-sm">{{ number_format($rekap[$p->id]['total_menit'], 0, ',', '.') }} Menit</span>
<span class="text-xs text-slate-500 font-mono"> {{ $rekap[$p->id]['format_jam'] }}</span>
</div>
</td>
<td class="px-6 py-4 text-center whitespace-nowrap">
@if($rekap[$p->id]['poin_diperoleh'] > 0)
<span class="inline-flex items-center px-2.5 py-1 rounded-md text-xs font-bold bg-indigo-100 text-indigo-700">
+{{ number_format($rekap[$p->id]['poin_diperoleh'], 0, ',', '.') }} Poin
</span>
@else
<span class="text-slate-400 text-xs">-</span>
@endif
</td>
</tr>
@empty
<x-empty-state colspan="4" message="Tidak ada data lembur yang disetujui pada periode ini." />
@endforelse
</x-table>
</div>
@if($pegawai->hasPages())
<div class="p-4 border-t border-slate-100">
{{ $pegawai->links() }}
</div>
@endif
</div>
</div>
@endsection