<?php
// api/login.php - Com Registro de Logs
session_start();
header('Content-Type: application/json');

// Conecta ao banco e carrega o gravador de logs
require_once '../includes/db.php'; 
require_once '../includes/logger.php'; // <--- OBRIGATÓRIO PARA OS LOGS FUNCIONAREM

// Recebe os dados do formulário
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
$ip = $_SERVER['REMOTE_ADDR']; // Pega o IP de quem está tentando logar

if (empty($username) || empty($password)) {
    echo json_encode(['status' => false, 'title' => 'Preencha todos os campos!']);
    exit;
}

try {
    // 1. Tenta buscar na tabela de ADMINISTRADORES (adm)
    $stmt = $pdo->prepare("SELECT * FROM adm WHERE username = :u LIMIT 1");
    $stmt->execute(['u' => $username]);
    $admin = $stmt->fetch(PDO::FETCH_ASSOC);

    // Verifica senha do Admin
    if ($admin && $admin['password'] === $password) {
        // Sucesso ADMIN
        $_SESSION['logged_in_fxtream'] = true;
        $_SESSION['user_id'] = $admin['id'];
        $_SESSION['username'] = $admin['username'];
        $_SESSION['role'] = 'admin'; 

        // >>> GRAVA LOG DE SUCESSO <<<
        Logger::login($pdo, $admin['id'], 'Success', $ip);

        echo json_encode([
            'status' => true,
            'icon' => 'success',
            'title' => 'Bem-vindo, Admin!',
            'url' => 'dashboard.php'
        ]);
        exit;
    }

    // 2. Se não achou em ADM, tenta na tabela de REVENDEDORES
    $stmt = $pdo->prepare("SELECT * FROM revendedores WHERE username = :u LIMIT 1");
    $stmt->execute(['u' => $username]);
    $reseller = $stmt->fetch(PDO::FETCH_ASSOC);

    // Verifica senha do Revendedor
    if ($reseller && $reseller['password'] === $password) {
        
        // Verifica se está ativo
        if ($reseller['active'] != 1) {
            // Log de falha (Conta desativada)
            Logger::login($pdo, $reseller['id'], 'Failed: Banned', $ip);
            
            echo json_encode(['status' => false, 'title' => 'Conta desativada. Contate o suporte.']);
            exit;
        }

        // Sucesso REVENDEDOR
        $_SESSION['logged_in_fxtream'] = true;
        $_SESSION['user_id'] = $reseller['id'];
        $_SESSION['username'] = $reseller['username'];
        $_SESSION['role'] = 'reseller'; 

        // >>> GRAVA LOG DE SUCESSO <<<
        Logger::login($pdo, $reseller['id'], 'Success', $ip);

        echo json_encode([
            'status' => true,
            'icon' => 'success',
            'title' => 'Bem-vindo(a)!',
            'url' => 'dashboard.php'
        ]);
        exit;
    }

    // 3. Se chegou aqui, errou a senha ou usuário não existe
    // Tenta pegar o ID se o usuário existia mas errou a senha, senão usa 0
    $fail_id = 0;
    if ($admin) $fail_id = $admin['id'];
    if ($reseller) $fail_id = $reseller['id'];

    // >>> GRAVA LOG DE FALHA (Senha Errada) <<<
    // Adicionei o nome do usuário tentado na mensagem de erro para facilitar
    Logger::login($pdo, $fail_id, 'Failed (Pass/User)', $ip);

    echo json_encode([
        'status' => false, 
        'icon' => 'error', 
        'title' => 'Usuário ou senha incorretos.'
    ]);

} catch (Exception $e) {
    // Erro de sistema
    echo json_encode([
        'status' => false, 
        'icon' => 'error', 
        'title' => 'Erro interno: ' . $e->getMessage()
    ]);
}
?>
