Commit Graph
22 Commits
Author SHA1 Message Date
kavehhn 21bff0c4ba feat: add admin transaction create/update with auto payment status sync
Allow admins to edit transaction amount and status, recalculate payment totals, and mark invoices fully paid when paid transactions cover the payable amount.
2026-08-16 08:01:37 +03:30
kavehhn 06efcd5b90 feat: store payment installments in a transactions collection
Move embedded payment rows into Transaction documents with due dates so remaining tuition can be tracked separately from paid amounts.
2026-08-16 07:32:27 +03:30
kavehhn 3348ca5798 feat: import class sessions, attendance, and payments from JSON
Match students by name when national ID or phone is missing, parse Jalali dates, and allow sessions without a professor.
2026-08-16 07:04:16 +03:30
kavehhn 72be01fee3 feat: add messaging toggles, password reset SMS, and payment discounts
Allow SuperAdmin to disable SMS, email, and bot from dashboard settings on top of env flags. Add admin password reset with credentials SMS, plus payment discounts, notes, and payable amount handling.
2026-08-16 06:58:08 +03:30
kavehhn a6c760c3b7 fix(sms): prefix course time with ساعت
SMS courseTime now reads «از ساعت 19 تا 21» instead of «از 19 تا 21».
2026-08-16 00:16:40 +03:30
kavehhn 4d60755a95 feat(classes): store weekdays and meeting times on the class
Keep the class schedule on the class itself so SMS and listings do not have to infer days and hours from sessions.
2026-08-15 23:59:07 +03:30
kavehhn 192c595c68 feat: add password change, class unenroll, and optional notify flags
Let admins skip SMS on user, class, and invoice actions, and let users change their own password with the current one.
2026-08-15 23:48:18 +03:30
kavehhn 0cdb9cec20 feat(sms): send class start date, days, and course time
Expose schedule fields on class and invoice templates so SMS can include Jalali start date, weekdays, and hour range.
2026-08-15 23:09:04 +03:30
kavehhn d2d4ee719b feat(settings): support dynamic number of SMS template variables 2026-08-15 21:58:10 +03:30
kavehhn 9472537536 fix(professors): handle nationalId and phone aliases with trimming; update payment sms 2026-08-15 19:07:17 +03:30
kavehhn 93f3aeb719 feat(sms): add FULLNAME, PAYMENT_PRICE, and COURSE template variables for invoice SMS 2026-08-15 18:55:17 +03:30
kavehhn 1ef54ad414 fix: stream FilePond uploads to S3 and proxy private file previews
Disk-based multer plus an authenticated content endpoint match the working Node.js uploader and avoid browser signed-URL failures on SeaweedFS.
2026-08-15 18:46:26 +03:30
kavehhn 7ebf9409f0 feat: let SuperAdmin rename SMS template variable names
Store custom sms.ir parameter names per template slot so outbound messages match the panel placeholders.
2026-08-15 18:43:24 +03:30
kavehhn 3160f07873 feat: send account and invoice SMS from stored template IDs
Move sms.ir template IDs out of env into settings so SuperAdmin can manage them, and record every outbound SMS status in notifications.
2026-08-15 18:37:44 +03:30
kavehhn 23edffba6a fix: rewrite temp files with PutObject instead of SeaweedFS CopyObject
CopyObject returns InternalError 500 across buckets, so commits now Get+Put and ensure the documents bucket exists on startup.
2026-08-15 03:33:55 +03:30
kavehhn e1772a2559 fix: force HTTPS S3 endpoint to avoid Coolify 307 on uploads
http://s3 hosts redirect to https; AWS SDK cannot follow PUT redirects, which caused XML parse errors.
2026-08-15 03:04:53 +03:30
kavehhn aa2132f02c fix: disable AWS SDK checksum defaults for SeaweedFS uploads
PutObject was failing with XML parse errors because flexible checksum headers are unsupported; match SeaweedFS recommended S3 client settings.
2026-08-15 03:00:42 +03:30
kavehhn 7394829d49 fix: honor table search q param on users and related lists
Dashboard sends q, but users/classes/payments ignored it; accept q/search and normalize Persian digits.
2026-08-15 02:57:19 +03:30
kavehhn 4603b45208 feat: private certificates/documents buckets with SeaweedFS support
Add Document CRUD, temp→bucket commit flow, SeaweedFS env aliases, and default temp bucket name to temp.
2026-08-15 02:53:59 +03:30
kavehhn bf5e66fa95 feat: add append-only course/user data import and expand user profile
Support uploading structured JSON to create courses, classes, and students without wiping existing data, and merge user name fields while adding gender and registration details from source sheets.
2026-08-15 01:31:44 +03:30
kavehhn 35704409ec feat: bootstrap SuperAdmin from env and lock one-time seeding
Production creates the SuperAdmin from env credentials, and dashboard seeding is authenticated, SuperAdmin-only, and locked after the first run.
2026-08-14 23:23:06 +03:30
kavehhn f04c797be6 Initial commit: teaching institution management API.
Express/MongoDB backend with JWT auth, RBAC, S3 uploads, notifications, and scheduled jobs.
2026-08-09 04:18:08 +02:00