<?php
require_once 'config.php';

header('Content-Type: application/json; charset=utf-8');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    jsonResponse(['error' => 'Método no permitido'], 405);
}

$db = getDB();
verificarRateLimit($db, 'cliente');

$data     = getJsonInput();
$email    = trim($data['email'] ?? '');
$password = $data['password'] ?? '';
$recordar = !empty($data['recordar']); // true = 30 días, false = 7 días

if (!$email || !$password) {
    jsonResponse(['error' => 'Email y contraseña son requeridos'], 400);
}

$stmt = $db->prepare(
    'SELECT id, password_hash, nombre, tipo_cuenta, es_miembro
     FROM negocios
     WHERE email = ? AND activo = 1 AND email NOT LIKE \'sin-cuenta-%\''
);
$stmt->execute([$email]);
$negocio = $stmt->fetch();

if (!$negocio || !password_verify($password, $negocio['password_hash'])) {
    registrarIntentoFallido($db, 'cliente');
    jsonResponse(['error' => 'Credenciales inválidas'], 401);
}

limpiarIntentos($db, 'cliente');

$tipo_cuenta = $negocio['tipo_cuenta'] ?? 'negocio';
$dias        = $recordar ? 30 : 7;
$token       = generateToken($negocio['id'], $tipo_cuenta, $dias);

jsonResponse([
    'token'       => $token,
    'negocio_id'  => $negocio['id'],
    'nombre'      => $negocio['nombre'],
    'tipo_cuenta' => $tipo_cuenta,
    'es_miembro'  => (bool)$negocio['es_miembro'],
]);
