-- Database Structure and Sample Data for Work Climate and Humidity Measurement
-- Based on PMK RI No.2 Tahun 2023

-- ------------------------------------------------------------------------------
-- Master Tables - Data Referensi
-- ------------------------------------------------------------------------------

-- Master Regulasi
CREATE TABLE IF NOT EXISTS master_regulasi (
    id_regulasi INT PRIMARY KEY,
    kode_regulasi VARCHAR(50) NOT NULL,
    nama_regulasi VARCHAR(255) NOT NULL,
    instansi_penerbit VARCHAR(100) NOT NULL,
    tanggal_terbit DATE NOT NULL,
    tanggal_berlaku DATE NOT NULL,
    deskripsi TEXT,
    file_path VARCHAR(255),
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- Master Parameter Iklim Kerja
CREATE TABLE IF NOT EXISTS master_parameter_iklim (
    id_parameter INT PRIMARY KEY,
    kode_parameter VARCHAR(20) NOT NULL,
    nama_parameter VARCHAR(100) NOT NULL,
    satuan VARCHAR(20),
    metode_analisis VARCHAR(100),
    biaya DECIMAL(10, 2),
    akreditasi BOOLEAN DEFAULT FALSE,
    keterangan TEXT,
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- Master Baku Mutu Iklim Kerja
CREATE TABLE IF NOT EXISTS master_bakumutu_iklim (
    id_bakumutu INT PRIMARY KEY,
    id_parameter INT NOT NULL,
    id_regulasi INT NOT NULL,
    jenis_ruangan VARCHAR(100) NOT NULL,
    nilai_min DECIMAL(6, 2),
    nilai_max DECIMAL(6, 2),
    keterangan TEXT,
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_parameter) REFERENCES master_parameter_iklim(id_parameter),
    FOREIGN KEY (id_regulasi) REFERENCES master_regulasi(id_regulasi)
);

-- Master Metode Sampling Iklim Kerja
CREATE TABLE IF NOT EXISTS master_metode_sampling_iklim (
    id_metode INT PRIMARY KEY,
    kode_metode VARCHAR(50) NOT NULL,
    nama_metode VARCHAR(255) NOT NULL,
    deskripsi TEXT,
    jenis_parameter VARCHAR(100),
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- Master Peralatan Pengukuran Iklim Kerja
CREATE TABLE IF NOT EXISTS master_peralatan_iklim (
    id_peralatan INT PRIMARY KEY,
    kode_peralatan VARCHAR(20) NOT NULL,
    nama_peralatan VARCHAR(100) NOT NULL,
    merk VARCHAR(100),
    model VARCHAR(100),
    serial_number VARCHAR(100),
    spesifikasi TEXT,
    tanggal_kalibrasi DATE,
    tanggal_kalibrasi_berikutnya DATE,
    status_kalibrasi VARCHAR(20),
    file_sertifikat VARCHAR(255),
    status BOOLEAN DEFAULT TRUE,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- ------------------------------------------------------------------------------
-- Transaction Tables - Data Transaksi
-- ------------------------------------------------------------------------------

-- Sampling Plan Pengukuran Iklim Kerja
CREATE TABLE IF NOT EXISTS trx_sampling_plan_iklim (
    id_sampling_plan INT PRIMARY KEY,
    kode_sampling_plan VARCHAR(50) NOT NULL,
    nama_project VARCHAR(255) NOT NULL,
    id_client INT NOT NULL,
    tanggal_rencana_sampling DATE NOT NULL,
    lokasi_sampling TEXT NOT NULL,
    jumlah_titik INT,
    status_approval VARCHAR(20) DEFAULT 'DRAFT',
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50)
);

-- Requisisi Peralatan untuk Pengukuran Iklim Kerja
CREATE TABLE IF NOT EXISTS trx_requisisi_peralatan_iklim (
    id_requisisi INT PRIMARY KEY,
    id_sampling_plan INT NOT NULL,
    tanggal_requisisi DATE NOT NULL,
    tanggal_kebutuhan DATE NOT NULL,
    status_requisisi VARCHAR(20) DEFAULT 'DRAFT',
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_sampling_plan) REFERENCES trx_sampling_plan_iklim(id_sampling_plan)
);

-- Detail Requisisi Peralatan
CREATE TABLE IF NOT EXISTS trx_requisisi_peralatan_iklim_detail (
    id_requisisi_detail INT PRIMARY KEY,
    id_requisisi INT NOT NULL,
    id_peralatan INT NOT NULL,
    jumlah INT NOT NULL,
    status_persetujuan VARCHAR(20) DEFAULT 'PENDING',
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_requisisi) REFERENCES trx_requisisi_peralatan_iklim(id_requisisi),
    FOREIGN KEY (id_peralatan) REFERENCES master_peralatan_iklim(id_peralatan)
);

