good client and coach data viewing
This commit is contained in:
@ -251,7 +251,13 @@ function qdb_coach_activity_list(PDO $pdo, array $tokenRec): array {
|
||||
return $out;
|
||||
}
|
||||
|
||||
function qdb_coach_recent_submissions(PDO $pdo, array $tokenRec, string $coachID, int $limit = 25): array {
|
||||
function qdb_coach_recent_submissions(
|
||||
PDO $pdo,
|
||||
array $tokenRec,
|
||||
string $coachID,
|
||||
int $limit = 100,
|
||||
int $offset = 0
|
||||
): array {
|
||||
$coachID = trim($coachID);
|
||||
if ($coachID === '') {
|
||||
json_error('INVALID_FIELD', 'coachID is required', 400);
|
||||
@ -271,7 +277,18 @@ function qdb_coach_recent_submissions(PDO $pdo, array $tokenRec, string $coachID
|
||||
}
|
||||
|
||||
[$rbacClause, $rbacParams] = rbac_client_filter($tokenRec, 'cl');
|
||||
$limit = max(1, min($limit, 100));
|
||||
$limit = max(1, min($limit, 200));
|
||||
$offset = max(0, $offset);
|
||||
|
||||
$countSql = "
|
||||
SELECT COUNT(*)
|
||||
FROM questionnaire_submission qs
|
||||
INNER JOIN client cl ON cl.clientCode = qs.clientCode
|
||||
WHERE cl.coachID = :cid AND ($rbacClause)
|
||||
";
|
||||
$countStmt = $pdo->prepare($countSql);
|
||||
$countStmt->execute(array_merge([':cid' => $coachID], $rbacParams));
|
||||
$total = (int)$countStmt->fetchColumn();
|
||||
|
||||
$sql = "
|
||||
SELECT qs.submissionID, qs.version, qs.submittedAt, qs.submittedByRole,
|
||||
@ -281,13 +298,13 @@ function qdb_coach_recent_submissions(PDO $pdo, array $tokenRec, string $coachID
|
||||
LEFT JOIN questionnaire qn ON qn.questionnaireID = qs.questionnaireID
|
||||
WHERE cl.coachID = :cid AND ($rbacClause)
|
||||
ORDER BY qs.submittedAt DESC
|
||||
LIMIT $limit
|
||||
LIMIT $limit OFFSET $offset
|
||||
";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute(array_merge([':cid' => $coachID], $rbacParams));
|
||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
return array_map(static function ($r) {
|
||||
$submissions = array_map(static function ($r) {
|
||||
return [
|
||||
'submissionID' => $r['submissionID'],
|
||||
'version' => (int)$r['version'],
|
||||
@ -298,4 +315,11 @@ function qdb_coach_recent_submissions(PDO $pdo, array $tokenRec, string $coachID
|
||||
'questionnaireName'=> $r['questionnaireName'] ?? $r['questionnaireID'],
|
||||
];
|
||||
}, $rows);
|
||||
|
||||
return [
|
||||
'submissions' => $submissions,
|
||||
'total' => $total,
|
||||
'limit' => $limit,
|
||||
'offset' => $offset,
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user