Initial commit

This commit is contained in:
2026-04-12 06:24:30 +00:00
commit 007f107be6
213 changed files with 25576 additions and 0 deletions
@@ -0,0 +1,78 @@
<x-master-page title="Kosongkan Data Aplikasi" description="Pilih kelompok data yang ingin dikosongkan. Sistem akan menyesuaikan dependensi relasi agar proses aman dari konflik foreign key.">
<x-master-card title="Reset Data Selektif" subtitle="Gunakan fitur ini dengan hati-hati. Data yang dikosongkan dari menu ini tidak bisa dipulihkan dari UI.">
<div class="rounded-3xl border border-amber-200 bg-amber-50 px-5 py-4 text-sm text-amber-700">
<div class="font-semibold">Catatan penting:</div>
<ul class="mt-3 list-disc space-y-1 pl-5">
<li>Mas bisa memilih tabel/kelompok data tertentu saja.</li>
<li>Backend akan menambahkan dependensi yang wajib ikut dibersihkan supaya tidak bentrok foreign key.</li>
<li>Untuk dokumen siswa, file fisik di storage juga ikut dibersihkan.</li>
<li>Konfirmasi memakai password admin yang sedang login.</li>
</ul>
</div>
<div class="mt-6 grid grid-cols-1 gap-4 md:grid-cols-4 xl:grid-cols-8">
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Tahun</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['academicYears'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Jurusan</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['departments'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Kelas</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['classes'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Jenis Dokumen</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['documentTypes'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Siswa</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['students'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Ortu/Wali</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['studentParents'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Dokumen</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['studentDocuments'] }}</div></div>
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600"><div class="text-xs uppercase tracking-[0.14em] text-slate-400">Histori</div><div class="mt-1 text-2xl font-bold text-slate-800">{{ $stats['studentAcademicHistories'] }}</div></div>
</div>
<form method="POST" action="{{ route('settings.reset-data.execute') }}" class="mt-6 space-y-6">
@csrf
<div>
<div class="mb-3 text-sm font-medium text-slate-700">Pilih data yang ingin dikosongkan</div>
<div class="grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-3">
@foreach ($targets as $key => $label)
<label class="flex items-start gap-3 rounded-2xl border border-slate-200 bg-white px-4 py-3 transition hover:border-rose-200 hover:bg-rose-50/40">
<input type="checkbox" name="targets[]" value="{{ $key }}" class="mt-1 rounded border-slate-300 text-rose-600 focus:ring-rose-500" @checked(in_array($key, old('targets', []), true))>
<div>
<div class="text-sm font-semibold text-slate-800">{{ $label }}</div>
<div class="mt-1 text-xs text-slate-500">
@switch($key)
@case('students')
Menghapus data siswa; sistem otomatis ikut membersihkan dokumen, orang tua/wali, dan histori akademik.
@break
@case('classes')
Menghapus master kelas; sistem akan ikut memaksa pembersihan data siswa dan histori yang bergantung.
@break
@case('document_types')
Menghapus master jenis dokumen; sistem akan ikut membersihkan dokumen siswa yang masih memakai jenis dokumen.
@break
@default
Data pada kelompok ini akan dikosongkan sesuai relasi yang diperlukan.
@endswitch
</div>
</div>
</label>
@endforeach
</div>
</div>
<div>
<label for="admin_password" class="mb-2 block text-sm font-medium text-slate-700">Password Admin</label>
<input
id="admin_password"
name="admin_password"
type="password"
autocomplete="current-password"
class="w-full rounded-2xl border border-slate-200 bg-white px-4 py-3 text-sm text-slate-700 placeholder:text-slate-400 focus:border-rose-300 focus:outline-none focus:ring-2 focus:ring-rose-100"
placeholder="Masukkan password admin untuk konfirmasi"
>
</div>
<div class="flex flex-wrap items-center gap-3">
<button type="submit" class="inline-flex items-center rounded-2xl bg-rose-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-rose-200 transition hover:bg-rose-700">
Proses Kosongkan Data
</button>
<a href="{{ route('dashboard') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">
Batal
</a>
</div>
</form>
</x-master-card>
</x-master-page>