<?php
/**
 * Script para Criar Tabela de Notificações Push
 */

require_once __DIR__ . '/config/bootstrap.php';

use ControleFrotas\Config\Database;
use ControleFrotas\Utils\Logger;

echo "🔧 CRIANDO TABELA DE NOTIFICAÇÕES PUSH\n";
echo "=======================================\n\n";

try {
    // Verificar se a tabela existe
    $tabelaExiste = Database::queryOne("SHOW TABLES LIKE 'notificacoes_push'");
    
    if ($tabelaExiste) {
        echo "✅ Tabela notificacoes_push já existe\n";
    } else {
        echo "📋 Criando tabela notificacoes_push...\n";
        
        $sql = "CREATE TABLE notificacoes_push (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id VARCHAR(50) NOT NULL,
            user_type ENUM('motorista', 'gestor') NOT NULL DEFAULT 'motorista',
            tipo VARCHAR(50) NOT NULL,
            titulo VARCHAR(255) NOT NULL,
            mensagem TEXT NOT NULL,
            solicitacao_id INT NULL,
            viagem_id INT NULL,
            fcm_token VARCHAR(500) NULL,
            fcm_message_id VARCHAR(100) NULL,
            fcm_response TEXT NULL,
            lida BOOLEAN DEFAULT FALSE,
            enviada BOOLEAN DEFAULT FALSE,
            data_envio TIMESTAMP NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            INDEX idx_user_id (user_id),
            INDEX idx_tipo (tipo),
            INDEX idx_lida (lida),
            INDEX idx_created_at (created_at),
            FOREIGN KEY (solicitacao_id) REFERENCES solicitacoes_viagem(id) ON DELETE SET NULL,
            FOREIGN KEY (viagem_id) REFERENCES viagens(id) ON DELETE SET NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
        
        Database::execute($sql);
        echo "✅ Tabela notificacoes_push criada com sucesso!\n";
    }
    
    // Verificar se a tabela fcm_tokens existe
    $tabelaTokensExiste = Database::queryOne("SHOW TABLES LIKE 'fcm_tokens'");
    
    if ($tabelaTokensExiste) {
        echo "✅ Tabela fcm_tokens já existe\n";
    } else {
        echo "📋 Criando tabela fcm_tokens...\n";
        
        $sql = "CREATE TABLE fcm_tokens (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id VARCHAR(50) NOT NULL,
            user_type ENUM('motorista', 'gestor') NOT NULL DEFAULT 'motorista',
            token VARCHAR(500) NOT NULL,
            device_id VARCHAR(100) NULL,
            ativo BOOLEAN DEFAULT TRUE,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            INDEX idx_user_id (user_id),
            INDEX idx_user_type (user_type),
            INDEX idx_token (token(100)),
            INDEX idx_ativo (ativo),
            UNIQUE KEY unique_user_token (user_id, token(100))
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
        
        Database::execute($sql);
        echo "✅ Tabela fcm_tokens criada com sucesso!\n";
    }
    
    // Verificar se a configuração FCM existe
    $configFCM = Database::queryOne("SELECT valor FROM configuracoes WHERE chave = 'fcm_server_key'");
    
    if ($configFCM) {
        echo "✅ Configuração FCM já existe\n";
    } else {
        echo "⚠️  Configuração FCM não encontrada\n";
        echo "💡 Execute: INSERT INTO configuracoes (chave, valor) VALUES ('fcm_server_key', 'SUA_CHAVE_FCM_AQUI');\n";
    }
    
    echo "\n📊 RESUMO:\n";
    echo "==========\n";
    
    // Contar notificações
    $totalNotificacoes = Database::queryOne("SELECT COUNT(*) as total FROM notificacoes_push")['total'];
    echo "📨 Total de notificações: $totalNotificacoes\n";
    
    // Contar tokens
    $totalTokens = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens WHERE ativo = TRUE")['total'];
    echo "📱 Total de tokens ativos: $totalTokens\n";
    
    // Contar por tipo
    $tokensPorTipo = Database::queryAll("SELECT user_type, COUNT(*) as total FROM fcm_tokens WHERE ativo = TRUE GROUP BY user_type");
    foreach ($tokensPorTipo as $tipo) {
        echo "   - $tipo[user_type]: $tipo[total]\n";
    }
    
    echo "\n✅ Verificação concluída!\n";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
    Logger::error('Erro ao criar tabelas de notificação', ['error' => $e->getMessage()]);
}
?> 
