diff --git a/api/export.php b/api/export.php index c576bf1..1d0e8fd 100644 --- a/api/export.php +++ b/api/export.php @@ -56,9 +56,13 @@ foreach ($questionIDs as $qid) { $sql = " SELECT cl.clientCode, cl.coachID, + co.username AS coachUsername, + sv.username AS supervisorUsername, cq.status, cq.sumPoints, cq.startedAt, cq.completedAt 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 + LEFT JOIN supervisor sv ON sv.supervisorID = co.supervisorID WHERE $rbacClause ORDER BY cl.clientCode "; @@ -79,7 +83,8 @@ $rows = []; foreach ($clients as $c) { $row = [ 'clientCode' => $c['clientCode'], - 'coachID' => $c['coachID'], + 'coach' => $c['coachUsername'] ?? $c['coachID'], + 'supervisor' => $c['supervisorUsername'] ?? '', 'status' => $c['status'], 'sumPoints' => $c['sumPoints'], 'startedAt' => $c['startedAt'] ? date('Y-m-d H:i', (int)$c['startedAt']) : '', @@ -131,7 +136,7 @@ if (!empty($rows)) { fputcsv($out, array_values($row)); } } else { - $header = ['clientCode', 'coachID', 'status', 'sumPoints', 'startedAt', 'completedAt']; + $header = ['clientCode', 'coach', 'supervisor', 'status', 'sumPoints', 'startedAt', 'completedAt']; foreach ($questions as $q) $header[] = $q['defaultText']; fputcsv($out, $header); } diff --git a/api/results.php b/api/results.php index f93a4c9..fd49a90 100644 --- a/api/results.php +++ b/api/results.php @@ -73,9 +73,13 @@ if ($clientCode) { // Only clients that have a completed_questionnaire entry for this questionnaire $sql = " SELECT cl.clientCode, cl.coachID, + co.username AS coachUsername, + sv.username AS supervisorUsername, cq.status, cq.startedAt, cq.completedAt, cq.sumPoints, cq.assignedByCoach 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 + LEFT JOIN supervisor sv ON sv.supervisorID = co.supervisorID WHERE $rbacClause "; $params = array_merge([':qnid' => $qnID], $rbacParams); diff --git a/handlers/export.php b/handlers/export.php index 7f37a6c..f4df063 100644 --- a/handlers/export.php +++ b/handlers/export.php @@ -39,9 +39,13 @@ foreach ($questionIDs as $qid) { $sql = " SELECT cl.clientCode, cl.coachID, + co.username AS coachUsername, + sv.username AS supervisorUsername, cq.status, cq.sumPoints, cq.startedAt, cq.completedAt 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 + LEFT JOIN supervisor sv ON sv.supervisorID = co.supervisorID WHERE $rbacClause ORDER BY cl.clientCode "; @@ -61,7 +65,8 @@ $rows = []; foreach ($clients as $c) { $row = [ 'clientCode' => $c['clientCode'], - 'coachID' => $c['coachID'], + 'coach' => $c['coachUsername'] ?? $c['coachID'], + 'supervisor' => $c['supervisorUsername'] ?? '', 'status' => $c['status'], 'sumPoints' => $c['sumPoints'], 'startedAt' => $c['startedAt'] ? date('Y-m-d H:i', (int)$c['startedAt']) : '', diff --git a/handlers/results.php b/handlers/results.php index e416c83..ecee836 100644 --- a/handlers/results.php +++ b/handlers/results.php @@ -49,9 +49,13 @@ unset($q); $sql = " SELECT cl.clientCode, cl.coachID, + co.username AS coachUsername, + sv.username AS supervisorUsername, cq.status, cq.startedAt, cq.completedAt, cq.sumPoints, cq.assignedByCoach 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 + LEFT JOIN supervisor sv ON sv.supervisorID = co.supervisorID WHERE $rbacClause "; $params = array_merge([':qnid' => $qnID], $rbacParams); diff --git a/lib/repositories/ResultRepo.php b/lib/repositories/ResultRepo.php index c2d87b7..7d32100 100644 --- a/lib/repositories/ResultRepo.php +++ b/lib/repositories/ResultRepo.php @@ -53,10 +53,14 @@ class ResultRepo $sql = " SELECT cl.clientCode, cl.coachID, + co.username AS coachUsername, + sv.username AS supervisorUsername, cq.status, cq.startedAt, cq.completedAt, cq.sumPoints, cq.assignedByCoach 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 + LEFT JOIN supervisor sv ON sv.supervisorID = co.supervisorID WHERE $rbacClause "; $params = array_merge([':qnid' => $questionnaireID], $rbacParams); diff --git a/website/js/pages/results.js b/website/js/pages/results.js index e2e8410..145cb49 100644 --- a/website/js/pages/results.js +++ b/website/js/pages/results.js @@ -7,14 +7,20 @@ let allClients = []; let questionsDef = []; let questionnaireMeta = null; let filterCoach = ''; +let filterSupervisor = ''; let filterStatus = ''; +let filterDateFrom = ''; +let filterDateTo = ''; export async function resultsPage(params) { const app = document.getElementById('app'); sortCol = null; sortDir = 'asc'; filterCoach = ''; + filterSupervisor = ''; filterStatus = ''; + filterDateFrom = ''; + filterDateTo = ''; app.innerHTML = `