99 lines
7.2 KiB
PHP
99 lines
7.2 KiB
PHP
<x-master-page title="Data Siswa Berprestasi" description="Kelola data prestasi siswa berdasarkan capaian akademik maupun non-akademik." action-label="Tambah Data Prestasi" :action-url="route('student-achievements.create')">
|
|
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
|
<div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm shadow-slate-200/50">
|
|
<div class="text-sm font-medium text-slate-500">Total Prestasi</div>
|
|
<div class="mt-3 text-3xl font-bold text-slate-900">{{ $summary['total'] }}</div>
|
|
</div>
|
|
<div class="rounded-3xl border border-indigo-200 bg-indigo-50 p-6 shadow-sm shadow-indigo-100/50">
|
|
<div class="text-sm font-medium text-indigo-700">Hasil Filter</div>
|
|
<div class="mt-3 text-3xl font-bold text-indigo-800">{{ $summary['filtered'] }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<x-master-card title="Filter Data Siswa Berprestasi" subtitle="Cari berdasarkan nama siswa, NIS, NISN, kategori, atau tingkat prestasi.">
|
|
<form method="GET" action="{{ route('student-achievements.index') }}" class="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4">
|
|
<x-form-input name="search" label="Pencarian" :value="$search" placeholder="Nama / NIS / NISN / prestasi" />
|
|
<x-form-select name="academic_year_id" label="Tahun Angkatan" :options="$academicYears->all()" :value="$filters['academic_year_id']" />
|
|
<x-form-select name="class_id" label="Kelas" :options="$classes->all()" :value="$filters['class_id']" />
|
|
|
|
<div class="flex items-end gap-3 md:col-span-2 xl:col-span-4">
|
|
<button type="submit" class="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white transition hover:bg-slate-800">Cari</button>
|
|
<a href="{{ route('student-achievements.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Reset</a>
|
|
</div>
|
|
</form>
|
|
</x-master-card>
|
|
|
|
<x-data-table :headers="['Siswa', 'Prestasi', 'Akademik', 'Lampiran', 'Waktu', 'Aksi']">
|
|
@forelse ($achievements as $achievement)
|
|
<tr>
|
|
<td class="px-6 py-4 text-sm text-slate-600">
|
|
<div class="font-semibold text-slate-800">{{ $achievement->student?->full_name ?: '-' }}</div>
|
|
<div class="mt-1 text-xs text-slate-500">NIS: {{ $achievement->student?->student_number ?: '-' }} · NISN: {{ $achievement->student?->nisn ?: '-' }}</div>
|
|
</td>
|
|
<td class="px-6 py-4 text-sm text-slate-600">
|
|
<div class="font-semibold text-slate-800">{{ $achievement->achievement_name }}</div>
|
|
<div class="mt-1 text-xs text-slate-500">
|
|
{{ $achievement->category ?: 'Tanpa kategori' }}
|
|
@if($achievement->rank)
|
|
· {{ $achievement->rank }}
|
|
@endif
|
|
</div>
|
|
<div class="mt-1 text-xs text-slate-500"><span class="font-semibold text-slate-600">Tingkat:</span> {{ $achievement->level ?: '-' }}</div>
|
|
<div class="mt-1 text-xs text-slate-400"><span class="font-semibold text-slate-500">Penyelenggara:</span> {{ $achievement->organizer ?: 'Belum diisi' }}</div>
|
|
</td>
|
|
<td class="px-6 py-4 text-sm text-slate-600">
|
|
<div>{{ $achievement->student?->academicYear?->name ?: '-' }}</div>
|
|
<div>{{ $achievement->student?->department?->name ?: '-' }}</div>
|
|
<div>{{ $achievement->student?->classRoom?->name ?: '-' }}</div>
|
|
</td>
|
|
<td class="px-6 py-4 text-sm text-slate-600">
|
|
<div class="flex flex-col gap-2">
|
|
@if($achievement->certificate_file)
|
|
@php
|
|
$certificateUrl = asset('storage/' . $achievement->certificate_file);
|
|
$certificateExtension = strtolower(pathinfo($achievement->certificate_file, PATHINFO_EXTENSION));
|
|
$certificateIsImage = in_array($certificateExtension, ['jpg', 'jpeg', 'png', 'webp']);
|
|
@endphp
|
|
@if($certificateIsImage)
|
|
<button type="button" data-lightbox-trigger data-lightbox-src="{{ $certificateUrl }}" data-lightbox-title="Piagam — {{ $achievement->achievement_name }}" class="inline-flex w-fit items-center rounded-xl border border-indigo-200 bg-indigo-50 px-3 py-2 text-xs font-semibold text-indigo-700 transition hover:bg-indigo-100">Lihat Piagam</button>
|
|
@else
|
|
<a href="{{ $certificateUrl }}" target="_blank" class="inline-flex w-fit items-center rounded-xl border border-indigo-200 bg-indigo-50 px-3 py-2 text-xs font-semibold text-indigo-700 transition hover:bg-indigo-100">Lihat Piagam</a>
|
|
@endif
|
|
@else
|
|
<span class="text-xs text-slate-400">Piagam belum diunggah</span>
|
|
@endif
|
|
|
|
@if($achievement->activity_photo)
|
|
<button type="button" data-lightbox-trigger data-lightbox-src="{{ asset('storage/' . $achievement->activity_photo) }}" data-lightbox-title="Foto Kegiatan — {{ $achievement->achievement_name }}" class="inline-flex w-fit items-center rounded-xl border border-emerald-200 bg-emerald-50 px-3 py-2 text-xs font-semibold text-emerald-700 transition hover:bg-emerald-100">Lihat Foto Kegiatan</button>
|
|
@else
|
|
<span class="text-xs text-slate-400">Foto kegiatan belum diunggah</span>
|
|
@endif
|
|
</div>
|
|
</td>
|
|
<td class="px-6 py-4 text-sm text-slate-600">
|
|
<div>Tahun: {{ $achievement->achievement_year ?: '-' }}</div>
|
|
<div class="mt-1">Tanggal: {{ $achievement->achievement_date?->format('d-m-Y') ?: '-' }}</div>
|
|
</td>
|
|
<td class="px-6 py-4">
|
|
<div class="flex flex-wrap items-center gap-2">
|
|
<a href="{{ route('student-achievements.edit', $achievement) }}" class="rounded-xl border border-slate-200 px-3 py-2 text-xs font-semibold text-slate-700 transition hover:bg-slate-50">Edit</a>
|
|
<form action="{{ route('student-achievements.destroy', $achievement) }}" method="POST" class="delete-form" data-entity="data prestasi {{ $achievement->achievement_name }}">
|
|
@csrf
|
|
@method('DELETE')
|
|
<button type="submit" class="rounded-xl border border-rose-200 px-3 py-2 text-xs font-semibold text-rose-600 transition hover:bg-rose-50">Hapus</button>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="6" class="px-6 py-10 text-center text-sm text-slate-500">Belum ada data siswa berprestasi.</td>
|
|
</tr>
|
|
@endforelse
|
|
</x-data-table>
|
|
|
|
<div>
|
|
{{ $achievements->links() }}
|
|
</div>
|
|
</x-master-page>
|