<?php
// Yeni özellik tabloları kurulum scripti
// Bu script sadece mağaza durumu tablolarını oluşturur

header('Content-Type: text/html; charset=utf-8');

// Hata raporlamayı aç
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Veritabanı bağlantı bilgileri
$host = "localhost";
$username = "bcsmesru_database";
$password = "Hande124++";
$database = "bcsmesru_database";

echo "<!DOCTYPE html>";
echo "<html lang='tr'>";
echo "<head>";
echo "<meta charset='UTF-8'>";
echo "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
echo "<title>Mağaza Durumu Özelliği - Veritabanı Güncellemesi</title>";
echo "<style>";
echo "body { font-family: Arial, sans-serif; margin: 20px; background-color: #f5f5f5; }";
echo ".container { max-width: 800px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }";
echo ".success { color: #28a745; background: #d4edda; padding: 10px; border-radius: 4px; margin: 10px 0; }";
echo ".error { color: #dc3545; background: #f8d7da; padding: 10px; border-radius: 4px; margin: 10px 0; }";
echo ".info { color: #17a2b8; background: #d1ecf1; padding: 10px; border-radius: 4px; margin: 10px 0; }";
echo ".warning { color: #856404; background: #fff3cd; padding: 10px; border-radius: 4px; margin: 10px 0; }";
echo "pre { background: #f8f9fa; padding: 15px; border-radius: 4px; overflow-x: auto; }";
echo "h1 { color: #333; text-align: center; }";
echo "h2 { color: #666; border-bottom: 2px solid #eee; padding-bottom: 10px; }";
echo "</style>";
echo "</head>";
echo "<body>";

echo "<div class='container'>";
echo "<h1>🚀 Yeni Özellikler - Veritabanı Güncellemesi</h1>";