-- Hasil Pengukuran Iklim Kerja
CREATE TABLE IF NOT EXISTS trx_hasil_ukur_iklim (
    id_hasil_ukur INT PRIMARY KEY,
    id_sampling_plan INT NOT NULL,
    kode_laporan VARCHAR(50) NOT NULL,
    tanggal_sampling DATE NOT NULL,
    waktu_mulai TIME,
    waktu_selesai TIME,
    kondisi_cuaca VARCHAR(100),
    petugas_sampling VARCHAR(100),
    status_laporan VARCHAR(20) DEFAULT 'DRAFT',
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_sampling_plan) REFERENCES trx_sampling_plan_iklim(id_sampling_plan)
);

-- Detail Hasil Pengukuran Iklim Kerja
CREATE TABLE IF NOT EXISTS trx_hasil_ukur_iklim_detail (
    id_hasil_ukur_detail INT PRIMARY KEY,
    id_hasil_ukur INT NOT NULL,
    kode_titik VARCHAR(20) NOT NULL,
    nama_lokasi VARCHAR(255) NOT NULL,
    jenis_ruangan VARCHAR(100) NOT NULL,
    id_parameter INT NOT NULL,
    hasil_pengukuran DECIMAL(6, 2) NOT NULL,
    baku_mutu_min DECIMAL(6, 2),
    baku_mutu_max DECIMAL(6, 2),
    id_metode INT NOT NULL,
    id_peralatan INT NOT NULL,
    status_kesesuaian VARCHAR(20),
    catatan TEXT,
    tanggal_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_input VARCHAR(50),
    FOREIGN KEY (id_hasil_ukur) REFERENCES trx_hasil_ukur_iklim(id_hasil_ukur),
    FOREIGN KEY (id_parameter) REFERENCES master_parameter_iklim(id_parameter),
    FOREIGN KEY (id_metode) REFERENCES master_metode_sampling_iklim(id_metode),
    FOREIGN KEY (id_peralatan) REFERENCES master_peralatan_iklim(id_peralatan)
);

-- ------------------------------------------------------------------------------
-- Sample Data Insertion
-- ------------------------------------------------------------------------------

-- Insert Data Master Regulasi
INSERT INTO master_regulasi (id_regulasi, kode_regulasi, nama_regulasi, instansi_penerbit, tanggal_terbit, tanggal_berlaku, deskripsi, file_path, status, user_input)
VALUES 
(1, 'PMK-02-2023', 'Peraturan Menteri Kesehatan Republik Indonesia Nomor 2 Tahun 2023 tentang Standar Baku Mutu Kesehatan Lingkungan dan Persyaratan Kesehatan', 'Kementerian Kesehatan RI', '2023-01-15', '2023-02-01', 'Standar Baku Mutu Kesehatan Lingkungan untuk Media Air, Udara, Tanah, Pangan, Sarana dan Bangunan, serta Vektor dan Binatang Pembawa Penyakit, dan Persyaratan Kesehatan', '/dokumen/regulasi/PMK_02_2023.pdf', TRUE, 'admin'),
(2, 'PERMENAKER-05-2018', 'Peraturan Menteri Ketenagakerjaan Republik Indonesia Nomor 5 Tahun 2018 tentang Keselamatan dan Kesehatan Kerja Lingkungan Kerja', 'Kementerian Ketenagakerjaan RI', '2018-04-17', '2018-05-01', 'Keselamatan dan Kesehatan Kerja Lingkungan Kerja meliputi faktor fisika, kimia, biologi, ergonomi, dan psikologi', '/dokumen/regulasi/PERMENAKER_05_2018.pdf', TRUE, 'admin');

-- Insert Data Master Parameter Iklim Kerja
INSERT INTO master_parameter_iklim (id_parameter, kode_parameter, nama_parameter, satuan, metode_analisis, biaya, akreditasi, keterangan, status, user_input)
VALUES 
(1, 'SUHU-01', 'Suhu Udara', '°C', 'SNI 7062:2019', 50000.00, TRUE, 'Pengukuran suhu udara dalam ruangan', TRUE, 'admin'),
(2, 'KELEM-01', 'Kelembaban Udara', '%RH', 'SNI 7062:2019', 50000.00, TRUE, 'Pengukuran kelembaban relatif udara dalam ruangan', TRUE, 'admin'),
(3, 'KEC-UDARA-01', 'Kecepatan Aliran Udara', 'm/s', 'SNI 7062:2019', 60000.00, TRUE, 'Pengukuran kecepatan aliran udara dalam ruangan', TRUE, 'admin'),
(4, 'ISBB-01', 'Indeks Suhu Basah dan Bola (ISBB)', '°C', 'SNI 7062:2019', 85000.00, TRUE, 'Pengukuran Indeks Suhu Basah dan Bola untuk analisis beban kerja', TRUE, 'admin');

