prepare('SELECT * FROM turnero_lugares WHERE id = ?'); $row->execute([$id]); $data = $row->fetch(PDO::FETCH_ASSOC); if (!$data) jsonError('Lugar no encontrado', 404); jsonOk(['data' => $data]); } requireMethod('POST'); $input = inputJson(); $id = (int)($input['id'] ?? 0); $delete = !empty($input['_delete']); // ── ELIMINAR ───────────────────────────────────────────────── if ($delete) { if (!$id) jsonError('ID requerido'); // Bloquear si tiene turnos asignados $stmt = db()->prepare('SELECT COUNT(*) FROM turnero_turnos WHERE lugar_destino_id = ?'); $stmt->execute([$id]); if ($stmt->fetchColumn() > 0) { jsonError('No se puede eliminar: tiene turnos asignados. Desactívelo en su lugar.'); } $stmt = db()->prepare('DELETE FROM turnero_lugares WHERE id = ?'); $stmt->execute([$id]); jsonOk([], 'Lugar eliminado'); } // ── CREAR / ACTUALIZAR ─────────────────────────────────────── $nombre = trim($input['nombre'] ?? ''); $desc = trim($input['descripcion'] ?? ''); $sortOrder = (int)($input['sort_order'] ?? 99); $activo = (int)($input['activo'] ?? 1); if ($nombre === '') jsonError('El nombre es requerido'); if ($sortOrder < 1) jsonError('El orden debe ser mayor a 0'); if ($id) { $stmt = db()->prepare( 'UPDATE turnero_lugares SET nombre=?, descripcion=?, sort_order=?, activo=? WHERE id=?' ); $stmt->execute([$nombre, $desc ?: null, $sortOrder, $activo, $id]); jsonOk(['id' => $id], 'Lugar actualizado'); } else { $stmt = db()->prepare( 'INSERT INTO turnero_lugares (nombre, descripcion, sort_order, activo) VALUES (?, ?, ?, ?)' ); $stmt->execute([$nombre, $desc ?: null, $sortOrder, $activo]); jsonOk(['id' => (int)db()->lastInsertId()], 'Lugar creado'); }