feat(tenancy): show merchant & store details on merchant user detail page
Add clickable card grids for owned merchants and store memberships, replacing static count-only banners with linked summaries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,8 @@ from app.modules.core.services.stats_aggregator import stats_aggregator
|
||||
from app.modules.tenancy.services.admin_service import admin_service
|
||||
from models.schema.auth import UserContext
|
||||
from models.schema.auth import (
|
||||
OwnedMerchantSummary,
|
||||
StoreMembershipSummary,
|
||||
UserCreate,
|
||||
UserDeleteResponse,
|
||||
UserDetailResponse,
|
||||
@@ -76,6 +78,25 @@ def get_all_users(
|
||||
is_email_verified=user.is_email_verified,
|
||||
owned_merchants_count=len(user.owned_merchants) if user.owned_merchants else 0,
|
||||
store_memberships_count=len(user.store_memberships) if user.store_memberships else 0,
|
||||
owned_merchants=[
|
||||
OwnedMerchantSummary(
|
||||
id=m.id,
|
||||
name=m.name,
|
||||
is_active=m.is_active,
|
||||
store_count=len(m.stores) if m.stores else 0,
|
||||
)
|
||||
for m in (user.owned_merchants or [])
|
||||
],
|
||||
store_memberships=[
|
||||
StoreMembershipSummary(
|
||||
store_id=su.store_id,
|
||||
store_code=su.store.store_code,
|
||||
store_name=su.store.name,
|
||||
user_type=su.user_type,
|
||||
is_active=su.is_active,
|
||||
)
|
||||
for su in (user.store_memberships or [])
|
||||
],
|
||||
)
|
||||
for user in users
|
||||
]
|
||||
@@ -264,6 +285,25 @@ def get_user_details(
|
||||
store_memberships_count=len(user.store_memberships)
|
||||
if user.store_memberships
|
||||
else 0,
|
||||
owned_merchants=[
|
||||
OwnedMerchantSummary(
|
||||
id=m.id,
|
||||
name=m.name,
|
||||
is_active=m.is_active,
|
||||
store_count=len(m.stores) if m.stores else 0,
|
||||
)
|
||||
for m in (user.owned_merchants or [])
|
||||
],
|
||||
store_memberships=[
|
||||
StoreMembershipSummary(
|
||||
store_id=su.store_id,
|
||||
store_code=su.store.store_code,
|
||||
store_name=su.store.name,
|
||||
user_type=su.user_type,
|
||||
is_active=su.is_active,
|
||||
)
|
||||
for su in (user.store_memberships or [])
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user