<?php
/**
 * Script de mise à jour de la base de données pour le système email
 * À exécuter une seule fois pour mettre à jour la table notification_log
 */

include 'config/connexion.php';

echo "<!DOCTYPE html>
<html>
<head>
    <title>Mise à jour Base de Données - Email</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        .success { color: green; background: #e8f5e8; padding: 10px; border-radius: 5px; margin: 10px 0; }
        .error { color: red; background: #f5e8e8; padding: 10px; border-radius: 5px; margin: 10px 0; }
        .info { color: blue; background: #e8f0f5; padding: 10px; border-radius: 5px; margin: 10px 0; }
        .warning { color: orange; background: #fff3cd; padding: 10px; border-radius: 5px; margin: 10px 0; }
        code { background: #f4f4f4; padding: 2px 5px; border-radius: 3px; }
    </style>
</head>
<body>
    <h1>📧 Mise à jour Base de Données - Support Email</h1>";

try {
    // Vérifier si la table notification_log existe
    $check_table = "SHOW TABLES LIKE 'notification_log'";
    $result = $conn->query($check_table);
    
    if ($result->num_rows == 0) {
        echo "<div class='info'>Table <code>notification_log</code> n'existe pas. Création de la nouvelle table...</div>";
        
        // Créer la nouvelle table avec support email
        $create_table = "CREATE TABLE notification_log (
            id INT AUTO_INCREMENT PRIMARY KEY,
            policy_id INT NOT NULL,
            client_cin VARCHAR(20),
            notification_type ENUM('WHATSAPP', 'EMAIL') DEFAULT 'WHATSAPP',
            phone_email VARCHAR(255),
            message TEXT,
            sent_at DATETIME DEFAULT CURRENT_TIMESTAMP,
            status ENUM('pending', 'sent', 'failed') DEFAULT 'pending',
            INDEX(policy_id),
            INDEX(client_cin),
            INDEX(notification_type),
            INDEX(sent_at)
        )";
        
        if ($conn->query($create_table)) {
            echo "<div class='success'>✅ Table <code>notification_log</code> créée avec succès !</div>";
        } else {
            throw new Exception("Erreur lors de la création de la table : " . $conn->error);
        }
    } else {
        echo "<div class='info'>Table <code>notification_log</code> existe déjà. Vérification des colonnes...</div>";
        
        // Vérifier et ajouter les colonnes manquantes
        $columns_to_add = [
            'client_cin' => "VARCHAR(20) AFTER policy_id",
            'notification_type' => "ENUM('WHATSAPP', 'EMAIL') DEFAULT 'WHATSAPP' AFTER client_cin",
            'phone_email' => "VARCHAR(255) AFTER notification_type"
        ];
        
        foreach ($columns_to_add as $column_name => $column_definition) {
            // Vérifier si la colonne existe
            $check_column = "SHOW COLUMNS FROM notification_log LIKE '$column_name'";
            $column_result = $conn->query($check_column);
            
            if ($column_result->num_rows == 0) {
                echo "<div class='info'>Ajout de la colonne <code>$column_name</code>...</div>";
                
                $add_column = "ALTER TABLE notification_log ADD COLUMN $column_name $column_definition";
                if ($conn->query($add_column)) {
                    echo "<div class='success'>✅ Colonne <code>$column_name</code> ajoutée avec succès !</div>";
                } else {
                    throw new Exception("Erreur lors de l'ajout de la colonne $column_name : " . $conn->error);
                }
            } else {
                echo "<div class='success'>✅ Colonne <code>$column_name</code> existe déjà.</div>";
            }
        }
        
        // Ajouter les index s'ils n'existent pas
        $indexes_to_add = [
            'idx_client_cin' => 'client_cin',
            'idx_notification_type' => 'notification_type'
        ];
        
        foreach ($indexes_to_add as $index_name => $index_column) {
            try {
                $add_index = "ALTER TABLE notification_log ADD INDEX $index_name ($index_column)";
                $conn->query($add_index);
                echo "<div class='success'>✅ Index <code>$index_name</code> ajouté.</div>";
            } catch (Exception $e) {
                // L'index existe peut-être déjà, ce n'est pas grave
                echo "<div class='info'>Index <code>$index_name</code> existe probablement déjà.</div>";
            }
        }
        
        // Migrer les anciennes données si nécessaire
        $migrate_data = "UPDATE notification_log 
                        SET phone_email = client_phone, 
                            notification_type = 'WHATSAPP' 
                        WHERE phone_email IS NULL AND client_phone IS NOT NULL";
        
        if ($conn->query($migrate_data)) {
            $affected_rows = $conn->affected_rows;
            if ($affected_rows > 0) {
                echo "<div class='success'>✅ Migration de $affected_rows enregistrements existants.</div>";
            }
        }
    }
    
    // Vérifier la structure finale
    echo "<div class='info'><h3>📋 Structure finale de la table :</h3>";
    $describe = "DESCRIBE notification_log";
    $result = $conn->query($describe);
    
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr style='background: #f0f0f0;'><th>Colonne</th><th>Type</th><th>Null</th><th>Key</th><th>Default</th></tr>";
    while ($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>" . $row['Field'] . "</td>";
        echo "<td>" . $row['Type'] . "</td>";
        echo "<td>" . $row['Null'] . "</td>";
        echo "<td>" . $row['Key'] . "</td>";
        echo "<td>" . ($row['Default'] ?? 'NULL') . "</td>";
        echo "</tr>";
    }
    echo "</table></div>";
    
    echo "<div class='success'>
        <h3>✅ Mise à jour terminée avec succès !</h3>
        <p>Le système de notifications par email est maintenant prêt à être utilisé.</p>
        <p><strong>Prochaines étapes :</strong></p>
        <ul>
            <li>Configurez les paramètres SMTP dans <code>includes/email_functions.php</code></li>
            <li>Testez l'envoi d'email avec <a href='test_email_config.php'>test_email_config.php</a></li>
            <li>Utilisez <a href='notifications_expiration.php'>notifications_expiration.php</a> pour envoyer des notifications</li>
        </ul>
    </div>";
    
} catch (Exception $e) {
    echo "<div class='error'>❌ Erreur : " . $e->getMessage() . "</div>";
}

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