Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
Int32 operatorReportingId,
DateTime comparisonDate,
CancellationToken cancellationToken);

Task<Result<TodaysSales>> GetTodaysFailedSales(String accessToken, Guid estateId, Int32 merchantReportingId, Int32 operatorReportingId, String responseCode, DateTime comparisonDate, CancellationToken cancellationToken);
}

public class EstateReportingApiClient : ClientProxyBase.ClientProxyBase, IEstateReportingApiClient {
Expand Down Expand Up @@ -111,6 +113,37 @@
}
}

public async Task<Result<TodaysSales>> 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<TodaysSales>? result = await this.SendHttpGetRequest<TodaysSales>(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");
Expand Down Expand Up @@ -153,24 +186,24 @@
if (alwaysInclude)
return false;

Object? defaultValue = GetDefault(value.GetType());

Check warning on line 189 in EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs

View workflow job for this annotation

GitHub Actions / Build and Unit Test

Dereference of a possibly null reference.

if (defaultValue == null && value.GetType() == typeof(String))
{
defaultValue = String.Empty;
}
return defaultValue.Equals(value);

Check warning on line 195 in EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs

View workflow job for this annotation

GitHub Actions / Build and Unit Test

Dereference of a possibly null reference.
}

public static object GetDefault(Type t)
{
Func<object> f = GetDefault<object>;
return f.Method.GetGenericMethodDefinition().MakeGenericMethod(t).Invoke(null, null);

Check warning on line 201 in EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs

View workflow job for this annotation

GitHub Actions / Build and Unit Test

Possible null reference return.
}

private static T GetDefault<T>()
{
return default(T);

Check warning on line 206 in EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs

View workflow job for this annotation

GitHub Actions / Build and Unit Test

Possible null reference return.
}

public string BuildQueryString()
Expand All @@ -191,7 +224,7 @@
queryString.Append("&");
}

queryString.Append($"{Uri.EscapeDataString(kvp.Key)}={Uri.EscapeDataString(kvp.Value.ToString())}");

Check warning on line 227 in EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs

View workflow job for this annotation

GitHub Actions / Build and Unit Test

Possible null reference argument for parameter 'stringToEscape' in 'string Uri.EscapeDataString(string stringToEscape)'.
}

return queryString.ToString();
Expand Down
20 changes: 20 additions & 0 deletions EstateManagmentUI.BusinessLogic/Client/TransactionMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
using System;
using System.Collections.Generic;
using System.Text;
using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects;
using EstateManagementUI.BusinessLogic.Requests;

namespace EstateManagementUI.BusinessLogic.Client
{
public partial interface IApiClient
{
Task<Result<TodaysSalesModel>> GetTodaysSales(Queries.GetTodaysSalesQuery request, CancellationToken cancellationToken);
Task<Result<TodaysSalesModel>> GetTodaysFailedSales(Queries.GetTodaysFailedSalesQuery request, CancellationToken cancellationToken);
}

public partial class ApiClient : IApiClient {
Expand All @@ -30,5 +32,23 @@ public async Task<Result<TodaysSalesModel>> GetTodaysSales(Queries.GetTodaysSale

return Result.Success(todaysSalesModel);
}

public async Task<Result<TodaysSalesModel>> GetTodaysFailedSales(Queries.GetTodaysFailedSalesQuery request,
CancellationToken cancellationToken)
{
// Get a token here
Result<String> token = await this.GetToken(cancellationToken);
if (token.IsFailed)
return ResultHelpers.CreateFailure(token);

Result<TodaysSales> 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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -288,7 +284,7 @@ public async Task<Result<MerchantKpiModel>> Handle(Queries.GetMerchantKpiQuery r

public async Task<Result<TodaysSalesModel>> Handle(Queries.GetTodaysFailedSalesQuery request,
CancellationToken cancellationToken) {
return Result.Success(StubTestData.GetMockTodaysSales());
return await this.ApiClient.GetTodaysFailedSales(request, cancellationToken);
}

public async Task<Result<List<TopBottomProductDataModel>>> Handle(Queries.GetTopProductDataQuery request,
Expand Down
Loading