<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'namoranexa';

$message = '';
$status = '';

if (isset($_POST['setup'])) {
    $admin_user = trim($_POST['admin_user']);
    $admin_pass = $_POST['admin_pass'];
    
    if (empty($admin_user) || empty($admin_pass)) {
        $message = "Username and password cannot be empty.";
        $status = "error";
    } else {
        try {
            // Connect without database first
            $conn = new PDO("mysql:host=$db_host", $db_user, $db_pass);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            
            // Create database
            $conn->exec("CREATE DATABASE IF NOT EXISTS `$db_name` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
            $conn->exec("USE `$db_name`");
            
            // Create Users Table
            $conn->exec("CREATE TABLE IF NOT EXISTS users (
                id INT AUTO_INCREMENT PRIMARY KEY,
                username VARCHAR(50) NOT NULL UNIQUE,
                password VARCHAR(255) NOT NULL,
                name VARCHAR(100) NOT NULL,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ) ENGINE=InnoDB;");
            
            // Create Settings Table
            $conn->exec("CREATE TABLE IF NOT EXISTS settings (
                id INT AUTO_INCREMENT PRIMARY KEY,
                company_name VARCHAR(100) DEFAULT 'PT Namora Nexa Niaga',
                tagline VARCHAR(200) DEFAULT 'Premium Natural Stone Supplier',
                email VARCHAR(100) DEFAULT 'info@namoranexa.com',
                phone VARCHAR(50) DEFAULT '+62 812-3456-7890',
                address TEXT,
                about_short TEXT,
                about_full TEXT,
                vision TEXT,
                mission TEXT,
                whatsapp_number VARCHAR(50) DEFAULT '6281234567890',
                instagram VARCHAR(100) DEFAULT '',
                facebook VARCHAR(100) DEFAULT '',
                map_iframe TEXT,
                hero_img_1 VARCHAR(255) DEFAULT 'hero_bg.jpg',
                hero_img_2 VARCHAR(255) DEFAULT 'hero_bg2.jpg',
                hero_img_3 VARCHAR(255) DEFAULT 'hero_bg3.jpg',
                about_img_1 VARCHAR(255) DEFAULT 'about_img.jpg',
                about_img_2 VARCHAR(255) DEFAULT 'about_img2.jpg',
                menu_about_visible TINYINT(1) DEFAULT 1,
                menu_products_visible TINYINT(1) DEFAULT 1,
                menu_gallery_visible TINYINT(1) DEFAULT 1,
                menu_contact_visible TINYINT(1) DEFAULT 1,
                menu_blog_visible TINYINT(1) DEFAULT 1
            ) ENGINE=InnoDB;");
            
            // Create Products Table
            $conn->exec("CREATE TABLE IF NOT EXISTS products (
                id INT AUTO_INCREMENT PRIMARY KEY,
                name VARCHAR(150) NOT NULL,
                category VARCHAR(100) NOT NULL,
                description TEXT,
                size_available VARCHAR(100),
                finishing VARCHAR(150),
                image VARCHAR(255),
                is_featured TINYINT(1) DEFAULT 0,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ) ENGINE=InnoDB;");
            
            // Create Gallery Table
            $conn->exec("CREATE TABLE IF NOT EXISTS gallery (
                id INT AUTO_INCREMENT PRIMARY KEY,
                title VARCHAR(150) NOT NULL,
                description VARCHAR(255),
                image VARCHAR(255) NOT NULL,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ) ENGINE=InnoDB;");
            
            // Create Messages Table
            $conn->exec("CREATE TABLE IF NOT EXISTS messages (
                id INT AUTO_INCREMENT PRIMARY KEY,
                name VARCHAR(100) NOT NULL,
                email VARCHAR(100) NOT NULL,
                phone VARCHAR(50),
                subject VARCHAR(150),
                message TEXT NOT NULL,
                is_read TINYINT(1) DEFAULT 0,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ) ENGINE=InnoDB;");
            
            // Create Categories Table
            $conn->exec("CREATE TABLE IF NOT EXISTS categories (
                id INT AUTO_INCREMENT PRIMARY KEY,
                name VARCHAR(100) UNIQUE NOT NULL,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ) ENGINE=InnoDB;");
            
            // Create Articles Table
            $conn->exec("CREATE TABLE IF NOT EXISTS articles (
                id INT AUTO_INCREMENT PRIMARY KEY,
                title VARCHAR(255) NOT NULL,
                slug VARCHAR(255) UNIQUE NOT NULL,
                content TEXT NOT NULL,
                image VARCHAR(255) DEFAULT NULL,
                author VARCHAR(100) DEFAULT 'Admin',
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            ) ENGINE=InnoDB;");
            
            // Reset database if requested
            if (isset($_POST['reset_db']) && $_POST['reset_db'] == '1') {
                $conn->exec("TRUNCATE TABLE users");
                $conn->exec("TRUNCATE TABLE settings");
                $conn->exec("TRUNCATE TABLE products");
                $conn->exec("TRUNCATE TABLE gallery");
                $conn->exec("TRUNCATE TABLE messages");
                $conn->exec("TRUNCATE TABLE categories");
                $conn->exec("TRUNCATE TABLE articles");
            }

            // Insert Default Admin
            $stmt = $conn->prepare("SELECT COUNT(*) FROM users");
            $stmt->execute();
            if ($stmt->fetchColumn() == 0) {
                $hashed_password = password_hash($admin_pass, PASSWORD_DEFAULT);
                $stmt = $conn->prepare("INSERT INTO users (username, password, name) VALUES (?, ?, ?)");
                $stmt->execute([$admin_user, $hashed_password, 'Administrator']);
            }
            
            // Insert Default Settings
            $stmt = $conn->prepare("SELECT COUNT(*) FROM settings");
            $stmt->execute();
            if ($stmt->fetchColumn() == 0) {
                $stmt = $conn->prepare("INSERT INTO settings (company_name, tagline, email, phone, address, about_short, about_full, vision, mission, whatsapp_number, map_iframe, hero_img_1, hero_img_2, hero_img_3, about_img_1, about_img_2, menu_about_visible, menu_products_visible, menu_gallery_visible, menu_contact_visible, menu_blog_visible) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                $stmt->execute([
                    'PT Namora Nexa Niaga',
                    'Supplier Batu Split, Agregat Konstruksi, Terrazzo & Batu Alam',
                    'info@namoranexa.com',
                    '+62 812-3456-7890',
                    'Jl. Raya Batu Split No. 88, Zona Industri, Jakarta Selatan, Indonesia',
                    'Penyedia utama batu split (1-2, 2-3), abu batu, batu screening, basecourse A, batu alam hias, dan produk terrazzo premium untuk konstruksi dan estetika arsitektur Anda.',
                    'Didirikan sebagai pemasok agregat dan batuan terintegrasi, PT Namora Nexa Niaga memproduksi dan mendistribusikan material konstruksi andal: batu split ukuran 1-2 dan 2-3, batu abu (abu batu), batu screening, basecourse A, hingga produk estetika seperti batu alam hias dan terrazzo. Kami melayani kebutuhan proyek perumahan, industri, komersial, hingga infrastruktur sipil berskala nasional dengan dukungan armada logistik yang solid dan jaminan harga langsung dari tambang.',
                    'Menjadi penyedia batu split, agregat konstruksi, dan material estetika terkemuka di Indonesia yang dikenal akan kualitas mutu produk, ketepatan volume kirim, dan integritas kemitraan.',
                    'Menyediakan batu split dan material agregat bersertifikat SNI serta produk terrazzo bernilai estetika tinggi. Menjamin keakuratan timbangan, volume murni, dan ketepatan jadwal kirim ke lokasi proyek. Memberikan solusi material terbaik bagi kontraktor, arsitek, developer, dan pabrik beton.',
                    '6281234567890',
                    '<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d126906.6384460592!2d106.77977464016766!3d-6.285817812543781!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x2e69f3e82d77d7bf%3A0x633e8b09d3bdfd9b!2sJakarta%20Selatan%2C%20Kota%20Jakarta%20Selatan%2C%20Daerah%20Khusus%20Ibukota%20Jakarta!5e0!3m2!1sid!2sid!4v1719910000000!5m2!1sid!2sid" width="100%" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>',
                    'hero_bg.jpg',
                    'hero_bg2.jpg',
                    'hero_bg3.jpg',
                    'about_img.jpg',
                    'about_img2.jpg',
                    1, 1, 1, 1, 1
                ]);
            }
            
            // Insert Default Categories
            $stmt = $conn->prepare("SELECT COUNT(*) FROM categories");
            $stmt->execute();
            if ($stmt->fetchColumn() == 0) {
                $cats = ['Batu Split', 'Abu Batu', 'Batu Screening', 'Base Course', 'Batu Alam', 'Terrazzo'];
                $stmt = $conn->prepare("INSERT INTO categories (name) VALUES (?)");
                foreach ($cats as $c) {
                    $stmt->execute([$c]);
                }
            }
            
            // Insert Default Articles
            $stmt = $conn->prepare("SELECT COUNT(*) FROM articles");
            $stmt->execute();
            if ($stmt->fetchColumn() == 0) {
                $articles = [
                    [
                        'Panduan Memilih Ukuran Batu Split untuk Cor Beton Berkualitas',
                        'panduan-memilih-ukuran-batu-split-untuk-cor-beton-berkualitas',
                        'Pengecoran struktur bangunan membutuhkan material agregat kasar berupa batu split yang tepat. Untuk proyek rumah tinggal, ukuran batu split 1-2 cm adalah standar utama karena celah besi tulangan kolom dapat terisi rapat tanpa adanya rongga udara. Sedangkan untuk proyek infrastruktur kelas berat seperti jalan tol, jembatan bentang panjang, dan bantalan rel kereta api, disarankan menggunakan batu split ukuran 2-3 cm. Pastikan batuan andesit yang Anda beli bebas dari lumpur karena lumpur dapat melemahkan ikatan kimia semen.',
                        'blog_split.jpg',
                        'Tim Konten Namora'
                    ],
                    [
                        'Mengenal Terrazzo Premium: Estetika Mewah Lantai Modern',
                        'mengenal-terrazzo-premium-estetika-mewah-lantai-modern',
                        'Terrazzo premium saat ini kembali menjadi tren utama dalam desain arsitektur kontemporer. Kombinasi pecahan batu marmer, granit, dan kuarsa yang dicampur dalam semen putih berkualitas menghasilkan pola mozaik acak yang sangat menawan setelah dipoles mengkilap. Material ini tidak hanya kuat dan tahan gores, tetapi juga memberikan kesan dingin dan mewah pada ruangan. Terrazzo sangat cocok diaplikasikan pada lantai lobi hotel, counter dapur kustom, dinding dekoratif, hingga area eksterior komersial.',
                        'blog_terrazzo.jpg',
                        'Desainer Interior'
                    ],
                    [
                        'Manfaat Abu Batu sebagai Pengganti Pasir Cor dalam Konstruksi',
                        'manfaat-abu-batu-sebagai-pengganti-pasir-cor-dalam-konstruksi',
                        'Dalam industri konstruksi modern, abu batu (stone dust) semakin populer digunakan sebagai agregat halus pengganti pasir sungai. Berasal dari pecahan batuan andesit keras saat proses pemecahan batu di mesin crusher, abu batu memiliki butiran bersudut tajam yang dapat saling mengunci dengan sangat baik. Penggunaan abu batu terbukti meningkatkan kekuatan tekan beton, membuat campuran paving block lebih padat, dan menghemat biaya produksi material konstruksi pracetak seperti kanstin, batako, dan roster.',
                        'blog_abubatu.jpg',
                        'Humas PT Namora'
                    ]
                ];
                $stmt = $conn->prepare("INSERT INTO articles (title, slug, content, image, author) VALUES (?, ?, ?, ?, ?)");
                foreach ($articles as $art) {
                    $stmt->execute($art);
                }
            }
            
            // Insert Default Products if empty
            $stmt = $conn->prepare("SELECT COUNT(*) FROM products");
            $stmt->execute();
            if ($stmt->fetchColumn() == 0) {
                $products = [
                    ['Batu Split Ukuran 1-2 cm', 'Batu Split', 'Batu split ukuran 1-2 cm merupakan material paling populer untuk campuran cor beton (readymix) gedung bertingkat, slab cor, jalan beton, dan industri beton precast.', '1-2 cm (10-20 mm)', 'Screening Crusher', 'batu_split_1_2.jpg', 1],
                    ['Batu Split Ukuran 2-3 cm', 'Batu Split', 'Sangat cocok untuk campuran pengecoran beton tebal, konstruksi jalan raya kelas berat, landasan pacu bandara, pelabuhan, dan bantalan rel kereta api.', '2-3 cm (20-30 mm)', 'Screening Crusher', 'batu_split_2_3.jpg', 1],
                    ['Abu Batu (Batu Abu)', 'Abu Batu', 'Abu batu hasil saringan mesin crusher batuan andesit, berfungsi sebagai pengganti pasir beton, bahan paving block, kanstin, batako, dan campuran aspal hotmix.', '0-5 mm', 'Dust Fine Screening', 'abu_batu.jpg', 1],
                    ['Batu Screening', 'Batu Screening', 'Pecahan batu kecil ukuran 5-10 mm. Sangat cocok sebagai agregat aspal jalan, campuran paving block presisi tinggi, dan cor beton tipis.', '0.5 - 1 cm', 'Crusher Screening', 'batu_screening.jpg', 0],
                    ['Base Course Grade A', 'Base Course', 'Material agregat lapis pondasi jalan kelas A. Kombinasi pecahan batu split, batu makadam, dan abu batu dengan gradasi kuat untuk pemadatan perkerasan jalan.', 'Gradasi Campuran', 'Crusher Aggregates', 'base_course_a.jpg', 0],
                    ['Batu Alam Andesit RTM', 'Batu Alam', 'Batu alam andesit potong Rata Mesin (RTM) berkualitas tinggi, sangat cantik untuk dinding aksen fasad rumah minimalis, pagar, teras, pilar, dan kolam renang.', '30x30 cm, 30x60 cm', 'Rata Mesin (RTM)', 'andesit_rtm.jpg', 0],
                    ['Terrazo (Terrazzo) Premium', 'Terrazzo', 'Material terrazzo cor bermotif corak pecahan marmer alami yang elegan. Sangat mewah untuk lantai mewah, dinding aksen, wastafel, dan meja dapur.', 'Custom Cor / Ubin', 'Polished / Honed', 'terrazzo_premium.jpg', 0]
                ];
                $stmt = $conn->prepare("INSERT INTO products (name, category, description, size_available, finishing, image, is_featured) VALUES (?, ?, ?, ?, ?, ?, ?)");
                foreach ($products as $p) {
                    $stmt->execute($p);
                }
            }

            // Create config/db.php
            if (!is_dir('config')) {
                mkdir('config', 0777, true);
            }
            $config_content = "<?php
\$db_host = '$db_host';
\$db_user = '$db_user';
\$db_pass = '$db_pass';
\$db_name = '$db_name';

try {
    \$pdo = new PDO(\"mysql:host=\$db_host;dbname=\$db_name;charset=utf8mb4\", \$db_user, \$db_pass);
    \$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    \$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (PDOException \$e) {
    die(\"Database connection failed: \" . \$e->getMessage());
}
?>";
            file_put_contents('config/db.php', $config_content);

            // Create uploads directory
            if (!is_dir('uploads')) {
                mkdir('uploads', 0777, true);
            }
            
            $message = "Database, tables, default admin, and configuration file have been successfully created!";
            $status = "success";
            
        } catch (PDOException $e) {
            $message = "Database Setup Failed: " . $e->getMessage();
            $status = "error";
        }
    }
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Database Setup - PT Namora Nexa Niaga</title>
    <link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
    <style>
        :root {
            --bg-color: #0f172a;
            --card-bg: rgba(30, 41, 59, 0.7);
            --border-color: rgba(255, 255, 255, 0.1);
            --primary: #c5a880;
            --primary-hover: #b3956d;
            --text-main: #f8fafc;
            --text-muted: #94a3b8;
            --success: #10b981;
            --error: #ef4444;
        }
        
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
            font-family: 'Plus Jakarta Sans', sans-serif;
        }
        
        body {
            background-color: var(--bg-color);
            background-image: 
                radial-gradient(at 0% 0%, rgba(197, 168, 128, 0.15) 0px, transparent 50%),
                radial-gradient(at 100% 100%, rgba(15, 23, 42, 0.8) 0px, transparent 50%);
            background-attachment: fixed;
            color: var(--text-main);
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            padding: 20px;
        }
        
        .container {
            width: 100%;
            max-width: 500px;
            background: var(--card-bg);
            border: 1px solid var(--border-color);
            border-radius: 16px;
            padding: 40px;
            box-shadow: 0 20px 40px rgba(0,0,0,0.3);
            backdrop-filter: blur(10px);
        }
        
        .logo-area {
            text-align: center;
            margin-bottom: 30px;
        }
        
        .logo-area h1 {
            font-size: 24px;
            font-weight: 700;
            color: var(--primary);
            letter-spacing: 1px;
            margin-bottom: 8px;
        }
        
        .logo-area p {
            color: var(--text-muted);
            font-size: 14px;
        }
        
        h2 {
            font-size: 18px;
            margin-bottom: 20px;
            text-align: center;
            font-weight: 500;
        }
        
        .alert {
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            font-size: 14px;
            line-height: 1.5;
        }
        
        .alert-success {
            background: rgba(16, 185, 129, 0.15);
            border: 1px solid var(--success);
            color: #34d399;
        }
        
        .alert-error {
            background: rgba(239, 68, 68, 0.15);
            border: 1px solid var(--error);
            color: #f87171;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        label {
            display: block;
            margin-bottom: 8px;
            font-size: 13px;
            font-weight: 600;
            color: var(--text-muted);
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }
        
        input {
            width: 100%;
            padding: 12px 16px;
            border-radius: 8px;
            border: 1px solid var(--border-color);
            background: rgba(15, 23, 42, 0.5);
            color: #fff;
            font-size: 15px;
            transition: all 0.3s ease;
        }
        
        input:focus {
            outline: none;
            border-color: var(--primary);
            box-shadow: 0 0 0 2px rgba(197, 168, 128, 0.2);
        }
        
        .btn {
            display: block;
            width: 100%;
            padding: 14px;
            background: var(--primary);
            border: none;
            border-radius: 8px;
            color: #0f172a;
            font-size: 16px;
            font-weight: 700;
            cursor: pointer;
            transition: all 0.3s ease;
            text-align: center;
            text-decoration: none;
            margin-top: 10px;
        }
        
        .btn:hover {
            background: var(--primary-hover);
            transform: translateY(-2px);
        }
        
        .footer-note {
            text-align: center;
            margin-top: 25px;
            font-size: 12px;
            color: var(--text-muted);
        }
        
        .links-success {
            margin-top: 20px;
            display: flex;
            gap: 15px;
        }
        
        .btn-outline {
            flex: 1;
            padding: 12px;
            border: 1px solid var(--primary);
            border-radius: 8px;
            color: var(--primary);
            text-align: center;
            text-decoration: none;
            font-weight: 600;
            font-size: 14px;
            transition: all 0.3s;
        }
        
        .btn-outline:hover {
            background: rgba(197, 168, 128, 0.1);
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="logo-area">
            <h1>PT NAMORA NEXA NIAGA</h1>
            <p>Sistem Setup Database Otomatis</p>
        </div>
        
        <?php if ($status == 'success'): ?>
            <div class="alert alert-success">
                <strong>Sukses!</strong> <?php echo $message; ?>
            </div>
            
            <p style="margin-bottom: 20px; text-align: center; color: var(--text-muted); font-size: 14px;">
                Anda sekarang dapat masuk ke Halaman Admin menggunakan kredensial yang baru saja Anda buat.
            </p>
            
            <div class="links-success">
                <a href="index.php" class="btn-outline">Lihat Website</a>
                <a href="admin/login.php" class="btn">Masuk Admin</a>
            </div>
            
        <?php else: ?>
            <?php if (!empty($message)): ?>
                <div class="alert alert-error">
                    <strong>Gagal!</strong> <?php echo $message; ?>
                </div>
            <?php endif; ?>
            
            <h2>Konfigurasi Administrator Baru</h2>
            
            <form action="" method="POST">
                <div class="form-group">
                    <label for="admin_user">Username Admin</label>
                    <input type="text" id="admin_user" name="admin_user" value="admin" required autocomplete="off">
                </div>
                <div class="form-group">
                    <label for="admin_pass">Password Admin</label>
                    <input type="password" id="admin_pass" name="admin_pass" value="admin123" required>
                </div>
                
                <div class="form-group" style="display: flex; align-items: center; gap: 10px; margin-top: 10px; margin-bottom: 20px;">
                    <input type="checkbox" id="reset_db" name="reset_db" value="1" style="width: auto; cursor: pointer; height: 18px; width: 18px;">
                    <label for="reset_db" style="display: inline; margin-bottom: 0; cursor: pointer; text-transform: none; font-size: 13px; font-weight: 500; color: var(--text-muted);">Hapus data lama & tulis ulang pengaturan (Reset Database)</label>
                </div>
                
                <button type="submit" name="setup" class="btn">Mulai Setup & Instalasi</button>
            </form>
        <?php endif; ?>
        
        <div class="footer-note">
            &copy; 2026 PT Namora Nexa Niaga. All rights reserved.
        </div>
    </div>
</body>
</html>
