Add student achievements module and improve student admin workflows
This commit is contained in:
@@ -129,6 +129,26 @@
|
||||
{{ $student->full_name }}
|
||||
</button>
|
||||
<div class="mt-1 text-xs text-slate-500">NIS: {{ $student->student_number ?: '-' }} · NISN: {{ $student->nisn ?: '-' }}</div>
|
||||
@if ($student->achievement_badge_count > 0)
|
||||
@php
|
||||
$achievementStars = match ($student->achievement_badge_level) {
|
||||
'Sekolah' => 1,
|
||||
'Kecamatan' => 2,
|
||||
'Kabupaten/Kota' => 3,
|
||||
'Provinsi' => 4,
|
||||
'Nasional' => 5,
|
||||
'Internasional' => 6,
|
||||
default => 1,
|
||||
};
|
||||
@endphp
|
||||
<div class="mt-2 flex items-center gap-1" title="{{ $student->achievement_badge_title }}">
|
||||
@for ($star = 0; $star < $achievementStars; $star++)
|
||||
<svg class="h-4 w-4.5" viewBox="0 0 24 24" fill="#facc15" style="color:#facc15">
|
||||
<path d="M12 3 9.5 8H4l4.5 3.3L6.8 17 12 13.8 17.2 17l-1.7-5.7L20 8h-5.5L12 3Z" />
|
||||
</svg>
|
||||
@endfor
|
||||
</div>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">
|
||||
<div>{{ $student->academicYear?->name ?: '-' }}</div>
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
</x-master-card>
|
||||
</div>
|
||||
|
||||
<div class="mt-6">
|
||||
<div class="mt-6 grid grid-cols-1 gap-6 xl:grid-cols-2">
|
||||
<x-master-card title="Histori Akademik Siswa" subtitle="Riwayat penempatan siswa per tahun angkatan, jurusan, dan kelas.">
|
||||
@if ($student->academicHistories->isEmpty())
|
||||
<div class="text-sm text-slate-500">Belum ada histori akademik untuk siswa ini.</div>
|
||||
@@ -129,6 +129,55 @@
|
||||
</div>
|
||||
@endif
|
||||
</x-master-card>
|
||||
|
||||
<x-master-card title="Riwayat Prestasi Siswa" subtitle="Catatan prestasi akademik maupun non-akademik siswa.">
|
||||
<div class="mb-4">
|
||||
<a href="{{ route('student-achievements.create', ['student_id' => $student->id]) }}" class="inline-flex items-center rounded-2xl bg-amber-500 px-4 py-2.5 text-sm font-semibold text-white shadow-lg shadow-amber-200 transition hover:bg-amber-600">
|
||||
Tambah Prestasi
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@if ($student->achievements->isEmpty())
|
||||
<div class="text-sm text-slate-500">Belum ada data prestasi untuk siswa ini.</div>
|
||||
@else
|
||||
<div class="space-y-4">
|
||||
@foreach ($student->achievements as $achievement)
|
||||
<div class="rounded-3xl border border-slate-200 bg-slate-50 p-5 text-sm text-slate-600 shadow-sm shadow-slate-200/40">
|
||||
<div class="flex flex-col gap-3 md:flex-row md:items-start md:justify-between">
|
||||
<div>
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<div class="font-semibold text-slate-800">{{ $achievement->achievement_name }}</div>
|
||||
@if ($achievement->level)
|
||||
<span class="rounded-full bg-amber-100 px-3 py-1 text-xs font-semibold text-amber-700">{{ $achievement->level }}</span>
|
||||
@endif
|
||||
@if ($achievement->rank)
|
||||
<span class="rounded-full bg-indigo-100 px-3 py-1 text-xs font-semibold text-indigo-700">{{ $achievement->rank }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="mt-2">Kategori: {{ $achievement->category ?: '-' }}</div>
|
||||
<div>Penyelenggara: {{ $achievement->organizer ?: '-' }}</div>
|
||||
<div>Tahun/Tanggal: {{ $achievement->achievement_year ?: '-' }} · {{ $achievement->achievement_date?->format('d-m-Y') ?: '-' }}</div>
|
||||
@if ($achievement->description)
|
||||
<div class="mt-2 rounded-xl bg-white px-3 py-2 text-xs text-slate-500">
|
||||
{{ $achievement->description }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2">
|
||||
@if ($achievement->certificate_file)
|
||||
<a href="{{ asset('storage/' . $achievement->certificate_file) }}" target="_blank" class="rounded-xl border border-indigo-200 px-3 py-2 text-xs font-semibold text-indigo-700 transition hover:bg-indigo-50">Piagam</a>
|
||||
@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="rounded-xl border border-emerald-200 px-3 py-2 text-xs font-semibold text-emerald-700 transition hover:bg-emerald-50">Foto</button>
|
||||
@endif
|
||||
<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-100">Edit</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</x-master-card>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 grid grid-cols-1 gap-6 xl:grid-cols-2">
|
||||
|
||||
Reference in New Issue
Block a user