-- Struktur database untuk aplikasi AKPAS

-- Tabel untuk pengguna
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    role ENUM('pegawai', 'admin') NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabel untuk ruangan
CREATE TABLE rooms (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    category ENUM('ruangan', 'non_ruangan', 'kamar_mandi', 'mobil') NOT NULL
);

-- Tabel untuk absensi
CREATE TABLE attendance (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    check_in_time DATETIME,
    check_in_location POINT,
    check_out_time DATETIME,
    check_out_location POINT,
    session ENUM('pagi', 'sore') NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Tabel untuk checklist kebersihan
CREATE TABLE cleanliness_checklist (
    id INT AUTO_INCREMENT PRIMARY KEY,
    room_id INT NOT NULL,
    checklist_date DATE NOT NULL,
    checklist_item VARCHAR(255) NOT NULL,
    is_checked BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (room_id) REFERENCES rooms(id)
);

-- Tabel untuk plotting ruangan ke pegawai
CREATE TABLE room_assignments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    room_id INT NOT NULL,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (room_id) REFERENCES rooms(id)
);

-- Data awal untuk ruangan
-- Disable foreign key checks
SET FOREIGN_KEY_CHECKS = 0;

-- Delete all rows from the `rooms` table
DELETE FROM rooms;

-- Re-enable foreign key checks
SET FOREIGN_KEY_CHECKS = 1;

INSERT INTO rooms (id, name, category) VALUES
(1, 'Ruang Resepsionis', 'non_ruangan'),
(2, 'Ruang Panitera', 'ruangan'),
(3, 'Ruang Tamu Terbuka', 'non_ruangan'),
(4, 'Ruang Mediasi', 'ruangan'),
(5, 'Kolam Ikan dan Area Sekitarnya', 'non_ruangan'),
(6, 'Pos Satpam', 'ruangan'),
(7, 'Kamar Mandi Satpam', 'kamar_mandi'),
(8, 'Mushola Pegawai', 'ruangan'),
(9, 'Halaman Depan dan Sekitar Kantor', 'non_ruangan'),
(10, 'Perpustakaan', 'ruangan'),
(11, 'PTSP & Ruang Pengelola', 'ruangan'),
(12, 'Ruang Sidang 2', 'ruangan'),
(13, 'Ruang Kesehatan', 'ruangan'),
(14, 'Gerai Layanan', 'non_ruangan'),
(15, 'Ruang Sidang 1', 'ruangan'),
(16, 'Mushola Pihak', 'ruangan'),
(17, 'Ruang Tunggu Sidang', 'ruangan'),
(18, 'Ruang Tunggu Difabel', 'ruangan'),
(19, 'Ruang Tunggu Pengacara', 'ruangan'),
(20, 'Ruang Bermain Anak', 'ruangan'),
(21, 'Ruang Laktasi', 'ruangan'),
(22, 'Ruang Media Center', 'ruangan'),
(23, 'Ruang Kesekretariatan', 'ruangan'),
(24, 'Ruang Sekretaris', 'ruangan'),
(25, 'Ruang JS', 'ruangan'),
(26, 'Ruang Wakil Ketua', 'ruangan'),
(27, 'Kamar Mandi Wakil Ketua', 'kamar_mandi'),
(28, 'Ruang Panmud', 'ruangan'),
(29, 'Ruang Panitera Pengganti', 'ruangan'),
(30, 'Ruang Rapat', 'ruangan'),
(31, 'Ruang Antara Ruang Sidang', 'ruangan'),
(32, 'Mobil Xpander', 'mobil'),
(33, 'Mobil Ertiga', 'mobil'),
(34, 'Mobil Innova', 'mobil'),
(35, 'Ruang Ketua', 'ruangan'),
(36, 'Kamar Mandi Ketua', 'kamar_mandi'),
(37, 'Ruang Hakim', 'ruangan'),
(38, 'Kamar Mandi Hakim', 'kamar_mandi'),
(39, 'Ruang Server', 'ruangan'),
(40, 'Area Pintu Masuk Pihak', 'non_ruangan'),
(41, 'Area Belakang Kantor', 'non_ruangan'),
(42, 'Kamar Mandi Lantai 2', 'kamar_mandi'),
(43, 'Tangga Belakang', 'non_ruangan'),
(44, 'Area Belakang Ruang Sidang 1 & 2', 'ruangan'),
(45, 'Ruang Tunggu Pihak', 'non_ruangan'),
(46, 'Ruang Layanan', 'non_ruangan'),
(47, 'Sarang Laba-Laba', 'non_ruangan'),
(48, 'Taman Belakang Parkir Mobil Dinas', 'non_ruangan'),
(49, 'Area Dapur', 'non_ruangan'),
(50, 'Parkiran Motor', 'non_ruangan'),
(51, 'Area Genset', 'non_ruangan'),
(52, 'Kamar Mandi Lantai 1 Pegawai & Difabel', 'kamar_mandi'),
(53, 'Kamar Mandi Lantai 1 Pengunjung Pria & Wanita', 'kamar_mandi'),
(54, 'Kamar Mandi Belakang Ruang Sidang 2', 'kamar_mandi'),
(55, 'Tangga Depan Termasuk Taman Tangga', 'non_ruangan'),
(56, 'UKS', 'ruangan'),
(57, 'Pintu Masuk Pegawai', 'non_ruangan');

-- Data awal untuk pengguna
INSERT INTO users (name, username, password, role) VALUES
('Admin', 'admin', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'admin'),
('Sarjuni', 'sarjuni', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Tukiman', 'tukiman', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Anwar', 'anwar', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Faisal', 'faisal', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Fauzan', 'fauzan', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Eko', 'eko', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Mudzakir', 'mudzakir', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Adam', 'adam', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Adi', 'adi', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Aldi', 'aldi', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai'),
('Sri Sulanjari', 'sri', '$2y$10$eImiTXuWVxfM37uY4JANjQ==', 'pegawai');

-- Data awal untuk plotting ruangan ke pegawai
INSERT INTO room_assignments (user_id, room_id) VALUES
(2, 1), (2, 2), (2, 3), (2, 4),
(3, 5), (3, 6), (3, 7), (3, 8), (3, 9),
(4, 10), (4, 11), (4, 12), (4, 13),
(5, 14), (5, 15), (5, 16),
(6, 17), (6, 18), (6, 19), (6, 20), (6, 21),
(7, 22), (7, 23), (7, 24), (7, 25), (7, 26), (7, 27),
(8, 28), (8, 29), (8, 30), (8, 31), (8, 32), (8, 33), (8, 34),
(9, 35), (9, 36), (9, 37), (9, 38), (9, 39), (9, 40),
(10, 41), (10, 42), (10, 43), (10, 44), (10, 45), (10, 46), (10, 47), (10, 48), (10, 49),
(11, 50), (11, 51), (11, 52),
(12, 53), (12, 54), (12, 55), (12, 56), (12, 57), (12, 58), (12, 59), (12, 60), (12, 61);