diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs index 39864baa..f5aa445e 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs @@ -32,7 +32,7 @@ public void ContractsIndex_RendersCorrectly() } }; - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(contracts)); // Act @@ -47,7 +47,7 @@ public void ContractsIndex_WithNoContracts_ShowsEmptyState() { // Arrange var emptyList = new List(); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(emptyList)); // Act @@ -82,7 +82,7 @@ public void ContractsIndex_WithContracts_DisplaysContractList() } }; - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(contracts)); // Act @@ -116,7 +116,7 @@ public void ContractsIndex_DisplaysProductCount() } }; - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(contracts)); // Act @@ -131,7 +131,7 @@ public void ContractsIndex_DisplaysProductCount() public void ContractsIndex_HasCorrectPageTitle() { // Arrange - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); // Act diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs index 180bd681..8dbd80ce 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs @@ -28,7 +28,7 @@ public void ContractsView_RendersCorrectly() OperatorName = "Test Operator" }; - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(contract)); // Act @@ -51,7 +51,7 @@ public void ContractsView_DisplaysContractDetails() OperatorName = "Test Operator" }; - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(contract)); // Act @@ -68,7 +68,7 @@ public void ContractsView_HasCorrectPageTitle() { // Arrange var contractId = Guid.NewGuid(); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new ContractModel { ContractId = contractId })); // Act diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs index ea373191..70364aae 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs @@ -31,7 +31,7 @@ public void EstateIndex_RendersCorrectly() .ReturnsAsync(Result.Success(estate)); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); @@ -61,7 +61,7 @@ public void EstateIndex_DisplaysEstateDetails() .ReturnsAsync(Result.Success(estate)); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); @@ -83,7 +83,7 @@ public void EstateIndex_HasCorrectPageTitle() .ReturnsAsync(Result.Success(new EstateModel { EstateId = Guid.NewGuid() })); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor index 04182246..000bc1c3 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor @@ -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) { diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor index 1046b911..702423bb 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor @@ -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); } diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/View.razor b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/View.razor index 8e7a3765..a0bb3b7a 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/View.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/View.razor @@ -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) { diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs index f0f635b5..df235207 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs @@ -52,7 +52,7 @@ private async Task LoadEstateData(CorrelationId correlationId, Guid esta { Task> estateTask = Mediator.Send(new EstateQueries.GetEstateQuery(correlationId, estateId)); Task>> merchantTask = Mediator.Send(new MerchantQueries.GetRecentMerchantsQuery(correlationId, estateId)); - Task>> contractsTask = Mediator.Send(new Queries.GetRecentContractsQuery(correlationId, estateId)); + Task>> contractsTask = Mediator.Send(new ContractQueries.GetRecentContractsQuery(correlationId, estateId)); Task>> assignedOperatorsTask = Mediator.Send(new EstateQueries.GetAssignedOperatorsQuery(correlationId, estateId)); Task>> allOperatorsTask= Mediator.Send(new Queries.GetOperatorsQuery(correlationId, estateId)); diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs index 27b7e114..fd8ebc24 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs @@ -38,7 +38,7 @@ public partial class Edit private string? terminalNumberError; // Contracts - private List? availableContracts; + private List? availableContracts; private List assignedContracts = new(); private bool showAddContract = false; private string? selectedContractId; @@ -163,10 +163,9 @@ private async Task LoadOperators() { private async Task 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); @@ -174,7 +173,7 @@ private async Task LoadContracts() 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(); } @@ -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 @@ -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 diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor index c42fa540..0ac38e92 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor @@ -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); diff --git a/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs b/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs index fec272bc..db053821 100644 --- a/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs +++ b/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs @@ -446,5 +446,18 @@ public static List ConvertFrom(List ConvertFrom(List resultData) { + List contractList = new(); + foreach (BusinessLogic.Models.ContractDropDownModel contractDropDownModel in resultData) { + contractList.Add(new ContractDropDownModel() { + ContractId = contractDropDownModel.ContractId, + Description = contractDropDownModel.Description, + OperatorName = contractDropDownModel.OperatorName + }); + } + + return contractList; + } } } \ No newline at end of file diff --git a/EstateManagementUI.BlazorServer/Models/Models.cs b/EstateManagementUI.BlazorServer/Models/Models.cs index a565fc3d..e577bffe 100644 --- a/EstateManagementUI.BlazorServer/Models/Models.cs +++ b/EstateManagementUI.BlazorServer/Models/Models.cs @@ -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 { diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs index a5f65156..c46989ec 100644 --- a/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs @@ -44,6 +44,9 @@ Task> GetMerchant(String accessToken, Task>> GetRecentContracts(String accessToken, Guid estateId, CancellationToken cancellationToken); + + Task>> GetContracts(String accessToken, + Guid estateId, CancellationToken cancellationToken); Task> GetTodaysSales(String accessToken, Guid estateId, Int32 merchantReportingId, @@ -414,6 +417,33 @@ public async Task>> GetMerchantDevices(String access } } + public async Task>> GetContracts(String accessToken, + Guid estateId, + CancellationToken cancellationToken) + { + String requestUri = this.BuildRequestUrl("/api/contracts"); + + 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 contracts for estate {estateId}.", ex); + + return Result.Failure(exception.Message); + } + } + public async Task>> GetRecentContracts(String accessToken, Guid estateId, CancellationToken cancellationToken) { @@ -434,7 +464,7 @@ public async Task>> GetRecentContracts(String accessToken, 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); } diff --git a/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs b/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs index 8b7071f9..3e5cdb4c 100644 --- a/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs +++ b/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs @@ -99,21 +99,7 @@ public static EstateModel ConvertFrom(Estate apiResultData) { return model; } - - public static List ConvertFrom(List apiResultData) { - List 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 ConvertFrom(List apiResultData) { List operators = new(); foreach (EstateOperator estateOperator in apiResultData) { @@ -292,4 +278,38 @@ public static List ToMerchantDevices(this List ToRecentContracts(this List apiResultData) + { + List 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 ToContractDropDown(this List apiResultData) + { + List 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; + } } \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs b/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs new file mode 100644 index 00000000..293d32e0 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs @@ -0,0 +1,53 @@ +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using Shared.Results; +using SimpleResults; +using System; +using System.Collections.Generic; +using System.Text; +using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +namespace EstateManagementUI.BusinessLogic.Client { + public partial interface IApiClient { + Task>> GetRecentContracts(ContractQueries.GetRecentContractsQuery request, + CancellationToken cancellationToken); + + Task>> GetContracts(ContractQueries.GetContractsForDropDownQuery request, + CancellationToken cancellationToken); + } + + public partial class ApiClient : IApiClient { + public async Task>> GetRecentContracts(ContractQueries.GetRecentContractsQuery request, + CancellationToken cancellationToken) { + Result token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + Result> apiResult = await this.EstateReportingApiClient.GetRecentContracts(token.Data, request.EstateId, cancellationToken); + + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + List recentContractModels = apiResult.Data.ToRecentContracts(); + + return Result.Success(recentContractModels); + } + + public async Task>> GetContracts(ContractQueries.GetContractsForDropDownQuery request, + CancellationToken cancellationToken) + { + Result token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + Result> apiResult = await this.EstateReportingApiClient.GetContracts(token.Data, request.EstateId, cancellationToken); + + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + List contractModels = apiResult.Data.ToContractDropDown(); + + return Result.Success(contractModels); + } + } +} diff --git a/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs b/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs index 89f1e9fb..7d1ba585 100644 --- a/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs @@ -13,7 +13,6 @@ public partial interface IApiClient { Task> GetMerchantKpi(MerchantQueries.GetMerchantKpiQuery request, CancellationToken cancellationToken); Task>> GetRecentMerchants(MerchantQueries.GetRecentMerchantsQuery request, CancellationToken cancellationToken); - Task>> GetRecentContracts(Queries.GetRecentContractsQuery request, CancellationToken cancellationToken); Task>> GetMerchants(MerchantQueries.GetMerchantsQuery request, CancellationToken cancellationToken); Task>> GetMerchants(MerchantQueries.GetMerchantsForDropDownQuery request, CancellationToken cancellationToken); Task> GetMerchant(MerchantQueries.GetMerchantQuery request, CancellationToken cancellationToken); @@ -26,6 +25,7 @@ public partial interface IApiClient Task RemoveOperatorFromMerchant(MerchantCommands.RemoveOperatorFromMerchantCommand request, CancellationToken cancellationToken); Task AddOperatorToMerchant(MerchantCommands.AddOperatorToMerchantCommand request, CancellationToken cancellationToken); Task RemoveContractFromMerchant(MerchantCommands.RemoveContractFromMerchantCommand request, CancellationToken cancellationToken); + Task AddContractToMerchant(MerchantCommands.AssignContractToMerchantCommand request, CancellationToken cancellationToken); } public partial class ApiClient : IApiClient { @@ -59,6 +59,21 @@ public async Task RemoveContractFromMerchant(MerchantCommands.RemoveCont return Result.Success(); } + public async Task AddContractToMerchant(MerchantCommands.AssignContractToMerchantCommand request, + CancellationToken cancellationToken) { + var token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + AddMerchantContractRequest apiRequest = new() { ContractId = request.ContractId }; + + var apiResult = await this.TransactionProcessorClient.AddContractToMerchant(token.Data, request.EstateId, request.MerchantId, apiRequest, cancellationToken); + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + return Result.Success(); + } + public async Task RemoveOperatorFromMerchant(MerchantCommands.RemoveOperatorFromMerchantCommand request, CancellationToken cancellationToken) { var token = await this.GetToken(cancellationToken); @@ -105,23 +120,7 @@ public async Task>> GetRecentMerchants(Merchan return Result.Success(recentMerchantsModels); } - - public async Task>> GetRecentContracts(Queries.GetRecentContractsQuery request, - CancellationToken cancellationToken) { - Result token = await this.GetToken(cancellationToken); - if (token.IsFailed) - return ResultHelpers.CreateFailure(token); - - Result> apiResult = await this.EstateReportingApiClient.GetRecentContracts(token.Data, request.EstateId, cancellationToken); - - if (apiResult.IsFailed) - return ResultHelpers.CreateFailure(apiResult); - - List recentContractModels = APIModelFactory.ConvertFrom(apiResult.Data); - - return Result.Success(recentContractModels); - } - + public async Task>> GetMerchants(MerchantQueries.GetMerchantsQuery request, CancellationToken cancellationToken) { diff --git a/EstateManagmentUI.BusinessLogic/Models/Models.cs b/EstateManagmentUI.BusinessLogic/Models/Models.cs index c58f07e7..d76bb793 100644 --- a/EstateManagmentUI.BusinessLogic/Models/Models.cs +++ b/EstateManagmentUI.BusinessLogic/Models/Models.cs @@ -62,6 +62,13 @@ public class ContractModel public List? Products { get; set; } } +public class ContractDropDownModel +{ + public Guid ContractId { get; set; } + public string? Description { get; set; } + public string? OperatorName { get; set; } +} + public class ContractProductModel { public Guid ContractProductId { get; set; } diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs index 9673fa42..33a19ba7 100644 --- a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs @@ -1,4 +1,5 @@ -using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; +using EstateManagementUI.BusinessLogic.Client; using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using MediatR; @@ -61,7 +62,7 @@ public class MerchantRequestHandler : IRequestHandler, IRequestHandler, IRequestHandler, - IRequestHandler, + IRequestHandler, IRequestHandler>>, IRequestHandler>>, IRequestHandler>>, @@ -138,9 +139,9 @@ public async Task> Handle(MerchantQueries.GetMerchantQuery return await this.ApiClient.GetMerchant(request, cancellationToken); } - public async Task Handle(Commands.AssignContractToMerchantCommand request, + public async Task Handle(MerchantCommands.AssignContractToMerchantCommand request, CancellationToken cancellationToken) { - return Result.Success(); + return await this.ApiClient.AddContractToMerchant(request, cancellationToken); } public async Task>> Handle(MerchantQueries.GetRecentMerchantsQuery request, @@ -169,12 +170,14 @@ public async Task>> Handle(MerchantQueries.GetM } } - public class ContractRequestHandler : IRequestHandler>>, - IRequestHandler>, + public class ContractRequestHandler : IRequestHandler>>, + IRequestHandler>, IRequestHandler, IRequestHandler, IRequestHandler, - IRequestHandler>> { + IRequestHandler>>, + IRequestHandler>> + { private readonly IApiClient ApiClient; @@ -183,12 +186,12 @@ public ContractRequestHandler(IApiClient apiClient) this.ApiClient = apiClient; } - public async Task>> Handle(Queries.GetContractsQuery request, + public async Task>> Handle(ContractQueries.GetContractsQuery request, CancellationToken cancellationToken) { return Result.Success(StubTestData.GetMockContracts()); } - public async Task> Handle(Queries.GetContractQuery request, + public async Task> Handle(ContractQueries.GetContractQuery request, CancellationToken cancellationToken) { return Result.Success(StubTestData.GetMockContract()); } @@ -208,10 +211,15 @@ public async Task Handle(Commands.AddTransactionFeeForProductToContractC return Result.Success(); } - public async Task>> Handle(Queries.GetRecentContractsQuery request, + public async Task>> Handle(ContractQueries.GetRecentContractsQuery request, CancellationToken cancellationToken) { return await this.ApiClient.GetRecentContracts(request, cancellationToken); } + + public async Task>> Handle(ContractQueries.GetContractsForDropDownQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetContracts(request, cancellationToken); + } } public class OperatorRequestHandler : IRequestHandler>>, diff --git a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs index f76b9d6d..5d397a67 100644 --- a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs +++ b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs @@ -27,13 +27,20 @@ public record GetEstateQuery(CorrelationId CorrelationId, Guid EstateId) : IRequ public record GetAssignedOperatorsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; } +public static class ContractQueries { + public record GetRecentContractsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetContractsForDropDownQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetContractsQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId) : IRequest>>; + public record GetContractQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid ContractId) : IRequest>; +} + public static class Queries { - public record GetRecentContractsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetOperatorsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; - public record GetContractsQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId) : IRequest>>; + public record GetOperatorQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid OperatorId) : IRequest>; - public record GetContractQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid ContractId) : IRequest>; + public record GetFileImportLogsListQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, DateTime StartDate, DateTime EndDate) : IRequest>>; public record GetFileImportLogQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, Guid FileImportLogId) @@ -74,12 +81,12 @@ public record UpdateMerchantCommand(CorrelationId CorrelationId,Guid EstateId, G public record RemoveOperatorFromMerchantCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, Guid OperatorId) : IRequest; public record AddOperatorToMerchantCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, Guid OperatorId, string? MerchantNumber, string? TerminalNumber) : IRequest; public record RemoveContractFromMerchantCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, Guid ContractId) : IRequest; + public record AssignContractToMerchantCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, Guid ContractId) : IRequest; } public static class Commands { public record AddMerchantDeviceCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, string DeviceIdentifier) : IRequest; - public record AssignContractToMerchantCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, Guid ContractId) : IRequest; public record CreateContractCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, string Description, Guid OperatorId) : IRequest; public record CreateMerchantCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, string Name, string ContactName, string ContactEmail) : IRequest; public record CreateMerchantUserCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, string EmailAddress, string Password) : IRequest; diff --git a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs index 5d4b5d91..744d2be5 100644 --- a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs +++ b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs @@ -34,10 +34,10 @@ public Task Send(IRequest request, Cancellation // Operator Queries Queries.GetOperatorsQuery query => Task.FromResult((TResponse)(object)Result.Success(this._testDataStore.GetOperators(query.EstateId))), Queries.GetOperatorQuery query => Task.FromResult((TResponse)(object)this.GetOperatorResult(query.EstateId, query.OperatorId)), - + // Contract Queries - Queries.GetContractsQuery query => Task.FromResult((TResponse)(object)Result.Success(this._testDataStore.GetContracts(query.EstateId))), - Queries.GetContractQuery query => Task.FromResult((TResponse)(object)this.GetContractResult(query.EstateId, query.ContractId)), + ContractQueries.GetContractsQuery query => Task.FromResult((TResponse)(object)Result.Success(this._testDataStore.GetContracts(query.EstateId))), + ContractQueries.GetContractQuery query => Task.FromResult((TResponse)(object)this.GetContractResult(query.EstateId, query.ContractId)), // File Processing Queries - return mock data Queries.GetFileImportLogsListQuery => Task.FromResult((TResponse)(object)Result.Success(GetMockFileImportLogs())), @@ -74,7 +74,7 @@ public Task Send(IRequest request, Cancellation Commands.CreateContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteCreateContract(cmd)), Commands.AddProductToContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddProductToContract(cmd)), Commands.AddTransactionFeeForProductToContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddTransactionFee(cmd)), - Commands.AssignContractToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAssignContractToMerchant(cmd)), + MerchantCommands.AssignContractToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAssignContractToMerchant(cmd)), MerchantCommands.RemoveContractFromMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteRemoveContractFromMerchant(cmd)), MerchantCommands.AddOperatorToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddOperatorToMerchant(cmd)), MerchantCommands.RemoveOperatorFromMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteRemoveOperatorFromMerchant(cmd)), @@ -261,7 +261,7 @@ private Result ExecuteAddTransactionFee(Commands.AddTransactionFeeForProductToCo return Result.Success(); } - private Result ExecuteAssignContractToMerchant(Commands.AssignContractToMerchantCommand cmd) + private Result ExecuteAssignContractToMerchant(MerchantCommands.AssignContractToMerchantCommand cmd) { var merchant = this._testDataStore.GetMerchant(cmd.EstateId, cmd.MerchantId); if (merchant == null)