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 @@ -32,7 +32,7 @@ public void ContractsIndex_RendersCorrectly()
}
};

_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractsQuery>(), default))
.ReturnsAsync(Result.Success(contracts));

// Act
Expand All @@ -47,7 +47,7 @@ public void ContractsIndex_WithNoContracts_ShowsEmptyState()
{
// Arrange
var emptyList = new List<ContractModel>();
_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractsQuery>(), default))
.ReturnsAsync(Result.Success(emptyList));

// Act
Expand Down Expand Up @@ -82,7 +82,7 @@ public void ContractsIndex_WithContracts_DisplaysContractList()
}
};

_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractsQuery>(), default))
.ReturnsAsync(Result.Success(contracts));

// Act
Expand Down Expand Up @@ -116,7 +116,7 @@ public void ContractsIndex_DisplaysProductCount()
}
};

_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractsQuery>(), default))
.ReturnsAsync(Result.Success(contracts));

// Act
Expand All @@ -131,7 +131,7 @@ public void ContractsIndex_DisplaysProductCount()
public void ContractsIndex_HasCorrectPageTitle()
{
// Arrange
_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractsQuery>(), default))
.ReturnsAsync(Result.Success(new List<ContractModel>()));

// Act
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public void ContractsView_RendersCorrectly()
OperatorName = "Test Operator"
};

_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractQuery>(), default))
.ReturnsAsync(Result.Success(contract));

// Act
Expand All @@ -51,7 +51,7 @@ public void ContractsView_DisplaysContractDetails()
OperatorName = "Test Operator"
};

_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractQuery>(), default))
.ReturnsAsync(Result.Success(contract));

// Act
Expand All @@ -68,7 +68,7 @@ public void ContractsView_HasCorrectPageTitle()
{
// Arrange
var contractId = Guid.NewGuid();
_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetContractQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetContractQuery>(), default))
.ReturnsAsync(Result.Success(new ContractModel { ContractId = contractId }));

