Issue #3613258: Extract shared per-user dashboard sort logic from QuotaManager/RollupManager into a trait

QuotaManager::getDashboardData() and RollupManager::getMonthAggregates() duplicated the same joins, quota-percentage expression, and sort/ORDER BY logic. Extracted the shared logic into a new DashboardSortTrait used by both classes; each class keeps its own table-specific aggregation.

Closes #3613258

https://www.drupal.org/project/ai_metering/issues/3613258

Merge request reports

Loading