-- Insert Data Master Baku Mutu Iklim Kerja
INSERT INTO master_bakumutu_iklim (id_bakumutu, id_parameter, id_regulasi, jenis_ruangan, nilai_min, nilai_max, keterangan, status, user_input)
VALUES 
-- Suhu Udara
(1, 1, 1, 'Ruang Administrasi/Kantor', 20.0, 25.0, 'Ruang kerja administrasi dan kantor', TRUE, 'admin'),
(2, 1, 1, 'Ruang Produksi', 23.0, 26.0, 'Area produksi dengan aktivitas fisik ringan sampai sedang', TRUE, 'admin'),
(3, 1, 1, 'Ruang Istirahat', 22.0, 28.0, 'Area istirahat, kantin, dan ruang tunggu', TRUE, 'admin'),
(4, 1, 1, 'Ruang Khusus', 18.0, 24.0, 'Ruang server, laboratorium, dan ruang khusus lainnya', TRUE, 'admin'),

-- Kelembaban Udara
(5, 2, 1, 'Ruang Administrasi/Kantor', 40.0, 60.0, 'Ruang kerja administrasi dan kantor', TRUE, 'admin'),
(6, 2, 1, 'Ruang Produksi', 40.0, 60.0, 'Area produksi dengan aktivitas fisik ringan sampai sedang', TRUE, 'admin'),
(7, 2, 1, 'Ruang Istirahat', 40.0, 60.0, 'Area istirahat, kantin, dan ruang tunggu', TRUE, 'admin'),
(8, 2, 1, 'Ruang Khusus', 40.0, 60.0, 'Ruang server, laboratorium, dan ruang khusus lainnya', TRUE, 'admin'),

-- Kecepatan Aliran Udara
(9, 3, 1, 'Ruang Administrasi/Kantor', 0.1, 0.2, 'Ruang kerja administrasi dan kantor', TRUE, 'admin'),
(10, 3, 1, 'Ruang Produksi', 0.1, 0.3, 'Area produksi dengan aktivitas fisik ringan sampai sedang', TRUE, 'admin'),
(11, 3, 1, 'Ruang Istirahat', 0.1, 0.25, 'Area istirahat, kantin, dan ruang tunggu', TRUE, 'admin'),
(12, 3, 1, 'Ruang Khusus', 0.1, 0.3, 'Ruang server, laboratorium, dan ruang khusus lainnya', TRUE, 'admin'),

-- ISBB (Indeks Suhu Basah dan Bola)
(13, 4, 2, 'Beban Kerja Ringan', NULL, 30.0, 'Alokasi istirahat 75% kerja, 25% istirahat', TRUE, 'admin'),
(14, 4, 2, 'Beban Kerja Sedang', NULL, 28.0, 'Alokasi istirahat 75% kerja, 25% istirahat', TRUE, 'admin'),
(15, 4, 2, 'Beban Kerja Berat', NULL, 25.0, 'Alokasi istirahat 75% kerja, 25% istirahat', TRUE, 'admin');

-- Insert Data Master Metode Sampling Iklim Kerja
INSERT INTO master_metode_sampling_iklim (id_metode, kode_metode, nama_metode, deskripsi, jenis_parameter, status, user_input)
VALUES 
(1, 'SNI-7062-2019-SUHU', 'SNI 7062:2019 - Pengukuran Suhu Udara', 'Metode standar pengukuran suhu udara menggunakan termometer ruangan', 'Suhu Udara', TRUE, 'admin'),
(2, 'SNI-7062-2019-KELEMBABAN', 'SNI 7062:2019 - Pengukuran Kelembaban Udara', 'Metode standar pengukuran kelembaban relatif udara menggunakan hygrometer', 'Kelembaban Udara', TRUE, 'admin'),
(3, 'SNI-7062-2019-ANEMO', 'SNI 7062:2019 - Pengukuran Kecepatan Aliran Udara', 'Metode standar pengukuran kecepatan aliran udara menggunakan anemometer', 'Kecepatan Aliran Udara', TRUE, 'admin'),
(4, 'SNI-7062-2019-ISBB', 'SNI 7062:2019 - Pengukuran ISBB', 'Metode standar pengukuran Indeks Suhu Basah dan Bola menggunakan WBGT meter', 'ISBB', TRUE, 'admin');

