Skip to content

Commit 5f2cd8d

Browse files
Fix date range filtering to refresh data when dates change
- Use date range as seed for Random to generate varying data - Scale transaction counts and values based on date range length - Consistent implementation in both TestMediatorService and ReportingRequestHandler - Now changing dates will show different transaction volumes Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com>
1 parent 35c1894 commit 5f2cd8d

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

EstateManagementUI.BlazorServer/Services/TestMediatorService.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,13 @@ private List<MerchantTransactionSummaryModel> GetMockMerchantTransactionSummary(
580580
private List<ProductPerformanceModel> GetMockProductPerformance(Queries.GetProductPerformanceQuery query)
581581
{
582582
var contracts = _testDataStore.GetContracts(query.EstateId);
583-
var random = new Random(42); // Use seed for consistent data
583+
584+
// Calculate days in the date range to vary data based on period
585+
var daysInRange = (query.EndDate - query.StartDate).Days + 1;
586+
587+
// Use date range as seed for consistent but varying data
588+
var seed = query.StartDate.GetHashCode() ^ query.EndDate.GetHashCode();
589+
var random = new Random(seed);
584590

585591
// Collect all unique products from all contracts
586592
var productNames = contracts
@@ -594,10 +600,14 @@ private List<ProductPerformanceModel> GetMockProductPerformance(Queries.GetProdu
594600
decimal totalValue = 0;
595601

596602
// Generate mock transaction data for each product
603+
// Scale transaction counts based on the date range length
604+
var countMultiplier = Math.Max(1, daysInRange / 30.0); // Scale based on 30-day baseline
605+
597606
foreach (var productName in productNames)
598607
{
599-
var transactionCount = random.Next(50, 500);
600-
var transactionValue = Math.Round((decimal)(random.NextDouble() * 30000 + 5000), 2);
608+
var baseTransactionCount = random.Next(50, 500);
609+
var transactionCount = (int)(baseTransactionCount * countMultiplier);
610+
var transactionValue = Math.Round((decimal)(random.NextDouble() * 30000 + 5000) * (decimal)countMultiplier, 2);
601611
totalValue += transactionValue;
602612

603613
products.Add(new ProductPerformanceModel

EstateManagementUI.BusinessLogic/RequestHandlers/ReportingRequestHandler.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,13 @@ public async Task<Result<List<ProductPerformanceModel>>> Handle(GetProductPerfor
179179
}
180180

181181
var products = new List<ProductPerformanceModel>();
182-
var random = new Random(42); // Use seed for consistent test data
182+
183+
// Calculate days in the date range to vary data based on period
184+
var daysInRange = (request.EndDate - request.StartDate).Days + 1;
185+
186+
// Use date range as seed for consistent but varying data
187+
var seed = request.StartDate.GetHashCode() ^ request.EndDate.GetHashCode();
188+
var random = new Random(seed);
183189

184190
// Collect all unique products from all contracts
185191
var productNames = contracts.Data
@@ -191,11 +197,15 @@ public async Task<Result<List<ProductPerformanceModel>>> Handle(GetProductPerfor
191197
decimal totalValue = 0;
192198

193199
// Generate mock transaction data for each product
200+
// Scale transaction counts based on the date range length
201+
var countMultiplier = Math.Max(1, daysInRange / 30.0); // Scale based on 30-day baseline
202+
194203
foreach (var productName in productNames) {
195204
if (string.IsNullOrEmpty(productName)) continue;
196205

197-
var transactionCount = random.Next(50, 500);
198-
var transactionValue = Math.Round((decimal)(random.NextDouble() * 30000 + 5000), 2);
206+
var baseTransactionCount = random.Next(50, 500);
207+
var transactionCount = (int)(baseTransactionCount * countMultiplier);
208+
var transactionValue = Math.Round((decimal)(random.NextDouble() * 30000 + 5000) * (decimal)countMultiplier, 2);
199209
totalValue += transactionValue;
200210

201211
products.Add(new ProductPerformanceModel {

0 commit comments

Comments
 (0)