From 1d64394e491acc056ace48063ddb40ca25b0d42f Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Mon, 4 Sep 2023 21:44:16 +0100 Subject: [PATCH 1/2] First version of Todays sales --- .../Controllers/FactTransactionsController.cs | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 EstateReportingAPI/Controllers/FactTransactionsController.cs diff --git a/EstateReportingAPI/Controllers/FactTransactionsController.cs b/EstateReportingAPI/Controllers/FactTransactionsController.cs new file mode 100644 index 0000000..31aa458 --- /dev/null +++ b/EstateReportingAPI/Controllers/FactTransactionsController.cs @@ -0,0 +1,74 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics.CodeAnalysis; + +namespace EstateReportingAPI.Controllers +{ + using System.Collections.Specialized; + using DataTrasferObjects; + using EstateManagement.Database.Contexts; + using System.Web; + using Microsoft.IdentityModel.Protocols; + using Shared.EntityFramework; + + [ExcludeFromCodeCoverage] + [Route(FactTransactionsController.ControllerRoute)] + [ApiController] + public class FactTransactionsController : ControllerBase + { + #region Others + + /// + /// The controller name + /// + public const String ControllerName = "transactions"; + + /// + /// The controller route + /// + private const String ControllerRoute = "api/facts/" + FactTransactionsController.ControllerName; + + #endregion + + private readonly IDbContextFactory ContextFactory; + + public FactTransactionsController(IDbContextFactory contextFactory){ + this.ContextFactory = contextFactory; + } + + private const String ConnectionStringIdentifier = "EstateReportingReadModel"; + + [HttpGet] + [Route("todayssales")] + public async Task TodaysSales([FromHeader] Guid estateId, [FromQuery] DateTime comparisonDate, CancellationToken cancellationToken) + { + EstateManagementGenericContext? context = await this.ContextFactory.GetContext(estateId, FactTransactionsController.ConnectionStringIdentifier, cancellationToken); + + // TODO: this code will be refactored once there is a decimal value in either the Transactions table or the TransactionsAdditionalRequestData + // https://github.com/TransactionProcessing/EstateManagement/issues/403 + // First we need to get a value of todays sales + List todaysSales = (from t in context.Transactions + join r in context.TransactionsAdditionalRequestData on t.TransactionReportingId equals r.TransactionReportingId + where t.IsAuthorised && t.TransactionType == "Sale" + && t.TransactionDate == DateTime.Now.Date + && t.TransactionTime <= DateTime.Now.TimeOfDay + && r.Amount != null + select r.Amount).ToList(); + + List comparisonSales = (from t in context.Transactions + join r in context.TransactionsAdditionalRequestData on t.TransactionReportingId equals r.TransactionReportingId + where t.IsAuthorised && t.TransactionType == "Sale" + && t.TransactionDate == comparisonDate + && t.TransactionTime <= DateTime.Now.TimeOfDay + && r.Amount != null + select r.Amount).ToList(); + + var response = new{ + TodaysSales = todaysSales.Sum(Decimal.Parse), + ComparisonSales = comparisonSales.Sum(Decimal.Parse) + }; + + return this.Ok(response); + } + } +} From 085e8969242601e73cbf7c4cbd42a786ef52aee8 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Mon, 4 Sep 2023 21:47:35 +0100 Subject: [PATCH 2/2] Small update to rreturn count as well --- .../Controllers/FactTransactionsController.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/EstateReportingAPI/Controllers/FactTransactionsController.cs b/EstateReportingAPI/Controllers/FactTransactionsController.cs index 31aa458..115f193 100644 --- a/EstateReportingAPI/Controllers/FactTransactionsController.cs +++ b/EstateReportingAPI/Controllers/FactTransactionsController.cs @@ -64,9 +64,11 @@ join r in context.TransactionsAdditionalRequestData on t.TransactionReportingId select r.Amount).ToList(); var response = new{ - TodaysSales = todaysSales.Sum(Decimal.Parse), - ComparisonSales = comparisonSales.Sum(Decimal.Parse) - }; + TodaysSalesValue = todaysSales.Sum(Decimal.Parse), + TodaysSalesCount = todaysSales.Count, + ComparisonSales = comparisonSales.Sum(Decimal.Parse), + ComparisonSalesCount = comparisonSales.Count() + }; return this.Ok(response); }