-- Insert Data Master Peralatan Pengukuran Iklim Kerja
INSERT INTO master_peralatan_iklim (id_peralatan, kode_peralatan, nama_peralatan, merk, model, serial_number, spesifikasi, tanggal_kalibrasi, tanggal_kalibrasi_berikutnya, status_kalibrasi, file_sertifikat, status, user_input)
VALUES 
(1, 'THERMO-01', 'Termohigrometer Digital', 'Lutron', 'PHB-318', 'LT12345678', 'Range suhu: -20 - 60°C, Range kelembaban: 10 - 95% RH, Resolusi: 0.1°C / 0.1% RH', '2023-05-10', '2024-05-10', 'VALID', '/dokumen/kalibrasi/thermo_lutron_2023.pdf', TRUE, 'admin'),
(2, 'THERMO-02', 'Termohigrometer Digital', 'Extech', 'RHT50', 'EX87654321', 'Range suhu: -30 - 70°C, Range kelembaban: 0 - 99% RH, Resolusi: 0.1°C / 0.1% RH', '2023-08-15', '2024-08-15', 'VALID', '/dokumen/kalibrasi/thermo_extech_2023.pdf', TRUE, 'admin'),
(3, 'ANEMO-01', 'Anemometer Digital', 'Lutron', 'AM-4214SD', 'LA23456789', 'Range kecepatan udara: 0.2 - 20.0 m/s, Resolusi: 0.01 m/s', '2023-03-20', '2024-03-20', 'VALID', '/dokumen/kalibrasi/anemo_lutron_2023.pdf', TRUE, 'admin'),
(4, 'WBGT-01', 'Wet Bulb Globe Temperature Meter', 'Extech', 'HT30', 'EX55667788', 'Range WBGT: 0 - 50°C, Range TA: 0 - 50°C, Range TG: 0 - 80°C, Range RH: 0 - 100%', '2023-06-05', '2024-06-05', 'VALID', '/dokumen/kalibrasi/wbgt_extech_2023.pdf', TRUE, 'admin'),
(5, 'THERMO-03', 'Termohigrometer Ruangan', 'Testo', '608-H1', 'TS12131415', 'Range suhu: -10 - 70°C, Range kelembaban: 10 - 98% RH, Akurasi: ±0.5°C / ±3% RH', '2023-07-22', '2024-07-22', 'VALID', '/dokumen/kalibrasi/thermo_testo_2023.pdf', TRUE, 'admin');

-- -----------------------------------------------------------------------------
-- Insert Contoh Data Transaksi
-- -----------------------------------------------------------------------------

-- Contoh Data Sampling Plan Pengukuran Iklim Kerja
INSERT INTO trx_sampling_plan_iklim (id_sampling_plan, kode_sampling_plan, nama_project, id_client, tanggal_rencana_sampling, lokasi_sampling, jumlah_titik, status_approval, catatan, tanggal_input, user_input)
VALUES 
(1, 'SP-IK-2024-001', 'Monitoring Iklim Kerja Semester I 2024 - PT. Indonesia Manufacturing Industry', 101, '2024-04-25', 'PT. Indonesia Manufacturing Industry, Jl. Industry Raya No. 123, Jakarta', 5, 'APPROVED', 'Monitoring rutin semester I tahun 2024 sesuai program K3', '2024-04-10 09:15:00', 'supervisor');

-- Contoh Data Requisisi Peralatan untuk Pengukuran Iklim Kerja
INSERT INTO trx_requisisi_peralatan_iklim (id_requisisi, id_sampling_plan, tanggal_requisisi, tanggal_kebutuhan, status_requisisi, catatan, tanggal_input, user_input)
VALUES 
(1, 1, '2024-04-15', '2024-04-25', 'APPROVED', 'Requisisi peralatan untuk monitoring iklim kerja PT. Indonesia Manufacturing Industry', '2024-04-15 10:30:00', 'officer');

-- Contoh Data Detail Requisisi Peralatan
INSERT INTO trx_requisisi_peralatan_iklim_detail (id_requisisi_detail, id_requisisi, id_peralatan, jumlah, status_persetujuan, catatan, tanggal_input, user_input)
VALUES 
(1, 1, 1, 1, 'APPROVED', 'Termohigrometer Digital Lutron untuk pengukuran suhu dan kelembaban', '2024-04-15 10:31:00', 'officer'),
(2, 1, 3, 1, 'APPROVED', 'Anemometer Digital Lutron untuk pengukuran kecepatan aliran udara', '2024-04-15 10:32:00', 'officer');

