79 lines
6.6 KiB
PHP
79 lines
6.6 KiB
PHP
<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>
|