diff --git a/app/modules/partner_dashboard/service.py b/app/modules/partner_dashboard/service.py index 53a991b..c6d96a6 100644 --- a/app/modules/partner_dashboard/service.py +++ b/app/modules/partner_dashboard/service.py @@ -260,10 +260,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)