pdo = $pdo; } public function findVersionsByOrder(int $orderId): array { $stmt = $this->pdo->prepare(' SELECT * FROM content_versions WHERE order_id = :order_id ORDER BY version_number DESC '); $stmt->execute(['order_id' => $orderId]); return $stmt->fetchAll(); } public function findLatestVersion(int $orderId): ?array { $stmt = $this->pdo->prepare(' SELECT * FROM content_versions WHERE order_id = :order_id ORDER BY version_number DESC LIMIT 1 '); $stmt->execute(['order_id' => $orderId]); $result = $stmt->fetch(); return $result !== false ? $result : null; } public function findVersion(int $id): ?array { $stmt = $this->pdo->prepare('SELECT * FROM content_versions WHERE id = :id'); $stmt->execute(['id' => $id]); $result = $stmt->fetch(); return $result !== false ? $result : null; } public function findCritiquesByVersion(int $versionId): array { $stmt = $this->pdo->prepare(' SELECT cc.*, c.name as critic_name FROM content_critiques cc JOIN critics c ON cc.critic_id = c.id WHERE cc.version_id = :version_id ORDER BY cc.round DESC, c.sort_order ASC '); $stmt->execute(['version_id' => $versionId]); $results = $stmt->fetchAll(); // Parse feedback JSON and merge with row foreach ($results as &$row) { if (isset($row['feedback']) && $row['feedback'] !== '') { $feedback = $this->decodeJsonArray($row['feedback']); if ($feedback !== []) { $row = array_merge($row, $feedback); } } } return $results; } }