init backend presensi

This commit is contained in:
mwpn
2026-03-05 14:37:36 +07:00
commit b4fda6b9c9
319 changed files with 27261 additions and 0 deletions

View File

@@ -0,0 +1,146 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
/**
* Seed awal master pelanggaran berdasarkan tabel tata tertib
* yang kamu kirim (kategori AI + tindak pidana).
*
* Catatan: migration ini hanya menambah data jika belum ada
* (dicek berdasarkan code kategori + title pelanggaran).
*/
class SeedViolationsFromPolicy extends Migration
{
public function up()
{
$db = \Config\Database::connect();
// 1) Pastikan kategori ada
$categories = [
'A' => ['name' => 'KETERLAMBATAN & KEHADIRAN'],
'B' => ['name' => 'PAKAIAN'],
'C' => ['name' => 'KEPRIBADIAN'],
'D' => ['name' => 'KETERTIBAN'],
'E' => ['name' => 'MEROKOK'],
'F' => ['name' => 'PORNOGRAFI'],
'G' => ['name' => 'SENJATA TAJAM'],
'H' => ['name' => 'NAPZA DAN / MINUMAN KERAS'],
'I' => ['name' => 'BERKELAHI / TAWURAN'],
'J' => ['name' => 'TINDAK PIDANA HUKUM'],
];
$catIds = [];
foreach ($categories as $code => $cfg) {
$row = $db->table('violation_categories')->where('code', $code)->get()->getRowArray();
if (! $row) {
$db->table('violation_categories')->insert([
'code' => $code,
'name' => $cfg['name'],
'description' => null,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
$catIds[$code] = (int) $db->insertID();
} else {
$catIds[$code] = (int) $row['id'];
}
}
// Helper untuk insert jika belum ada (berdasarkan title)
$insertViolation = function (string $code, string $title, int $score, ?string $description = null) use ($db, $catIds): void {
if (! isset($catIds[$code])) {
return;
}
$exists = $db->table('violations')
->where('category_id', $catIds[$code])
->where('title', $title)
->countAllResults();
if ($exists > 0) {
return;
}
$db->table('violations')->insert([
'category_id' => $catIds[$code],
'code' => null,
'title' => $title,
'description' => $description,
'score' => $score,
'is_active' => 1,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
};
// 2) Seed pelanggaran per kategori (ringkas dari tabel yang kamu kirim)
// A — Keterlambatan & Kehadiran
$insertViolation('A', 'Terlambat (dipulangkan dicatat tidak hadir tanpa keterangan)', 5);
$insertViolation('A', 'Tidak masuk tanpa keterangan', 5);
$insertViolation('A', 'Tidak masuk dengan membuat keterangan palsu', 10);
$insertViolation('A', 'Tidak mengikuti jam pelajaran tertentu', 5);
$insertViolation('A', 'Keluar saat pelajaran berlangsung dan tidak kembali sampai pulang', 5);
$insertViolation('A', 'Tidak ikut upacara bendera', 5);
$insertViolation('A', 'Meninggalkan pelajaran atau sekolah dengan izin palsu', 10);
// B — Pakaian
$insertViolation('B', 'Memakai seragam tidak sesuai aturan (teguran 1)', 2);
$insertViolation('B', 'Memakai seragam tidak sesuai aturan (teguran 2 + surat pernyataan 1)', 2);
$insertViolation('B', 'Memakai seragam tidak sesuai aturan (teguran 3 + sanksi sekolah)', 2);
$insertViolation('B', 'Tidak memakai seragam sekolah sesuai jadwal', 3);
// C — Kepribadian
$insertViolation('C', 'Berhias berlebihan', 5);
$insertViolation('C', 'Siswa putra memakai gelang, kalung, anting', 10);
$insertViolation('C', 'Memakai tindik di wajah atau tubuh lain (siswi)', 10);
$insertViolation('C', 'Memakai tato / atribut tidak wajar bagi pelajar', 20);
$insertViolation('C', 'Berduaan/bermesraan/pacaran (tindak asusila, melanggar kesopanan)', 50);
$insertViolation('C', 'Melawan kepala sekolah/guru/karyawan dengan ancaman', 75);
$insertViolation('C', 'Melawan kepala sekolah/guru/karyawan dengan pemukulan', 100);
$insertViolation('C', 'Intimidasi / bullying dengan kekerasan', 75);
$insertViolation('C', 'Tindakan tidak menyenangkan sesama siswa', 15);
$insertViolation('C', 'Mengaktifkan HP saat KBM berlangsung', 5);
$insertViolation('C', 'Mencemarkan nama kepala sekolah/guru/karyawan/sekolah', 50);
$insertViolation('C', 'Diketahui hamil / menikah', 100);
// D — Ketertiban
$insertViolation('D', 'Mengotori / mencoret benda milik sekolah/guru/karyawan/teman/lingkungan', 15);
$insertViolation('D', 'Merusak atau mengambil barang milik sekolah/guru/karyawan/teman', 50);
$insertViolation('D', 'Membawa/menggunakan benda tak terkait KBM tanpa izin', 15);
$insertViolation('D', 'Memakai sandal/sepatu sandal saat pelajaran tanpa izin', 5);
$insertViolation('D', 'Melompat pagar sekolah untuk keluar/masuk', 20);
$insertViolation('D', 'Tidak membuang sampah pada tempatnya', 3);
$insertViolation('D', 'Merusak tanaman dengan sengaja', 5);
// E — Merokok
$insertViolation('E', 'Membawa rokok ke sekolah', 20);
$insertViolation('E', 'Menghisap rokok di sekolah', 25);
// F — Pornografi
$insertViolation('F', 'Memiliki/membawa/mempergunakan media berkonten pornografi/kekerasan', 65);
$insertViolation('F', 'Memperjualbelikan media berkonten pornografi/kekerasan', 75);
// G — Senjata tajam
$insertViolation('G', 'Membawa senjata tajam/api/bahan peledak tanpa izin', 100);
$insertViolation('G', 'Memperjualbelikan senjata tajam/api/bahan peledak', 100);
$insertViolation('G', 'Menggunakan senjata tajam/api/bahan peledak untuk mengancam/melukai', 100);
// H — NAPZA / minuman keras
$insertViolation('H', 'Menggunakan napza dan/atau minuman terlarang', 100);
$insertViolation('H', 'Membawa napza dan/atau minuman terlarang', 100);
$insertViolation('H', 'Mengedarkan/memperjualbelikan napza/minuman keras', 100);
// I — Berkelahi / tawuran
$insertViolation('I', 'Indikasi / berkelahi / tawuran dengan siswa sekolah lain', 100);
$insertViolation('I', 'Berkelahi antar siswa', 100);
// J — Tindak pidana hukum lain
$insertViolation('J', 'Tersangkut tindak pidana lainnya', 10);
}
public function down()
{
// Tidak perlu menghapus data seed; biarkan tetap ada.
}
}