diff --git a/app/modules/partner_dashboard/service.py b/app/modules/partner_dashboard/service.py index 7dcf50f..f3d973a 100644 --- a/app/modules/partner_dashboard/service.py +++ b/app/modules/partner_dashboard/service.py @@ -258,10 +258,23 @@ def _load_clients(db: Session, tenant_id: int | None, branch_id: int | None, cur def _staff_rows(db: Session, tenant_id: int | None, branch_id: int | None, tasks: list[ClientServiceTaskInstance]) -> list[dict[str, Any]]: if not tenant_id: return [] - stmt = select(User).where(User.tenant_id == tenant_id, User.is_active.is_(True)) + stmt = ( + select(User) + .join(UserRole, UserRole.user_id == User.id) + .join(Role, Role.id == UserRole.role_id) + .where( + User.tenant_id == tenant_id, + User.is_active.is_(True), + Role.is_active.is_(True), + Role.name.in_(("Staff", "Branch Manager")), + ) + .distinct() + ) if branch_id is not None: stmt = stmt.where(User.branch_id == branch_id) - users = db.execute(stmt.order_by(User.full_name.asc(), User.email.asc()).limit(100)).scalars().all() + users = db.execute( + stmt.order_by(User.full_name.asc(), User.email.asc()).limit(100) + ).scalars().all() by_user: dict[int, dict[str, int]] = {} for task in tasks: uid = getattr(task, "assigned_to_user_id", None) diff --git a/app/modules/partner_dashboard/templates/partner_dashboard/partials/staff.html b/app/modules/partner_dashboard/templates/partner_dashboard/partials/staff.html index 5ff04d3..b45adf9 100644 --- a/app/modules/partner_dashboard/templates/partner_dashboard/partials/staff.html +++ b/app/modules/partner_dashboard/templates/partner_dashboard/partials/staff.html @@ -1,6 +1,6 @@

Branch Staff Workload

Workload is calculated from current branch task assignments.

-
- {% for s in staff_rows %}{% else %}{% endfor %} +
StaffActiveOverdueClient PendingReviewLoad
{{ s.name }}
{{ s.designation or s.email }}
{{ s.active }}{{ s.overdue }}{{ s.client_pending }}{{ s.review }}{{ s.load_status }}
No branch users found.
+ {% for s in staff_rows %}{% else %}{% endfor %}
Staff / ManagerActiveOverdueClient PendingReviewLoad
{{ s.name }}
{{ s.designation or s.email }}
{{ s.active }}{{ s.overdue }}{{ s.client_pending }}{{ s.review }}{{ s.load_status }}
No active Staff or Branch Manager users found for this branch.