Summary
Admin-only endpoint to locate students who have not submitted any questionnaire in a scope semester. Internal tool for quickly chasing down non-responders.
Scope
GET /admin/users/without-submissions — paginated, SUPER_ADMIN-guarded
- Filters:
search, semesterId, facultyUsername, courseId, page, limit
- Scope defaults to latest semester (resolved by
createdAt DESC, matching analytics.service.ts convention)
- When
facultyUsername + courseId are both provided, the submission-match tuple is narrowed accordingly — so "no submissions" means no submissions for that specific (faculty, course, semester)
- Response envelope includes resolved
scope (semesterId, code, label, academicYear) alongside the standard paginated payload
Out of scope
- CSV/export (display-only by design)
NOT EXISTS subquery refactor — current in-memory set-difference matches existing pattern in admin-filters.service.ts and is acceptable at today's scale; revisit if this page gets slow
Summary
Admin-only endpoint to locate students who have not submitted any questionnaire in a scope semester. Internal tool for quickly chasing down non-responders.
Scope
GET /admin/users/without-submissions— paginated, SUPER_ADMIN-guardedsearch,semesterId,facultyUsername,courseId,page,limitcreatedAt DESC, matchinganalytics.service.tsconvention)facultyUsername+courseIdare both provided, the submission-match tuple is narrowed accordingly — so "no submissions" means no submissions for that specific (faculty, course, semester)scope(semesterId, code, label, academicYear) alongside the standard paginated payloadOut of scope
NOT EXISTSsubquery refactor — current in-memory set-difference matches existing pattern inadmin-filters.service.tsand is acceptable at today's scale; revisit if this page gets slow