switched first completed to last completed on needs followup table
Some checks failed
PHPUnit / test (push) Has been cancelled
Some checks failed
PHPUnit / test (push) Has been cancelled
This commit is contained in:
@ -180,24 +180,24 @@ function qdb_analytics_stale_clients(PDO $pdo, array $tokenRec): array {
|
|||||||
SELECT cl.clientCode,
|
SELECT cl.clientCode,
|
||||||
co.username AS coachUsername,
|
co.username AS coachUsername,
|
||||||
co.coachID,
|
co.coachID,
|
||||||
fc.firstCompletedAt,
|
lc.lastCompletedAt,
|
||||||
fc.firstQuestionnaireID,
|
lc.lastQuestionnaireID,
|
||||||
qn.name AS firstQuestionnaireName,
|
qn.name AS lastQuestionnaireName,
|
||||||
la.lastActivityAt,
|
la.lastActivityAt,
|
||||||
n.note AS followupNote
|
n.note AS followupNote
|
||||||
FROM client cl
|
FROM client cl
|
||||||
INNER JOIN (
|
INNER JOIN (
|
||||||
SELECT cq.clientCode, cq.questionnaireID AS firstQuestionnaireID, cq.completedAt AS firstCompletedAt
|
SELECT cq.clientCode, cq.questionnaireID AS lastQuestionnaireID, cq.completedAt AS lastCompletedAt
|
||||||
FROM completed_questionnaire cq
|
FROM completed_questionnaire cq
|
||||||
WHERE cq.completedAt IS NOT NULL
|
WHERE cq.completedAt IS NOT NULL
|
||||||
AND cq.rowid = (
|
AND cq.rowid = (
|
||||||
SELECT c2.rowid FROM completed_questionnaire c2
|
SELECT c2.rowid FROM completed_questionnaire c2
|
||||||
WHERE c2.clientCode = cq.clientCode AND c2.completedAt IS NOT NULL
|
WHERE c2.clientCode = cq.clientCode AND c2.completedAt IS NOT NULL
|
||||||
ORDER BY c2.completedAt ASC, c2.questionnaireID ASC
|
ORDER BY c2.completedAt DESC, c2.questionnaireID DESC
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
)
|
)
|
||||||
) fc ON fc.clientCode = cl.clientCode
|
) lc ON lc.clientCode = cl.clientCode
|
||||||
LEFT JOIN questionnaire qn ON qn.questionnaireID = fc.firstQuestionnaireID
|
LEFT JOIN questionnaire qn ON qn.questionnaireID = lc.lastQuestionnaireID
|
||||||
LEFT JOIN coach co ON co.coachID = cl.coachID
|
LEFT JOIN coach co ON co.coachID = cl.coachID
|
||||||
LEFT JOIN (
|
LEFT JOIN (
|
||||||
SELECT qs.clientCode, MAX(qs.submittedAt) AS lastActivityAt
|
SELECT qs.clientCode, MAX(qs.submittedAt) AS lastActivityAt
|
||||||
@ -221,10 +221,10 @@ function qdb_analytics_stale_clients(PDO $pdo, array $tokenRec): array {
|
|||||||
$out[] = [
|
$out[] = [
|
||||||
'clientCode' => $r['clientCode'],
|
'clientCode' => $r['clientCode'],
|
||||||
'coachUsername' => $r['coachUsername'] ?? $r['coachID'],
|
'coachUsername' => $r['coachUsername'] ?? $r['coachID'],
|
||||||
'firstQuestionnaireID' => $r['firstQuestionnaireID'],
|
'lastQuestionnaireID' => $r['lastQuestionnaireID'],
|
||||||
'firstQuestionnaireName'=> $r['firstQuestionnaireName'] ?? $r['firstQuestionnaireID'],
|
'lastQuestionnaireName' => $r['lastQuestionnaireName'] ?? $r['lastQuestionnaireID'],
|
||||||
'firstCompletedAt' => $r['firstCompletedAt']
|
'lastCompletedAt' => $r['lastCompletedAt']
|
||||||
? date('Y-m-d H:i', (int)$r['firstCompletedAt']) : '',
|
? date('Y-m-d H:i', (int)$r['lastCompletedAt']) : '',
|
||||||
'lastActivityAt' => $lastAt ? date('Y-m-d H:i', $lastAt) : '',
|
'lastActivityAt' => $lastAt ? date('Y-m-d H:i', $lastAt) : '',
|
||||||
'daysSinceLastActivity' => $daysSince,
|
'daysSinceLastActivity' => $daysSince,
|
||||||
'note' => $r['followupNote'] ?? '',
|
'note' => $r['followupNote'] ?? '',
|
||||||
|
|||||||
@ -170,7 +170,7 @@ function renderInsights() {
|
|||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Client</th><th>Counselor</th><th>First completed</th><th>First at</th>
|
<th>Client</th><th>Counselor</th><th>Last completed</th><th>Last at</th>
|
||||||
<th>Last activity</th><th>Days idle</th><th>Note</th>
|
<th>Last activity</th><th>Days idle</th><th>Note</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -192,10 +192,10 @@ function followupSearchText(c) {
|
|||||||
return [
|
return [
|
||||||
c.clientCode,
|
c.clientCode,
|
||||||
c.coachUsername,
|
c.coachUsername,
|
||||||
c.firstQuestionnaireName,
|
c.lastQuestionnaireName,
|
||||||
c.firstQuestionnaireID,
|
c.lastQuestionnaireID,
|
||||||
c.note,
|
c.note,
|
||||||
c.firstCompletedAt,
|
c.lastCompletedAt,
|
||||||
c.lastActivityAt,
|
c.lastActivityAt,
|
||||||
c.daysSinceLastActivity != null ? String(c.daysSinceLastActivity) : '',
|
c.daysSinceLastActivity != null ? String(c.daysSinceLastActivity) : '',
|
||||||
].filter(Boolean).join(' ');
|
].filter(Boolean).join(' ');
|
||||||
@ -212,8 +212,8 @@ function followupRowHTML(c) {
|
|||||||
<tr data-client="${esc(c.clientCode)}">
|
<tr data-client="${esc(c.clientCode)}">
|
||||||
<td><code>${esc(c.clientCode)}</code></td>
|
<td><code>${esc(c.clientCode)}</code></td>
|
||||||
<td>${esc(c.coachUsername)}</td>
|
<td>${esc(c.coachUsername)}</td>
|
||||||
<td>${esc(c.firstQuestionnaireName || '—')}</td>
|
<td>${esc(c.lastQuestionnaireName || '—')}</td>
|
||||||
<td>${esc(c.firstCompletedAt || '—')}</td>
|
<td>${esc(c.lastCompletedAt || '—')}</td>
|
||||||
<td>${esc(c.lastActivityAt || '—')}</td>
|
<td>${esc(c.lastActivityAt || '—')}</td>
|
||||||
<td>${c.daysSinceLastActivity != null ? c.daysSinceLastActivity : '—'}</td>
|
<td>${c.daysSinceLastActivity != null ? c.daysSinceLastActivity : '—'}</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
Reference in New Issue
Block a user