CREATE DATABASE iuran_warga;
USE iuran_warga;

-- 1. Tabel Users (Hak Akses)
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    nama_lengkap VARCHAR(100),
    role ENUM('Admin', 'Bendahara', 'RT') DEFAULT 'Bendahara',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 2. Tabel Warga (Data Induk)
CREATE TABLE warga (
    id INT AUTO_INCREMENT PRIMARY KEY,
    no_kk VARCHAR(20) NOT NULL,
    nama VARCHAR(100) NOT NULL,
    alamat TEXT,
    rt_rw VARCHAR(10),
    no_hp VARCHAR(15),
    foto VARCHAR(255) DEFAULT 'default.jpg',
    status ENUM('Aktif', 'Nonaktif') DEFAULT 'Aktif',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 3. Tabel Jenis Iuran
CREATE TABLE jenis_iuran (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_iuran VARCHAR(100) NOT NULL, -- Contoh: Iuran RKM, Kebersihan
    nominal DECIMAL(10,2) NOT NULL,
    periode ENUM('Bulanan', 'Tahunan', 'Insidentil') DEFAULT 'Bulanan'
);

-- 4. Tabel Pembayaran (Pemasukan)
CREATE TABLE pembayaran (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_warga INT NOT NULL,
    id_jenis_iuran INT NOT NULL,
    bulan VARCHAR(2) NOT NULL, -- 01 s/d 12
    tahun VARCHAR(4) NOT NULL, -- Contoh: 2024
    nominal DECIMAL(10,2) NOT NULL,
    tanggal_bayar DATE NOT NULL,
    id_user INT NOT NULL, -- User yang menginput
    FOREIGN KEY (id_warga) REFERENCES warga(id) ON DELETE CASCADE,
    FOREIGN KEY (id_jenis_iuran) REFERENCES jenis_iuran(id),
    FOREIGN KEY (id_user) REFERENCES users(id)
);

-- 5. Tabel Pengeluaran
CREATE TABLE pengeluaran (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tanggal DATE NOT NULL,
    kategori VARCHAR(50),
    keterangan TEXT NOT NULL,
    nominal DECIMAL(10,2) NOT NULL,
    bukti_foto VARCHAR(255),
    id_user INT NOT NULL,
    FOREIGN KEY (id_user) REFERENCES users(id)
);