<?php
/**
 * modules/turnero/api/save_dispositivo.php
 * POST {ip, nombre, lugar_id, activo}        → crear
 * POST {id, ip, nombre, lugar_id, activo}    → actualizar
 * POST {id, _delete: true}                   → eliminar
 */
require_once __DIR__ . '/_helpers.php';
requireTurnero();
requireMethod('POST');

$input  = inputJson();
$id     = (int)($input['id']     ?? 0);
$delete = !empty($input['_delete']);

if ($delete) {
    if (!$id) jsonError('ID requerido');
    db()->prepare('DELETE FROM turnero_dispositivos WHERE id = ?')->execute([$id]);
    jsonOk([], 'Dispositivo eliminado');
}

$ip      = trim($input['ip']       ?? '') ?: null;
$nombre  = trim($input['nombre']   ?? '');
$lugarId = (int)($input['lugar_id'] ?? 0);
$activo  = (int)($input['activo']  ?? 1);
$token   = trim($input['token']    ?? '') ?: null;

if ($nombre === '') jsonError('El nombre es requerido');
if ($lugarId <= 0)  jsonError('Debes asignar un lugar');
if ($ip === null && $token === null) jsonError('Se requiere IP o token de dispositivo');

if ($id) {
    $stmt = db()->prepare(
        'UPDATE turnero_dispositivos SET ip=?, nombre=?, lugar_id=?, activo=?, token=? WHERE id=?'
    );
    $stmt->execute([$ip, $nombre, $lugarId, $activo, $token, $id]);
    jsonOk(['id' => $id], 'Dispositivo actualizado');
} else {
    $stmt = db()->prepare(
        'INSERT INTO turnero_dispositivos (ip, nombre, lugar_id, activo, token) VALUES (?, ?, ?, ?, ?)
         ON DUPLICATE KEY UPDATE nombre=VALUES(nombre), lugar_id=VALUES(lugar_id), activo=VALUES(activo), token=VALUES(token)'
    );
    $stmt->execute([$ip, $nombre, $lugarId, $activo, $token]);
    jsonOk(['id' => (int)db()->lastInsertId()], 'Dispositivo creado');
}
