<?php
/**
 * api/device/name.php — POST /api/device/name
 *
 * Guarda el NOMBRE DE CUENTA que el usuario ingresa en la app tras iniciar
 * sesión. Se asocia al dispositivo (por MAC) y se muestra en el panel junto
 * a su MAC en la sección de Dispositivos.
 *
 * Request:  { "mac", "name" }
 * Response: { "ok": true }  o  { "ok": false, "error": "..." }
 */

declare(strict_types=1);

require_once __DIR__ . '/../../lib/helpers.php';
require_once __DIR__ . '/../../lib/device.php';

if (($_SERVER['REQUEST_METHOD'] ?? 'GET') !== 'POST') {
    json_out(['ok' => false, 'error' => 'method_not_allowed'], 405);
}

$body = read_json_body();

$mac = normalize_mac(isset($body['mac']) ? (string) $body['mac'] : null);
if ($mac === null) {
    json_out(['ok' => false, 'error' => 'mac inválida'], 400);
}

$name = trim((string) ($body['name'] ?? ''));
$name = mb_substr($name, 0, 80);
if ($name === '') {
    json_out(['ok' => false, 'error' => 'nombre requerido'], 400);
}

try {
    $device = device_find_by_mac($mac);
    if ($device === null) {
        $device = device_create($mac, null, null, null);
    }
    db()->prepare('UPDATE devices SET account_name = ? WHERE id = ?')
        ->execute([$name, (int) $device['id']]);

    json_out(['ok' => true], 200);
} catch (Throwable $ex) {
    error_log('[api/device/name] ' . $ex->getMessage());
    json_out(['ok' => false, 'error' => 'server_error'], 500);
}
