diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs index b0d7808a..35d7f444 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs @@ -16,7 +16,7 @@ namespace EstateManagementUI.BlazorServer.Components.Pages public partial class Home { // Response code for low credit failures - private const string LOW_CREDIT_RESPONSE_CODE = "1008"; + private const string LOW_CREDIT_RESPONSE_CODE = "1009"; private bool isLoading = true; private bool isAdministrator; diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs index 356ad11c..3dec7d75 100644 --- a/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs @@ -18,6 +18,8 @@ Task> GetTodaysSales(String accessToken, Int32 operatorReportingId, DateTime comparisonDate, CancellationToken cancellationToken); + + Task> GetTodaysFailedSales(String accessToken, Guid estateId, Int32 merchantReportingId, Int32 operatorReportingId, String responseCode, DateTime comparisonDate, CancellationToken cancellationToken); } public class EstateReportingApiClient : ClientProxyBase.ClientProxyBase, IEstateReportingApiClient { @@ -111,6 +113,37 @@ public async Task> GetTodaysSales(String accessToken, Guid e } } + public async Task> GetTodaysFailedSales(String accessToken, Guid estateId, Int32 merchantReportingId, Int32 operatorReportingId, String responseCode, DateTime comparisonDate, CancellationToken cancellationToken) + { + QueryStringBuilder builder = new QueryStringBuilder(); + builder.AddParameter("comparisonDate", $"{comparisonDate.Date:yyyy-MM-dd}"); + builder.AddParameter("merchantReportingId", merchantReportingId); + builder.AddParameter("operatorReportingId", operatorReportingId); + builder.AddParameter("responseCode", responseCode); + + String requestUri = this.BuildRequestUrl($"/api/transactions/todaysfailedsales?{builder.BuildQueryString()}"); + + try + { + List<(String headerName, String headerValue)> additionalHeaders = [ + (EstateIdHeaderName, estateId.ToString()) + ]; + Result? result = await this.SendHttpGetRequest(requestUri, accessToken, additionalHeaders, cancellationToken); + + if (result.IsFailed) + return ResultHelpers.CreateFailure(result); + + return result; + } + catch (Exception ex) + { + // An exception has occurred, add some additional information to the message + Exception exception = new Exception($"Error getting todays failed sales for estate {estateId} and response code {responseCode}.", ex); + + return Result.Failure(exception.Message); + } + } + private String BuildRequestUrl(String route) { String baseAddress = this.BaseAddressResolver("EstateReportingApi"); diff --git a/EstateManagmentUI.BusinessLogic/Client/TransactionMethods.cs b/EstateManagmentUI.BusinessLogic/Client/TransactionMethods.cs index 68ef2b3e..9d1b56ef 100644 --- a/EstateManagmentUI.BusinessLogic/Client/TransactionMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/TransactionMethods.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Text; +using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; namespace EstateManagementUI.BusinessLogic.Client @@ -11,6 +12,7 @@ namespace EstateManagementUI.BusinessLogic.Client public partial interface IApiClient { Task> GetTodaysSales(Queries.GetTodaysSalesQuery request, CancellationToken cancellationToken); + Task> GetTodaysFailedSales(Queries.GetTodaysFailedSalesQuery request, CancellationToken cancellationToken); } public partial class ApiClient : IApiClient { @@ -30,5 +32,23 @@ public async Task> GetTodaysSales(Queries.GetTodaysSale return Result.Success(todaysSalesModel); } + + public async Task> GetTodaysFailedSales(Queries.GetTodaysFailedSalesQuery request, + CancellationToken cancellationToken) + { + // Get a token here + Result token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + Result apiResult = await this.EstateReportingApiClient.GetTodaysFailedSales(token.Data, request.EstateId, 0, 0, request.ResponseCode, request.ComparisonDate, cancellationToken); + + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + TodaysSalesModel todaysSalesModel = APIModelFactory.ConvertFrom(apiResult.Data); + + return Result.Success(todaysSalesModel); + } } } diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs index f1323139..112d6c22 100644 --- a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs @@ -3,10 +3,6 @@ using EstateManagementUI.BusinessLogic.Requests; using MediatR; using SimpleResults; -using System.Threading.Tasks; -using SecurityService.Client; -using SecurityService.DataTransferObjects.Responses; -using Shared.Results; namespace EstateManagementUI.BusinessLogic.RequestHandlers { @@ -288,7 +284,7 @@ public async Task> Handle(Queries.GetMerchantKpiQuery r public async Task> Handle(Queries.GetTodaysFailedSalesQuery request, CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockTodaysSales()); + return await this.ApiClient.GetTodaysFailedSales(request, cancellationToken); } public async Task>> Handle(Queries.GetTopProductDataQuery request,