@@ -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