// Act
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public void EstateIndex_RendersCorrectly()
.ReturnsAsync(Result.Success(estate));
_mockMediator.Setup(x => x.Send(It.IsAny<MerchantQueries.GetRecentMerchantsQuery>(), default))
.ReturnsAsync(Result.Success(new List<RecentMerchantsModel>()));
_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetRecentContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetRecentContractsQuery>(), default))
.ReturnsAsync(Result.Success(new List<RecentContractModel>()));
_mockMediator.Setup(x => x.Send(It.IsAny<EstateQueries.GetAssignedOperatorsQuery>(), default))
.ReturnsAsync(Result.Success(new List<OperatorModel>()));
Expand Down Expand Up @@ -61,7 +61,7 @@ public void EstateIndex_DisplaysEstateDetails()
.ReturnsAsync(Result.Success(estate));
_mockMediator.Setup(x => x.Send(It.IsAny<MerchantQueries.GetRecentMerchantsQuery>(), default))
.ReturnsAsync(Result.Success(new List<RecentMerchantsModel>()));
_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetRecentContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetRecentContractsQuery>(), default))
.ReturnsAsync(Result.Success(new List<RecentContractModel>()));
_mockMediator.Setup(x => x.Send(It.IsAny<EstateQueries.GetAssignedOperatorsQuery>(), default))
.ReturnsAsync(Result.Success(new List<OperatorModel>()));
Expand All @@ -83,7 +83,7 @@ public void EstateIndex_HasCorrectPageTitle()
.ReturnsAsync(Result.Success(new EstateModel { EstateId = Guid.NewGuid() }));
_mockMediator.Setup(x => x.Send(It.IsAny<MerchantQueries.GetRecentMerchantsQuery>(), default))
.ReturnsAsync(Result.Success(new List<RecentMerchantsModel>()));
_mockMediator.Setup(x => x.Send(It.IsAny<Queries.GetRecentContractsQuery>(), default))
_mockMediator.Setup(x => x.Send(It.IsAny<ContractQueries.GetRecentContractsQuery>(), default))
.ReturnsAsync(Result.Success(new List<RecentContractModel>()));
_mockMediator.Setup(x => x.Send(It.IsAny<EstateQueries.GetAssignedOperatorsQuery>(), default))
.ReturnsAsync(Result.Success(new List<OperatorModel>()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ else
try
{
isLoading = true;
var result = await Mediator.Send(new Queries.GetContractQuery(CorrelationIdHelper.New(), "stubbed-token", Guid.Parse("11111111-1111-1111-1111-111111111111"), ContractId));
var result = await Mediator.Send(new ContractQueries.GetContractQuery(CorrelationIdHelper.New(), "stubbed-token", Guid.Parse("11111111-1111-1111-1111-111111111111"), ContractId));

if (result.IsSuccess && result.Data != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
{
await RequirePermission(PermissionSection.Contract, PermissionFunction.List);

var result = await Mediator.Send(new Queries.GetContractsQuery(CorrelationIdHelper.New(), "stubbed-token", Guid.Parse("11111111-1111-1111-1111-111111111111")));
var result = await Mediator.Send(new ContractQueries.GetContractsQuery(CorrelationIdHelper.New(), "stubbed-token", Guid.Parse("11111111-1111-1111-1111-111111111111")));
if (result.IsSuccess) {
contracts = ModelFactory.ConvertFrom(result.Data);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@
try
{
isLoading = true;
var result = await Mediator.Send(new Queries.GetContractQuery(CorrelationIdHelper.New(), "stubbed-token", Guid.Parse("11111111-1111-1111-1111-111111111111"), ContractId));
var result = await Mediator.Send(new ContractQueries.GetContractQuery(CorrelationIdHelper.New(), "stubbed-token", Guid.Parse("11111111-1111-1111-1111-111111111111"), ContractId));

if (result.IsSuccess && result.Data != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ private async Task<Result> LoadEstateData(CorrelationId correlationId, Guid esta
{
Task<Result<BusinessLogic.Models.EstateModel>> estateTask = Mediator.Send(new EstateQueries.GetEstateQuery(correlationId, estateId));
Task<Result<List<BusinessLogic.Models.RecentMerchantsModel>>> merchantTask = Mediator.Send(new MerchantQueries.GetRecentMerchantsQuery(correlationId, estateId));
Task<Result<List<BusinessLogic.Models.RecentContractModel>>> contractsTask = Mediator.Send(new Queries.GetRecentContractsQuery(correlationId, estateId));
Task<Result<List<BusinessLogic.Models.RecentContractModel>>> contractsTask = Mediator.Send(new ContractQueries.GetRecentContractsQuery(correlationId, estateId));
Task<Result<List<BusinessLogic.Models.OperatorModel>>> assignedOperatorsTask = Mediator.Send(new EstateQueries.GetAssignedOperatorsQuery(correlationId, estateId));
Task<Result<List<BusinessLogic.Models.OperatorModel>>> allOperatorsTask= Mediator.Send(new Queries.GetOperatorsQuery(correlationId, estateId));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public partial class Edit
private string? terminalNumberError;

// Contracts
private List<ContractModel>? availableContracts;
private List<ContractDropDownModel>? availableContracts;
private List<MerchantContractModel> assignedContracts = new();
private bool showAddContract = false;
private string? selectedContractId;
Expand Down Expand Up @@ -163,18 +163,17 @@ private async Task<Result> LoadOperators() {
private async Task<Result> LoadContracts()
{
var correlationId = new CorrelationId(Guid.NewGuid());
var estateId = Guid.Parse("11111111-1111-1111-1111-111111111111");
var accessToken = "stubbed-token";
var estateId = await this.GetEstateId();

var result = await Mediator.Send(new Queries.GetContractsQuery(correlationId, accessToken, estateId));
var result = await Mediator.Send(new ContractQueries.GetContractsForDropDownQuery(correlationId, estateId));
if (result.IsFailed)
{
return ResultHelpers.CreateFailure(result);
}

var unfiltered = ModelFactory.ConvertFrom(result.Data);
this.availableContracts = unfiltered.Where(u => this.assignedContracts.Select(a => a.ContractId).Contains(u.ContractId) == false).ToList();

return Result.Success();
}

Expand Down Expand Up @@ -408,13 +407,11 @@ private async Task AssignContractToMerchant()
try
{
var correlationId = new CorrelationId(Guid.NewGuid());
var estateId = Guid.Parse("11111111-1111-1111-1111-111111111111");
var accessToken = "stubbed-token";
var estateId = await this.GetEstateId();
var contractId = Guid.Parse(selectedContractId);

var command = new Commands.AssignContractToMerchantCommand(
var command = new MerchantCommands.AssignContractToMerchantCommand(
correlationId,
accessToken,
estateId,
MerchantId,
contractId
Expand All @@ -433,7 +430,6 @@ private async Task AssignContractToMerchant()
if (contract != null && !assignedContracts.Any(a => a.ContractId == contractId))
{
assignedContracts.Add(new MerchantContractModel() {
OperatorName = contract.OperatorName,
ContractName = contract.Description,
ContractId = contract.ContractId
// TODO: products
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@
// Load filter options
var merchantsTask = Mediator.Send(new MerchantQueries.GetMerchantsForDropDownQuery(correlationId, estateId));
var operatorsTask = Mediator.Send(new Queries.GetOperatorsQuery(correlationId, estateId));
var contractsTask = Mediator.Send(new Queries.GetContractsQuery(correlationId, accessToken, estateId));
var contractsTask = Mediator.Send(new ContractQueries.GetContractsQuery(correlationId, accessToken, estateId));

await Task.WhenAll(merchantsTask, operatorsTask, contractsTask);

Expand Down
13 changes: 13 additions & 0 deletions EstateManagementUI.BlazorServer/Factories/ModelFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -446,5 +446,18 @@ public static List<MerchantContractModel> ConvertFrom(List<BusinessLogic.Models.
}
return merchantContracts;
}

public static List<ContractDropDownModel> ConvertFrom(List<BusinessLogic.Models.ContractDropDownModel> resultData) {
List<ContractDropDownModel> contractList = new();
foreach (BusinessLogic.Models.ContractDropDownModel contractDropDownModel in resultData) {
contractList.Add(new ContractDropDownModel() {
ContractId = contractDropDownModel.ContractId,
Description = contractDropDownModel.Description,
OperatorName = contractDropDownModel.OperatorName
});
}

return contractList;
}
}
}
7 changes: 7 additions & 0 deletions EstateManagementUI.BlazorServer/Models/Models.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@ public class OperatorModel
public bool RequireCustomTerminalNumber { get; set; }
}

public class ContractDropDownModel
{
public Guid ContractId { get; set; }
public string? Description { get; set; }
public string? OperatorName { get; set; }
}

// Contract Models
public class ContractModel
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@

Task<Result<List<Contract>>> GetRecentContracts(String accessToken,
Guid estateId, CancellationToken cancellationToken);

Task<Result<List<Contract>>> GetContracts(String accessToken,
Guid estateId, CancellationToken cancellationToken);
Task<Result<TodaysSales>> GetTodaysSales(String accessToken,
Guid estateId,
Int32 merchantReportingId,
Expand Down Expand Up @@ -414,6 +417,33 @@
}
}

public async Task<Result<List<Contract>>> GetContracts(String accessToken,
Guid estateId,
CancellationToken cancellationToken)
{
String requestUri = this.BuildRequestUrl("/api/contracts");

try
{
List<(String headerName, String headerValue)> additionalHeaders = [
(EstateIdHeaderName, estateId.ToString())
];
Result<List<Contract>> result = await this.SendHttpGetRequest<List<Contract>>(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 contracts for estate {estateId}.", ex);

return Result.Failure(exception.Message);
}
}

public async Task<Result<List<Contract>>> GetRecentContracts(String accessToken,
Guid estateId,
CancellationToken cancellationToken) {
Expand All @@ -434,7 +464,7 @@
catch (Exception ex)
{
// An exception has occurred, add some additional information to the message
Exception exception = new Exception($"Error getting recent merchants for estate {estateId}.", ex);
Exception exception = new Exception($"Error getting recent contracts for estate {estateId}.", ex);

return Result.Failure(exception.Message);
}
Expand Down Expand Up @@ -543,24 +573,24 @@
if (alwaysInclude)
return false;

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

Check warning on line 576 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 582 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 588 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 593 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 @@ -581,7 +611,7 @@
queryString.Append("&");
}

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

Check warning on line 614 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
50 changes: 35 additions & 15 deletions EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,21 +99,7 @@ public static EstateModel ConvertFrom(Estate apiResultData) {

return model;
}

public static List<RecentContractModel> ConvertFrom(List<Contract> apiResultData) {
List<RecentContractModel> contracts = new();

foreach (Contract contract in apiResultData) {
contracts.Add(new RecentContractModel {
ContractId = contract.ContractId,
Description = contract.Description,
OperatorName = contract.OperatorName
});
}

return contracts;
}


public static List<OperatorModel> ConvertFrom(List<EstateOperator> apiResultData) {
List<OperatorModel> operators = new();
foreach (EstateOperator estateOperator in apiResultData) {
Expand Down Expand Up @@ -292,4 +278,38 @@ public static List<MerchantDeviceModel> ToMerchantDevices(this List<MerchantDevi

return merchantDevices;
}

public static List<RecentContractModel> ToRecentContracts(this List<Contract> apiResultData)
{
List<RecentContractModel> contracts = new();

foreach (Contract contract in apiResultData)
{
contracts.Add(new RecentContractModel
{
ContractId = contract.ContractId,
Description = contract.Description,
OperatorName = contract.OperatorName
});
}

return contracts;
}
public static List<ContractDropDownModel> ToContractDropDown(this List<Contract> apiResultData)
{
List<ContractDropDownModel> contracts = new();

foreach (Contract contract in apiResultData)
{
var c = new ContractDropDownModel
{
ContractId = contract.ContractId,
Description = contract.Description,
OperatorName = contract.OperatorName
};
contracts.Add(c);
}

return contracts;
}
}
Loading
Loading