From 8915c8d182d387e5b55765761645600839105921 Mon Sep 17 00:00:00 2001 From: Tom Hempel Date: Thu, 28 May 2026 10:09:17 +0200 Subject: [PATCH] added completion count to export page --- handlers/questionnaires.php | 19 ++++++++++++++++--- website/js/pages/export.js | 2 ++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/handlers/questionnaires.php b/handlers/questionnaires.php index 56d5b50..861ef46 100644 --- a/handlers/questionnaires.php +++ b/handlers/questionnaires.php @@ -7,18 +7,31 @@ switch ($method) { case 'GET': [$pdo, $tmpDb, $lockFp] = qdb_open(false); try { - $rows = $pdo->query(" + [$rbacClause, $rbacParams] = rbac_client_filter($tokenRec, 'cl'); + $sql = " SELECT q.questionnaireID, q.name, q.version, q.state, q.orderIndex, q.showPoints, q.conditionJson, q.categoryKey, - COUNT(qu.questionID) AS questionCount + COUNT(qu.questionID) AS questionCount, + ( + SELECT COUNT(*) + FROM completed_questionnaire cq + INNER JOIN client cl ON cl.clientCode = cq.clientCode + WHERE cq.questionnaireID = q.questionnaireID + AND $rbacClause + ) AS completedCount FROM questionnaire q LEFT JOIN question qu ON qu.questionnaireID = q.questionnaireID GROUP BY q.questionnaireID ORDER BY q.orderIndex, q.name - ")->fetchAll(PDO::FETCH_ASSOC); + "; + $stmt = $pdo->prepare($sql); + $stmt->execute($rbacParams); + $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($rows as &$r) { $r['orderIndex'] = (int)$r['orderIndex']; $r['showPoints'] = (int)$r['showPoints']; + $r['questionCount'] = (int)$r['questionCount']; + $r['completedCount'] = (int)$r['completedCount']; $r['conditionJson'] = $r['conditionJson'] ?: '{}'; } unset($r); diff --git a/website/js/pages/export.js b/website/js/pages/export.js index 9708b9c..1d6bd9a 100644 --- a/website/js/pages/export.js +++ b/website/js/pages/export.js @@ -56,6 +56,7 @@ function renderExport(questionnaires) { Version State Questions + Completed Actions @@ -66,6 +67,7 @@ function renderExport(questionnaires) { ${esc(q.version || '—')} ${esc(q.state || 'draft')} ${q.questionCount || 0} + ${q.completedCount ?? 0}