extending results page to show metadata and group by clientid to improve tracking progress
Some checks failed
PHPUnit / test (push) Has been cancelled
Some checks failed
PHPUnit / test (push) Has been cancelled
This commit is contained in:
@ -8,6 +8,7 @@ if ($method !== 'GET') {
|
||||
|
||||
$qnID = $_GET['questionnaireID'] ?? '';
|
||||
$clientCode = $_GET['clientCode'] ?? '';
|
||||
$allVersions = !empty($_GET['allVersions']);
|
||||
|
||||
if (!$qnID) {
|
||||
json_error('MISSING_PARAM', 'questionnaireID query param required', 400);
|
||||
@ -51,11 +52,40 @@ unset($q);
|
||||
|
||||
[$rbacClause, $rbacParams] = rbac_client_filter($tokenRec, 'cl');
|
||||
|
||||
if ($allVersions) {
|
||||
require_once __DIR__ . '/../lib/submissions.php';
|
||||
$ctx = qdb_export_questionnaire_context($pdo, $qnID);
|
||||
$submissions = qdb_results_submission_entries(
|
||||
$pdo,
|
||||
$qnID,
|
||||
$ctx['questions'],
|
||||
$ctx['resultColumns'],
|
||||
$ctx['optionTextMap'],
|
||||
$tokenRec
|
||||
);
|
||||
if ($clientCode) {
|
||||
$submissions = array_values(array_filter(
|
||||
$submissions,
|
||||
static fn(array $row): bool => ($row['clientCode'] ?? '') === $clientCode
|
||||
));
|
||||
}
|
||||
|
||||
qdb_discard($tmpDb, $lockFp);
|
||||
|
||||
json_success([
|
||||
'questionnaire' => $questionnaire,
|
||||
'questions' => $questions,
|
||||
'allVersions' => true,
|
||||
'submissions' => $submissions,
|
||||
]);
|
||||
}
|
||||
|
||||
$sql = "
|
||||
SELECT cl.clientCode, cl.coachID,
|
||||
co.username AS coachUsername,
|
||||
sv.username AS supervisorUsername,
|
||||
cq.status, cq.startedAt, cq.completedAt, cq.sumPoints, cq.assignedByCoach
|
||||
cq.status, cq.startedAt, cq.completedAt, cq.sumPoints, cq.assignedByCoach,
|
||||
cq.programCycleNumber, cq.programSessionID, cq.programSessionNumber
|
||||
FROM client cl
|
||||
INNER JOIN completed_questionnaire cq ON cq.clientCode = cl.clientCode AND cq.questionnaireID = :qnid
|
||||
LEFT JOIN coach co ON co.coachID = cl.coachID
|
||||
@ -86,6 +116,8 @@ if (!empty($questionIDs) && !empty($clients)) {
|
||||
$c['sumPoints'] = $c['sumPoints'] !== null ? (int)$c['sumPoints'] : null;
|
||||
$c['startedAt'] = $c['startedAt'] !== null ? (int)$c['startedAt'] : null;
|
||||
$c['completedAt'] = $c['completedAt'] !== null ? (int)$c['completedAt'] : null;
|
||||
$c['programCycleNumber'] = $c['programCycleNumber'] !== null ? (int)$c['programCycleNumber'] : null;
|
||||
$c['programSessionNumber'] = $c['programSessionNumber'] !== null ? (int)$c['programSessionNumber'] : null;
|
||||
|
||||
$bindParams = array_merge([$c['clientCode']], $questionIDs);
|
||||
$answerStmt->execute($bindParams);
|
||||
@ -107,6 +139,8 @@ if (!empty($questionIDs) && !empty($clients)) {
|
||||
$c['sumPoints'] = $c['sumPoints'] !== null ? (int)$c['sumPoints'] : null;
|
||||
$c['startedAt'] = $c['startedAt'] !== null ? (int)$c['startedAt'] : null;
|
||||
$c['completedAt'] = $c['completedAt'] !== null ? (int)$c['completedAt'] : null;
|
||||
$c['programCycleNumber'] = $c['programCycleNumber'] !== null ? (int)$c['programCycleNumber'] : null;
|
||||
$c['programSessionNumber'] = $c['programSessionNumber'] !== null ? (int)$c['programSessionNumber'] : null;
|
||||
$c['answers'] = (object)[];
|
||||
}
|
||||
unset($c);
|
||||
@ -117,6 +151,7 @@ if (!empty($questionIDs) && !empty($clients)) {
|
||||
json_success([
|
||||
'questionnaire' => $questionnaire,
|
||||
'questions' => $questions,
|
||||
'allVersions' => false,
|
||||
'clients' => $clients,
|
||||
]);
|
||||
} catch (Throwable $e) {
|
||||
|
||||
Reference in New Issue
Block a user