diff --git a/database/sipantas_webgis.sql b/database/sipantas_webgis.sql new file mode 100644 index 0000000..6ad1cb4 --- /dev/null +++ b/database/sipantas_webgis.sql @@ -0,0 +1,213 @@ +CREATE DATABASE IF NOT EXISTS sipantas_webgis + CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; + +USE sipantas_webgis; + +DROP TABLE IF EXISTS pemberdayaan; +DROP TABLE IF EXISTS laporan_musibah; +DROP TABLE IF EXISTS keluarga_anggota; +DROP TABLE IF EXISTS riwayat_bantuan; +DROP TABLE IF EXISTS keluarga; +DROP TABLE IF EXISTS users; +DROP TABLE IF EXISTS rumah_ibadah; + +CREATE TABLE rumah_ibadah ( + id INT AUTO_INCREMENT PRIMARY KEY, + nama VARCHAR(150) NOT NULL, + alamat TEXT NOT NULL, + kategori ENUM('Masjid','Gereja','Vihara','Klenteng','Pura','Lainnya') NOT NULL DEFAULT 'Masjid', + pengurus VARCHAR(120) NULL, + kontak VARCHAR(50) NULL, + dana_sosial DECIMAL(15,2) NOT NULL DEFAULT 0, + kuota INT NOT NULL DEFAULT 0, + radius INT NOT NULL DEFAULT 500, + lat DECIMAL(10,7) NOT NULL, + lng DECIMAL(10,7) NOT NULL, + status ENUM('Aktif','Nonaktif') NOT NULL DEFAULT 'Aktif', + created_by INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB; + +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + nama VARCHAR(120) NOT NULL, + email VARCHAR(120) NOT NULL UNIQUE, + password_hash VARCHAR(255) NOT NULL, + role ENUM('admin','dinas','rumah_ibadah','relawan','masyarakat') NOT NULL, + rumah_ibadah_id INT NULL, + status_akun ENUM('Menunggu Verifikasi','Aktif','Ditolak') NOT NULL DEFAULT 'Aktif', + kontak VARCHAR(50) NULL, + alamat TEXT NULL, + nama_instansi VARCHAR(160) NULL, + kategori_instansi VARCHAR(50) NULL, + catatan_pengajuan TEXT NULL, + lat DECIMAL(10,7) NULL, + lng DECIMAL(10,7) NULL, + verified_by INT NULL, + verified_at DATETIME NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_users_rumah_ibadah FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) + ON DELETE SET NULL, + CONSTRAINT fk_users_verified_by FOREIGN KEY (verified_by) REFERENCES users(id) + ON DELETE SET NULL +) ENGINE=InnoDB; + +CREATE TABLE keluarga ( + id INT AUTO_INCREMENT PRIMARY KEY, + nama_kk VARCHAR(150) NOT NULL, + alamat TEXT NOT NULL, + no_kk VARCHAR(32) NULL, + nik VARCHAR(32) NULL, + kerentanan ENUM('Miskin Ekstrem','Sangat Miskin','Miskin','Rentan Miskin') NOT NULL DEFAULT 'Miskin', + kebutuhan ENUM('Sembako','Biaya Pendidikan','Kesehatan','Tempat Tinggal','Modal Usaha','Lainnya') NOT NULL DEFAULT 'Sembako', + status_verifikasi ENUM('Menunggu Verifikasi','Valid','Tidak Valid','Perlu Survei Ulang') NOT NULL DEFAULT 'Menunggu Verifikasi', + status_bantuan ENUM('Menunggu Verifikasi','Ditanggung','Blank Spot','Bantuan Pemerintah','Butuh Bantuan Lanjutan','Tidak Valid') NOT NULL DEFAULT 'Menunggu Verifikasi', + rumah_ibadah_id INT NULL, + catatan TEXT NULL, + lat DECIMAL(10,7) NOT NULL, + lng DECIMAL(10,7) NOT NULL, + created_by INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT fk_keluarga_rumah_ibadah FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) + ON DELETE SET NULL, + CONSTRAINT fk_keluarga_user FOREIGN KEY (created_by) REFERENCES users(id) + ON DELETE SET NULL +) ENGINE=InnoDB; + +CREATE TABLE riwayat_bantuan ( + id INT AUTO_INCREMENT PRIMARY KEY, + keluarga_id INT NOT NULL, + rumah_ibadah_id INT NULL, + tanggal_bantuan DATE NOT NULL, + jenis_bantuan VARCHAR(120) NOT NULL, + nilai_bantuan DECIMAL(15,2) NOT NULL DEFAULT 0, + catatan TEXT NULL, + created_by INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_bantuan_keluarga FOREIGN KEY (keluarga_id) REFERENCES keluarga(id) + ON DELETE CASCADE, + CONSTRAINT fk_bantuan_rumah_ibadah FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) + ON DELETE SET NULL, + CONSTRAINT fk_bantuan_user FOREIGN KEY (created_by) REFERENCES users(id) + ON DELETE SET NULL +) ENGINE=InnoDB; + + +CREATE TABLE keluarga_anggota ( + id INT AUTO_INCREMENT PRIMARY KEY, + keluarga_id INT NOT NULL, + nik VARCHAR(32) NULL, + nama VARCHAR(150) NOT NULL, + hubungan ENUM('Kepala Keluarga','Istri','Suami','Anak','Orang Tua','Mertua','Famili Lain','Lainnya') NOT NULL DEFAULT 'Lainnya', + jenis_kelamin ENUM('Laki-laki','Perempuan') NOT NULL DEFAULT 'Laki-laki', + tempat_lahir VARCHAR(100) NULL, + tanggal_lahir DATE NULL, + agama VARCHAR(50) NULL, + pendidikan VARCHAR(80) NULL, + pekerjaan VARCHAR(120) NULL, + status_perkawinan VARCHAR(80) NULL, + penghasilan DECIMAL(15,2) NOT NULL DEFAULT 0, + mampu_bekerja ENUM('Ya','Tidak') NOT NULL DEFAULT 'Tidak', + keahlian TEXT NULL, + status_pemberdayaan ENUM('Belum Dinilai','Layak Diberdayakan','Dalam Program','Mandiri','Tidak Layak') NOT NULL DEFAULT 'Belum Dinilai', + catatan TEXT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT fk_anggota_keluarga FOREIGN KEY (keluarga_id) REFERENCES keluarga(id) + ON DELETE CASCADE +) ENGINE=InnoDB; + +CREATE TABLE laporan_musibah ( + id INT AUTO_INCREMENT PRIMARY KEY, + keluarga_id INT NULL, + pelapor_id INT NULL, + jenis_musibah ENUM('Kebakaran','Banjir','Sakit Mendesak','Kehilangan Pekerjaan','Kematian Tulang Punggung Keluarga','Rumah Rusak','Lainnya') NOT NULL DEFAULT 'Lainnya', + tingkat_urgensi ENUM('Rendah','Sedang','Tinggi','Darurat') NOT NULL DEFAULT 'Sedang', + tanggal_kejadian DATE NOT NULL, + alamat TEXT NOT NULL, + lat DECIMAL(10,7) NOT NULL, + lng DECIMAL(10,7) NOT NULL, + deskripsi TEXT NOT NULL, + kebutuhan_mendesak TEXT NULL, + status ENUM('Baru','Diverifikasi','Diproses','Ditindaklanjuti','Selesai','Ditolak') NOT NULL DEFAULT 'Baru', + tindak_lanjut TEXT NULL, + handled_by INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT fk_musibah_keluarga FOREIGN KEY (keluarga_id) REFERENCES keluarga(id) + ON DELETE SET NULL, + CONSTRAINT fk_musibah_pelapor FOREIGN KEY (pelapor_id) REFERENCES users(id) + ON DELETE SET NULL, + CONSTRAINT fk_musibah_handler FOREIGN KEY (handled_by) REFERENCES users(id) + ON DELETE SET NULL +) ENGINE=InnoDB; + +CREATE TABLE pemberdayaan ( + id INT AUTO_INCREMENT PRIMARY KEY, + anggota_id INT NOT NULL, + keluarga_id INT NOT NULL, + jenis_program ENUM('Pelatihan Kerja','Modal Usaha','Pendampingan UMKM','Penempatan Kerja','Bantuan Alat Kerja','Lainnya') NOT NULL DEFAULT 'Pelatihan Kerja', + nama_program VARCHAR(160) NOT NULL, + penyelenggara VARCHAR(160) NULL, + tanggal_mulai DATE NULL, + status ENUM('Direkomendasikan','Berjalan','Selesai','Batal','Mandiri') NOT NULL DEFAULT 'Direkomendasikan', + catatan TEXT NULL, + created_by INT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT fk_pemberdayaan_anggota FOREIGN KEY (anggota_id) REFERENCES keluarga_anggota(id) + ON DELETE CASCADE, + CONSTRAINT fk_pemberdayaan_keluarga FOREIGN KEY (keluarga_id) REFERENCES keluarga(id) + ON DELETE CASCADE, + CONSTRAINT fk_pemberdayaan_user FOREIGN KEY (created_by) REFERENCES users(id) + ON DELETE SET NULL +) ENGINE=InnoDB; + +INSERT INTO rumah_ibadah +(nama, alamat, kategori, pengurus, kontak, dana_sosial, kuota, radius, lat, lng, status) +VALUES +('Masjid Al-Ikhlas', 'Pontianak Kota, Kalimantan Barat', 'Masjid', 'Bapak Rahman', '081234567890', 6000000, 4, 900, -0.0265000, 109.3427000, 'Aktif'), +('Gereja Kasih Damai', 'Pontianak Barat, Kalimantan Barat', 'Gereja', 'Ibu Maria', '081298765432', 4500000, 3, 700, -0.0345000, 109.3315000, 'Aktif'), +('Vihara Metta', 'Pontianak Selatan, Kalimantan Barat', 'Vihara', 'Bapak Steven', '081212121212', 3500000, 2, 600, -0.0455000, 109.3475000, 'Aktif'); + +-- Password awal semua akun: 123456 +-- Hash menggunakan SHA2 untuk memudahkan import data awal. +INSERT INTO users (nama, email, password_hash, role, rumah_ibadah_id, status_akun) VALUES +('Administrator SIPANTAS', 'admin@sipantas.local', SHA2('123456', 256), 'admin', NULL, 'Aktif'), +('Petugas Dinas Sosial', 'dinsos@sipantas.local', SHA2('123456', 256), 'dinas', NULL, 'Aktif'), +('Pengurus Masjid Al-Ikhlas', 'masjid@sipantas.local', SHA2('123456', 256), 'rumah_ibadah', 1, 'Aktif'), +('Relawan Lapangan', 'relawan@sipantas.local', SHA2('123456', 256), 'relawan', NULL, 'Aktif'), +('Warga Masyarakat', 'warga@sipantas.local', SHA2('123456', 256), 'masyarakat', NULL, 'Aktif'); + +INSERT INTO keluarga +(nama_kk, alamat, no_kk, nik, kerentanan, kebutuhan, status_verifikasi, status_bantuan, lat, lng, catatan) +VALUES +('Keluarga Bapak Ahmad', 'Gang Sejahtera, Pontianak', '6171xxxxxxxx0001', '6171xxxxxxxx0001', 'Miskin Ekstrem', 'Sembako', 'Valid', 'Menunggu Verifikasi', -0.0282000, 109.3441000, 'Data awal keluarga miskin ekstrem.'), +('Keluarga Ibu Siti', 'Jalan Kom Yos Sudarso, Pontianak', '6171xxxxxxxx0002', '6171xxxxxxxx0002', 'Sangat Miskin', 'Biaya Pendidikan', 'Valid', 'Menunggu Verifikasi', -0.0362000, 109.3298000, 'Membutuhkan bantuan biaya sekolah.'), +('Keluarga Bapak Joni', 'Pontianak Barat, Kalimantan Barat', '6171xxxxxxxx0003', '6171xxxxxxxx0003', 'Miskin', 'Kesehatan', 'Valid', 'Menunggu Verifikasi', -0.0478000, 109.3575000, 'Jarak cukup jauh dari rumah ibadah aktif.'), +('Keluarga Ibu Rina', 'Pontianak Selatan, Kalimantan Barat', '6171xxxxxxxx0004', '6171xxxxxxxx0004', 'Rentan Miskin', 'Modal Usaha', 'Menunggu Verifikasi', 'Menunggu Verifikasi', -0.0462000, 109.3459000, 'Usulan masyarakat, belum diverifikasi.'); + +INSERT INTO keluarga_anggota +(keluarga_id, nik, nama, hubungan, jenis_kelamin, tempat_lahir, tanggal_lahir, agama, pendidikan, pekerjaan, status_perkawinan, penghasilan, mampu_bekerja, keahlian, status_pemberdayaan, catatan) +VALUES +(1, '6171xxxxxxxx1001', 'Ahmad', 'Kepala Keluarga', 'Laki-laki', 'Pontianak', '1982-02-12', 'Islam', 'SMA', 'Buruh Harian', 'Kawin', 900000, 'Ya', 'Bangunan, angkut barang', 'Layak Diberdayakan', 'Perlu peluang kerja lebih stabil.'), +(1, '6171xxxxxxxx1002', 'Aminah', 'Istri', 'Perempuan', 'Pontianak', '1985-07-04', 'Islam', 'SMP', 'Ibu Rumah Tangga', 'Kawin', 0, 'Ya', 'Memasak, membuat kue', 'Layak Diberdayakan', 'Potensial untuk usaha makanan rumahan.'), +(1, '6171xxxxxxxx1003', 'Dani', 'Anak', 'Laki-laki', 'Pontianak', '2012-09-15', 'Islam', 'SD', 'Pelajar', 'Belum Kawin', 0, 'Tidak', '', 'Belum Dinilai', ''), +(2, '6171xxxxxxxx2001', 'Siti', 'Kepala Keluarga', 'Perempuan', 'Pontianak', '1988-03-21', 'Islam', 'SMA', 'Penjual Kecil', 'Cerai Hidup', 700000, 'Ya', 'Berjualan, memasak', 'Layak Diberdayakan', 'Butuh modal usaha kecil.'), +(2, '6171xxxxxxxx2002', 'Rafa', 'Anak', 'Laki-laki', 'Pontianak', '2010-01-10', 'Islam', 'SMP', 'Pelajar', 'Belum Kawin', 0, 'Tidak', '', 'Belum Dinilai', ''), +(3, '6171xxxxxxxx3001', 'Joni', 'Kepala Keluarga', 'Laki-laki', 'Pontianak', '1979-12-05', 'Islam', 'SD', 'Tidak Tetap', 'Kawin', 500000, 'Ya', 'Berkebun, memperbaiki barang sederhana', 'Layak Diberdayakan', 'Perlu pemeriksaan kesehatan sebelum program kerja berat.'), +(4, '6171xxxxxxxx4001', 'Rina', 'Kepala Keluarga', 'Perempuan', 'Pontianak', '1990-11-09', 'Islam', 'SMA', 'Tidak Bekerja', 'Kawin', 0, 'Ya', 'Menjahit dasar', 'Belum Dinilai', 'Usulan baru, perlu verifikasi.'); + +INSERT INTO laporan_musibah +(keluarga_id, pelapor_id, jenis_musibah, tingkat_urgensi, tanggal_kejadian, alamat, lat, lng, deskripsi, kebutuhan_mendesak, status) +VALUES +(3, 4, 'Sakit Mendesak', 'Tinggi', CURDATE(), 'Pontianak Barat, Kalimantan Barat', -0.0478000, 109.3575000, 'Kepala keluarga membutuhkan bantuan pemeriksaan kesehatan.', 'Transportasi ke fasilitas kesehatan dan bantuan biaya awal.', 'Baru'); + +INSERT INTO pemberdayaan +(anggota_id, keluarga_id, jenis_program, nama_program, penyelenggara, tanggal_mulai, status, catatan, created_by) +VALUES +(1, 1, 'Pelatihan Kerja', 'Pelatihan kerja dasar dan penyaluran harian', 'Dinas Sosial', CURDATE(), 'Direkomendasikan', 'Anggota masih produktif dan mampu bekerja.', 2); +