<?php
require_once __DIR__ . '/../config/database.php';

try {
    $database = new Database();
    $conn = $database->getConnection();
    
    echo "=== إنشاء نظام إدارة التصنيع المتقدم ===/n/n";
    
    // 1. جدول المواد الخام
    echo "1. إنشاء جدول المواد الخام (raw_materials).../n";
    $sql = "CREATE TABLE IF NOT EXISTS raw_materials (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        category VARCHAR(100) COMMENT 'زيوت، فيتامينات، عطور، مواد حافظة',
        unit ENUM('liter', 'ml', 'kg', 'gram', 'piece') NOT NULL DEFAULT 'ml',
        quantity DECIMAL(10,3) NOT NULL DEFAULT 0,
        unit_cost DECIMAL(10,2) NOT NULL DEFAULT 0,
        supplier_id INT,
        min_quantity DECIMAL(10,3) DEFAULT 10,
        expiry_date DATE NULL,
        notes TEXT,
        is_active BOOLEAN DEFAULT TRUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_category (category),
        INDEX idx_supplier (supplier_id),
        FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE SET NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول raw_materials/n";
    
    // 2. جدول مواد التعبئة
    echo "/n2. إنشاء جدول مواد التعبئة (packaging_materials).../n";
    $sql = "CREATE TABLE IF NOT EXISTS packaging_materials (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        type ENUM('bottle', 'jar', 'cap', 'dropper', 'spray', 'pump', 'tube') NOT NULL,
        size VARCHAR(50) COMMENT '30ml, 50ml, 100ml',
        material VARCHAR(50) COMMENT 'زجاج، بلاستيك، ألومنيوم',
        color VARCHAR(50),
        quantity INT NOT NULL DEFAULT 0,
        unit_cost DECIMAL(10,2) NOT NULL DEFAULT 0,
        supplier_id INT,
        min_quantity INT DEFAULT 50,
        notes TEXT,
        is_active BOOLEAN DEFAULT TRUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_type (type),
        INDEX idx_supplier (supplier_id),
        FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE SET NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول packaging_materials/n";
    
    // 3. جدول مواد التغليف
    echo "/n3. إنشاء جدول مواد التغليف (wrapping_materials).../n";
    $sql = "CREATE TABLE IF NOT EXISTS wrapping_materials (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        type ENUM('bubble', 'box', 'flyer', 'sticker', 'bag', 'tape', 'tissue') NOT NULL,
        unit ENUM('roll', 'meter', 'piece', 'kg') NOT NULL DEFAULT 'piece',
        quantity DECIMAL(10,2) NOT NULL DEFAULT 0,
        unit_cost DECIMAL(10,2) NOT NULL DEFAULT 0,
        supplier_id INT,
        min_quantity DECIMAL(10,2) DEFAULT 10,
        notes TEXT,
        is_active BOOLEAN DEFAULT TRUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_type (type),
        INDEX idx_supplier (supplier_id),
        FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE SET NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول wrapping_materials/n";
    
    // 4. جدول وصفات المنتجات
    echo "/n4. إنشاء جدول وصفات المنتجات (product_recipes).../n";
    $sql = "CREATE TABLE IF NOT EXISTS product_recipes (
        id INT AUTO_INCREMENT PRIMARY KEY,
        product_id INT NOT NULL,
        recipe_name VARCHAR(255) NOT NULL,
        batch_size INT NOT NULL DEFAULT 1 COMMENT 'عدد القطع في الدفعة',
        total_cost DECIMAL(10,2) DEFAULT 0 COMMENT 'التكلفة الإجمالية للدفعة',
        cost_per_unit DECIMAL(10,2) DEFAULT 0 COMMENT 'تكلفة القطعة الواحدة',
        notes TEXT,
        is_active BOOLEAN DEFAULT TRUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_product (product_id),
        FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول product_recipes/n";
    
    // 5. جدول مكونات الوصفة
    echo "/n5. إنشاء جدول مكونات الوصفة (recipe_ingredients).../n";
    $sql = "CREATE TABLE IF NOT EXISTS recipe_ingredients (
        id INT AUTO_INCREMENT PRIMARY KEY,
        recipe_id INT NOT NULL,
        material_type ENUM('raw', 'packaging', 'wrapping') NOT NULL,
        material_id INT NOT NULL,
        quantity_needed DECIMAL(10,3) NOT NULL COMMENT 'الكمية المطلوبة لدفعة واحدة',
        unit VARCHAR(20) NOT NULL,
        cost DECIMAL(10,2) DEFAULT 0 COMMENT 'التكلفة لهذا المكون',
        notes TEXT,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        INDEX idx_recipe (recipe_id),
        INDEX idx_material (material_type, material_id),
        FOREIGN KEY (recipe_id) REFERENCES product_recipes(id) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول recipe_ingredients/n";
    
    // 6. جدول دفعات الإنتاج
    echo "/n6. إنشاء جدول دفعات الإنتاج (production_batches).../n";
    $sql = "CREATE TABLE IF NOT EXISTS production_batches (
        id INT AUTO_INCREMENT PRIMARY KEY,
        batch_number VARCHAR(50) UNIQUE NOT NULL,
        recipe_id INT NOT NULL,
        quantity_produced INT NOT NULL,
        production_date DATE NOT NULL,
        total_cost DECIMAL(10,2) NOT NULL,
        cost_per_unit DECIMAL(10,2) NOT NULL,
        status ENUM('pending', 'in_progress', 'completed', 'cancelled') DEFAULT 'pending',
        produced_by INT COMMENT 'المستخدم الذي أنتج',
        notes TEXT,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_batch_number (batch_number),
        INDEX idx_recipe (recipe_id),
        INDEX idx_status (status),
        INDEX idx_production_date (production_date),
        FOREIGN KEY (recipe_id) REFERENCES product_recipes(id) ON DELETE RESTRICT,
        FOREIGN KEY (produced_by) REFERENCES users(id) ON DELETE SET NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول production_batches/n";
    
    // 7. جدول حركات المواد
    echo "/n7. إنشاء جدول حركات المواد (material_movements).../n";
    $sql = "CREATE TABLE IF NOT EXISTS material_movements (
        id INT AUTO_INCREMENT PRIMARY KEY,
        material_type ENUM('raw', 'packaging', 'wrapping') NOT NULL,
        material_id INT NOT NULL,
        movement_type ENUM('in', 'out', 'adjustment', 'production', 'return') NOT NULL,
        quantity DECIMAL(10,3) NOT NULL,
        previous_quantity DECIMAL(10,3) NOT NULL,
        new_quantity DECIMAL(10,3) NOT NULL,
        reference_type VARCHAR(50) COMMENT 'purchase_order, production_batch, adjustment',
        reference_id INT,
        notes TEXT,
        created_by INT,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        INDEX idx_material (material_type, material_id),
        INDEX idx_movement_type (movement_type),
        INDEX idx_created_at (created_at),
        FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول material_movements/n";
    
    // 8. جدول تنبيهات المواد
    echo "/n8. إنشاء جدول تنبيهات المواد (material_alerts).../n";
    $sql = "CREATE TABLE IF NOT EXISTS material_alerts (
        id INT AUTO_INCREMENT PRIMARY KEY,
        material_type ENUM('raw', 'packaging', 'wrapping') NOT NULL,
        material_id INT NOT NULL,
        alert_type ENUM('low_stock', 'out_of_stock', 'expiring_soon', 'expired') NOT NULL,
        current_quantity DECIMAL(10,3) NOT NULL,
        threshold_quantity DECIMAL(10,3),
        expiry_date DATE NULL,
        is_resolved BOOLEAN DEFAULT FALSE,
        resolved_at TIMESTAMP NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        INDEX idx_material (material_type, material_id),
        INDEX idx_is_resolved (is_resolved),
        INDEX idx_alert_type (alert_type)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";
    $conn->exec($sql);
    echo "   ✓ تم إنشاء جدول material_alerts/n";
    
    echo "/n✅ تم إنشاء جميع جداول نظام التصنيع بنجاح!/n";
    
    echo "/n📊 الجداول المُنشأة:/n";
    echo "   1. raw_materials - المواد الخام/n";
    echo "   2. packaging_materials - مواد التعبئة/n";
    echo "   3. wrapping_materials - مواد التغليف/n";
    echo "   4. product_recipes - وصفات المنتجات/n";
    echo "   5. recipe_ingredients - مكونات الوصفات/n";
    echo "   6. production_batches - دفعات الإنتاج/n";
    echo "   7. material_movements - حركات المواد/n";
    echo "   8. material_alerts - تنبيهات المواد/n";
    
    echo "/n🎯 النظام جاهز للاستخدام!/n";
    
} catch (PDOException $e) {
    echo "❌ خطأ: " . $e->getMessage() . "/n";
    echo "التفاصيل: " . $e->getTraceAsString() . "/n";
}
?>
