-- Database: db_barang_teknisi
-- Fixed for PHP 8.3 and MySQL 8.0 compatibility
-- Date: 2025-01-14

START TRANSACTION;


--
-- Database: `db_barang_teknisi`
--
CREATE DATABASE IF NOT EXISTS `db_barang_teknisi` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `db_barang_teknisi`;

-- --------------------------------------------------------

--
-- Struktur dari tabel `barang`
--

CREATE TABLE `barang` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kode_barang` varchar(50) NOT NULL,
  `nama_barang` varchar(100) NOT NULL,
  `kategori` varchar(50) DEFAULT NULL,
  `merk` varchar(50) DEFAULT NULL,
  `satuan` varchar(20) DEFAULT NULL,
  `stok` int(11) DEFAULT 0,
  `harga` decimal(15,2) DEFAULT 0.00,
  `deskripsi` text DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `kode_barang` (`kode_barang`),
  KEY `idx_kategori` (`kategori`),
  KEY `idx_stok` (`stok`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data untuk tabel `barang`
--

INSERT INTO `barang` (`id`, `kode_barang`, `nama_barang`, `kategori`, `merk`, `satuan`, `stok`, `harga`, `deskripsi`, `created_at`) VALUES
(1, 'BRG001', 'Router WiFi AC1200', 'Router', 'TP-Link', 'Unit', 15, 350000.00, 'Router WiFi dual band dengan kecepatan hingga 1200Mbps', '2025-01-14 13:55:53'),
(2, 'BRG002', 'Access Point Indoor', 'Access Point', 'Ubiquiti', 'Unit', 20, 450000.00, 'Access Point indoor untuk coverage area luas', '2025-01-14 13:55:53'),
(3, 'BRG003', 'Kabel UTP Cat6', 'Kabel', 'AMP', 'Meter', 500, 5000.00, 'Kabel UTP Cat6 berkualitas tinggi', '2025-01-14 13:55:53'),
(4, 'BRG004', 'Switch 8 Port Gigabit', 'Switch', 'Cisco', 'Unit', 12, 750000.00, 'Switch managed 8 port gigabit', '2025-01-14 13:55:53'),
(5, 'BRG005', 'ONT HG8145V5', 'ONT', 'Huawei', 'Unit', 30, 250000.00, 'ONT Fiber Optic Huawei HG8145V5', '2025-01-14 13:55:53');

-- --------------------------------------------------------

--
-- Struktur dari tabel `teknisi`
--

CREATE TABLE `teknisi` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(100) NOT NULL,
  `no_hp` varchar(20) DEFAULT NULL,
  `alamat` text DEFAULT NULL,
  `status` enum('aktif','nonaktif') DEFAULT 'aktif',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data untuk tabel `teknisi`
--

INSERT INTO `teknisi` (`id`, `nama`, `no_hp`, `alamat`, `status`, `created_at`) VALUES
(1, 'Budi Santoso', '081234567890', 'Jl. Raya No. 123, Jakarta', 'aktif', '2025-01-14 13:55:53'),
(2, 'Andi Pratama', '082345678901', 'Jl. Merdeka No. 45, Bandung', 'aktif', '2025-01-14 13:55:53'),
(3, 'Dedi Kurniawan', '083456789012', 'Jl. Sudirman No. 67, Surabaya', 'aktif', '2025-01-14 13:55:53');

-- --------------------------------------------------------

--
-- Struktur dari tabel `transaksi`
--

CREATE TABLE `transaksi` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `kode_transaksi` varchar(50) NOT NULL,
  `id_barang` int(11) NOT NULL,
  `id_teknisi` int(11) DEFAULT NULL,
  `id_user` int(11) NOT NULL,
  `tipe` enum('masuk','keluar') NOT NULL,
  `jumlah` int(11) NOT NULL,
  `tanggal` date NOT NULL,
  `keterangan` text DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `kode_transaksi` (`kode_transaksi`),
  KEY `id_barang` (`id_barang`),
  KEY `id_teknisi` (`id_teknisi`),
  KEY `id_user` (`id_user`),
  KEY `idx_tanggal` (`tanggal`),
  KEY `idx_tipe` (`tipe`),
  CONSTRAINT `transaksi_ibfk_1` FOREIGN KEY (`id_barang`) REFERENCES `barang` (`id`) ON DELETE CASCADE,
  CONSTRAINT `transaksi_ibfk_2` FOREIGN KEY (`id_teknisi`) REFERENCES `teknisi` (`id`) ON DELETE SET NULL,
  CONSTRAINT `transaksi_ibfk_3` FOREIGN KEY (`id_user`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data untuk tabel `transaksi` (Sample data)
--

INSERT INTO `transaksi` (`id`, `kode_transaksi`, `id_barang`, `id_teknisi`, `id_user`, `tipe`, `jumlah`, `tanggal`, `keterangan`, `created_at`) VALUES
(1, 'TRX-K-202501140001', 1, 1, 1, 'keluar', 2, '2025-01-14', 'Instalasi pelanggan baru', '2025-01-14 03:38:39'),
(2, 'TRX-M-202501140001', 4, NULL, 2, 'masuk', 1, '2025-01-14', 'Pembelian switch baru', '2025-01-14 03:47:44'),
(3, 'TRX-K-202501140002', 3, 1, 1, 'keluar', 100, '2025-01-14', 'Pemasangan kabel ke gedung A', '2025-01-14 04:37:49');

-- --------------------------------------------------------

--
-- Struktur dari tabel `log_aktivitas`
--

CREATE TABLE `log_aktivitas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(11) NOT NULL,
  `aktivitas` varchar(255) NOT NULL,
  `keterangan` text DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `id_user` (`id_user`),
  KEY `idx_created_at` (`created_at`),
  CONSTRAINT `log_aktivitas_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data untuk tabel `log_aktivitas` (Sample data)
--

INSERT INTO `log_aktivitas` (`id`, `id_user`, `aktivitas`, `keterangan`, `created_at`) VALUES
(1, 1, 'Login ke sistem', NULL, '2025-01-14 03:30:34'),
(2, 1, 'Menambah barang keluar', 'Kode: TRX-K-202501140001, Barang: Router WiFi AC1200, Teknisi: Budi Santoso, Jumlah: 2', '2025-01-14 03:38:39'),
(3, 2, 'Login ke sistem', NULL, '2025-01-14 03:40:52'),
(4, 2, 'Menambah barang masuk', 'Kode: TRX-M-202501140001, Barang: Switch 8 Port Gigabit, Jumlah: 1', '2025-01-14 03:47:44');

-- --------------------------------------------------------

--
-- Indexes untuk performa query
-- Sudah ditambahkan di CREATE TABLE di atas

-- --------------------------------------------------------

--
-- AUTO_INCREMENT untuk tabel yang dibuang
--

ALTER TABLE `barang`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

ALTER TABLE `log_aktivitas`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

ALTER TABLE `teknisi`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

ALTER TABLE `transaksi`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

-- --------------------------------------------------------

--
-- Constraints untuk data validation (MySQL 8.0+)
--

-- Constraint untuk stok tidak boleh negatif
ALTER TABLE `barang` 
ADD CONSTRAINT `chk_stok_positive` CHECK (`stok` >= 0);

-- Constraint untuk harga tidak boleh negatif
ALTER TABLE `barang` 
ADD CONSTRAINT `chk_harga_positive` CHECK (`harga` >= 0);

-- Constraint untuk jumlah transaksi harus positif
ALTER TABLE `transaksi` 
ADD CONSTRAINT `chk_jumlah_positive` CHECK (`jumlah` > 0);

-- --------------------------------------------------------

--
-- Create folder untuk uploads (instruksi untuk manual creation)
--

-- CATATAN: Folder berikut harus dibuat secara manual di sistem file:
-- 
-- mkdir -p uploads/profil
-- chmod 755 uploads
-- chmod 777 uploads/profil
--
-- Atau di Windows:
-- Buat folder: uploads/profil

-- --------------------------------------------------------

--
-- Informasi tambahan
--

-- Default Login:
-- Username: admin
-- Password: admin123
--
-- Username: agungp  
-- Password: agung123

COMMIT;

