+
+
-
Belum Ada Ambang SP
-
Tambahkan ambang Surat Peringatan untuk memantau level pelanggaran siswa
+
Belum Ada Ambang SP
+
Tambahkan ambang Surat Peringatan untuk memantau level pelanggaran siswa
@@ -116,8 +129,8 @@
@endif
{{-- Create Modal --}}
-
-
-
-
+
+
+ {{-- Modal header --}}
+
-
+
-
Tambah Ambang SP
-
Batas poin Surat Peringatan baru
+
Tambah Ambang SP
+
Batas poin Surat Peringatan baru
-
@@ -148,36 +162,45 @@
@csrf
-
+
+ class="btn-outline">
Batal
+ class="btn-primary">
Simpan
@@ -187,24 +210,37 @@
- {{-- Info Card --}}
-
+ {{-- Info Card: tangga SP dinamis --}}
+ @if($thresholds->count() > 0)
+
-
-
+
+
-
-
Cara Kerja Ambang SP
-
- - SP1 (≥50 poin) — peringatan pertama
- - SP2 (≥100 poin) — peringatan kedua
- - SP3 (≥150 poin) — peringatan ketiga
- - Setiap poin dihitung dari akumulasi semua pelanggaran siswa
- - Toggle aktif/nonaktif untuk mengontrol threshold yang digunakan
- - Threshold baru otomatis aktif saat dibuat
-
+
+
+
+ @foreach($thresholds as $idx => $th)
+
+
+
+ {{ $th->name }} · ≥{{ $th->min_points }} poin
+ @if(! $th->is_active) (nonaktif) @endif
+
+ @if(! $loop->last)
+
+ @endif
+
+ @endforeach
+
+
+ SP diterbitkan otomatis saat poin siswa mencapai ambang minimal level tertinggi yang belum dimiliki.
+ Toggle untuk menonaktifkan level, atau hapus level yang tidak dipakai.
+
+ @endif
@endsection
diff --git a/tests/Feature/SettingsThresholdPageTest.php b/tests/Feature/SettingsThresholdPageTest.php
new file mode 100644
index 0000000..2032853
--- /dev/null
+++ b/tests/Feature/SettingsThresholdPageTest.php
@@ -0,0 +1,39 @@
+create(['roles' => ['admin']]);
+
+ $this->actingAs($admin)
+ ->get(route('settings.thresholds'))
+ ->assertOk()
+ ->assertSee('Ambang Surat Peringatan');
+ }
+
+ public function test_halaman_ambang_sp_menampilkan_tangga_sp_dinamis(): void
+ {
+ $admin = User::factory()->create(['roles' => ['admin']]);
+
+ \Illuminate\Support\Facades\DB::table('sp_thresholds')->insert([
+ ['name' => 'SP 1', 'slug' => 'sp-1', 'min_points' => 50, 'color' => '#eab308', 'is_active' => true, 'default_description' => 'SP 1 — 50', 'created_at' => now(), 'updated_at' => now()],
+ ['name' => 'SP 2', 'slug' => 'sp-2', 'min_points' => 100, 'color' => '#f97316', 'is_active' => true, 'default_description' => 'SP 2 — 100', 'created_at' => now(), 'updated_at' => now()],
+ ]);
+
+ $this->actingAs($admin)
+ ->get(route('settings.thresholds'))
+ ->assertOk()
+ ->assertSee('SP 1')
+ ->assertSee('SP 2')
+ ->assertSee('≥ 100 poin');
+ }
+}