<?php
/**
 * API LOGIN DEBUG - Versão simplificada para teste
 */

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Conectar ao banco
function conectarBanco() {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    try {
        $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,
        ]);
        return $pdo;
    } catch (PDOException $e) {
        throw new Exception('Erro de conexão: ' . $e->getMessage());
    }
}

// JWT simples
function criarTokenSimples($dados) {
    $header = base64_encode(json_encode(['typ' => 'JWT', 'alg' => 'HS256']));
    $payload = base64_encode(json_encode($dados));
    $signature = base64_encode(hash_hmac('sha256', "$header.$payload", 'secret_key', true));
    return "$header.$payload.$signature";
}

// Resposta padronizada
function resposta($sucesso, $dados = null, $mensagem = '', $codigo = 200) {
    http_response_code($codigo);
    echo json_encode([
        'sucesso' => $sucesso,
        'dados' => $dados,
        'mensagem' => $mensagem,
        'timestamp' => date('c')
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

// Log de debug
error_log("========== LOGIN DEBUG API ==========");
error_log("Método: " . $_SERVER['REQUEST_METHOD']);
error_log("GET: " . json_encode($_GET));
error_log("POST: " . json_encode($_POST));

$body = file_get_contents('php://input');
error_log("Body: " . $body);

// Obter credenciais (GET ou POST)
$email = '';
$senha = '';

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $email = isset($_GET['email']) ? $_GET['email'] : (isset($_GET['usuario']) ? $_GET['usuario'] : '');
    $senha = isset($_GET['senha']) ? $_GET['senha'] : '';
} else {
    $input = json_decode($body, true);
    $email = isset($input['email']) ? $input['email'] : (isset($input['usuario']) ? $input['usuario'] : '');
    $senha = isset($input['senha']) ? $input['senha'] : '';
}

error_log("Email/usuário: '$email'");
error_log("Senha: '$senha'");

if (empty($email) || empty($senha)) {
    resposta(false, null, 'Email/usuário e senha são obrigatórios', 400);
}

// Verificar se é admin
if (($email === 'admin@controledefrotas.com' && $senha === 'admin123') || 
    ($email === 'admin' && $senha === '123456')) {
    
    error_log("✅ Login admin bem-sucedido");
    
    $token = criarTokenSimples([
        'id' => 1,
        'email' => $email,
        'tipo' => 'admin',
        'exp' => time() + 3600
    ]);
    
    resposta(true, [
        'token' => $token,
        'usuario' => [
            'id' => 1,
            'email' => $email,
            'nome' => 'Administrador',
            'tipo' => 'admin'
        ]
    ], 'Login realizado com sucesso');
}

// Verificar motorista
try {
    $pdo = conectarBanco();
    
    $stmt = $pdo->prepare("
        SELECT id, nome, matricula, usuario, senha, status, telefone, cpf 
        FROM motoristas 
        WHERE (usuario = ? OR cpf = ? OR matricula = ?) AND status = 'ativo'
    ");
    $stmt->execute([$email, $email, $email]);
    $motorista = $stmt->fetch();
    
    error_log("Motorista encontrado: " . ($motorista ? 'SIM' : 'NÃO'));
    
    if ($motorista) {
        error_log("Dados do motorista: " . json_encode($motorista));
        
        if (password_verify($senha, $motorista['senha']) || $motorista['senha'] === $senha) {
            error_log("✅ Login motorista bem-sucedido: {$motorista['nome']}");
            
            $token = criarTokenSimples([
                'id' => $motorista['id'],
                'usuario' => $motorista['usuario'],
                'tipo' => 'motorista',
                'exp' => time() + 3600
            ]);
            
            resposta(true, [
                'token' => $token,
                'usuario' => [
                    'id' => $motorista['id'],
                    'nome' => $motorista['nome'],
                    'matricula' => $motorista['matricula'],
                    'usuario' => $motorista['usuario'],
                    'telefone' => $motorista['telefone'],
                    'tipo' => 'motorista'
                ]
            ], 'Login realizado com sucesso');
        } else {
            error_log("❌ Senha incorreta para motorista: {$motorista['nome']}");
        }
    }
    
    // Listar motoristas disponíveis para debug
    $stmt_all = $pdo->query("SELECT id, nome, usuario, matricula, status FROM motoristas WHERE status = 'ativo'");
    $todosMotoristas = $stmt_all->fetchAll();
    error_log("Motoristas disponíveis: " . json_encode($todosMotoristas));
    
} catch (Exception $e) {
    error_log("Erro no banco: " . $e->getMessage());
    resposta(false, null, 'Erro interno do servidor', 500);
}

error_log("❌ Login falhou - credenciais inválidas");
error_log("=======================================");

resposta(false, null, 'Credenciais inválidas', 401);
?> 
