# app/modules/orders/services/order_widgets.py """ Orders dashboard widget provider. Provides storefront dashboard cards for order-related data. Implements get_storefront_dashboard_cards from DashboardWidgetProviderProtocol. """ import logging from sqlalchemy.orm import Session from app.modules.contracts.widgets import ( DashboardWidget, StorefrontDashboardCard, WidgetContext, ) logger = logging.getLogger(__name__) class OrderWidgetProvider: """Widget provider for orders module.""" @property def widgets_category(self) -> str: return "orders" def get_store_widgets( self, db: Session, store_id: int, context: WidgetContext | None = None, ) -> list[DashboardWidget]: return [] def get_platform_widgets( self, db: Session, platform_id: int, context: WidgetContext | None = None, ) -> list[DashboardWidget]: return [] def get_storefront_dashboard_cards( self, db: Session, store_id: int, customer_id: int, context: WidgetContext | None = None, ) -> list[StorefrontDashboardCard]: """Provide the Orders card for the customer dashboard.""" from app.modules.orders.models.customer_order_stats import CustomerOrderStats stats = ( db.query(CustomerOrderStats) .filter( CustomerOrderStats.store_id == store_id, CustomerOrderStats.customer_id == customer_id, ) .first() ) total_orders = stats.total_orders if stats else 0 return [ StorefrontDashboardCard( key="orders.summary", icon="shopping-bag", title="Orders", subtitle="View order history", route="account/orders", value=total_orders, value_label="Total Orders", order=10, ), ] order_widget_provider = OrderWidgetProvider()