Notify matching users when a new shift/job is posted (in-app notifications)
CI/CD / CI · dotnet build (push) Failing after 1m40s
CI/CD / Deploy · hamkadr (push) Has been skipped

- Notification entity + NotificationService: on publish, notify users whose saved prefs match the listing (role/city/+shift type); users with no preference aren't spammed
- Wired into PostShift, PostJob, and Admin Review publish
- 🔔 bell with unread count in the header (@inject) + /Me/Notifications page (mark-all-read on open)
- Reliable in-app delivery (works in Iran without FCM); Web Push can ride the same records later
- Verified: employee pref → employer posts matching shift → employee bell=۱ + 'شیفت جدید: پزشک عمومی'

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-04 11:56:07 +03:30
parent a02eb6a985
commit 10d4727bd5
14 changed files with 1302 additions and 7 deletions
+5
View File
@@ -189,6 +189,11 @@ label { font-size: 13px; }
.alert { padding: 12px 16px; border-radius: 10px; margin-bottom: 16px; font-weight: 600; }
.alert-success { background: var(--primary-soft); color: var(--primary-dark); }
/* notification bell badge */
.bell-badge { position:absolute; top:-6px; inset-inline-start:-8px; background:var(--accent); color:#fff;
font-size:10px; font-weight:800; min-width:16px; height:16px; line-height:16px; text-align:center;
border-radius:999px; padding:0 3px; }
/* account-type chooser on login */
.acct-toggle { display: flex; gap: 10px; }
.acct-opt { flex: 1; display: block; cursor: pointer; }