@@ -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 }
0 commit comments