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

View File

@@ -0,0 +1,84 @@
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class AcademicSeeder extends Seeder
{
public function run()
{
$now = date('Y-m-d H:i:s');
$todayDayOfWeek = (int) date('N'); // 1=Monday, 7=Sunday
// Insert 1 class
$classData = [
[
'name' => 'X IPA 1',
'grade' => '10',
'created_at' => $now,
'updated_at' => $now,
],
];
$this->db->table('classes')->insertBatch($classData);
$classId = $this->db->insertID();
// Insert 2 students
$studentData = [
[
'nisn' => '2024001',
'name' => 'Student One',
'gender' => 'L',
'class_id' => $classId,
'is_active' => 1,
'created_at' => $now,
'updated_at' => $now,
],
[
'nisn' => '2024002',
'name' => 'Student Two',
'gender' => 'P',
'class_id' => $classId,
'is_active' => 1,
'created_at' => $now,
'updated_at' => $now,
],
];
$this->db->table('students')->insertBatch($studentData);
// Insert 2 subjects
$subjectData = [
[
'name' => 'Mathematics',
'created_at' => $now,
'updated_at' => $now,
],
[
'name' => 'Physics',
'created_at' => $now,
'updated_at' => $now,
],
];
$this->db->table('subjects')->insertBatch($subjectData);
$subjectIds = $this->db->query('SELECT id FROM subjects ORDER BY id')->getResultArray();
$mathSubjectId = $subjectIds[0]['id'];
$physicsSubjectId = $subjectIds[1]['id'];
// Insert 1 schedule for today's weekday
// Schedule: 08:00 - 09:30 for Mathematics
$scheduleData = [
[
'class_id' => $classId,
'subject_id' => $mathSubjectId,
'teacher_name' => 'Mr. Mathematics Teacher',
'day_of_week' => $todayDayOfWeek,
'start_time' => '08:00:00',
'end_time' => '09:30:00',
'room' => 'A101',
'created_at' => $now,
'updated_at' => $now,
],
];
$this->db->table('schedules')->insertBatch($scheduleData);
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class AuthSeeder extends Seeder
{
public function run()
{
$roles = [
['role_code' => 'ADMIN', 'role_name' => 'Administrator'],
['role_code' => 'WALI_KELAS', 'role_name' => 'Wali Kelas'],
['role_code' => 'GURU_BK', 'role_name' => 'Guru BK'],
['role_code' => 'GURU_MAPEL', 'role_name' => 'Guru Mata Pelajaran'],
['role_code' => 'ORANG_TUA', 'role_name' => 'Orang Tua'],
];
$this->db->table('roles')->insertBatch($roles);
$this->db->table('users')->insert([
'name' => 'Admin',
'email' => 'admin@example.com',
'password_hash' => password_hash('admin123', PASSWORD_DEFAULT),
'is_active' => 1,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
$adminId = $this->db->insertID();
$adminRoleId = $this->db->table('roles')->where('role_code', 'ADMIN')->get()->getRow()->id;
$this->db->table('user_roles')->insert([
'user_id' => $adminId,
'role_id' => $adminRoleId,
]);
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class DeviceSeeder extends Seeder
{
public function run()
{
$data = [
[
'device_code' => 'SMA1-GATE-01',
'device_name' => 'SMAN1 Gate Device 01',
'api_key' => 'devkey123',
'is_active' => 1,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
],
[
'device_code' => 'MOBILE_APP',
'device_name' => 'Aplikasi Mobile (Presensi Siswa)',
'api_key' => 'MOBILE_APP_SECRET',
'is_active' => 1,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
],
];
$table = $this->db->table('devices');
foreach ($data as $row) {
$exists = $table->where('device_code', $row['device_code'])->countAllResults();
if ($exists === 0) {
$table->insert($row);
}
}
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class GeoSeeder extends Seeder
{
public function run()
{
$now = date('Y-m-d H:i:s');
// Insert SMA1-SCHOOL zone
// Using dummy coordinates (example: Bandung area)
// Latitude: -6.917464, Longitude: 107.619123
$zoneData = [
[
'zone_code' => 'SMA1-SCHOOL',
'zone_name' => 'SMAN 1 School Zone',
'latitude' => -6.917464,
'longitude' => 107.619123,
'radius_meters' => 150,
'is_active' => 1,
'created_at' => $now,
'updated_at' => $now,
],
];
$this->db->table('zones')->insertBatch($zoneData);
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class StudentMobileAccountsSeeder extends Seeder
{
public function run()
{
//
}
}