Skip to content

Commit ddc9862

Browse files
Add Count by Hour for todays sales
1 parent 89b1280 commit ddc9862

2 files changed

Lines changed: 75 additions & 26 deletions

File tree

EstateReportingAPI/Controllers/FactTransactionsController.cs

Lines changed: 74 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,33 +43,82 @@ public FactTransactionsController(IDbContextFactory<EstateManagementGenericConte
4343
public async Task<IActionResult> TodaysSales([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken)
4444
{
4545
EstateManagementGenericContext? context = await this.ContextFactory.GetContext(estateId, FactTransactionsController.ConnectionStringIdentifier, cancellationToken);
46-
47-
// TODO: this code will be refactored once there is a decimal value in either the Transactions table or the TransactionsAdditionalRequestData
48-
// https://github.com/TransactionProcessing/EstateManagement/issues/403
46+
4947
// First we need to get a value of todays sales
50-
List<String> todaysSales = (from t in context.Transactions
51-
join r in context.TransactionsAdditionalRequestData on t.TransactionReportingId equals r.TransactionReportingId
52-
where t.IsAuthorised && t.TransactionType == "Sale"
53-
&& t.TransactionDate == DateTime.Now.Date
54-
&& t.TransactionTime <= DateTime.Now.TimeOfDay
55-
&& r.Amount != null
56-
select r.Amount).ToList();
57-
58-
List<String> comparisonSales = (from t in context.Transactions
59-
join r in context.TransactionsAdditionalRequestData on t.TransactionReportingId equals r.TransactionReportingId
60-
where t.IsAuthorised && t.TransactionType == "Sale"
61-
&& t.TransactionDate == comparisonDate
62-
&& t.TransactionTime <= DateTime.Now.TimeOfDay
63-
&& r.Amount != null
64-
select r.Amount).ToList();
65-
66-
var response = new{
67-
TodaysSalesValue = todaysSales.Sum(Decimal.Parse),
68-
TodaysSalesCount = todaysSales.Count,
69-
ComparisonSales = comparisonSales.Sum(Decimal.Parse),
70-
ComparisonSalesCount = comparisonSales.Count()
71-
};
48+
Decimal todaysSales = (from t in context.Transactions
49+
where t.IsAuthorised && t.TransactionType == "Sale"
50+
&& t.TransactionDate == DateTime.Now.Date
51+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
52+
select t.TransactionAmount).Sum();
53+
54+
Int32 todaysSalesCount = (from t in context.Transactions
55+
where t.IsAuthorised && t.TransactionType == "Sale"
56+
&& t.TransactionDate == DateTime.Now.Date
57+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
58+
select t.TransactionAmount).Count();
59+
60+
Decimal comparisonSales = (from t in context.Transactions
61+
where t.IsAuthorised && t.TransactionType == "Sale"
62+
&& t.TransactionDate == comparisonDate
63+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
64+
select t.TransactionAmount).Sum();
65+
66+
Int32 comparisonSalesCount = (from t in context.Transactions
67+
where t.IsAuthorised && t.TransactionType == "Sale"
68+
&& t.TransactionDate == comparisonDate
69+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
70+
select t.TransactionAmount).Count();
71+
72+
var response = new
73+
{
74+
TodaysSalesValue = todaysSales,
75+
TodaysSalesCount = todaysSalesCount,
76+
ComparisonSales = comparisonSales,
77+
ComparisonSalesCount = comparisonSalesCount
78+
};
79+
80+
return this.Ok(response);
81+
}
7282

83+
[HttpGet]
84+
[Route("todayssales/countbyhour")]
85+
public async Task<IActionResult> TodaysSalesByHour([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken)
86+
{
87+
EstateManagementGenericContext? context = await this.ContextFactory.GetContext(estateId, FactTransactionsController.ConnectionStringIdentifier, cancellationToken);
88+
89+
// First we need to get a value of todays sales
90+
var todaysSalesByHour = (from t in context.Transactions
91+
where t.IsAuthorised && t.TransactionType == "Sale"
92+
&& t.TransactionDate == DateTime.Now.Date
93+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
94+
group t.TransactionAmount by t.TransactionTime.Hours into g
95+
select new
96+
{
97+
Hour = g.Key,
98+
TotalSalesCount = g.Count()
99+
}).ToList();
100+
101+
var comparisonSalesByHour = (from t in context.Transactions
102+
where t.IsAuthorised && t.TransactionType == "Sale"
103+
&& t.TransactionDate == comparisonDate
104+
&& t.TransactionTime <= DateTime.Now.TimeOfDay
105+
group t.TransactionAmount by t.TransactionTime.Hours into g
106+
select new
107+
{
108+
Hour = g.Key,
109+
TotalSalesCount = g.Count()
110+
}).ToList();
111+
112+
var response = (from today in todaysSalesByHour
113+
join comparison in comparisonSalesByHour
114+
on today.Hour equals comparison.Hour
115+
select new
116+
{
117+
Hour = today.Hour,
118+
TodaysSalesCount = today.TotalSalesCount,
119+
ComparisonSalesCount = comparison.TotalSalesCount
120+
}).ToList();
121+
73122
return this.Ok(response);
74123
}
75124
}

EstateReportingAPI/EstateReportingAPI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="EstateManagement.Database" Version="2023.8.1" />
12+
<PackageReference Include="EstateManagement.Database" Version="2023.9.1" />
1313
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.10" />
1414
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
1515
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />

0 commit comments

Comments
 (0)