Commit Graph

285 Commits

Author SHA1 Message Date
ecad91d89e Add SUPER_ADMIN bulk deactivate and reactivate by role.
Expose POST /admin/roles/:role/bulk-deactivate and bulk-reactivate for platform users and team_members, mirroring deactivate/reactivate semantics and optional team member exclusions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 00:52:14 -07:00
a80db8afd9 Add admin recent-activity timeline for learner profile UIs.
Expose GET /api/v1/admin/users/:user_id/recent-activity (progress.get_any_user) merging account creation and LMS completion milestones, with optional practice rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-18 01:13:21 -07:00
52effaa321 Add admin endpoint for nested user LMS completion activity.
Expose GET /api/v1/admin/users/:user_id/lms-learning-activity for progress.get_any_user so admins see program/course/module/lesson completions and practices from stored completion rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-18 00:58:49 -07:00
062b1f6151 Add country, region, and subscription_status filters to GET /users.
Filtering matches user profile country/region (case-insensitive trim) and derived subscription state in SQL so pagination totals stay correct.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-18 00:37:11 -07:00
49bcc22d0d Expose subscription_status on user profile responses instead of active_subscription.
Users see ACTIVE, PENDING, or Unsubscribed via new batch and single SQL helpers; Swagger refreshed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-18 00:28:19 -07:00
f824c16c64 user list response fix 2026-05-18 00:09:26 -07:00
8bba318372 Fix practice completion roll-up for non-module scopes.
Resolve practice hierarchy using module, lesson, or course linkage and only run module-level cascade when module context exists.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-13 03:58:39 -07:00
6a4fe68628 Add full FAQ management APIs and integration assets.
Implement public FAQ read endpoints and admin CRUD with RBAC, persistence, and migrations, then regenerate Swagger and add a complete Postman collection so frontend/admin teams can integrate and validate the feature end-to-end.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 07:58:17 -07:00
bc2357374b Add practice-existence flags and refresh API contracts.
Expose has_practice booleans for LMS and pre-exam hierarchy entities, wire SQL/repository mappings, and regenerate SQLC/Swagger artifacts. Also update the Resend sender display name for outbound emails.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 11:57:11 -07:00
3d1b3ad9b8 dynamic question type builder completion 2026-05-08 10:12:02 -07:00
f906862676 partly implemented dynamic question builder + payment routes fix 2026-05-07 08:10:21 -07:00
b62d89574e Include nested lesson and practice counts in exam-prep modules list response.
Return per-module lesson and practice aggregates under unit modules listing so clients can render module depth without additional queries.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 07:05:35 -07:00
16c3f6b613 Include nested module, lesson, and practice counts in exam-prep units list response.
Expose per-unit aggregate counts under catalog-course units listing so clients can display unit depth without extra chained requests.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 06:35:13 -07:00
4124f98160 Include nested content counts in exam-prep catalog list response.
Add units, modules, and lessons aggregate counts per catalog course so clients can render hierarchy depth without extra API calls.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 06:13:01 -07:00
10954d88b0 subscription management fix + duolingo hierarchy implementation 2026-05-04 10:44:18 -07:00
60290e5c34 Swap module sort_order on conflict during update.
When updating a module sort_order to an occupied position in the same course, perform an atomic swap in a transaction instead of failing with a unique constraint error.

Made-with: Cursor
2026-04-29 03:36:45 -07:00
9027b65011 Require lesson and practice completion for LMS rollups.
Update lesson and practice completion flows to cascade module/course/program progress only when both lesson completion and related published practice completion criteria are met, and align progress counters with the new rule.

Made-with: Cursor
2026-04-28 09:56:53 -07:00
8c116f4a0b GET question sets API fix 2026-04-28 09:41:09 -07:00
78f231f222 fix OTP verification by submitted code
Resolve false OTP already used/expired responses during registration by loading OTP rows using user_id plus submitted otp code and validating usage/expiry on the matched row.

Made-with: Cursor
2026-04-25 05:07:19 -07:00
5857fce9a0 count data for course 2026-04-25 02:36:52 -07:00
7e26f15bed early otp expiration fix 2026-04-25 00:16:05 -07:00
bc68326a66 fix: return sample_answer_voice_prompt and audio_correct_answer_text in question set items list
Extend GetQuestionSetItems and GetPublishedQuestionsInSet queries to match
paginated fields; map audio answer join in repository instead of nils.

Made-with: Cursor
2026-04-24 03:11:47 -07:00
5b53929d92 learning progress implementation 2026-04-23 03:58:27 -07:00
9db9c9899a module+lesson+practice implementations 2026-04-23 01:59:20 -07:00
152478a96c added program 2026-04-23 00:59:01 -07:00
ce1b827768 refresh token fix 2026-04-17 10:16:25 -07:00
7613eb583a new course management hierarchy 2026-04-10 03:06:30 -07:00
43f79d34ea fetch practice pagination fix 2026-04-07 03:37:19 -07:00
cd8670d5a6 content filtering adjustment 2026-04-07 03:09:44 -07:00
05cb8715f9 seed data clearer API 2026-03-29 01:31:43 -07:00
94d6777c48 more seed data 2026-03-23 05:24:29 -07:00
1f77b93ec7 empty notification title and message fix 2026-03-17 04:39:47 -07:00
180e63e975 account deletion API 2026-03-11 06:26:30 -07:00
d558739097 preogress tracker fix 2026-03-10 02:35:13 -07:00
74efcd5ec2 learning flow + level + sublevel 2026-03-08 05:35:17 -07:00
3500db6435 learning flow fixes 2026-03-07 08:18:13 -08:00
f9da45da62 minor fixes 2026-03-06 06:03:05 -08:00
0226275d47 customer RBAC 2026-03-05 07:58:48 -08:00
809ab90d30 bulk notification fix + custom role and permission feature implementation + activity log and user list filters 2026-03-04 09:10:28 -08:00
130421e971 added cloudconvert for thumbnails + added ratings service 2026-02-18 02:56:08 -08:00
aa6194013c analytics service + inapp notification websocket fix 2026-02-16 08:36:46 -08:00
7d626d059f inapp notification fix 2026-02-13 06:59:14 -08:00
0f44e63692 cloud convert integration + more advanced activity log + issue reporting + video file management fixes 2026-02-11 06:54:05 -08:00
97c4f3d28f team management + minor fixes 2026-02-06 10:47:42 -08:00
834a807edc vimeo itegration + Google auth and fiberbase messaging minor fixes + profile completed status fix and profile progress (not course progress) tracker immplementation 2026-02-04 09:59:21 -08:00
7f1bf0e7f1 profile picture, birthday format and refresh token expiry fixes 2026-01-28 09:24:31 -08:00
64c25699e9 course management and course data seed implementations 2026-01-24 06:29:42 -08:00
68472b09b1 google auth integration 2026-01-21 12:43:02 -08:00
9ee1d7f714 changed age to agegroup, added refresh route, token generation after otp verification 2026-01-18 03:12:28 -08:00
513927f48f data seed and authorization fixes 2026-01-14 02:27:26 -08:00