-- Database: webb7666_presensigtk
-- Aplikasi Presensi GTK SD Negeri 62 Krui
-- Catatan untuk cPanel: Silakan pilih database `webb7666_presensigtk` di phpMyAdmin, lalu klik menu Import berkas ini.

-- CREATE DATABASE IF NOT EXISTS `webb7666_presensigtk` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- USE `webb7666_presensigtk`;

-- Tabel Pengguna (GTK & Admin)
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL UNIQUE,
  `password` varchar(255) NOT NULL,
  `nama_lengkap` varchar(100) NOT NULL,
  `nip` varchar(30) DEFAULT NULL,
  `jabatan` varchar(50) NOT NULL,
  `jenis_gtk` varchar(25) NOT NULL DEFAULT 'Pendidik',
  `role` varchar(20) NOT NULL DEFAULT 'gtk',
  `foto_profil` varchar(255) DEFAULT NULL,
  `status_aktif` tinyint(1) DEFAULT 1,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabel Pengaturan Lokasi & Jam Kerja Sekolah
CREATE TABLE IF NOT EXISTS `pengaturan` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama_sekolah` varchar(150) NOT NULL,
  `alamat_sekolah` text DEFAULT NULL,
  `latitude_sekolah` decimal(10,8) NOT NULL,
  `longitude_sekolah` decimal(11,8) NOT NULL,
  `radius_meter` int(11) NOT NULL DEFAULT 100,
  `jam_masuk_mulai` time DEFAULT '06:00:00',
  `jam_masuk_selesai` time DEFAULT '07:30:00',
  `jam_pulang_mulai` time DEFAULT '15:00:00',
  `jam_pulang_selesai` time DEFAULT '18:00:00',
  `toleransi_terlambat_menit` int(11) DEFAULT 15,
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabel Presensi Harian (Geo-Tagging & Selfie)
CREATE TABLE IF NOT EXISTS `presensi` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `tanggal` date NOT NULL,
  `jam_masuk` time DEFAULT NULL,
  `foto_masuk` varchar(255) DEFAULT NULL,
  `latitude_masuk` decimal(10,8) DEFAULT NULL,
  `longitude_masuk` decimal(11,8) DEFAULT NULL,
  `jarak_masuk` int(11) DEFAULT NULL,
  `status_masuk` varchar(30) DEFAULT NULL,
  `jam_pulang` time DEFAULT NULL,
  `foto_pulang` varchar(255) DEFAULT NULL,
  `latitude_pulang` decimal(10,8) DEFAULT NULL,
  `longitude_pulang` decimal(11,8) DEFAULT NULL,
  `jarak_pulang` int(11) DEFAULT NULL,
  `status_presensi` varchar(30) NOT NULL DEFAULT 'Hadir',
  `keterangan` text DEFAULT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_user_tanggal` (`user_id`,`tanggal`),
  CONSTRAINT `fk_presensi_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabel Pengajuan Izin / Sakit / Cuti / Dinas Luar
CREATE TABLE IF NOT EXISTS `pengajuan_izin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `jenis_izin` varchar(30) NOT NULL,
  `tanggal_mulai` date NOT NULL,
  `tanggal_selesai` date NOT NULL,
  `alasan` text NOT NULL,
  `file_bukti` varchar(255) DEFAULT NULL,
  `status` varchar(20) DEFAULT 'Menunggu',
  `catatan_admin` text DEFAULT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  CONSTRAINT `fk_izin_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Seed Data Akun Default:
-- 1. admin / admin123
-- 2. guru1 / guru123
-- 3. guru2 / guru123
-- 4. tendik1 / tendik123
INSERT INTO `users` (`id`, `username`, `password`, `nama_lengkap`, `nip`, `jabatan`, `jenis_gtk`, `role`, `status_aktif`) VALUES
(1, 'admin', '$2y$10$Z0L3ujXVs81cZ9.NE8SVV.C5UnpP0Kkei4vAqBXrH9gQ2Xy4t4BIq', 'Administrator Sekolah', '198001012005011001', 'Admin Kepegawaian', 'Tenaga Kependidikan', 'admin', 1),
(2, 'guru1', '$2y$10$eodKsERCe89YbGJL4pdH9O8sj.EmwAyJv1N6XNTCLG/fVU5RULZRC', 'Budi Santoso, S.Pd.', '198503152010011005', 'Guru Kelas V', 'Pendidik', 'gtk', 1),
(3, 'guru2', '$2y$10$eodKsERCe89YbGJL4pdH9O8sj.EmwAyJv1N6XNTCLG/fVU5RULZRC', 'Siti Nurhaliza, S.Pd.', '198807202014022003', 'Guru Kelas I', 'Pendidik', 'gtk', 1),
(4, 'tendik1', '$2y$10$pWTVfNKk2PA0H4yiw.jH9ux3gtdyG6mF62ETrAh82cpjoLsWut5Qy', 'Rian Prasetyo, S.AP.', '199205112020121008', 'Tenaga Administrasi Sekolah', 'Tenaga Kependidikan', 'gtk', 1)
ON DUPLICATE KEY UPDATE `id`=`id`;

-- Seed Pengaturan Sekolah
INSERT INTO `pengaturan` (`id`, `nama_sekolah`, `alamat_sekolah`, `latitude_sekolah`, `longitude_sekolah`, `radius_meter`, `jam_masuk_mulai`, `jam_masuk_selesai`, `jam_pulang_mulai`, `jam_pulang_selesai`, `toleransi_terlambat_menit`) VALUES
(1, 'SD Negeri 62 Krui', 'Pekon Paku Negara (Biha), Kec. Pesisir Selatan, Kab. Pesisir Barat, Lampung 34875', -5.37480000, 104.08930000, 150, '06:00:00', '07:30:00', '15:00:00', '18:00:00', 15)
ON DUPLICATE KEY UPDATE `id`=`id`;