try {
    // Veritabanı bağlantısını test et
    echo "<h2>📡 Veritabanı Bağlantısı</h2>";
    echo "<div class='info'>Veritabanına bağlanılıyor...</div>";
    
    $pdo = new PDO("mysql:host=$host;dbname=$database;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    
    echo "<div class='success'>✅ Veritabanı bağlantısı başarılı!</div>";
    echo "<div class='info'>Host: $host<br>Database: $database<br>User: $username</div>";
    
    // Mevcut tabloları kontrol et
    echo "<h2>🔍 Mevcut Tablo Kontrolü</h2>";
    
    $checkTables = ['stores', 'store_statuses', 'store_status_logs', 'order_assignments'];
    $existingTables = [];
    
    foreach ($checkTables as $table) {
        try {
            $stmt = $pdo->query("SHOW TABLES LIKE '$table'");
            $exists = $stmt->rowCount() > 0;
            
            if ($exists) {
                $stmt = $pdo->query("SELECT COUNT(*) as count FROM $table");
                $count = $stmt->fetch()['count'];
                echo "<div class='warning'>⚠️ $table tablosu zaten mevcut ($count kayıt)</div>";
                $existingTables[] = $table;
            } else {
                echo "<div class='info'>📋 $table tablosu mevcut değil - oluşturulacak</div>";
            }
            
        } catch (PDOException $e) {
            echo "<div class='info'>📋 $table tablosu kontrol edilemedi - oluşturulacak</div>";
        }
    }
    
    // Yeni tabloları oluştur
    echo "<h2>🔧 Yeni Tablolar Oluşturuluyor</h2>";
    
    $successCount = 0;
    $errorCount = 0;
    
    // 0. stores tablosu (Mağaza bilgileri - API Key, Secret vb.)
    echo "<div class='info'><strong>0. stores tablosu oluşturuluyor (Mağaza Bilgileri)...</strong></div>";
    try {
        $sql = "CREATE TABLE IF NOT EXISTS stores (
            id INT AUTO_INCREMENT PRIMARY KEY,
            store_id VARCHAR(50) NOT NULL UNIQUE COMMENT 'Trendyol Mağaza ID',
            name VARCHAR(100) NOT NULL COMMENT 'Mağaza Adı',
            api_key VARCHAR(100) NOT NULL COMMENT 'Trendyol API Key',
            api_secret VARCHAR(100) NOT NULL COMMENT 'Trendyol API Secret',
            is_active BOOLEAN NOT NULL DEFAULT TRUE COMMENT 'Mağaza aktif mi?',
            is_deleted BOOLEAN NOT NULL DEFAULT FALSE COMMENT 'Soft delete',
            created_by INT NULL COMMENT 'Ekleyen kullanıcı',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            INDEX idx_store_id (store_id),
            INDEX idx_is_active (is_active),
            INDEX idx_is_deleted (is_deleted)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
        
        $pdo->exec($sql);
        echo "<div class='success'>✅ stores tablosu başarıyla oluşturuldu</div>";
        $successCount++;
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ stores tablosu oluşturulamadı: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // 1. store_statuses tablosu
    echo "<div class='info'><strong>1. store_statuses tablosu oluşturuluyor...</strong></div>";
    try {
        $sql = "CREATE TABLE IF NOT EXISTS store_statuses (
            id INT AUTO_INCREMENT PRIMARY KEY,
            store_id VARCHAR(50) NOT NULL UNIQUE,
            is_active BOOLEAN NOT NULL DEFAULT TRUE,
            updated_by INT NOT NULL,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            INDEX idx_store_id (store_id),
            INDEX idx_is_active (is_active),
            FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE CASCADE
        )";
        
        $pdo->exec($sql);
        echo "<div class='success'>✅ store_statuses tablosu başarıyla oluşturuldu</div>";
        $successCount++;
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ store_statuses tablosu oluşturulamadı: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // 2. store_status_logs tablosu
    echo "<div class='info'><strong>2. store_status_logs tablosu oluşturuluyor...</strong></div>";
    try {
        $sql = "CREATE TABLE IF NOT EXISTS store_status_logs (
            id INT AUTO_INCREMENT PRIMARY KEY,
            store_id VARCHAR(50) NOT NULL,
            old_status BOOLEAN,
            new_status BOOLEAN NOT NULL,
            changed_by INT NOT NULL,
            changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            reason TEXT,
            INDEX idx_store_id (store_id),
            INDEX idx_changed_at (changed_at),
            FOREIGN KEY (changed_by) REFERENCES users(id) ON DELETE CASCADE
        )";
        
        $pdo->exec($sql);
        echo "<div class='success'>✅ store_status_logs tablosu başarıyla oluşturuldu</div>";
        $successCount++;
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ store_status_logs tablosu oluşturulamadı: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // 3. order_assignments tablosu
    echo "<div class='info'><strong>3. order_assignments tablosu oluşturuluyor...</strong></div>";
    try {
        $sql = "CREATE TABLE IF NOT EXISTS order_assignments (
            id INT AUTO_INCREMENT PRIMARY KEY,
            order_number VARCHAR(100) NOT NULL,
            store_id VARCHAR(50) NOT NULL,
            assigned_to INT NOT NULL,
            assigned_by INT NOT NULL,
            assigned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            status ENUM('assigned', 'delivered', 'cancelled') DEFAULT 'assigned',
            delivered_at TIMESTAMP NULL,
            order_amount DECIMAL(10,2) DEFAULT 0.00 COMMENT 'Sipariş tutarı (TL)',
            notes TEXT,
            INDEX idx_order_number (order_number),
            INDEX idx_assigned_to (assigned_to),
            INDEX idx_store_id (store_id),
            INDEX idx_status (status),
            FOREIGN KEY (assigned_to) REFERENCES users(id) ON DELETE CASCADE,
            FOREIGN KEY (assigned_by) REFERENCES users(id) ON DELETE CASCADE,
            UNIQUE KEY unique_order_assignment (order_number, store_id)
        )";
        
        $pdo->exec($sql);
        echo "<div class='success'>✅ order_assignments tablosu başarıyla oluşturuldu</div>";
        $successCount++;
        
        // Mevcut tabloya order_amount kolonu ekle (eğer yoksa)
        try {
            $pdo->exec("ALTER TABLE order_assignments ADD COLUMN order_amount DECIMAL(10,2) DEFAULT 0.00 COMMENT 'Sipariş tutarı (TL)'");
            echo "<div class='success'>✅ order_amount kolonu eklendi</div>";
        } catch (PDOException $e) {
            if (strpos($e->getMessage(), 'Duplicate column name') !== false) {
                echo "<div class='info'>📋 order_amount kolonu zaten mevcut</div>";
            } else {
                echo "<div class='warning'>⚠️ order_amount kolonu eklenirken hata: " . $e->getMessage() . "</div>";
            }
        }
        
        // Öncelik sırası kolonu ekle (eğer yoksa)
        try {
            $pdo->exec("ALTER TABLE order_assignments ADD COLUMN priority_order INT DEFAULT 1 COMMENT 'Öncelik sırası (1-10)'");
            echo "<div class='success'>✅ priority_order kolonu eklendi</div>";
        } catch (PDOException $e) {
            if (strpos($e->getMessage(), 'Duplicate column name') !== false) {
                echo "<div class='info'>📋 priority_order kolonu zaten mevcut</div>";
            } else {
                echo "<div class='warning'>⚠️ priority_order kolonu eklenirken hata: " . $e->getMessage() . "</div>";
            }
        }
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ order_assignments tablosu oluşturulamadı: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // Varsayılan verileri ekle
    echo "<h2>📊 Varsayılan Veriler Ekleniyor</h2>";
    
    // Mağaza bilgilerini stores tablosuna ekle
    echo "<div class='info'><strong>Mağaza bilgileri (API Key/Secret) ekleniyor...</strong></div>";
    try {
        $storesData = [
            ['6674160', 'Elmacık Su', 'h9VPmARsgHPXjl8O7Qes', 'z6a0Pj0XJBgW8QqvQNLE'],
            ['6682408', 'Hemen Su', 'MvkwzxKoIYnzOi44n26w', 'Hng6xh2tI3rXdqAF2k3f'],
            ['6657797', 'Galata', 'gPk3KlPtz4ronSZt5s29', 'fnfGGGtJqd9zCRZmnzjq'],
            ['6682401', 'Bulak Su', '3PIZzsw1AkeLKMPnz6dO', 'ScJ3888Wg73aFPsSJ96B'],
            ['6669387', 'Zambak Su', 'VoadfEGdZU6SmhlN1skf', 'ECFVni60dXCIuHc7KxRv'],
            ['6666851', 'Çaykur Su', 'kkpJDHtzCJKMTgPdswq6', 'b0hyJvz9eqRhb0LztNca'],
            ['6650773', 'Lido Su', 'HJM7LlahP3mZyjE3IPur', 'jFKFhXZcSCmgA8EwU1HR'],
            ['6717527', 'Çaykur Su', 'xnqhLAaek1XGwlF7eknp', 'u3C0p09DqR5p5mFzIneW']
        ];
        
        $insertedStoreCount = 0;
        foreach ($storesData as $store) {
            $sql = "INSERT IGNORE INTO stores (store_id, name, api_key, api_secret, is_active, created_by) VALUES (?, ?, ?, ?, TRUE, 1)";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([$store[0], $store[1], $store[2], $store[3]]);
            
            if ($stmt->rowCount() > 0) {
                echo "<div class='success'>✅ {$store[1]} (ID: {$store[0]}) - API bilgileri eklendi</div>";
                $insertedStoreCount++;
            } else {
                echo "<div class='info'>📋 {$store[1]} (ID: {$store[0]}) zaten mevcut</div>";
            }
        }
        
        echo "<div class='success'>✅ $insertedStoreCount yeni mağaza kaydı eklendi</div>";
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ Mağaza bilgileri eklenemedi: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // Mağaza durumlarını ekle
    echo "<div class='info'><strong>Varsayılan mağaza durumları ekleniyor...</strong></div>";
    try {
        $stores = [
            ['6674160', 'Elmacık Su'],
            ['6682408', 'Hemen Su'],
            ['6657797', 'Galata'],
            ['6682401', 'Bulak Su'],
            ['6669387', 'Zambak Su'],
            ['6666851', 'Çaykur Su'],
            ['6650773', 'Lido Su']
        ];
        
        $insertedCount = 0;
        foreach ($stores as $store) {
            $sql = "INSERT IGNORE INTO store_statuses (store_id, is_active, updated_by) VALUES (?, TRUE, 1)";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([$store[0]]);
            
            if ($stmt->rowCount() > 0) {
                echo "<div class='success'>✅ {$store[1]} (ID: {$store[0]}) eklendi</div>";
                $insertedCount++;
            } else {
                echo "<div class='info'>📋 {$store[1]} (ID: {$store[0]}) zaten mevcut</div>";
            }
        }
        
        echo "<div class='success'>✅ $insertedCount yeni mağaza durumu kaydı eklendi</div>";
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ Varsayılan mağaza durumları eklenemedi: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // Log kayıtlarını ekle
    echo "<div class='info'><strong>Başlangıç log kayıtları ekleniyor...</strong></div>";
    try {
        $stores = ['6674160', '6682408', '6657797', '6682401', '6669387', '6666851', '6650773'];
        
        $insertedLogCount = 0;
        foreach ($stores as $storeId) {
            $sql = "INSERT IGNORE INTO store_status_logs (store_id, old_status, new_status, changed_by, reason) VALUES (?, NULL, TRUE, 1, 'Sistem başlangıç durumu')";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([$storeId]);
            
            if ($stmt->rowCount() > 0) {
                $insertedLogCount++;
            }
        }
        
        echo "<div class='success'>✅ $insertedLogCount yeni log kaydı eklendi</div>";
        
    } catch (PDOException $e) {
        echo "<div class='error'>❌ Başlangıç log kayıtları eklenemedi: " . $e->getMessage() . "</div>";
        $errorCount++;
    }
    
    // Final kontrol
    echo "<h2>🔍 Final Kontrol</h2>";
    
    foreach ($checkTables as $table) {
        try {
            $stmt = $pdo->query("SELECT COUNT(*) as count FROM $table");
            $count = $stmt->fetch()['count'];
            echo "<div class='success'>✅ $table tablosu: $count kayıt</div>";
            
        } catch (PDOException $e) {
            echo "<div class='error'>❌ $table tablosu kontrol edilemedi</div>";
        }
    }
    
    // Sonuç özeti
    echo "<h2>📊 Güncelleme Sonucu</h2>";
    
    if ($errorCount === 0) {
        echo "<div class='success'>";
        echo "<h3>🎉 Mağaza Durumu Özelliği Başarıyla Eklendi!</h3>";
        echo "<p>✅ Tüm tablolar ve veriler başarıyla oluşturuldu</p>";
        echo "<p>🏪 Artık admin panelinden mağaza durumlarını yönetebilirsiniz</p>";
        echo "<p>📱 Android uygulaması otomatik olarak mağaza durumlarını senkronize edecek</p>";
        echo "</div>";
    } else {
        echo "<div class='warning'>";
        echo "<h3>⚠️ Güncelleme Kısmen Tamamlandı</h3>";
        echo "<p>✅ Başarılı işlem sayısı: $successCount</p>";
        echo "<p>❌ Hatalı işlem sayısı: $errorCount</p>";
        echo "<p>Bazı tablolar zaten mevcut olabilir.</p>";
        echo "</div>";
    }
    
    // API testi önerisi
    echo "<div class='info'>";
    echo "<h3>🔧 Sonraki Adımlar</h3>";
    echo "<p>1. <strong>API Test:</strong> <code>php/api/store-status.php</code> dosyasını test edin</p>";
    echo "<p>2. <strong>Android App:</strong> Uygulamayı yeniden başlatın</p>";
    echo "<p>3. <strong>Admin Panel:</strong> Mağaza durumlarını yönetmeye başlayın</p>";
    echo "</div>";
    
} catch (Exception $e) {
    echo "<div class='error'>";
    echo "<h3>🚨 Kritik Hata!</h3>";
    echo "<p>Güncelleme sırasında kritik bir hata oluştu:</p>";
    echo "<pre>" . htmlspecialchars($e->getMessage()) . "</pre>";
    echo "<p>Lütfen veritabanı bağlantı bilgilerini kontrol edin ve tekrar deneyin.</p>";
    echo "</div>";
}

echo "<hr>";
echo "<div class='info'>";
echo "<p><strong>Not:</strong> Bu güncelleme scripti mağaza durumu özelliği için gerekli tabloları oluşturur.</p>";
echo "<p><strong>Güvenlik:</strong> Güncelleme tamamlandıktan sonra bu dosyayı silebilirsiniz.</p>";
echo "<p><strong>Tarih:</strong> " . date('d.m.Y H:i:s') . "</p>";
echo "</div>";

echo "</div>";
echo "</body>";
echo "</html>";
?>
