<?php
// Script para criar tabelas se não existirem

error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<h1>Criação de Tabelas - Controle de Frotas</h1>";

try {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    echo "✅ Conexão com banco OK<br><br>";
    
    // Criar tabela de motoristas
    echo "<h2>Criando Tabela de Motoristas</h2>";
    $sqlMotoristas = "
    CREATE TABLE IF NOT EXISTS motoristas (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        nome VARCHAR(100) NOT NULL,
        matricula VARCHAR(50) UNIQUE NOT NULL,
        cpf VARCHAR(14) UNIQUE NULL,
        telefone VARCHAR(20) NULL,
        cnh_numero VARCHAR(20) NULL,
        cnh_categoria VARCHAR(10) NULL,
        data_nascimento DATE NULL,
        foto_uri VARCHAR(500) NULL,
        usuario VARCHAR(50) NOT NULL,
        senha VARCHAR(255) NOT NULL,
        status ENUM('ativo', 'afastado', 'desligado') DEFAULT 'ativo',
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        
        INDEX idx_matricula (matricula),
        INDEX idx_cpf (cpf),
        INDEX idx_status (status),
        INDEX idx_usuario (usuario)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    ";
    
    $pdo->exec($sqlMotoristas);
    echo "✅ Tabela 'motoristas' criada/verificada<br>";
    
    // Criar tabela de veículos
    echo "<h2>Criando Tabela de Veículos</h2>";
    $sqlVeiculos = "
    CREATE TABLE IF NOT EXISTS veiculos (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        modelo VARCHAR(100) NOT NULL,
        placa VARCHAR(10) NOT NULL,
        marca VARCHAR(50) NULL,
        ano_fabricacao YEAR NULL,
        tipo ENUM('carro', 'moto', 'caminhao', 'van', 'onibus', 'outros') DEFAULT 'carro',
        cor VARCHAR(30) NULL,
        odometro_atual INT NULL DEFAULT 0 COMMENT 'Quilometragem atual',
        status ENUM('ativo', 'em_uso', 'manutencao', 'desativado') DEFAULT 'ativo',
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        
        UNIQUE KEY uk_placa (placa),
        INDEX idx_status (status),
        INDEX idx_tipo (tipo),
        INDEX idx_modelo (modelo)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    ";
    
    $pdo->exec($sqlVeiculos);
    echo "✅ Tabela 'veiculos' criada/verificada<br>";
    
    // Criar tabela de usuários (para compatibilidade)
    echo "<h2>Criando Tabela de Usuários</h2>";
    $sqlUsuarios = "
    CREATE TABLE IF NOT EXISTS usuarios (
        id VARCHAR(50) PRIMARY KEY,
        nome VARCHAR(100) NOT NULL,
        email VARCHAR(150) UNIQUE NOT NULL,
        senha VARCHAR(255) NOT NULL,
        cargo ENUM('Técnico', 'Administrador', 'Supervisor') DEFAULT 'Técnico',
        ativo BOOLEAN DEFAULT TRUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        ultimo_login TIMESTAMP NULL,
        token_fcm VARCHAR(255) NULL COMMENT 'Token para notificações push',
        
        INDEX idx_email (email),
        INDEX idx_ativo (ativo),
        INDEX idx_cargo (cargo)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    ";
    
    $pdo->exec($sqlUsuarios);
    echo "✅ Tabela 'usuarios' criada/verificada<br>";
    
    // Criar tabela de viagens
    echo "<h2>Criando Tabela de Viagens</h2>";
    $sqlViagens = "
    CREATE TABLE IF NOT EXISTS viagens (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        tecnico_id VARCHAR(50) NOT NULL,
        veiculo_id BIGINT NOT NULL,
        cliente VARCHAR(200) NOT NULL,
        motivo TEXT NOT NULL,
        km_inicial INT NOT NULL,
        km_final INT NULL,
        km_gps_final INT NULL COMMENT 'KM calculado via GPS',
        data_inicio TIMESTAMP NOT NULL,
        data_fim TIMESTAMP NULL,
        latitude_inicial DECIMAL(10, 8) NULL,
        longitude_inicial DECIMAL(11, 8) NULL,
        latitude_final DECIMAL(10, 8) NULL,
        longitude_final DECIMAL(11, 8) NULL,
        observacoes TEXT NULL,
        sincronizado BOOLEAN DEFAULT FALSE,
        trajeto JSON NULL COMMENT 'Pontos GPS do trajeto como JSON',
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        
        INDEX idx_tecnico (tecnico_id),
        INDEX idx_veiculo (veiculo_id),
        INDEX idx_data_inicio (data_inicio),
        INDEX idx_data_fim (data_fim),
        INDEX idx_sincronizado (sincronizado),
        INDEX idx_cliente (cliente),
        INDEX idx_status (data_fim) COMMENT 'Para identificar viagens em andamento'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    ";
    
    $pdo->exec($sqlViagens);
    echo "✅ Tabela 'viagens' criada/verificada<br>";
    
    // Inserir dados de teste
    echo "<h2>Inserindo Dados de Teste</h2>";
    
    // Verificar se já existem motoristas
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM motoristas");
    $result = $stmt->fetch();
    
    if ($result['total'] == 0) {
        $sqlTestMotorista = "
        INSERT INTO motoristas (nome, matricula, cpf, telefone, usuario, senha, status) 
        VALUES (?, ?, ?, ?, ?, ?, 'ativo')
        ";
        
        $stmt = $pdo->prepare($sqlTestMotorista);
        $stmt->execute([
            'João da Silva',
            'MOT001',
            '12345678901',
            '(11) 99999-9999',
            'joao.silva',
            password_hash('123456', PASSWORD_DEFAULT)
        ]);
        echo "✅ Motorista de teste inserido<br>";
    } else {
        echo "ℹ️ Motoristas já existem no banco<br>";
    }
    
    // Verificar se já existem veículos
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM veiculos");
    $result = $stmt->fetch();
    
    if ($result['total'] == 0) {
        $sqlTestVeiculo = "
        INSERT INTO veiculos (modelo, placa, marca, ano_fabricacao, tipo, cor, status) 
        VALUES (?, ?, ?, ?, ?, ?, 'ativo')
        ";
        
        $stmt = $pdo->prepare($sqlTestVeiculo);
        $stmt->execute([
            'Civic',
            'ABC1234',
            'Honda',
            2020,
            'carro',
            'Branco'
        ]);
        echo "✅ Veículo de teste inserido<br>";
    } else {
        echo "ℹ️ Veículos já existem no banco<br>";
    }
    
    echo "<br><h2>✅ Configuração Completa!</h2>";
    echo "<p>Agora você pode testar o cadastro na interface web.</p>";
    echo "<p><a href='admin/cadastros.html' target='_blank'>Abrir Interface de Cadastros</a></p>";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "<br>";
}
?> 
