Skip to content

Commit e4fb81c

Browse files
Merge pull request #27 from TransactionProcessing/task/#9_salescountanalysisbyhour
Add in sales value by hour
2 parents 1459874 + d2c5e2f commit e4fb81c

1 file changed

Lines changed: 43 additions & 1 deletion

File tree

EstateReportingAPI/Controllers/FactTransactionsController.cs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public async Task<IActionResult> TodaysSales([FromHeader] Guid estateId, [FromQu
8282

8383
[HttpGet]
8484
[Route("todayssales/countbyhour")]
85-
public async Task<IActionResult> TodaysSalesByHour([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken)
85+
public async Task<IActionResult> TodaysSalesCountByHour([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken)
8686
{
8787
EstateManagementGenericContext? context = await this.ContextFactory.GetContext(estateId, FactTransactionsController.ConnectionStringIdentifier, cancellationToken);
8888

@@ -121,5 +121,47 @@ on today.Hour equals comparison.Hour
121121

122122
return this.Ok(response);
123123
}
124+
125+
[HttpGet]
126+
[Route("todayssales/valuebyhour")]
127+
public async Task<IActionResult> TodaysSalesValueByHour([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken)
128+
{
129+
EstateManagementGenericContext? context = await this.ContextFactory.GetContext(estateId, FactTransactionsController.ConnectionStringIdentifier, cancellationToken);
130+
131+
// First we need to get a value of todays sales
132+
var todaysSalesByHour = (from t in context.Transactions
133+
where t.IsAuthorised && t.TransactionType == "Sale"
134+
&& t.TransactionDate == DateTime.Now.Date
135+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
136+
group t.TransactionAmount by t.TransactionTime.Hours into g
137+
select new
138+
{
139+
Hour = g.Key,
140+
TotalSalesValue = g.Sum()
141+
}).ToList();
142+
143+
var comparisonSalesByHour = (from t in context.Transactions
144+
where t.IsAuthorised && t.TransactionType == "Sale"
145+
&& t.TransactionDate == comparisonDate
146+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
147+
group t.TransactionAmount by t.TransactionTime.Hours into g
148+
select new
149+
{
150+
Hour = g.Key,
151+
TotalSalesValue = g.Sum()
152+
}).ToList();
153+
154+
var response = (from today in todaysSalesByHour
155+
join comparison in comparisonSalesByHour
156+
on today.Hour equals comparison.Hour
157+
select new
158+
{
159+
Hour = today.Hour,
160+
TodaysSalesValue = today.TotalSalesValue,
161+
ComparisonSalesValue = comparison.TotalSalesValue
162+
}).ToList();
163+
164+
return this.Ok(response);
165+
}
124166
}
125167
}

0 commit comments

Comments
 (0)