-- Contoh Data Hasil Pengukuran Iklim Kerja
INSERT INTO trx_hasil_ukur_iklim (id_hasil_ukur, id_sampling_plan, kode_laporan, tanggal_sampling, waktu_mulai, waktu_selesai, kondisi_cuaca, petugas_sampling, status_laporan, catatan, tanggal_input, user_input)
VALUES 
(1, 1, 'LHU/IKLIM/04/2024/001', '2024-04-25', '09:00:00', '11:15:00', 'Cuaca cerah, suhu luar 31°C', 'Deni Hermawan', 'FINAL', 'Pengukuran berjalan lancar sesuai dengan rencana', '2024-04-25 15:30:00', 'officer');

-- Contoh Data Detail Hasil Pengukuran Iklim Kerja
INSERT INTO trx_hasil_ukur_iklim_detail (id_hasil_ukur_detail, id_hasil_ukur, kode_titik, nama_lokasi, jenis_ruangan, id_parameter, hasil_pengukuran, baku_mutu_min, baku_mutu_max, id_metode, id_peralatan, status_kesesuaian, catatan, tanggal_input, user_input)
VALUES 
-- Main Meeting Room
(1, 1, 'T1', 'Main Meeting Room', 'Ruang Administrasi/Kantor', 1, 21.0, 20.0, 25.0, 1, 1, 'COMPLY', '', '2024-04-25 15:35:00', 'officer'),
(2, 1, 'T1', 'Main Meeting Room', 'Ruang Administrasi/Kantor', 2, 50.5, 40.0, 60.0, 2, 1, 'COMPLY', '', '2024-04-25 15:35:00', 'officer'),
(3, 1, 'T1', 'Main Meeting Room', 'Ruang Administrasi/Kantor', 3, 0.15, 0.1, 0.2, 3, 3, 'COMPLY', '', '2024-04-25 15:35:00', 'officer'),

-- HR Work Area
(4, 1, 'T2', 'HR Work Area', 'Ruang Administrasi/Kantor', 1, 22.0, 20.0, 25.0, 1, 1, 'COMPLY', '', '2024-04-25 15:45:00', 'officer'),
(5, 1, 'T2', 'HR Work Area', 'Ruang Administrasi/Kantor', 2, 52.0, 40.0, 60.0, 2, 1, 'COMPLY', '', '2024-04-25 15:45:00', 'officer'),
(6, 1, 'T2', 'HR Work Area', 'Ruang Administrasi/Kantor', 3, 0.12, 0.1, 0.2, 3, 3, 'COMPLY', '', '2024-04-25 15:45:00', 'officer'),

-- Server Room
(7, 1, 'T3', 'Server Room', 'Ruang Khusus', 1, 19.0, 18.0, 24.0, 1, 1, 'COMPLY', '', '2024-04-25 15:55:00', 'officer'),
(8, 1, 'T3', 'Server Room', 'Ruang Khusus', 2, 45.0, 40.0, 60.0, 2, 1, 'COMPLY', '', '2024-04-25 15:55:00', 'officer'),
(9, 1, 'T3', 'Server Room', 'Ruang Khusus', 3, 0.25, 0.1, 0.3, 3, 3, 'COMPLY', '', '2024-04-25 15:55:00', 'officer'),

-- Production Line A
(10, 1, 'T4', 'Production Line A', 'Ruang Produksi', 1, 26.0, 23.0, 26.0, 1, 1, 'COMPLY', '', '2024-04-25 16:05:00', 'officer'),
(11, 1, 'T4', 'Production Line A', 'Ruang Produksi', 2, 65.0, 40.0, 60.0, 2, 1, 'NOT_COMPLY', 'Kelembaban melebihi baku mutu, perlu perbaikan sistem ventilasi', '2024-04-25 16:05:00', 'officer'),
(12, 1, 'T4', 'Production Line A', 'Ruang Produksi', 3, 0.30, 0.1, 0.3, 3, 3, 'COMPLY', '', '2024-04-25 16:05:00', 'officer'),

-- Canteen Area
(13, 1, 'T5', 'Canteen Area', 'Ruang Istirahat', 1, 24.0, 22.0, 28.0, 1, 1, 'COMPLY', '', '2024-04-25 16:15:00', 'officer'),
(14, 1, 'T5', 'Canteen Area', 'Ruang Istirahat', 2, 55.0, 40.0, 60.0, 2, 1, 'COMPLY', '', '2024-04-25 16:15:00', 'officer'),
(15, 1, 'T5', 'Canteen Area', 'Ruang Istirahat', 3, 0.20, 0.1, 0.25, 3, 3, 'COMPLY', '', '2024-04-25 16:15:00', 'officer'); 