@@ -21,6 +21,76 @@ public partial class TransactionSummaryOperator
2121 private List < MerchantModels . MerchantDropDownModel > ? merchants ;
2222 private List < OperatorModels . OperatorDropDownModel > ? operators ;
2323
24+ // Sorting
25+ private string _sortColumn = "OperatorName" ;
26+ private bool _sortAscending = true ;
27+
28+ // Paging
29+ private int _pageSize = 10 ;
30+ private int _currentPage = 1 ;
31+
32+ private int TotalPages => summaryData ? . Operators != null
33+ ? ( int ) Math . Ceiling ( summaryData . Operators . Count / ( double ) _pageSize )
34+ : 0 ;
35+
36+ private IEnumerable < TransactionModels . OperatorDetail > PagedOperators
37+ {
38+ get
39+ {
40+ if ( summaryData ? . Operators == null )
41+ return Enumerable . Empty < TransactionModels . OperatorDetail > ( ) ;
42+
43+ IEnumerable < TransactionModels . OperatorDetail > sorted = _sortColumn switch
44+ {
45+ "TotalCount" => _sortAscending
46+ ? summaryData . Operators . OrderBy ( o => o . TotalCount )
47+ : summaryData . Operators . OrderByDescending ( o => o . TotalCount ) ,
48+ "TotalValue" => _sortAscending
49+ ? summaryData . Operators . OrderBy ( o => o . TotalValue )
50+ : summaryData . Operators . OrderByDescending ( o => o . TotalValue ) ,
51+ "AverageValue" => _sortAscending
52+ ? summaryData . Operators . OrderBy ( o => o . AverageValue )
53+ : summaryData . Operators . OrderByDescending ( o => o . AverageValue ) ,
54+ "AuthorisedCount" => _sortAscending
55+ ? summaryData . Operators . OrderBy ( o => o . AuthorisedCount )
56+ : summaryData . Operators . OrderByDescending ( o => o . AuthorisedCount ) ,
57+ "DeclinedCount" => _sortAscending
58+ ? summaryData . Operators . OrderBy ( o => o . DeclinedCount )
59+ : summaryData . Operators . OrderByDescending ( o => o . DeclinedCount ) ,
60+ "AuthorisedPercentage" => _sortAscending
61+ ? summaryData . Operators . OrderBy ( o => o . AuthorisedPercentage )
62+ : summaryData . Operators . OrderByDescending ( o => o . AuthorisedPercentage ) ,
63+ _ => _sortAscending
64+ ? summaryData . Operators . OrderBy ( o => o . OperatorName )
65+ : summaryData . Operators . OrderByDescending ( o => o . OperatorName ) ,
66+ } ;
67+
68+ return sorted . Skip ( ( _currentPage - 1 ) * _pageSize ) . Take ( _pageSize ) ;
69+ }
70+ }
71+
72+ private void SortBy ( string column )
73+ {
74+ if ( _sortColumn == column )
75+ {
76+ _sortAscending = ! _sortAscending ;
77+ }
78+ else
79+ {
80+ _sortColumn = column ;
81+ _sortAscending = true ;
82+ }
83+ _currentPage = 1 ;
84+ }
85+
86+ private void GoToPage ( int page )
87+ {
88+ if ( page >= 1 && page <= TotalPages )
89+ {
90+ _currentPage = page ;
91+ }
92+ }
93+
2494 protected override async Task OnAfterRenderAsync ( bool firstRender )
2595 {
2696 if ( ! firstRender )
@@ -102,6 +172,7 @@ private async Task<Result> LoadSummaryData()
102172 if ( result . IsSuccess && result . Data != null )
103173 {
104174 summaryData = result . Data ;
175+ _currentPage = 1 ;
105176 }
106177 else
107178 {
@@ -135,8 +206,8 @@ private async Task ClearFilters()
135206 {
136207 _startDate = DateOnly . FromDateTime ( DateTime . Now . AddDays ( - 7 ) ) ;
137208 _endDate = DateOnly . FromDateTime ( DateTime . Now ) ;
138- _selectedMerchant = "" ;
139- _selectedOperator = "" ;
209+ _selectedMerchant = "-1 " ;
210+ _selectedOperator = "-1 " ;
140211 await LoadSummaryData ( ) ;
141212 }
142213
0 commit comments