Skip to content

Commit 89b1280

Browse files
Merge pull request #24 from TransactionProcessing/task/#22_comparisondates
Add Todays Sales API method
2 parents a06109f + eaa4f04 commit 89b1280

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
using Microsoft.AspNetCore.Http;
2+
using Microsoft.AspNetCore.Mvc;
3+
using System.Diagnostics.CodeAnalysis;
4+
5+
namespace EstateReportingAPI.Controllers
6+
{
7+
using System.Collections.Specialized;
8+
using DataTrasferObjects;
9+
using EstateManagement.Database.Contexts;
10+
using System.Web;
11+
using Microsoft.IdentityModel.Protocols;
12+
using Shared.EntityFramework;
13+
14+
[ExcludeFromCodeCoverage]
15+
[Route(FactTransactionsController.ControllerRoute)]
16+
[ApiController]
17+
public class FactTransactionsController : ControllerBase
18+
{
19+
#region Others
20+
21+
/// <summary>
22+
/// The controller name
23+
/// </summary>
24+
public const String ControllerName = "transactions";
25+
26+
/// <summary>
27+
/// The controller route
28+
/// </summary>
29+
private const String ControllerRoute = "api/facts/" + FactTransactionsController.ControllerName;
30+
31+
#endregion
32+
33+
private readonly IDbContextFactory<EstateManagementGenericContext> ContextFactory;
34+
35+
public FactTransactionsController(IDbContextFactory<EstateManagementGenericContext> contextFactory){
36+
this.ContextFactory = contextFactory;
37+
}
38+
39+
private const String ConnectionStringIdentifier = "EstateReportingReadModel";
40+
41+
[HttpGet]
42+
[Route("todayssales")]
43+
public async Task<IActionResult> TodaysSales([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken)
44+
{
45+
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
49+
// 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+
};
72+
73+
return this.Ok(response);
74+
}
75+
}
76+
}

0 commit comments

Comments
 (0)