From fbf2699ec83fa9d26693fa86300c0d37dfb07d35 Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Mon, 9 Feb 2026 13:37:50 +0000 Subject: [PATCH] Genreal code tidy up --- .../Pages/Contracts/ContractsEditPageTests.cs | 1 - .../Contracts/ContractsIndexPageTests.cs | 1 + .../Pages/Contracts/ContractsNewPageTests.cs | 2 - .../Pages/Contracts/ContractsViewPageTests.cs | 7 - .../Pages/Estate/EstateIndexPageTests.cs | 1 - .../Merchants/MerchantsIndexPageTests.cs | 2 - .../Pages/Merchants/MerchantsViewPageTests.cs | 8 +- .../Operators/OperatorsIndexPageTests.cs | 1 - .../Services/TestDataStoreTests.cs | 6 +- .../UIServices/ContractUIServiceTests.cs | 10 +- .../UIServices/EstateUIServiceTests.cs | 56 +-- .../UIServices/MerchantUIServiceTests.cs | 13 +- .../UIServices/OperatorUIServiceTests.cs | 4 +- .../Components/Common/CustomComponentBase.cs | 33 ++ .../Components/Pages/Contracts/Index.razor.cs | 1 - .../Components/Pages/Estate/Index.razor.cs | 1 - .../Components/Pages/Home.razor.cs | 8 +- .../Pages/Merchants/Deposit.razor.cs | 1 - .../Components/Pages/Merchants/Edit.razor.cs | 1 - .../Components/Pages/Operators/Index.razor.cs | 1 - .../Pages/Reporting/AnalyticalCharts.razor | 2 +- .../Permissions/AuthorizedComponentBase.cs | 31 +- .../Factories/ModelFactory.cs | 115 +++--- .../UIServices/EstateUIService.cs | 10 +- .../UIServices/MerchantUIService.cs | 1 - .../DataTransferObjects/ComparisonDate.cs | 13 + .../DataTransferObjects/Contract.cs | 29 ++ .../DataTransferObjects/ContractProduct.cs | 21 + .../ContractProductTransactionFee.cs | 17 + .../DataTransferObjects.cs | 285 -------------- .../BackendAPI/DataTransferObjects/Estate.cs | 21 + .../DataTransferObjects/EstateContract.cs | 15 + .../DataTransferObjects/EstateMerchant.cs | 13 + .../DataTransferObjects/EstateOperator.cs | 17 + .../DataTransferObjects/EstateUser.cs | 13 + .../DataTransferObjects/Merchant.cs | 45 +++ .../DataTransferObjects/MerchantContract.cs | 20 + .../MerchantContractProduct.cs | 21 + .../DataTransferObjects/MerchantDevice.cs | 16 + .../DataTransferObjects/MerchantKpi.cs | 13 + .../DataTransferObjects/MerchantOperator.cs | 19 + .../DataTransferObjects/Operator.cs | 19 + .../DataTransferObjects/TodaysSales.cs | 19 + ...iClient.cs => EstateReportingApiClient.cs} | 0 .../Client/APIModelFactory.cs | 110 +++--- .../Client/ContractMethods.cs | 40 +- .../Client/DateMethods.cs | 2 +- .../Client/EstateMethods.cs | 20 +- .../Client/MerchantMethods.cs | 58 +-- .../Client/OperatorMethods.cs | 30 +- .../Client/StubTestData.cs | 84 ++-- .../Models/ContractModels.cs | 46 +++ .../Models/EstateModels.cs | 41 ++ .../Models/MerchantModels.cs | 164 ++++---- .../Models/Models.cs | 101 +---- .../Models/OperatorModels.cs | 28 +- .../RequestHandlers/ContractRequestHandler.cs | 66 ++++ .../DashboardRequestHandler.cs | 101 +++++ .../RequestHandlers/DateRequestHandler.cs | 369 +----------------- .../RequestHandlers/EstateRequestHandler.cs | 38 ++ .../RequestHandlers/FileRequestHandler.cs | 34 ++ .../RequestHandlers/MerchantRequestHandler.cs | 126 ++++++ .../RequestHandlers/OperatorRequestHandler.cs | 43 ++ .../Requests/Commands.cs | 12 + .../Requests/ContractCommands.cs | 11 + .../Requests/ContractQueries.cs | 12 + .../Requests/CorrelationIdHelper.cs | 8 + .../Requests/EstateCommands.cs | 9 + .../Requests/EstateQueries.cs | 10 + .../Requests/MerchantCommands.cs | 18 + .../Requests/MerchantQueries.cs | 16 + .../Requests/OperatorCommands.cs | 10 + .../Requests/OperatorQueries.cs | 11 + .../Requests/Queries.cs | 35 ++ .../Requests/Requests.cs | 111 ------ .../Services/ITestDataStore.cs | 30 +- .../Services/TestDataStore.cs | 107 +++-- .../Services/TestMediatorService.cs | 30 +- 78 files changed, 1477 insertions(+), 1387 deletions(-) create mode 100644 EstateManagementUI.BlazorServer/Components/Common/CustomComponentBase.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ComparisonDate.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Contract.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProduct.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProductTransactionFee.cs delete mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/DataTransferObjects.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Estate.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateContract.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateMerchant.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateOperator.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateUser.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Merchant.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContract.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContractProduct.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantDevice.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantKpi.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantOperator.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Operator.cs create mode 100644 EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/TodaysSales.cs rename EstateManagmentUI.BusinessLogic/BackendAPI/{IEstateReportingApiClient.cs => EstateReportingApiClient.cs} (100%) create mode 100644 EstateManagmentUI.BusinessLogic/Models/ContractModels.cs create mode 100644 EstateManagmentUI.BusinessLogic/Models/EstateModels.cs create mode 100644 EstateManagmentUI.BusinessLogic/RequestHandlers/ContractRequestHandler.cs create mode 100644 EstateManagmentUI.BusinessLogic/RequestHandlers/DashboardRequestHandler.cs create mode 100644 EstateManagmentUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs create mode 100644 EstateManagmentUI.BusinessLogic/RequestHandlers/FileRequestHandler.cs create mode 100644 EstateManagmentUI.BusinessLogic/RequestHandlers/MerchantRequestHandler.cs create mode 100644 EstateManagmentUI.BusinessLogic/RequestHandlers/OperatorRequestHandler.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/Commands.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/ContractCommands.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/ContractQueries.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/CorrelationIdHelper.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/EstateCommands.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/EstateQueries.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/MerchantCommands.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/MerchantQueries.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/OperatorCommands.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/OperatorQueries.cs create mode 100644 EstateManagmentUI.BusinessLogic/Requests/Queries.cs delete mode 100644 EstateManagmentUI.BusinessLogic/Requests/Requests.cs diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsEditPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsEditPageTests.cs index b01c80bb..49392862 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsEditPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsEditPageTests.cs @@ -4,7 +4,6 @@ using EstateManagementUI.BlazorServer.Components.Permissions; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Microsoft.AspNetCore.Components; diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs index 5e3388a3..826c3b3d 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsIndexPageTests.cs @@ -13,6 +13,7 @@ using Shouldly; using SimpleResults; using TransactionProcessor.DataTransferObjects.Responses.Contract; +using ContractModels = EstateManagementUI.BlazorServer.Models.ContractModels; using ContractsIndex = EstateManagementUI.BlazorServer.Components.Pages.Contracts.Index; namespace EstateManagementUI.BlazorServer.Tests.Pages.Contracts; diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsNewPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsNewPageTests.cs index 5799f433..61f4a2d4 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsNewPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsNewPageTests.cs @@ -1,8 +1,6 @@ using AngleSharp.Dom; using Bunit; using EstateManagementUI.BlazorServer.Models; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; -using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using Moq; using Shouldly; diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs index 21712ef1..715cecec 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Contracts/ContractsViewPageTests.cs @@ -1,15 +1,8 @@ using AngleSharp.Dom; using Bunit; using EstateManagementUI.BlazorServer.Components.Pages.Contracts; -using EstateManagementUI.BlazorServer.Components.Permissions; using EstateManagementUI.BlazorServer.Models; -using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BlazorServer.Tests.Pages.FileProcessing; -using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; -using MediatR; -using Microsoft.AspNetCore.Components; -using Microsoft.Extensions.DependencyInjection; using Moq; using Shouldly; using SimpleResults; diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs index 5c3ebb39..55fb673e 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs @@ -4,7 +4,6 @@ using EstateManagementUI.BlazorServer.Common; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Tests.Pages.FileProcessing; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using Microsoft.AspNetCore.Components.Web; using Moq; diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsIndexPageTests.cs index 9048e686..79e67c96 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsIndexPageTests.cs @@ -3,8 +3,6 @@ using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; using EstateManagementUI.BlazorServer.Tests.Pages.FileProcessing; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; -using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Microsoft.AspNetCore.Components; diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsViewPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsViewPageTests.cs index b4836054..dcd406a9 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsViewPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Merchants/MerchantsViewPageTests.cs @@ -3,8 +3,6 @@ using EstateManagementUI.BlazorServer.Components.Pages.Merchants; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Tests.Pages.FileProcessing; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; -using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Microsoft.AspNetCore.Components; @@ -12,10 +10,6 @@ using Moq; using Shouldly; using SimpleResults; -using MerchantContractModel = EstateManagementUI.BusinessLogic.Models.MerchantContractModel; -using MerchantDeviceModel = EstateManagementUI.BusinessLogic.Models.MerchantDeviceModel; -using MerchantModel = EstateManagementUI.BusinessLogic.Models.MerchantModel; -using MerchantOperatorModel = EstateManagementUI.BusinessLogic.Models.MerchantOperatorModel; namespace EstateManagementUI.BlazorServer.Tests.Pages.Merchants; @@ -310,7 +304,7 @@ public void MerchantsView_DisplaysContracts_WhenPresent() { ProductId = Guid.NewGuid(), ProductName = "Test Product", - DisplayText = "£10 Topup" + DisplayText = "£10 Topup" } } } diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Operators/OperatorsIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Operators/OperatorsIndexPageTests.cs index aae82024..7a21b3e9 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Operators/OperatorsIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Operators/OperatorsIndexPageTests.cs @@ -3,7 +3,6 @@ using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; using EstateManagementUI.BlazorServer.Tests.Pages.FileProcessing; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Microsoft.AspNetCore.Components; diff --git a/EstateManagementUI.BlazorServer.Tests/Services/TestDataStoreTests.cs b/EstateManagementUI.BlazorServer.Tests/Services/TestDataStoreTests.cs index 8608f3f1..95d837b8 100644 --- a/EstateManagementUI.BlazorServer.Tests/Services/TestDataStoreTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Services/TestDataStoreTests.cs @@ -1,9 +1,9 @@ using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BusinessLogic.Services; using Shouldly; -using EstateModel = EstateManagementUI.BusinessLogic.Models.EstateModel; -using MerchantModel = EstateManagementUI.BusinessLogic.Models.MerchantModel; -using OperatorModel = EstateManagementUI.BusinessLogic.Models.OperatorModel; +using EstateModel = EstateManagementUI.BusinessLogic.Models.EstateModels.EstateModel; +using MerchantModel = EstateManagementUI.BusinessLogic.Models.MerchantModels.MerchantModel; +using OperatorModel = EstateManagementUI.BusinessLogic.Models.OperatorModels.OperatorModel; namespace EstateManagementUI.BlazorServer.Tests.Services; diff --git a/EstateManagementUI.BlazorServer.Tests/UIServices/ContractUIServiceTests.cs b/EstateManagementUI.BlazorServer.Tests/UIServices/ContractUIServiceTests.cs index 025dcdca..ffec9e89 100644 --- a/EstateManagementUI.BlazorServer.Tests/UIServices/ContractUIServiceTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/UIServices/ContractUIServiceTests.cs @@ -32,7 +32,7 @@ public async Task GetContracts_ReturnsMappedList_WhenMediatorSucceeds() var estateId = Guid.NewGuid(); var correlationId = CorrelationIdHelper.New(); - var bizContracts = new List + var bizContracts = new List { new() { @@ -40,7 +40,7 @@ public async Task GetContracts_ReturnsMappedList_WhenMediatorSucceeds() Description = "Contract A", OperatorId = Guid.NewGuid(), OperatorName = "OpA", - Products = new List + Products = new List { new() { @@ -50,7 +50,7 @@ public async Task GetContracts_ReturnsMappedList_WhenMediatorSucceeds() ProductType = "NotSet", Value = "10.00", NumberOfFees = 0, - TransactionFees = new List() + TransactionFees = new List() } } } @@ -97,13 +97,13 @@ public async Task GetContract_ReturnsMappedModel_WhenMediatorSucceeds() // Arrange var estateId = Guid.NewGuid(); var contractId = Guid.NewGuid(); - var bizContract = new BusinessLogic.Models.ContractModel + var bizContract = new BusinessLogic.Models.ContractModels.ContractModel { ContractId = contractId, Description = "Contract Detail", OperatorId = Guid.NewGuid(), OperatorName = "OpDetail", - Products = new List() + Products = new List() }; _mockMediator diff --git a/EstateManagementUI.BlazorServer.Tests/UIServices/EstateUIServiceTests.cs b/EstateManagementUI.BlazorServer.Tests/UIServices/EstateUIServiceTests.cs index 199c35ed..42246b0d 100644 --- a/EstateManagementUI.BlazorServer.Tests/UIServices/EstateUIServiceTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/UIServices/EstateUIServiceTests.cs @@ -32,33 +32,33 @@ public async Task LoadEstate_ReturnsMappedModel_WhenAllQueriesSucceed() var estateId = Guid.NewGuid(); var correlationId = CorrelationIdHelper.New(); - var bizEstate = new BusinessLogic.Models.EstateModel + var bizEstate = new BusinessLogic.Models.EstateModels.EstateModel { EstateId = estateId, EstateName = "Test Estate", Reference = "REF001", - Merchants = new List { new() { MerchantId = Guid.NewGuid(), Name = "M1", Reference = "R1" } }, - Contracts = new List { new() { ContractId = Guid.NewGuid(), Name = "C1", OperatorName = "Op" } }, - Operators = new List { new() { OperatorId = Guid.NewGuid(), Name = "OpAssigned" } }, - Users = new List { new() { UserId = Guid.NewGuid(), EmailAddress = "u@x" } } + Merchants = new List { new() { MerchantId = Guid.NewGuid(), Name = "M1", Reference = "R1" } }, + Contracts = new List { new() { ContractId = Guid.NewGuid(), Name = "C1", OperatorName = "Op" } }, + Operators = new List { new() { OperatorId = Guid.NewGuid(), Name = "OpAssigned" } }, + Users = new List { new() { UserId = Guid.NewGuid(), EmailAddress = "u@x" } } }; - var recentMerchants = new List + var recentMerchants = new List { new() { MerchantId = Guid.NewGuid(), Name = "RecentM", Reference = "RM", CreatedDateTime = DateTime.UtcNow } }; - var recentContracts = new List + var recentContracts = new List { new() { ContractId = Guid.NewGuid(), Description = "RecentC", OperatorName = "Op" } }; - var assignedOperators = new List + var assignedOperators = new List { new() { OperatorId = bizEstate.Operators!.First().OperatorId, Name = "OpAssigned" } }; - var allOperators = new List + var allOperators = new List { new() { OperatorId = Guid.NewGuid(), OperatorName = "OpA" }, new() { OperatorId = assignedOperators[0].OperatorId, OperatorName = "OpAssigned" } @@ -105,13 +105,13 @@ public async Task LoadEstate_ReturnsFailure_WhenEstateQueryFails() // Provide success for other queries so the service behaviour is isolated _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); // Act var result = await _service.LoadEstate(correlationId, estateId); @@ -132,11 +132,11 @@ public async Task LoadEstate_ReturnsFailure_WhenRecentMerchantQueryFails() _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) .ReturnsAsync(Result.Failure()); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); // Act var result = await _service.LoadEstate(correlationId, estateId); @@ -153,15 +153,15 @@ public async Task LoadEstate_ReturnsFailure_WhenRecentContractsQueryFails() var correlationId = CorrelationIdHelper.New(); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new EstateModel())); + .ReturnsAsync(Result.Success(new EstateModels.EstateModel())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) .ReturnsAsync(Result.Failure()); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); // Act var result = await _service.LoadEstate(correlationId, estateId); @@ -178,15 +178,15 @@ public async Task LoadEstate_ReturnsFailure_WhenGetAssignedOperatorsQueryFails() var correlationId = CorrelationIdHelper.New(); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new EstateModel())); + .ReturnsAsync(Result.Success(new EstateModels.EstateModel())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) .ReturnsAsync(Result.Failure()); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); // Act var result = await _service.LoadEstate(correlationId, estateId); @@ -203,13 +203,13 @@ public async Task LoadEstate_ReturnsFailure_WhenGetOperatorsForDropDownQueryFail var correlationId = CorrelationIdHelper.New(); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new EstateModel())); + .ReturnsAsync(Result.Success(new EstateModels.EstateModel())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) - .ReturnsAsync(Result.Success(new List())); + .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(m => m.Send(It.IsAny(), It.IsAny())) .ReturnsAsync(Result.Failure()); diff --git a/EstateManagementUI.BlazorServer.Tests/UIServices/MerchantUIServiceTests.cs b/EstateManagementUI.BlazorServer.Tests/UIServices/MerchantUIServiceTests.cs index 1f4867c1..50e6d004 100644 --- a/EstateManagementUI.BlazorServer.Tests/UIServices/MerchantUIServiceTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/UIServices/MerchantUIServiceTests.cs @@ -30,7 +30,7 @@ public async Task GetMerchant_ReturnsMappedModel_WhenMediatorSucceeds() // Arrange var estateId = Guid.NewGuid(); var merchantId = Guid.NewGuid(); - var biz = new BusinessLogic.Models.MerchantModel + var biz = new BusinessLogic.Models.MerchantModels.MerchantModel { MerchantId = merchantId, MerchantName = "M1", @@ -88,7 +88,7 @@ public async Task GetMerchants_ReturnsMappedList_WhenMediatorSucceeds() { // Arrange var estateId = Guid.NewGuid(); - var bizList = new List + var bizList = new List { new() { MerchantId = Guid.NewGuid(), MerchantName = "M1", MerchantReference = "R1", Balance = 1m, AvailableBalance = 1m, SettlementSchedule = "S", Region = "Reg", PostalCode = "PC", CreatedDateTime = DateTime.UtcNow } }; @@ -124,7 +124,7 @@ public async Task GetMerchantOperators_ReturnsMappedList_WhenMediatorSucceeds() { var estateId = Guid.NewGuid(); var merchantId = Guid.NewGuid(); - var bizList = new List + var bizList = new List { new() { MerchantId = merchantId, OperatorId = Guid.NewGuid(), OperatorName = "Op1", MerchantNumber = "MN", TerminalNumber = "TN", IsDeleted = false } }; @@ -157,9 +157,10 @@ public async Task GetMerchantContracts_ReturnsMappedList_WhenMediatorSucceeds() { var estateId = Guid.NewGuid(); var merchantId = Guid.NewGuid(); - var bizList = new List + var bizList = new List { - new() { MerchantId = merchantId, ContractId = Guid.NewGuid(), ContractName = "C1", OperatorName = "Op" , IsDeleted=false, ContractProducts = new List() } + new() { MerchantId = merchantId, ContractId = Guid.NewGuid(), ContractName = "C1", OperatorName = "Op" , IsDeleted=false, + ContractProducts = new List() } }; _mockMediator @@ -190,7 +191,7 @@ public async Task GetMerchantDevices_ReturnsMappedList_WhenMediatorSucceeds() { var estateId = Guid.NewGuid(); var merchantId = Guid.NewGuid(); - var bizList = new List + var bizList = new List { new() { MerchantId = merchantId, DeviceId = Guid.NewGuid(), DeviceIdentifier = "dev1", IsDeleted = false } }; diff --git a/EstateManagementUI.BlazorServer.Tests/UIServices/OperatorUIServiceTests.cs b/EstateManagementUI.BlazorServer.Tests/UIServices/OperatorUIServiceTests.cs index 7061b8a7..d5719742 100644 --- a/EstateManagementUI.BlazorServer.Tests/UIServices/OperatorUIServiceTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/UIServices/OperatorUIServiceTests.cs @@ -25,7 +25,7 @@ public async Task GetOperators_ReturnsMappedList_WhenMediatorSucceeds() var estateId = Guid.NewGuid(); var correlationId = CorrelationIdHelper.New(); - var bizOperators = new List + var bizOperators = new List { new() { OperatorId = Guid.NewGuid(), Name = "OpA", RequireCustomMerchantNumber = true, RequireCustomTerminalNumber = false } }; @@ -71,7 +71,7 @@ public async Task GetOperator_ReturnsMappedModel_WhenMediatorSucceeds() var correlationId = CorrelationIdHelper.New(); var operatorId = Guid.NewGuid(); - var bizOperator = new EstateManagementUI.BusinessLogic.Models.OperatorModel + var bizOperator = new EstateManagementUI.BusinessLogic.Models.OperatorModels.OperatorModel { OperatorId = operatorId, Name = "OpDetail", diff --git a/EstateManagementUI.BlazorServer/Components/Common/CustomComponentBase.cs b/EstateManagementUI.BlazorServer/Components/Common/CustomComponentBase.cs new file mode 100644 index 00000000..3f13a786 --- /dev/null +++ b/EstateManagementUI.BlazorServer/Components/Common/CustomComponentBase.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Components; + +namespace EstateManagementUI.BlazorServer.Components.Common; + +public abstract class CustomComponentBase : ComponentBase { + + private Int32? DelayOverride; + + public void SetDelayOverride(Int32 delay) => this.DelayOverride = delay; + + public async Task WaitOnUIRefresh(Int32 delay=2500) { + Int32 localDelay = delay; + if (this.DelayOverride.HasValue) { + localDelay = this.DelayOverride.GetValueOrDefault(); + } + await Task.Delay(localDelay); + } + + protected string? successMessage; + protected string? errorMessage; + protected string activeTab; + protected void ClearMessages() + { + this.successMessage = null; + this.errorMessage = null; + } + + protected void SetActiveTab(string tab) + { + this.activeTab = tab; + this.ClearMessages(); + } +} \ No newline at end of file diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor.cs index b59dad43..1a26d949 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Index.razor.cs @@ -1,7 +1,6 @@ using EstateManagementUI.BlazorServer.Factories; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using Shared.Results; using SimpleResults; diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs index 38dcb775..c5c58894 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs @@ -2,7 +2,6 @@ using EstateManagementUI.BlazorServer.Factories; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Microsoft.AspNetCore.Components.Authorization; diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs index bba020cf..bc0a9e33 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Home.razor.cs @@ -121,9 +121,9 @@ private async Task LoadDashboardData(CorrelationId correlationId, Guid e // Process results if (kpiTask.Result.IsFailed) - return ResultHelpers.CreateFailure(kpiTask.Result); + return ResultHelpers.CreateFailure(kpiTask.Result); - this.merchantKpi = ModelFactory.ConvertFrom((BusinessLogic.Models.MerchantKpiModel)kpiTask.Result.Data); + this.merchantKpi = ModelFactory.ConvertFrom((BusinessLogic.Models.MerchantModels.MerchantKpiModel)kpiTask.Result.Data); if (salesTask.Result.IsFailed) return ResultHelpers.CreateFailure(salesTask.Result); @@ -136,11 +136,11 @@ private async Task LoadDashboardData(CorrelationId correlationId, Guid e this.todaysFailedSales = ModelFactory.ConvertFrom((BusinessLogic.Models.TodaysSalesModel)failedSalesTask.Result.Data); if (merchantsTask.Result.IsFailed) - return ResultHelpers.CreateFailure>(merchantsTask.Result); + return ResultHelpers.CreateFailure(merchantsTask.Result); // Note: API returns merchants in creation order (newest first) // If ordering is incorrect, would need CreatedDate field in the model - this.recentMerchants = ModelFactory.ConvertFrom((List)merchantsTask.Result.Data); + this.recentMerchants = ModelFactory.ConvertFrom((List)merchantsTask.Result.Data); return Result.Success(); } diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Deposit.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Deposit.razor.cs index 771dc93d..624fd5c5 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Deposit.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Deposit.razor.cs @@ -1,6 +1,5 @@ using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using Microsoft.AspNetCore.Components; using Shared.Results; diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs index d597f5c2..caa4018c 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs @@ -2,7 +2,6 @@ using EstateManagementUI.BlazorServer.Factories; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Microsoft.AspNetCore.Components; diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Operators/Index.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Operators/Index.razor.cs index 8b44376a..0cc571fd 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Operators/Index.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Operators/Index.razor.cs @@ -1,7 +1,6 @@ using EstateManagementUI.BlazorServer.Common; using EstateManagementUI.BlazorServer.Models; using EstateManagementUI.BlazorServer.Permissions; -using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using Shared.Results; using SimpleResults; diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/AnalyticalCharts.razor b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/AnalyticalCharts.razor index 2837d922..9a79a48f 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/AnalyticalCharts.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/AnalyticalCharts.razor @@ -5,7 +5,7 @@ @rendermode InteractiveServer @inject IMediator Mediator @inject IJSRuntime JSRuntime -@inherits CustomComponentBase +@inherits EstateManagementUI.BlazorServer.Components.Common.CustomComponentBase @inject ILogger Logger @inject AuthenticationStateProvider AuthenticationStateProvider diff --git a/EstateManagementUI.BlazorServer/Components/Permissions/AuthorizedComponentBase.cs b/EstateManagementUI.BlazorServer/Components/Permissions/AuthorizedComponentBase.cs index 8f7ded6d..162471bd 100644 --- a/EstateManagementUI.BlazorServer/Components/Permissions/AuthorizedComponentBase.cs +++ b/EstateManagementUI.BlazorServer/Components/Permissions/AuthorizedComponentBase.cs @@ -3,38 +3,9 @@ using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; using System.Security.Claims; +using EstateManagementUI.BlazorServer.Components.Common; using SimpleResults; -public abstract class CustomComponentBase : ComponentBase { - - private Int32? DelayOverride; - - public void SetDelayOverride(Int32 delay) => this.DelayOverride = delay; - - public async Task WaitOnUIRefresh(Int32 delay=2500) { - Int32 localDelay = delay; - if (this.DelayOverride.HasValue) { - localDelay = this.DelayOverride.GetValueOrDefault(); - } - await Task.Delay(localDelay); - } - - protected string? successMessage; - protected string? errorMessage; - protected string activeTab; - protected void ClearMessages() - { - successMessage = null; - errorMessage = null; - } - - protected void SetActiveTab(string tab) - { - activeTab = tab; - ClearMessages(); - } -} - public abstract class AuthorizedComponentBase : CustomComponentBase { [CascadingParameter] diff --git a/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs b/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs index d38042dc..bae5540b 100644 --- a/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs +++ b/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs @@ -1,4 +1,5 @@ -using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BlazorServer.Models; +using EstateManagementUI.BusinessLogic.Models; using TransactionProcessor.DataTransferObjects.Responses.Contract; using ComparisonDateModel = EstateManagementUI.BlazorServer.Models.ComparisonDateModel; using ContractDropDownModel = EstateManagementUI.BlazorServer.Models.ContractModels.ContractDropDownModel; @@ -32,47 +33,43 @@ namespace EstateManagementUI.BlazorServer.Factories { public static class ModelFactory { - public static EstateModel ConvertFrom(BusinessLogic.Models.EstateModel model) { - EstateModel result = new EstateModel { EstateId = model.EstateId, EstateName = model.EstateName, - Operators = new List(), - Contracts = new(), - Merchants = new(), - Users = new(), - Reference = model.Reference }; - if (model.Operators != null && model.Operators.Any()) { - model.Operators.ForEach((o) => result.Operators.Add(ConvertFrom(o))); - } - if (model.Merchants != null && model.Merchants.Any()) { - model.Merchants.ForEach((m) => result.Merchants.Add(ConvertFrom(m))); - } - if (model.Contracts != null && model.Contracts.Any()) { - model.Contracts.ForEach((m) => result.Contracts.Add(ConvertFrom(m))); - } - if (model.Users != null && model.Users.Any()) - { - model.Users.ForEach((m) => result.Users.Add(ConvertFrom(m))); - } + //public static EstateModel ConvertFrom(BusinessLogic.Models.EstateModels.EstateModel model) { + // EstateModel result = new EstateModel(model.EstateId, model.EstateName, model.Reference); + // result = result with { AllOperators = new List(), AssignedOperators = new List(), RecentContracts = new List(), RecentMerchants = new List() }; + // if (model.Operators != null && model.Operators.Any()) { + // model.Operators.ForEach((o) => result.Operators.Add(ConvertFrom(o))); + // } + // if (model.Merchants != null && model.Merchants.Any()) { + // model.Merchants.ForEach((m) => result.Merchants.Add(ConvertFrom(m))); + // } + // if (model.Contracts != null && model.Contracts.Any()) { + // model.Contracts.ForEach((m) => result.Contracts.Add(ConvertFrom(m))); + // } + // if (model.Users != null && model.Users.Any()) + // { + // model.Users.ForEach((m) => result.Users.Add(ConvertFrom(m))); + // } - return result; - } + // return result; + //} - private static EstateUserModel ConvertFrom(BusinessLogic.Models.EstateUserModel model) { - return new EstateUserModel() { CreatedDateTime = model.CreatedDateTime, EmailAddress = model.EmailAddress, UserId = model.UserId }; + private static EstateModels.EstateUserModel ConvertFrom(BusinessLogic.Models.EstateModels.EstateUserModel model) { + return new EstateModels.EstateUserModel() { CreatedDateTime = model.CreatedDateTime, EmailAddress = model.EmailAddress, UserId = model.UserId }; } - private static EstateContractModel ConvertFrom(BusinessLogic.Models.EstateContractModel model) { - return new EstateContractModel() { ContractId = model.ContractId, Name = model.Name, OperatorId = model.OperatorId, OperatorName = model.OperatorName }; + private static EstateModels.EstateContractModel ConvertFrom(BusinessLogic.Models.EstateModels.EstateContractModel model) { + return new EstateModels.EstateContractModel() { ContractId = model.ContractId, Name = model.Name, OperatorId = model.OperatorId, OperatorName = model.OperatorName }; } - private static EstateMerchantModel ConvertFrom(BusinessLogic.Models.EstateMerchantModel model) { - return new EstateMerchantModel() { Reference = model.Reference, Name = model.Name, MerchantId = model.MerchantId }; + private static EstateModels.EstateMerchantModel ConvertFrom(BusinessLogic.Models.EstateModels.EstateMerchantModel model) { + return new EstateModels.EstateMerchantModel() { Reference = model.Reference, Name = model.Name, MerchantId = model.MerchantId }; } - public static EstateOperatorModel ConvertFrom(BusinessLogic.Models.EstateOperatorModel model) { - return new EstateOperatorModel() { Name = model.Name, OperatorId = model.OperatorId, RequireCustomMerchantNumber = model.RequireCustomMerchantNumber, RequireCustomTerminalNumber = model.RequireCustomTerminalNumber }; + public static EstateModels.EstateOperatorModel ConvertFrom(BusinessLogic.Models.EstateModels.EstateOperatorModel model) { + return new EstateModels.EstateOperatorModel() { Name = model.Name, OperatorId = model.OperatorId, RequireCustomMerchantNumber = model.RequireCustomMerchantNumber, RequireCustomTerminalNumber = model.RequireCustomTerminalNumber }; } - public static MerchantModel ConvertFrom(BusinessLogic.Models.MerchantModel model) { + public static MerchantModel ConvertFrom(BusinessLogic.Models.MerchantModels.MerchantModel model) { return new MerchantModel() { MerchantId = model.MerchantId, MerchantName = model.MerchantName, @@ -94,18 +91,18 @@ public static MerchantModel ConvertFrom(BusinessLogic.Models.MerchantModel model }; } - public static List ConvertFrom(List models) + public static List ConvertFrom(List models) { List result = new List(); models.ForEach(m => result.Add(ConvertFrom(m))); return result; } - public static OperatorModel ConvertFrom(BusinessLogic.Models.OperatorModel model) { + public static OperatorModel ConvertFrom(BusinessLogic.Models.OperatorModels.OperatorModel model) { return new OperatorModel() { OperatorId = model.OperatorId, Name = model.Name, RequireCustomMerchantNumber = model.RequireCustomMerchantNumber, RequireCustomTerminalNumber = model.RequireCustomTerminalNumber }; } - public static ContractModel ConvertFrom(BusinessLogic.Models.ContractModel model) { + public static ContractModel ConvertFrom(BusinessLogic.Models.ContractModels.ContractModel model) { ContractModel result = new ContractModel() { ContractId = model.ContractId, Description = model.Description, @@ -120,7 +117,7 @@ public static ContractModel ConvertFrom(BusinessLogic.Models.ContractModel model return result; } - public static List ConvertFrom(List models) + public static List ConvertFrom(List models) { List result = new List(); @@ -129,7 +126,7 @@ public static List ConvertFrom(List ConvertFrom(List models) { + public static List ConvertFrom(List models) { List result = new List(); models.ForEach(m => result.Add(ConvertFrom(m))); return result; @@ -273,7 +270,7 @@ public static List ConvertFrom(List ConvertFrom(List models) { + public static List ConvertFrom(List models) { List result = new List(); models.ForEach(m => result.Add(ConvertFrom(m))); return result; @@ -361,13 +358,13 @@ public static List ConvertFrom(List ConvertFrom(List models) { + public static List ConvertFrom(List models) { List result = new List(); models.ForEach(m => result.Add(ConvertFrom(m))); return result; } - private static RecentMerchantsModel ConvertFrom(BusinessLogic.Models.RecentMerchantsModel model) { + private static RecentMerchantsModel ConvertFrom(BusinessLogic.Models.MerchantModels.RecentMerchantsModel model) { RecentMerchantsModel result = new RecentMerchantsModel() { CreatedDateTime = model.CreatedDateTime, MerchantId = model.MerchantId, @@ -377,19 +374,19 @@ private static RecentMerchantsModel ConvertFrom(BusinessLogic.Models.RecentMerch return result; } - public static List ConvertFrom(List models) { + public static List ConvertFrom(List models) { List result = new List(); models.ForEach(m => result.Add(ConvertFrom(m))); return result; } - private static RecentContractModel ConvertFrom(BusinessLogic.Models.RecentContractModel model) { + private static RecentContractModel ConvertFrom(BusinessLogic.Models.ContractModels.RecentContractModel model) { return new RecentContractModel { OperatorName = model.OperatorName, Description = model.Description, ContractId = model.ContractId }; } - public static List? ConvertFrom(List resultData) { + public static List? ConvertFrom(List resultData) { List merchantList = new(); - foreach (BusinessLogic.Models.MerchantListModel merchantListModel in resultData) { + foreach (BusinessLogic.Models.MerchantModels.MerchantListModel merchantListModel in resultData) { merchantList.Add(new MerchantListModel { CreatedDateTime = merchantListModel.CreatedDateTime, AvailableBalance = merchantListModel.AvailableBalance, @@ -406,9 +403,9 @@ private static RecentContractModel ConvertFrom(BusinessLogic.Models.RecentContra return merchantList; } - public static List? ConvertFrom(List resultData) { + public static List? ConvertFrom(List resultData) { List merchantList = new(); - foreach (BusinessLogic.Models.MerchantDropDownModel merchantDropDownModel in resultData) { + foreach (BusinessLogic.Models.MerchantModels.MerchantDropDownModel merchantDropDownModel in resultData) { merchantList.Add(new MerchantDropDownModel { MerchantId = merchantDropDownModel.MerchantId, MerchantName = merchantDropDownModel.MerchantName @@ -417,9 +414,9 @@ private static RecentContractModel ConvertFrom(BusinessLogic.Models.RecentContra return merchantList; } - public static List ConvertFrom(List resultData) { + public static List ConvertFrom(List resultData) { List merchantOperators = new(); - foreach (BusinessLogic.Models.MerchantOperatorModel merchantOperatorModel in resultData) + foreach (BusinessLogic.Models.MerchantModels.MerchantOperatorModel merchantOperatorModel in resultData) { merchantOperators.Add(new MerchantOperatorModel { @@ -432,7 +429,7 @@ public static List ConvertFrom(List ConvertFrom(List resultData) { + public static List ConvertFrom(List resultData) { List deviceList = new(); foreach (var merchantDevice in resultData) { @@ -447,9 +444,9 @@ public static List ConvertFrom(List ConvertFrom(List resultData) { + public static List ConvertFrom(List resultData) { List merchantContracts = new(); - foreach (BusinessLogic.Models.MerchantContractModel merchantContractModel in resultData) + foreach (BusinessLogic.Models.MerchantModels.MerchantContractModel merchantContractModel in resultData) { var cm = new MerchantContractModel { @@ -458,7 +455,7 @@ public static List ConvertFrom(List() }; - foreach (BusinessLogic.Models.MerchantContractProductModel merchantContractProductModel in merchantContractModel.ContractProducts) + foreach (BusinessLogic.Models.MerchantModels.MerchantContractProductModel merchantContractProductModel in merchantContractModel.ContractProducts) { cm.ContractProducts.Add(new MerchantContractProductModel { @@ -476,9 +473,9 @@ public static List ConvertFrom(List ConvertFrom(List resultData) { + public static List ConvertFrom(List resultData) { List contractList = new(); - foreach (BusinessLogic.Models.ContractDropDownModel contractDropDownModel in resultData) { + foreach (BusinessLogic.Models.ContractModels.ContractDropDownModel contractDropDownModel in resultData) { contractList.Add(new ContractDropDownModel() { ContractId = contractDropDownModel.ContractId, Description = contractDropDownModel.Description, @@ -489,9 +486,9 @@ public static List ConvertFrom(List? ConvertFrom(List resultData) { + public static List? ConvertFrom(List resultData) { List operatorList = new(); - foreach (BusinessLogic.Models.OperatorDropDownModel operatorDropDownModel in resultData) + foreach (BusinessLogic.Models.OperatorModels.OperatorDropDownModel operatorDropDownModel in resultData) { operatorList.Add(new OperatorDropDownModel() { diff --git a/EstateManagementUI.BlazorServer/UIServices/EstateUIService.cs b/EstateManagementUI.BlazorServer/UIServices/EstateUIService.cs index 4dff5ce1..4d063707 100644 --- a/EstateManagementUI.BlazorServer/UIServices/EstateUIService.cs +++ b/EstateManagementUI.BlazorServer/UIServices/EstateUIService.cs @@ -27,11 +27,11 @@ public EstateUIService(IMediator mediator) public async Task> LoadEstate(CorrelationId correlationId, Guid estateId) { - Task> estateTask = Mediator.Send(new EstateQueries.GetEstateQuery(correlationId, estateId)); - Task>> merchantTask = Mediator.Send(new MerchantQueries.GetRecentMerchantsQuery(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 OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); + Task> estateTask = Mediator.Send(new EstateQueries.GetEstateQuery(correlationId, estateId)); + Task>> merchantTask = Mediator.Send(new MerchantQueries.GetRecentMerchantsQuery(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 OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); await Task.WhenAll(estateTask, merchantTask, contractsTask, assignedOperatorsTask, allOperatorsTask); diff --git a/EstateManagementUI.BlazorServer/UIServices/MerchantUIService.cs b/EstateManagementUI.BlazorServer/UIServices/MerchantUIService.cs index 5f26fe37..349ebe7b 100644 --- a/EstateManagementUI.BlazorServer/UIServices/MerchantUIService.cs +++ b/EstateManagementUI.BlazorServer/UIServices/MerchantUIService.cs @@ -1,6 +1,5 @@ using EstateManagementUI.BlazorServer.Factories; using EstateManagementUI.BlazorServer.Models; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Requests; using MediatR; using Shared.Results; diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ComparisonDate.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ComparisonDate.cs new file mode 100644 index 00000000..214e0319 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ComparisonDate.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class ComparisonDate +{ + [JsonProperty("order_value")] + public Int32 OrderValue { get; set; } + [JsonProperty("date")] + public DateTime Date { get; set; } + [JsonProperty("description")] + public String Description { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Contract.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Contract.cs new file mode 100644 index 00000000..45d4d6aa --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Contract.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class Contract +{ + #region Properties + [JsonProperty("estate_id")] + public Guid EstateId { get; set; } + [JsonProperty("estate_reporting_id")] + public Int32 EstateReportingId { get; set; } + [JsonProperty("contract_id")] + public Guid ContractId { get; set; } + [JsonProperty("contract_reporting_id")] + public Int32 ContractReportingId { get; set; } + [JsonProperty("description")] + public String Description { get; set; } + [JsonProperty("operator_name")] + public String OperatorName { get; set; } + [JsonProperty("operator_id")] + public Guid OperatorId { get; set; } + [JsonProperty("operator_reporting_id")] + public Int32 OperatorReportingId { get; set; } + + [JsonProperty("products")] + public List Products { get; set; } + + #endregion +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProduct.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProduct.cs new file mode 100644 index 00000000..b9858672 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProduct.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class ContractProduct +{ + [JsonProperty("contract_id")] + public Guid ContractId { get; set; } + [JsonProperty("product_id")] + public Guid ProductId { get; set; } + [JsonProperty("product_name")] + public String ProductName { get; set; } + [JsonProperty("display_text")] + public String DisplayText { get; set; } + [JsonProperty("product_type")] + public Int32 ProductType { get; set; } + [JsonProperty("value")] + public Decimal? Value { get; set; } + [JsonProperty("transaction_fees")] + public List TransactionFees { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProductTransactionFee.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProductTransactionFee.cs new file mode 100644 index 00000000..c171f029 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/ContractProductTransactionFee.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class ContractProductTransactionFee +{ + [JsonProperty("transaction_fee_id")] + public Guid TransactionFeeId { get; set; } + [JsonProperty("description")] + public string? Description { get; set; } + [JsonProperty("calculation_type")] + public Int32 CalculationType { get; set; } + [JsonProperty("fee_type")] + public Int32 FeeType { get; set; } + [JsonProperty("value")] + public Decimal Value { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/DataTransferObjects.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/DataTransferObjects.cs deleted file mode 100644 index 5a2cf751..00000000 --- a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/DataTransferObjects.cs +++ /dev/null @@ -1,285 +0,0 @@ -using Newtonsoft.Json; -using TransactionProcessor.DataTransferObjects.Responses.Contract; - -namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects -{ - public class ComparisonDate - { - [JsonProperty("order_value")] - public Int32 OrderValue { get; set; } - [JsonProperty("date")] - public DateTime Date { get; set; } - [JsonProperty("description")] - public String Description { get; set; } - } - - public class MerchantKpi - { - [JsonProperty("merchants_with_sale_in_last_hour")] - public Int32 MerchantsWithSaleInLastHour { get; set; } - [JsonProperty("merchants_with_no_sale_today")] - public Int32 MerchantsWithNoSaleToday { get; set; } - [JsonProperty("merchants_with_no_sale_in_last7_days")] - public Int32 MerchantsWithNoSaleInLast7Days { get; set; } - } - - public class TodaysSales - { - [JsonProperty("todays_average_sales_value")] - public Decimal TodaysAverageSalesValue { get; set; } - [JsonProperty("todays_sales_value")] - public Decimal TodaysSalesValue { get; set; } - [JsonProperty("todays_sales_count")] - public Int32 TodaysSalesCount { get; set; } - [JsonProperty("comparison_sales_value")] - public Decimal ComparisonSalesValue { get; set; } - [JsonProperty("comparison_sales_count")] - public Int32 ComparisonSalesCount { get; set; } - [JsonProperty("comparison_average_sales_value")] - public Decimal ComparisonAverageSalesValue { get; set; } - } - - public class Merchant - { - [JsonProperty("merchant_id")] - public Guid MerchantId { get; set; } - [JsonProperty("merchant_reporting_id")] - public Int32 MerchantReportingId { get; set; } - [JsonProperty("name")] - public String Name { get; set; } - [JsonProperty("reference")] - public String Reference { get; set; } - [JsonProperty("balance")] - public Decimal Balance { get; set; } - [JsonProperty("settlement_schedule")] - public Int32 SettlementSchedule { get; set; } - [JsonProperty("created_date_time")] - public DateTime CreatedDateTime { get; set; } - - [JsonProperty("address_id")] - public Guid AddressId { get; set; } - [JsonProperty("address_line1")] - public String AddressLine1 { get; set; } - [JsonProperty("address_line2")] - public String AddressLine2 { get; set; } - [JsonProperty("town")] - public String Town { get; set; } - [JsonProperty("region")] - public String Region { get; set; } - [JsonProperty("post_code")] - public String PostCode { get; set; } - [JsonProperty("country")] - public String Country { get; set; } - - [JsonProperty("contact_id")] - public Guid ContactId { get; set; } - [JsonProperty("contact_name")] - public String ContactName { get; set; } - [JsonProperty("contact_email")] - public String ContactEmail { get; set; } - [JsonProperty("contact_phone")] - public String ContactPhone { get; set; } - } - - public class Contract - { - #region Properties - [JsonProperty("estate_id")] - public Guid EstateId { get; set; } - [JsonProperty("estate_reporting_id")] - public Int32 EstateReportingId { get; set; } - [JsonProperty("contract_id")] - public Guid ContractId { get; set; } - [JsonProperty("contract_reporting_id")] - public Int32 ContractReportingId { get; set; } - [JsonProperty("description")] - public String Description { get; set; } - [JsonProperty("operator_name")] - public String OperatorName { get; set; } - [JsonProperty("operator_id")] - public Guid OperatorId { get; set; } - [JsonProperty("operator_reporting_id")] - public Int32 OperatorReportingId { get; set; } - - [JsonProperty("products")] - public List Products { get; set; } - - #endregion - } - - public class ContractProduct - { - [JsonProperty("contract_id")] - public Guid ContractId { get; set; } - [JsonProperty("product_id")] - public Guid ProductId { get; set; } - [JsonProperty("product_name")] - public String ProductName { get; set; } - [JsonProperty("display_text")] - public String DisplayText { get; set; } - [JsonProperty("product_type")] - public Int32 ProductType { get; set; } - [JsonProperty("value")] - public Decimal? Value { get; set; } - [JsonProperty("transaction_fees")] - public List TransactionFees { get; set; } - } - - public class ContractProductTransactionFee - { - [JsonProperty("transaction_fee_id")] - public Guid TransactionFeeId { get; set; } - [JsonProperty("description")] - public string? Description { get; set; } - [JsonProperty("calculation_type")] - public Int32 CalculationType { get; set; } - [JsonProperty("fee_type")] - public Int32 FeeType { get; set; } - [JsonProperty("value")] - public Decimal Value { get; set; } - } - - public class Estate - { - [JsonProperty("estate_id")] - public Guid EstateId { get; set; } - [JsonProperty("estate_name")] - public string? EstateName { get; set; } - [JsonProperty("reference")] - public string? Reference { get; set; } - [JsonProperty("operators")] - public List? Operators { get; set; } - [JsonProperty("merchants")] - public List? Merchants { get; set; } - [JsonProperty("contracts")] - public List? Contracts { get; set; } - [JsonProperty("users")] - public List? Users { get; set; } - } - - public class EstateUser - { - [JsonProperty("user_id")] - public Guid UserId { get; set; } - [JsonProperty("email_address")] - public string? EmailAddress { get; set; } - [JsonProperty("created_date_time")] - public DateTime CreatedDateTime { get; set; } - } - - public class EstateOperator - { - [JsonProperty("operator_id")] - public Guid OperatorId { get; set; } - [JsonProperty("name")] - public string? Name { get; set; } - [JsonProperty("require_custom_merchant_number")] - public bool RequireCustomMerchantNumber { get; set; } - [JsonProperty("require_custom_terminal_number")] - public bool RequireCustomTerminalNumber { get; set; } - [JsonProperty("created_date_time")] - public DateTime CreatedDateTime { get; set; } - } - - public class EstateContract - { - [JsonProperty("operator_id")] - public Guid OperatorId { get; set; } - [JsonProperty("contract_id")] - public Guid ContractId { get; set; } - [JsonProperty("name")] - public string? Name { get; set; } - [JsonProperty("operator_name")] - public string? OperatorName { get; set; } - } - - - public class EstateMerchant - { - [JsonProperty("merchant_id")] - public Guid MerchantId { get; set; } - [JsonProperty("name")] - public string? Name { get; set; } - [JsonProperty("reference")] - public string? Reference { get; set; } - } - - public class Operator - { - [JsonProperty("estate_reporting_id")] - public Int32 EstateReportingId { get; set; } - [JsonProperty("operator_id")] - public Guid OperatorId { get; set; } - [JsonProperty("name")] - public String Name { get; set; } - [JsonProperty("operator_reporting_id")] - public Int32 OperatorReportingId { get; set; } - [JsonProperty("require_custom_merchant_number")] - public Boolean RequireCustomMerchantNumber { get; set; } - [JsonProperty("require_custom_terminal_number")] - public Boolean RequireCustomTerminalNumber { get; set; } - } - - public class MerchantOperator - { - [JsonProperty("merchant_id")] - public Guid MerchantId { get; set; } - [JsonProperty("operator_id")] - public Guid OperatorId { get; set; } - [JsonProperty("operator_name")] - public String OperatorName { get; set; } - [JsonProperty("merchant_number")] - public String MerchantNumber { get; set; } - [JsonProperty("terminal_number")] - public String TerminalNumber { get; set; } - [JsonProperty("is_deleted")] - public Boolean IsDeleted { get; set; } - } - - public class MerchantContract - { - [JsonProperty("merchant_id")] - public Guid MerchantId { get; set; } - [JsonProperty("contract_id")] - public Guid ContractId { get; set; } - [JsonProperty("contract_name")] - - public String ContractName { get; set; } - [JsonProperty("is_deleted")] - public Boolean IsDeleted { get; set; } - [JsonProperty("contract_products")] - public List ContractProducts { get; set; } - [JsonProperty("operator_name")] - public String OperatorName { get; set; } - } - - public class MerchantContractProduct - { - [JsonProperty("merchant_id")] - public Guid MerchantId { get; set; } - [JsonProperty("contract_id")] - public Guid ContractId { get; set; } - [JsonProperty("product_id")] - public Guid ProductId { get; set; } - [JsonProperty("product_name")] - public String ProductName { get; set; } - [JsonProperty("display_text")] - public String DisplayText { get; set; } - [JsonProperty("product_type")] - public Int32 ProductType { get; set; } - [JsonProperty("value")] - public Decimal? Value { get; set; } - } - - public class MerchantDevice - { - [JsonProperty("merchant_id")] - public Guid MerchantId { get; set; } - [JsonProperty("device_id")] - public Guid DeviceId { get; set; } - [JsonProperty("device_identifier")] - public String DeviceIdentifier { get; set; } - [JsonProperty("is_deleted")] - public Boolean IsDeleted { get; set; } - } -} diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Estate.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Estate.cs new file mode 100644 index 00000000..8198475d --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Estate.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class Estate +{ + [JsonProperty("estate_id")] + public Guid EstateId { get; set; } + [JsonProperty("estate_name")] + public string? EstateName { get; set; } + [JsonProperty("reference")] + public string? Reference { get; set; } + [JsonProperty("operators")] + public List? Operators { get; set; } + [JsonProperty("merchants")] + public List? Merchants { get; set; } + [JsonProperty("contracts")] + public List? Contracts { get; set; } + [JsonProperty("users")] + public List? Users { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateContract.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateContract.cs new file mode 100644 index 00000000..33adad61 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateContract.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class EstateContract +{ + [JsonProperty("operator_id")] + public Guid OperatorId { get; set; } + [JsonProperty("contract_id")] + public Guid ContractId { get; set; } + [JsonProperty("name")] + public string? Name { get; set; } + [JsonProperty("operator_name")] + public string? OperatorName { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateMerchant.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateMerchant.cs new file mode 100644 index 00000000..5cb75a2e --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateMerchant.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class EstateMerchant +{ + [JsonProperty("merchant_id")] + public Guid MerchantId { get; set; } + [JsonProperty("name")] + public string? Name { get; set; } + [JsonProperty("reference")] + public string? Reference { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateOperator.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateOperator.cs new file mode 100644 index 00000000..26387dc4 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateOperator.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class EstateOperator +{ + [JsonProperty("operator_id")] + public Guid OperatorId { get; set; } + [JsonProperty("name")] + public string? Name { get; set; } + [JsonProperty("require_custom_merchant_number")] + public bool RequireCustomMerchantNumber { get; set; } + [JsonProperty("require_custom_terminal_number")] + public bool RequireCustomTerminalNumber { get; set; } + [JsonProperty("created_date_time")] + public DateTime CreatedDateTime { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateUser.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateUser.cs new file mode 100644 index 00000000..42106a72 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/EstateUser.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class EstateUser +{ + [JsonProperty("user_id")] + public Guid UserId { get; set; } + [JsonProperty("email_address")] + public string? EmailAddress { get; set; } + [JsonProperty("created_date_time")] + public DateTime CreatedDateTime { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Merchant.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Merchant.cs new file mode 100644 index 00000000..ff21e327 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Merchant.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class Merchant +{ + [JsonProperty("merchant_id")] + public Guid MerchantId { get; set; } + [JsonProperty("merchant_reporting_id")] + public Int32 MerchantReportingId { get; set; } + [JsonProperty("name")] + public String Name { get; set; } + [JsonProperty("reference")] + public String Reference { get; set; } + [JsonProperty("balance")] + public Decimal Balance { get; set; } + [JsonProperty("settlement_schedule")] + public Int32 SettlementSchedule { get; set; } + [JsonProperty("created_date_time")] + public DateTime CreatedDateTime { get; set; } + + [JsonProperty("address_id")] + public Guid AddressId { get; set; } + [JsonProperty("address_line1")] + public String AddressLine1 { get; set; } + [JsonProperty("address_line2")] + public String AddressLine2 { get; set; } + [JsonProperty("town")] + public String Town { get; set; } + [JsonProperty("region")] + public String Region { get; set; } + [JsonProperty("post_code")] + public String PostCode { get; set; } + [JsonProperty("country")] + public String Country { get; set; } + + [JsonProperty("contact_id")] + public Guid ContactId { get; set; } + [JsonProperty("contact_name")] + public String ContactName { get; set; } + [JsonProperty("contact_email")] + public String ContactEmail { get; set; } + [JsonProperty("contact_phone")] + public String ContactPhone { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContract.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContract.cs new file mode 100644 index 00000000..1eb860a6 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContract.cs @@ -0,0 +1,20 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class MerchantContract +{ + [JsonProperty("merchant_id")] + public Guid MerchantId { get; set; } + [JsonProperty("contract_id")] + public Guid ContractId { get; set; } + [JsonProperty("contract_name")] + + public String ContractName { get; set; } + [JsonProperty("is_deleted")] + public Boolean IsDeleted { get; set; } + [JsonProperty("contract_products")] + public List ContractProducts { get; set; } + [JsonProperty("operator_name")] + public String OperatorName { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContractProduct.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContractProduct.cs new file mode 100644 index 00000000..479f1a61 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantContractProduct.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class MerchantContractProduct +{ + [JsonProperty("merchant_id")] + public Guid MerchantId { get; set; } + [JsonProperty("contract_id")] + public Guid ContractId { get; set; } + [JsonProperty("product_id")] + public Guid ProductId { get; set; } + [JsonProperty("product_name")] + public String ProductName { get; set; } + [JsonProperty("display_text")] + public String DisplayText { get; set; } + [JsonProperty("product_type")] + public Int32 ProductType { get; set; } + [JsonProperty("value")] + public Decimal? Value { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantDevice.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantDevice.cs new file mode 100644 index 00000000..f9509e35 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantDevice.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects +{ + public class MerchantDevice + { + [JsonProperty("merchant_id")] + public Guid MerchantId { get; set; } + [JsonProperty("device_id")] + public Guid DeviceId { get; set; } + [JsonProperty("device_identifier")] + public String DeviceIdentifier { get; set; } + [JsonProperty("is_deleted")] + public Boolean IsDeleted { get; set; } + } +} diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantKpi.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantKpi.cs new file mode 100644 index 00000000..778faa90 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantKpi.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class MerchantKpi +{ + [JsonProperty("merchants_with_sale_in_last_hour")] + public Int32 MerchantsWithSaleInLastHour { get; set; } + [JsonProperty("merchants_with_no_sale_today")] + public Int32 MerchantsWithNoSaleToday { get; set; } + [JsonProperty("merchants_with_no_sale_in_last7_days")] + public Int32 MerchantsWithNoSaleInLast7Days { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantOperator.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantOperator.cs new file mode 100644 index 00000000..25fa366f --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/MerchantOperator.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class MerchantOperator +{ + [JsonProperty("merchant_id")] + public Guid MerchantId { get; set; } + [JsonProperty("operator_id")] + public Guid OperatorId { get; set; } + [JsonProperty("operator_name")] + public String OperatorName { get; set; } + [JsonProperty("merchant_number")] + public String MerchantNumber { get; set; } + [JsonProperty("terminal_number")] + public String TerminalNumber { get; set; } + [JsonProperty("is_deleted")] + public Boolean IsDeleted { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Operator.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Operator.cs new file mode 100644 index 00000000..6a1754fb --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/Operator.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class Operator +{ + [JsonProperty("estate_reporting_id")] + public Int32 EstateReportingId { get; set; } + [JsonProperty("operator_id")] + public Guid OperatorId { get; set; } + [JsonProperty("name")] + public String Name { get; set; } + [JsonProperty("operator_reporting_id")] + public Int32 OperatorReportingId { get; set; } + [JsonProperty("require_custom_merchant_number")] + public Boolean RequireCustomMerchantNumber { get; set; } + [JsonProperty("require_custom_terminal_number")] + public Boolean RequireCustomTerminalNumber { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/TodaysSales.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/TodaysSales.cs new file mode 100644 index 00000000..c386a743 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/BackendAPI/DataTransferObjects/TodaysSales.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; + +public class TodaysSales +{ + [JsonProperty("todays_average_sales_value")] + public Decimal TodaysAverageSalesValue { get; set; } + [JsonProperty("todays_sales_value")] + public Decimal TodaysSalesValue { get; set; } + [JsonProperty("todays_sales_count")] + public Int32 TodaysSalesCount { get; set; } + [JsonProperty("comparison_sales_value")] + public Decimal ComparisonSalesValue { get; set; } + [JsonProperty("comparison_sales_count")] + public Int32 ComparisonSalesCount { get; set; } + [JsonProperty("comparison_average_sales_value")] + public Decimal ComparisonAverageSalesValue { get; set; } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs b/EstateManagmentUI.BusinessLogic/BackendAPI/EstateReportingApiClient.cs similarity index 100% rename from EstateManagmentUI.BusinessLogic/BackendAPI/IEstateReportingApiClient.cs rename to EstateManagmentUI.BusinessLogic/BackendAPI/EstateReportingApiClient.cs diff --git a/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs b/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs index 2b11111b..e78bbb06 100644 --- a/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs +++ b/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs @@ -25,8 +25,8 @@ public static List ConvertFrom(List apiResu return comparisonDates; } - public static MerchantKpiModel ConvertFrom(MerchantKpi apiResult) { - MerchantKpiModel model = new MerchantKpiModel { + public static MerchantModels.MerchantKpiModel ConvertFrom(MerchantKpi apiResult) { + MerchantModels.MerchantKpiModel model = new MerchantModels.MerchantKpiModel { MerchantsWithNoSaleInLast7Days = apiResult.MerchantsWithNoSaleInLast7Days, MerchantsWithNoSaleToday = apiResult.MerchantsWithNoSaleToday, MerchantsWithSaleInLastHour = apiResult.MerchantsWithSaleInLastHour @@ -49,8 +49,8 @@ public static TodaysSalesModel ConvertFrom(TodaysSales apiResultData) { - public static EstateModel ConvertFrom(Estate apiResultData) { - EstateModel model = new() { + public static EstateModels.EstateModel ConvertFrom(Estate apiResultData) { + EstateModels.EstateModel model = new() { Reference = apiResultData.Reference, EstateId = apiResultData.EstateId, EstateName = apiResultData.EstateName, @@ -61,7 +61,7 @@ public static EstateModel ConvertFrom(Estate apiResultData) { }; foreach (var estateOperator in apiResultData.Operators) { - model.Operators.Add(new EstateOperatorModel { + model.Operators.Add(new EstateModels.EstateOperatorModel { Name = estateOperator.Name, OperatorId = estateOperator.OperatorId, RequireCustomMerchantNumber = estateOperator.RequireCustomMerchantNumber, @@ -70,7 +70,7 @@ public static EstateModel ConvertFrom(Estate apiResultData) { } foreach (var estateMerchant in apiResultData.Merchants) { - model.Merchants.Add(new EstateMerchantModel() + model.Merchants.Add(new EstateModels.EstateMerchantModel() { Name = estateMerchant.Name, Reference = estateMerchant.Reference, @@ -79,7 +79,7 @@ public static EstateModel ConvertFrom(Estate apiResultData) { } foreach (var estateContract in apiResultData.Contracts) { - model.Contracts.Add(new EstateContractModel() + model.Contracts.Add(new EstateModels.EstateContractModel() { Name = estateContract.Name, OperatorId = estateContract.OperatorId, @@ -89,7 +89,7 @@ public static EstateModel ConvertFrom(Estate apiResultData) { } foreach (var estateUser in apiResultData.Users) { - model.Users.Add(new EstateUserModel() + model.Users.Add(new EstateModels.EstateUserModel() { CreatedDateTime = estateUser.CreatedDateTime, EmailAddress = estateUser.EmailAddress, @@ -104,8 +104,8 @@ public static EstateModel ConvertFrom(Estate apiResultData) { public static class FactoryExtensions{ - public static OperatorModel ToOperator(this Operator apiResultData) { - OperatorModel model = new() { + public static OperatorModels.OperatorModel ToOperator(this Operator apiResultData) { + OperatorModels.OperatorModel model = new() { Name = apiResultData.Name, OperatorId = apiResultData.OperatorId, RequireCustomMerchantNumber = apiResultData.RequireCustomMerchantNumber, @@ -114,9 +114,9 @@ public static OperatorModel ToOperator(this Operator apiResultData) { return model; } - public static OperatorDropDownModel ToOperatorDropDown(this Operator apiResultData) + public static OperatorModels.OperatorDropDownModel ToOperatorDropDown(this Operator apiResultData) { - OperatorDropDownModel model = new() + OperatorModels.OperatorDropDownModel model = new() { OperatorName= apiResultData.Name, OperatorId = apiResultData.OperatorId @@ -124,9 +124,9 @@ public static OperatorDropDownModel ToOperatorDropDown(this Operator apiResultDa return model; } - public static List ToOperatorDropDown(this List apiResultData) + public static List ToOperatorDropDown(this List apiResultData) { - List operators = new(); + List operators = new(); foreach (Operator op in apiResultData) { operators.Add(op.ToOperatorDropDown()); } @@ -134,9 +134,9 @@ public static List ToOperatorDropDown(this List return operators; } - public static List ToOperator(this List apiResultData) + public static List ToOperator(this List apiResultData) { - List operators = new(); + List operators = new(); foreach (Operator op in apiResultData) { operators.Add(op.ToOperator()); @@ -145,12 +145,12 @@ public static List ToOperator(this List apiResultData) return operators; } - public static List ToOperator(this List apiResultData) + public static List ToOperator(this List apiResultData) { - List operators = new(); + List operators = new(); foreach (EstateOperator estateOperator in apiResultData) { - operators.Add(new OperatorModel() + operators.Add(new OperatorModels.OperatorModel() { Name = estateOperator.Name, OperatorId = estateOperator.OperatorId, @@ -161,13 +161,13 @@ public static List ToOperator(this List apiResult return operators; } - public static List ToRecentMerchant(this List apiResultData) + public static List ToRecentMerchant(this List apiResultData) { - List merchants = new(); + List merchants = new(); foreach (Merchant merchant in apiResultData) { - merchants.Add(new RecentMerchantsModel + merchants.Add(new MerchantModels.RecentMerchantsModel { CreatedDateTime = merchant.CreatedDateTime, MerchantId = merchant.MerchantId, @@ -179,13 +179,13 @@ public static List ToRecentMerchant(this List ap return merchants; } - public static List ToMerchantList(this List apiResultData) + public static List ToMerchantList(this List apiResultData) { - List merchants = new(); + List merchants = new(); foreach (Merchant merchant in apiResultData) { - merchants.Add(new MerchantListModel + merchants.Add(new MerchantModels.MerchantListModel { CreatedDateTime = merchant.CreatedDateTime, MerchantId = merchant.MerchantId, @@ -202,13 +202,13 @@ public static List ToMerchantList(this List apiResu return merchants; } - public static List ToMerchantDropDown(this List apiResultData) + public static List ToMerchantDropDown(this List apiResultData) { - List merchants = new(); + List merchants = new(); foreach (Merchant merchant in apiResultData) { - merchants.Add(new MerchantDropDownModel + merchants.Add(new MerchantModels.MerchantDropDownModel { MerchantId = merchant.MerchantId, MerchantName = merchant.Name, @@ -218,8 +218,8 @@ public static List ToMerchantDropDown(this List return merchants; } - public static MerchantModel ToMerchant(this Merchant apiResultData) { - MerchantModel model = new MerchantModel { + public static MerchantModels.MerchantModel ToMerchant(this Merchant apiResultData) { + MerchantModels.MerchantModel model = new MerchantModels.MerchantModel { CreatedDateTime = apiResultData.CreatedDateTime, MerchantReference = apiResultData.Reference, AddressId = apiResultData.AddressId, @@ -242,13 +242,13 @@ public static MerchantModel ToMerchant(this Merchant apiResultData) { return model; } - public static List ToMerchantOperators(this List apiResultData) + public static List ToMerchantOperators(this List apiResultData) { - List merchantOperators = new(); + List merchantOperators = new(); foreach (MerchantOperator merchantOperator in apiResultData) { - merchantOperators.Add(new MerchantOperatorModel + merchantOperators.Add(new MerchantModels.MerchantOperatorModel { MerchantId = merchantOperator.MerchantId, OperatorId = merchantOperator.OperatorId, @@ -262,22 +262,22 @@ public static List ToMerchantOperators(this List ToMerchantContracts(this List apiResultData) + public static List ToMerchantContracts(this List apiResultData) { - List merchantContracts = new(); + List merchantContracts = new(); foreach (MerchantContract merchantContract in apiResultData) { - MerchantContractModel c = new() { + MerchantModels.MerchantContractModel c = new() { ContractId = merchantContract.ContractId, ContractName = merchantContract.ContractName, OperatorName = merchantContract.OperatorName, - ContractProducts = new List(), + ContractProducts = new List(), IsDeleted = merchantContract.IsDeleted, MerchantId = merchantContract.MerchantId }; foreach (MerchantContractProduct merchantContractContractProduct in merchantContract.ContractProducts) { - c.ContractProducts.Add(new MerchantContractProductModel + c.ContractProducts.Add(new MerchantModels.MerchantContractProductModel { MerchantId = merchantContractContractProduct.MerchantId, ContractId = merchantContractContractProduct.ContractId, @@ -294,13 +294,13 @@ public static List ToMerchantContracts(this List ToMerchantDevices(this List apiResultData) + public static List ToMerchantDevices(this List apiResultData) { - List merchantDevices= new(); + List merchantDevices= new(); foreach (MerchantDevice merchantDevice in apiResultData) { - merchantDevices.Add(new MerchantDeviceModel + merchantDevices.Add(new MerchantModels.MerchantDeviceModel { MerchantId = merchantDevice.MerchantId, DeviceId = merchantDevice.DeviceId, @@ -312,13 +312,13 @@ public static List ToMerchantDevices(this List ToRecentContracts(this List apiResultData) + public static List ToRecentContracts(this List apiResultData) { - List contracts = new(); + List contracts = new(); foreach (Contract contract in apiResultData) { - contracts.Add(new RecentContractModel + contracts.Add(new ContractModels.RecentContractModel { ContractId = contract.ContractId, Description = contract.Description, @@ -328,13 +328,13 @@ public static List ToRecentContracts(this List ap return contracts; } - public static List ToContractDropDown(this List apiResultData) + public static List ToContractDropDown(this List apiResultData) { - List contracts = new(); + List contracts = new(); foreach (Contract contract in apiResultData) { - var c = new ContractDropDownModel + var c = new ContractModels.ContractDropDownModel { ContractId = contract.ContractId, Description = contract.Description, @@ -346,9 +346,9 @@ public static List ToContractDropDown(this List return contracts; } - public static List ToContract(this List apiResultData) + public static List ToContract(this List apiResultData) { - List contracts = new(); + List contracts = new(); foreach (Contract contract in apiResultData) { contracts.Add(contract.ToContract()); @@ -357,28 +357,28 @@ public static List ToContract(this List apiResultData) return contracts; } - public static ContractModel ToContract(this Contract apiResultData) { - var contract = new ContractModel { + public static ContractModels.ContractModel ToContract(this Contract apiResultData) { + var contract = new ContractModels.ContractModel { ContractId = apiResultData.ContractId, Description = apiResultData.Description, OperatorName = apiResultData.OperatorName, OperatorId = apiResultData.OperatorId, - Products = new List() + Products = new List() }; foreach (var contractProduct in apiResultData.Products) { - var cp = new ContractProductModel { + var cp = new ContractModels.ContractProductModel { ProductType = ((ProductType)contractProduct.ProductType).ToString(), Value = contractProduct.Value.HasValue ? contractProduct.Value.Value.ToString("F2") : "Variable", DisplayText = contractProduct.DisplayText, ProductName = contractProduct.ProductName, ContractProductId = contractProduct.ProductId, NumberOfFees = contractProduct.TransactionFees.Count, - TransactionFees = new List() + TransactionFees = new List() }; foreach (ContractProductTransactionFee contractProductTransactionFee in contractProduct.TransactionFees) { - cp.TransactionFees.Add(new ContractProductTransactionFeeModel { + cp.TransactionFees.Add(new ContractModels.ContractProductTransactionFeeModel { Value = contractProductTransactionFee.Value, Description = contractProductTransactionFee.Description, CalculationType = contractProductTransactionFee.CalculationType, diff --git a/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs b/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs index 132ea047..f454cc06 100644 --- a/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs @@ -11,15 +11,15 @@ namespace EstateManagementUI.BusinessLogic.Client { public partial interface IApiClient { - Task>> GetRecentContracts(ContractQueries.GetRecentContractsQuery request, - CancellationToken cancellationToken); - - Task>> GetContracts(ContractQueries.GetContractsForDropDownQuery request, - CancellationToken cancellationToken); - Task>> GetContracts(ContractQueries.GetContractsQuery request, + Task>> GetRecentContracts(ContractQueries.GetRecentContractsQuery request, + CancellationToken cancellationToken); + + Task>> GetContracts(ContractQueries.GetContractsForDropDownQuery request, + CancellationToken cancellationToken); + Task>> GetContracts(ContractQueries.GetContractsQuery request, + CancellationToken cancellationToken); + Task> GetContract(ContractQueries.GetContractQuery request, CancellationToken cancellationToken); - Task> GetContract(ContractQueries.GetContractQuery request, - CancellationToken cancellationToken); Task CreateContract(ContractCommands.CreateContractCommand request, CancellationToken cancellationToken); @@ -33,8 +33,8 @@ Task RemoveTransactionFeeFromProduct(ContractCommands.RemoveTransactionF } public partial class ApiClient : IApiClient { - public async Task>> GetRecentContracts(ContractQueries.GetRecentContractsQuery request, - CancellationToken cancellationToken) { + public async Task>> GetRecentContracts(ContractQueries.GetRecentContractsQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) return ResultHelpers.CreateFailure(token); @@ -44,13 +44,13 @@ public async Task>> GetRecentContracts(Contract if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List recentContractModels = apiResult.Data.ToRecentContracts(); + List recentContractModels = apiResult.Data.ToRecentContracts(); return Result.Success(recentContractModels); } - public async Task>> GetContracts(ContractQueries.GetContractsForDropDownQuery request, - CancellationToken cancellationToken) + public async Task>> GetContracts(ContractQueries.GetContractsForDropDownQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -61,13 +61,13 @@ public async Task>> GetContracts(ContractQuer if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List contractModels = apiResult.Data.ToContractDropDown(); + List contractModels = apiResult.Data.ToContractDropDown(); return Result.Success(contractModels); } - public async Task>> GetContracts(ContractQueries.GetContractsQuery request, - CancellationToken cancellationToken) + public async Task>> GetContracts(ContractQueries.GetContractsQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -78,13 +78,13 @@ public async Task>> GetContracts(ContractQueries.GetC if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List contractModels = apiResult.Data.ToContract(); + List contractModels = apiResult.Data.ToContract(); return Result.Success(contractModels); } - public async Task> GetContract(ContractQueries.GetContractQuery request, - CancellationToken cancellationToken) + public async Task> GetContract(ContractQueries.GetContractQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -95,7 +95,7 @@ public async Task> GetContract(ContractQueries.GetContract if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - ContractModel contractModel = apiResult.Data.ToContract(); + ContractModels.ContractModel contractModel = apiResult.Data.ToContract(); return Result.Success(contractModel); } diff --git a/EstateManagmentUI.BusinessLogic/Client/DateMethods.cs b/EstateManagmentUI.BusinessLogic/Client/DateMethods.cs index 71403636..3c651037 100644 --- a/EstateManagmentUI.BusinessLogic/Client/DateMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/DateMethods.cs @@ -1,5 +1,4 @@ using EstateManagementUI.BusinessLogic.BackendAPI; -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using SecurityService.Client; @@ -10,6 +9,7 @@ using System.Collections.Generic; using System.Text; using System.Threading; +using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using Shared.General; using TransactionProcessor.Client; diff --git a/EstateManagmentUI.BusinessLogic/Client/EstateMethods.cs b/EstateManagmentUI.BusinessLogic/Client/EstateMethods.cs index e40ca051..e2007bb8 100644 --- a/EstateManagmentUI.BusinessLogic/Client/EstateMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/EstateMethods.cs @@ -12,11 +12,11 @@ namespace EstateManagementUI.BusinessLogic.Client { public partial interface IApiClient { - Task> GetEstate(EstateQueries.GetEstateQuery request, - CancellationToken cancellationToken); + Task> GetEstate(EstateQueries.GetEstateQuery request, + CancellationToken cancellationToken); - Task>> GetEstateAssignedOperators(EstateQueries.GetAssignedOperatorsQuery request, - CancellationToken cancellationToken); + Task>> GetEstateAssignedOperators(EstateQueries.GetAssignedOperatorsQuery request, + CancellationToken cancellationToken); Task RemoveEstateOperator(EstateCommands.RemoveOperatorFromEstateCommand request, CancellationToken cancellationToken); @@ -26,8 +26,8 @@ Task AddEstateOperator(EstateCommands.AddOperatorToEstateCommand request public partial class ApiClient : IApiClient { - public async Task> GetEstate(EstateQueries.GetEstateQuery request, - CancellationToken cancellationToken) { + public async Task> GetEstate(EstateQueries.GetEstateQuery request, + CancellationToken cancellationToken) { // Get a token here Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -37,13 +37,13 @@ public async Task> GetEstate(EstateQueries.GetEstateQuery re if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - EstateModel estate = APIModelFactory.ConvertFrom(apiResult.Data); + EstateModels.EstateModel estate = APIModelFactory.ConvertFrom(apiResult.Data); return Result.Success(estate); } - public async Task>> GetEstateAssignedOperators(EstateQueries.GetAssignedOperatorsQuery request, - CancellationToken cancellationToken) { + public async Task>> GetEstateAssignedOperators(EstateQueries.GetAssignedOperatorsQuery request, + CancellationToken cancellationToken) { // Get a token here Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -53,7 +53,7 @@ public async Task>> GetEstateAssignedOperators(Estate if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List estateOperators = apiResult.Data.ToOperator(); + List estateOperators = apiResult.Data.ToOperator(); return Result.Success(estateOperators); } diff --git a/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs b/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs index e036f8f0..fac45bbd 100644 --- a/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs @@ -11,14 +11,14 @@ namespace EstateManagementUI.BusinessLogic.Client { public partial interface IApiClient { - Task> GetMerchantKpi(MerchantQueries.GetMerchantKpiQuery request, CancellationToken cancellationToken); - Task>> GetRecentMerchants(MerchantQueries.GetRecentMerchantsQuery request, CancellationToken cancellationToken); - Task>> GetMerchants(MerchantQueries.GetMerchantsQuery request, CancellationToken cancellationToken); - Task>> GetMerchants(MerchantQueries.GetMerchantsForDropDownQuery request, CancellationToken cancellationToken); - Task> GetMerchant(MerchantQueries.GetMerchantQuery request, CancellationToken cancellationToken); - Task>> GetMerchantOperators(MerchantQueries.GetMerchantOperatorsQuery request, CancellationToken cancellationToken); - Task>> GetMerchantContracts(MerchantQueries.GetMerchantContractsQuery request, CancellationToken cancellationToken); - Task>> GetMerchantDevices(MerchantQueries.GetMerchantDevicesQuery request, CancellationToken cancellationToken); + Task> GetMerchantKpi(MerchantQueries.GetMerchantKpiQuery request, CancellationToken cancellationToken); + Task>> GetRecentMerchants(MerchantQueries.GetRecentMerchantsQuery request, CancellationToken cancellationToken); + Task>> GetMerchants(MerchantQueries.GetMerchantsQuery request, CancellationToken cancellationToken); + Task>> GetMerchants(MerchantQueries.GetMerchantsForDropDownQuery request, CancellationToken cancellationToken); + Task> GetMerchant(MerchantQueries.GetMerchantQuery request, CancellationToken cancellationToken); + Task>> GetMerchantOperators(MerchantQueries.GetMerchantOperatorsQuery request, CancellationToken cancellationToken); + Task>> GetMerchantContracts(MerchantQueries.GetMerchantContractsQuery request, CancellationToken cancellationToken); + Task>> GetMerchantDevices(MerchantQueries.GetMerchantDevicesQuery request, CancellationToken cancellationToken); Task UpdateMerchant(MerchantCommands.UpdateMerchantCommand request, CancellationToken cancellationToken); Task UpdateMerchantAddress(MerchantCommands.UpdateMerchantCommand request, CancellationToken cancellationToken); Task UpdateMerchantContact(MerchantCommands.UpdateMerchantCommand request, CancellationToken cancellationToken); @@ -164,8 +164,8 @@ public async Task RemoveOperatorFromMerchant(MerchantCommands.RemoveOper return Result.Success(); } - public async Task> GetMerchantKpi(MerchantQueries.GetMerchantKpiQuery request, - CancellationToken cancellationToken) { + public async Task> GetMerchantKpi(MerchantQueries.GetMerchantKpiQuery request, + CancellationToken cancellationToken) { // Get a token here var token = await this.GetToken(cancellationToken); @@ -177,13 +177,13 @@ public async Task> GetMerchantKpi(MerchantQueries.GetMe if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - MerchantKpiModel merchantKpiModel = APIModelFactory.ConvertFrom(apiResult.Data); + MerchantModels.MerchantKpiModel merchantKpiModel = APIModelFactory.ConvertFrom(apiResult.Data); return Result.Success(merchantKpiModel); } - public async Task>> GetRecentMerchants(MerchantQueries.GetRecentMerchantsQuery request, - CancellationToken cancellationToken) { + public async Task>> GetRecentMerchants(MerchantQueries.GetRecentMerchantsQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) return ResultHelpers.CreateFailure(token); @@ -193,13 +193,13 @@ public async Task>> GetRecentMerchants(Merchan if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List recentMerchantsModels = apiResult.Data.ToRecentMerchant(); + List recentMerchantsModels = apiResult.Data.ToRecentMerchant(); return Result.Success(recentMerchantsModels); } - public async Task>> GetMerchants(MerchantQueries.GetMerchantsQuery request, - CancellationToken cancellationToken) + public async Task>> GetMerchants(MerchantQueries.GetMerchantsQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -211,13 +211,13 @@ public async Task>> GetMerchants(MerchantQueries. if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List merchantList = apiResult.Data.ToMerchantList(); + List merchantList = apiResult.Data.ToMerchantList(); return Result.Success(merchantList); } - public async Task> GetMerchant(MerchantQueries.GetMerchantQuery request, - CancellationToken cancellationToken) + public async Task> GetMerchant(MerchantQueries.GetMerchantQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -228,13 +228,13 @@ public async Task> GetMerchant(MerchantQueries.GetMerchant if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - MerchantModel merchant = apiResult.Data.ToMerchant(); + MerchantModels.MerchantModel merchant = apiResult.Data.ToMerchant(); return Result.Success(merchant); } - public async Task>> GetMerchantOperators(MerchantQueries.GetMerchantOperatorsQuery request, - CancellationToken cancellationToken) { + public async Task>> GetMerchantOperators(MerchantQueries.GetMerchantOperatorsQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) return ResultHelpers.CreateFailure(token); @@ -249,8 +249,8 @@ public async Task>> GetMerchantOperators(Merc return Result.Success(merchantOperators); } - public async Task>> GetMerchantContracts(MerchantQueries.GetMerchantContractsQuery request, - CancellationToken cancellationToken) { + public async Task>> GetMerchantContracts(MerchantQueries.GetMerchantContractsQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) return ResultHelpers.CreateFailure(token); @@ -265,8 +265,8 @@ public async Task>> GetMerchantContracts(Merc return Result.Success(merchantContracts); } - public async Task>> GetMerchantDevices(MerchantQueries.GetMerchantDevicesQuery request, - CancellationToken cancellationToken) { + public async Task>> GetMerchantDevices(MerchantQueries.GetMerchantDevicesQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) return ResultHelpers.CreateFailure(token); @@ -347,8 +347,8 @@ public async Task UpdateMerchantContact(MerchantCommands.UpdateMerchantC return Result.Success(); } - public async Task>> GetMerchants(MerchantQueries.GetMerchantsForDropDownQuery request, - CancellationToken cancellationToken) { + public async Task>> GetMerchants(MerchantQueries.GetMerchantsForDropDownQuery request, + CancellationToken cancellationToken) { Result token = await this.GetToken(cancellationToken); if (token.IsFailed) return ResultHelpers.CreateFailure(token); @@ -359,7 +359,7 @@ public async Task>> GetMerchants(MerchantQuer if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List merchantDropDownModels = apiResult.Data.ToMerchantDropDown(); + List merchantDropDownModels = apiResult.Data.ToMerchantDropDown(); return Result.Success(merchantDropDownModels); } diff --git a/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs b/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs index 0f4064bc..4d7eaf62 100644 --- a/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs @@ -11,14 +11,14 @@ namespace EstateManagementUI.BusinessLogic.Client { public partial interface IApiClient { - Task>> GetOperators(OperatorQueries.GetOperatorsQuery request, - CancellationToken cancellationToken); + Task>> GetOperators(OperatorQueries.GetOperatorsQuery request, + CancellationToken cancellationToken); - Task>> GetOperators(OperatorQueries.GetOperatorsForDropDownQuery request, - CancellationToken cancellationToken); + Task>> GetOperators(OperatorQueries.GetOperatorsForDropDownQuery request, + CancellationToken cancellationToken); - Task> GetOperator(OperatorQueries.GetOperatorQuery request, - CancellationToken cancellationToken); + Task> GetOperator(OperatorQueries.GetOperatorQuery request, + CancellationToken cancellationToken); Task UpdateOperator(OperatorCommands.UpdateOperatorCommand request, CancellationToken cancellationToken); @@ -28,8 +28,8 @@ Task CreateOperator(OperatorCommands.CreateOperatorCommand request, } public partial class ApiClient : IApiClient { - public async Task>> GetOperators(OperatorQueries.GetOperatorsQuery request, - CancellationToken cancellationToken) { + public async Task>> GetOperators(OperatorQueries.GetOperatorsQuery request, + CancellationToken cancellationToken) { // Get a token here var token = await this.GetToken(cancellationToken); if (token.IsFailed) @@ -40,13 +40,13 @@ public async Task>> GetOperators(OperatorQueries.GetO if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List operatorModels = apiResult.Data.ToOperator(); + List operatorModels = apiResult.Data.ToOperator(); return Result.Success(operatorModels); } - public async Task>> GetOperators(OperatorQueries.GetOperatorsForDropDownQuery request, - CancellationToken cancellationToken) + public async Task>> GetOperators(OperatorQueries.GetOperatorsForDropDownQuery request, + CancellationToken cancellationToken) { // Get a token here var token = await this.GetToken(cancellationToken); @@ -58,13 +58,13 @@ public async Task>> GetOperators(OperatorQuer if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - List operatorModels = apiResult.Data.ToOperatorDropDown(); + List operatorModels = apiResult.Data.ToOperatorDropDown(); return Result.Success(operatorModels); } - public async Task> GetOperator(OperatorQueries.GetOperatorQuery request, - CancellationToken cancellationToken) + public async Task> GetOperator(OperatorQueries.GetOperatorQuery request, + CancellationToken cancellationToken) { // Get a token here var token = await this.GetToken(cancellationToken); @@ -76,7 +76,7 @@ public async Task> GetOperator(OperatorQueries.GetOperator if (apiResult.IsFailed) return ResultHelpers.CreateFailure(apiResult); - OperatorModel operatorModels = apiResult.Data.ToOperator(); + OperatorModels.OperatorModel operatorModels = apiResult.Data.ToOperator(); return Result.Success(operatorModels); } diff --git a/EstateManagmentUI.BusinessLogic/Client/StubTestData.cs b/EstateManagmentUI.BusinessLogic/Client/StubTestData.cs index 5fc64d7b..1c17643d 100644 --- a/EstateManagmentUI.BusinessLogic/Client/StubTestData.cs +++ b/EstateManagmentUI.BusinessLogic/Client/StubTestData.cs @@ -5,16 +5,16 @@ namespace EstateManagementUI.BusinessLogic.Client; public static class StubTestData { - public static EstateModel GetMockEstate() => new() + public static EstateModels.EstateModel GetMockEstate() => new() { EstateId = Guid.Parse("11111111-1111-1111-1111-111111111111"), EstateName = "Test Estate", Reference = "Test Estate" }; - public static List GetMockMerchants() => new() + public static List GetMockMerchants() => new() { - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222222"), MerchantName = "Test Merchant 1", @@ -25,7 +25,7 @@ public static class StubTestData { Region = "North Region", PostalCode = "12345" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222223"), MerchantName = "Test Merchant 2", @@ -36,7 +36,7 @@ public static class StubTestData { Region = "South Region", PostalCode = "67890" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222224"), MerchantName = "Test Merchant 3", @@ -47,7 +47,7 @@ public static class StubTestData { Region = "East Region", PostalCode = "54321" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222225"), MerchantName = "Test Merchant 4", @@ -58,7 +58,7 @@ public static class StubTestData { Region = "West Region", PostalCode = "11111" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222226"), MerchantName = "Test Merchant 5", @@ -69,7 +69,7 @@ public static class StubTestData { Region = "North Region", PostalCode = "22222" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222227"), MerchantName = "Test Merchant 6", @@ -80,7 +80,7 @@ public static class StubTestData { Region = "South Region", PostalCode = "33333" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222228"), MerchantName = "Test Merchant 7", @@ -91,7 +91,7 @@ public static class StubTestData { Region = "East Region", PostalCode = "44444" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222229"), MerchantName = "Test Merchant 8", @@ -102,7 +102,7 @@ public static class StubTestData { Region = "West Region", PostalCode = "55555" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222230"), MerchantName = "Test Merchant 9", @@ -113,7 +113,7 @@ public static class StubTestData { Region = "North Region", PostalCode = "66666" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222231"), MerchantName = "Test Merchant 10", @@ -124,7 +124,7 @@ public static class StubTestData { Region = "South Region", PostalCode = "77777" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222232"), MerchantName = "Test Merchant 11", @@ -135,7 +135,7 @@ public static class StubTestData { Region = "East Region", PostalCode = "88888" }, - new MerchantModel + new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222233"), MerchantName = "Test Merchant 12", @@ -148,23 +148,23 @@ public static class StubTestData { } }; - public static List GetMockRecentMerchants() => new() + public static List GetMockRecentMerchants() => new() { - new RecentMerchantsModel + new MerchantModels.RecentMerchantsModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222222"), Name = "Test Merchant 1", Reference = "MERCH001", CreatedDateTime = DateTime.Now }, - new RecentMerchantsModel + new MerchantModels.RecentMerchantsModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222223"), Name = "Test Merchant 2", Reference = "MERCH002", CreatedDateTime = DateTime.Now.AddDays(-1) }, - new RecentMerchantsModel + new MerchantModels.RecentMerchantsModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222224"), Name = "Test Merchant 3", @@ -173,7 +173,7 @@ public static class StubTestData { } }; - public static MerchantModel GetMockMerchant() => new() + public static MerchantModels.MerchantModel GetMockMerchant() => new() { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222222"), MerchantName = "Test Merchant 1", @@ -191,16 +191,16 @@ public static class StubTestData { ContactPhoneNumber = "555-1234" }; - public static List GetMockOperators() => new() + public static List GetMockOperators() => new() { - new OperatorModel + new OperatorModels.OperatorModel { OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333333"), Name = "Safaricom", RequireCustomMerchantNumber = true, RequireCustomTerminalNumber = false }, - new OperatorModel + new OperatorModels.OperatorModel { OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333334"), Name = "Voucher", @@ -209,7 +209,7 @@ public static class StubTestData { } }; - public static OperatorModel GetMockOperator() => new() + public static OperatorModels.OperatorModel GetMockOperator() => new() { OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333333"), Name = "Safaricom", @@ -217,17 +217,17 @@ public static class StubTestData { RequireCustomTerminalNumber = false }; - public static List GetMockContracts() => new() + public static List GetMockContracts() => new() { - new ContractModel + new ContractModels.ContractModel { ContractId = Guid.Parse("44444444-4444-4444-4444-444444444444"), Description = "Standard Transaction Contract", OperatorName = "Safaricom", OperatorId = Guid.Parse("22222222-2222-2222-2222-222222222222"), - Products = new List + Products = new List { - new ContractProductModel + new ContractModels.ContractProductModel { ContractProductId = Guid.Parse("55555555-5555-5555-5555-555555555555"), ProductName = "Mobile Topup", @@ -235,15 +235,15 @@ public static class StubTestData { } } }, - new ContractModel + new ContractModels.ContractModel { ContractId = Guid.Parse("44444444-4444-4444-4444-444444444445"), Description = "Voucher Sales Contract", OperatorName = "Voucher", OperatorId = Guid.Parse("22222222-2222-2222-2222-222222222223"), - Products = new List + Products = new List { - new ContractProductModel + new ContractModels.ContractProductModel { ContractProductId = Guid.Parse("55555555-5555-5555-5555-555555555556"), ProductName = "Voucher", @@ -253,15 +253,15 @@ public static class StubTestData { } }; - public static ContractModel GetMockContract() => new() + public static ContractModels.ContractModel GetMockContract() => new() { ContractId = Guid.Parse("44444444-4444-4444-4444-444444444444"), Description = "Standard Transaction Contract", OperatorName = "Safaricom", OperatorId = Guid.Parse("22222222-2222-2222-2222-222222222222"), - Products = new List + Products = new List { - new ContractProductModel + new ContractModels.ContractProductModel { ContractProductId = Guid.Parse("55555555-5555-5555-5555-555555555555"), ProductName = "Mobile Topup", @@ -269,9 +269,9 @@ public static class StubTestData { ProductType = "Mobile Topup", Value = "Variable", NumberOfFees = 2, - TransactionFees = new List + TransactionFees = new List { - new ContractProductTransactionFeeModel + new ContractModels.ContractProductTransactionFeeModel { TransactionFeeId = Guid.Parse("66666666-6666-6666-6666-666666666666"), Description = "Merchant Commission", @@ -279,7 +279,7 @@ public static class StubTestData { FeeType = 0, Value = 0.50m }, - new ContractProductTransactionFeeModel + new ContractModels.ContractProductTransactionFeeModel { TransactionFeeId = Guid.Parse("77777777-7777-7777-7777-777777777777"), Description = "Service Provider Fee", @@ -289,7 +289,7 @@ public static class StubTestData { } } }, - new ContractProductModel + new ContractModels.ContractProductModel { ContractProductId = Guid.Parse("88888888-8888-8888-8888-888888888888"), ProductName = "Bill Payment", @@ -297,9 +297,9 @@ public static class StubTestData { ProductType = "Bill Payment", Value = "Variable", NumberOfFees = 1, - TransactionFees = new List + TransactionFees = new List { - new ContractProductTransactionFeeModel + new ContractModels.ContractProductTransactionFeeModel { TransactionFeeId = Guid.Parse("99999999-9999-9999-9999-999999999999"), Description = "Transaction Fee", @@ -411,7 +411,7 @@ public static class StubTestData { new TodaysSalesValueByHourModel { Hour = 15, TodaysSalesValue = 21500, ComparisonSalesValue = 9500 } }; - public static MerchantKpiModel GetMockMerchantKpi() => new() + public static MerchantModels.MerchantKpiModel GetMockMerchantKpi() => new() { MerchantsWithNoSaleInLast7Days = 5, MerchantsWithNoSaleToday = 12, @@ -474,7 +474,7 @@ private static List GetDemoMerchantTransactions() var contracts = GetMockContracts(); var productList = contracts - .SelectMany(c => c.Products ?? new List()) + .SelectMany(c => c.Products ?? new List()) .Where(p => !string.IsNullOrEmpty(p.ProductName)) .ToList(); @@ -719,7 +719,7 @@ public static List GetMockTransactionDetails(Queries.Get // Get all products with their IDs from contracts var productList = contracts - .SelectMany(c => c.Products ?? new List()) + .SelectMany(c => c.Products ?? new List()) .Where(p => !string.IsNullOrEmpty(p.ProductName)) .ToList(); diff --git a/EstateManagmentUI.BusinessLogic/Models/ContractModels.cs b/EstateManagmentUI.BusinessLogic/Models/ContractModels.cs new file mode 100644 index 00000000..851b649b --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Models/ContractModels.cs @@ -0,0 +1,46 @@ +namespace EstateManagementUI.BusinessLogic.Models; + +public class ContractModels { + public class ContractModel { + public Guid ContractId { get; set; } + public string? Description { get; set; } + public string? OperatorName { get; set; } + public Guid OperatorId { get; set; } + 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; } + public string? ProductName { get; set; } + public string? DisplayText { get; set; } + + public string? ProductType { get; set; } + + // Changed from decimal? to string? to support displaying "Variable" for variable-value products + // This aligns with how the backend represents variable vs fixed value products + public string? Value { get; set; } + public int NumberOfFees { get; set; } + public List? TransactionFees { get; set; } + } + + public class ContractProductTransactionFeeModel { + public Guid TransactionFeeId { get; set; } + public string? Description { get; set; } + public Int32 CalculationType { get; set; } + public Int32 FeeType { get; set; } + public decimal Value { get; set; } + } + + public class RecentContractModel + { + public Guid ContractId { get; set; } + public string? Description { get; set; } + public string? OperatorName { get; set; } + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Models/EstateModels.cs b/EstateManagmentUI.BusinessLogic/Models/EstateModels.cs new file mode 100644 index 00000000..acbe5338 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Models/EstateModels.cs @@ -0,0 +1,41 @@ +namespace EstateManagementUI.BusinessLogic.Models; + +public class EstateModels { + public class EstateModel { + public Guid EstateId { get; set; } + public string? EstateName { get; set; } + public string? Reference { get; set; } + public List? Operators { get; set; } + public List? Merchants { get; set; } + public List? Contracts { get; set; } + public List? Users { get; set; } + } + + public class EstateUserModel { + public Guid UserId { get; set; } + public string? EmailAddress { get; set; } + public DateTime CreatedDateTime { get; set; } + } + + public class EstateOperatorModel { + public Guid OperatorId { get; set; } + public string? Name { get; set; } + public bool RequireCustomMerchantNumber { get; set; } + public bool RequireCustomTerminalNumber { get; set; } + public DateTime CreatedDateTime { get; set; } + } + + public class EstateContractModel { + public Guid OperatorId { get; set; } + public Guid ContractId { get; set; } + public string? Name { get; set; } + public string? OperatorName { get; set; } + } + + + public class EstateMerchantModel { + public Guid MerchantId { get; set; } + public string? Name { get; set; } + public string? Reference { get; set; } + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Models/MerchantModels.cs b/EstateManagmentUI.BusinessLogic/Models/MerchantModels.cs index f2f69f1d..638ac2b4 100644 --- a/EstateManagmentUI.BusinessLogic/Models/MerchantModels.cs +++ b/EstateManagmentUI.BusinessLogic/Models/MerchantModels.cs @@ -3,94 +3,94 @@ using System.Collections.Generic; using System.Text; -namespace EstateManagementUI.BusinessLogic.Models -{ - public class MerchantModel - { - public Guid MerchantId { get; set; } - public string? MerchantName { get; set; } - public string? MerchantReference { get; set; } - public decimal? Balance { get; set; } - public decimal? AvailableBalance { get; set; } - public string? SettlementSchedule { get; set; } +namespace EstateManagementUI.BusinessLogic.Models { + public class MerchantModels { + public class MerchantModel { + public Guid MerchantId { get; set; } + public string? MerchantName { get; set; } + public string? MerchantReference { get; set; } + public decimal? Balance { get; set; } + public decimal? AvailableBalance { get; set; } + public string? SettlementSchedule { get; set; } - public Guid AddressId { get; set; } - public string? AddressLine1 { get; set; } - public string? AddressLine2 { get; set; } - public string? Town { get; set; } - public string? Region { get; set; } - public string? PostalCode { get; set; } - public string? Country { get; set; } - public Guid ContactId { get; set; } - public string? ContactName { get; set; } - public string? ContactEmailAddress { get; set; } - public string? ContactPhoneNumber { get; set; } - public DateTime CreatedDateTime { get; set; } - } + public Guid AddressId { get; set; } + public string? AddressLine1 { get; set; } + public string? AddressLine2 { get; set; } + public string? Town { get; set; } + public string? Region { get; set; } + public string? PostalCode { get; set; } + public string? Country { get; set; } + public Guid ContactId { get; set; } + public string? ContactName { get; set; } + public string? ContactEmailAddress { get; set; } + public string? ContactPhoneNumber { get; set; } + public DateTime CreatedDateTime { get; set; } + } - public class MerchantListModel - { - public Guid MerchantId { get; set; } - public string? MerchantName { get; set; } - public string? MerchantReference { get; set; } - public decimal? Balance { get; set; } - public decimal? AvailableBalance { get; set; } - public string? SettlementSchedule { get; set; } - public string? Region { get; set; } - public string? PostalCode { get; set; } - public DateTime CreatedDateTime { get; set; } - } + public class MerchantListModel { + public Guid MerchantId { get; set; } + public string? MerchantName { get; set; } + public string? MerchantReference { get; set; } + public decimal? Balance { get; set; } + public decimal? AvailableBalance { get; set; } + public string? SettlementSchedule { get; set; } + public string? Region { get; set; } + public string? PostalCode { get; set; } + public DateTime CreatedDateTime { get; set; } + } - public class MerchantDropDownModel - { - public Guid MerchantId { get; set; } - public string? MerchantName { get; set; } - } + public class MerchantDropDownModel { + public Guid MerchantId { get; set; } + public string? MerchantName { get; set; } + } - public class RecentMerchantsModel - { - public DateTime CreatedDateTime { get; set; } - public Guid MerchantId { get; set; } - public String Name { get; set; } - public String Reference { get; set; } - } + public class RecentMerchantsModel { + public DateTime CreatedDateTime { get; set; } + public Guid MerchantId { get; set; } + public String Name { get; set; } + public String Reference { get; set; } + } - public class MerchantOperatorModel - { - public Guid MerchantId { get; set; } - public Guid OperatorId { get; set; } - public String OperatorName { get; set; } - public String MerchantNumber { get; set; } - public String TerminalNumber { get; set; } - public Boolean IsDeleted { get; set; } - } + public class MerchantOperatorModel { + public Guid MerchantId { get; set; } + public Guid OperatorId { get; set; } + public String OperatorName { get; set; } + public String MerchantNumber { get; set; } + public String TerminalNumber { get; set; } + public Boolean IsDeleted { get; set; } + } - public class MerchantContractModel - { - public Guid MerchantId { get; set; } - public Guid ContractId { get; set; } - public String OperatorName { get; set; } - public String ContractName { get; set; } - public Boolean IsDeleted { get; set; } - public List ContractProducts { get; set; } - } + public class MerchantContractModel { + public Guid MerchantId { get; set; } + public Guid ContractId { get; set; } + public String OperatorName { get; set; } + public String ContractName { get; set; } + public Boolean IsDeleted { get; set; } + public List ContractProducts { get; set; } + } - public class MerchantContractProductModel - { - public Guid MerchantId { get; set; } - public Guid ContractId { get; set; } - public Guid ProductId { get; set; } - public String ProductName { get; set; } - public String DisplayText { get; set; } - public String ProductType { get; set; } - public Decimal? Value { get; set; } - } + public class MerchantContractProductModel { + public Guid MerchantId { get; set; } + public Guid ContractId { get; set; } + public Guid ProductId { get; set; } + public String ProductName { get; set; } + public String DisplayText { get; set; } + public String ProductType { get; set; } + public Decimal? Value { get; set; } + } + + public class MerchantDeviceModel { + public Guid MerchantId { get; set; } + public Guid DeviceId { get; set; } + public String DeviceIdentifier { get; set; } + public Boolean IsDeleted { get; set; } + } - public class MerchantDeviceModel - { - public Guid MerchantId { get; set; } - public Guid DeviceId { get; set; } - public String DeviceIdentifier { get; set; } - public Boolean IsDeleted { get; set; } + public class MerchantKpiModel + { + public int MerchantsWithNoSaleInLast7Days { get; set; } + public int MerchantsWithNoSaleToday { get; set; } + public int MerchantsWithSaleInLastHour { get; set; } + } } -} +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Models/Models.cs b/EstateManagmentUI.BusinessLogic/Models/Models.cs index d5df449a..2092c889 100644 --- a/EstateManagmentUI.BusinessLogic/Models/Models.cs +++ b/EstateManagmentUI.BusinessLogic/Models/Models.cs @@ -1,92 +1,5 @@ namespace EstateManagementUI.BusinessLogic.Models; -// Estate Models -public class EstateModel -{ - public Guid EstateId { get; set; } - public string? EstateName { get; set; } - public string? Reference { get; set; } - public List? Operators { get; set; } - public List? Merchants { get; set; } - public List? Contracts { get; set; } - public List? Users { get; set; } -} - -public class EstateUserModel -{ - public Guid UserId { get; set; } - public string? EmailAddress { get; set; } - public DateTime CreatedDateTime { get; set; } -} - -public class EstateOperatorModel -{ - public Guid OperatorId { get; set; } - public string? Name { get; set; } - public bool RequireCustomMerchantNumber { get; set; } - public bool RequireCustomTerminalNumber { get; set; } - public DateTime CreatedDateTime { get; set; } -} - -public class EstateContractModel -{ - public Guid OperatorId { get; set; } - public Guid ContractId { get; set; } - public string? Name { get; set; } - public string? OperatorName { get; set; } -} - - -public class EstateMerchantModel -{ - public Guid MerchantId { get; set; } - public string? Name { get; set; } - public string? Reference { get; set; } -} - - -// Operator Models - - -// Contract Models -public class ContractModel -{ - public Guid ContractId { get; set; } - public string? Description { get; set; } - public string? OperatorName { get; set; } - public Guid OperatorId { get; set; } - 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; } - public string? ProductName { get; set; } - public string? DisplayText { get; set; } - public string? ProductType { get; set; } - // Changed from decimal? to string? to support displaying "Variable" for variable-value products - // This aligns with how the backend represents variable vs fixed value products - public string? Value { get; set; } - public int NumberOfFees { get; set; } - public List? TransactionFees { get; set; } -} - -public class ContractProductTransactionFeeModel -{ - public Guid TransactionFeeId { get; set; } - public string? Description { get; set; } - public Int32 CalculationType { get; set; } - public Int32 FeeType { get; set; } - public decimal Value { get; set; } -} - // File Processing Models public class FileImportLogModel { @@ -155,12 +68,7 @@ public class TodaysSalesValueByHourModel public decimal ComparisonSalesValue { get; set; } } -public class MerchantKpiModel -{ - public int MerchantsWithNoSaleInLast7Days { get; set; } - public int MerchantsWithNoSaleToday { get; set; } - public int MerchantsWithSaleInLastHour { get; set; } -} + public class TopBottomProductDataModel { @@ -264,10 +172,5 @@ public class TransactionDetailModel public string? ResponseCode { get; set; } public DateTime? SettlementDateTime { get; set; } } -public class RecentContractModel -{ - public Guid ContractId { get; set; } - public string? Description { get; set; } - public string? OperatorName { get; set; } -} + diff --git a/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs b/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs index 3fb39b40..21f53f77 100644 --- a/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs +++ b/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs @@ -1,20 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace EstateManagementUI.BusinessLogic.Models +namespace EstateManagementUI.BusinessLogic.Models { - public class OperatorModel - { - public Guid OperatorId { get; set; } - public string? Name { get; set; } - public bool RequireCustomMerchantNumber { get; set; } - public bool RequireCustomTerminalNumber { get; set; } - } + public class OperatorModels { + public class OperatorModel { + public Guid OperatorId { get; set; } + public string? Name { get; set; } + public bool RequireCustomMerchantNumber { get; set; } + public bool RequireCustomTerminalNumber { get; set; } + } - public class OperatorDropDownModel - { - public Guid OperatorId { get; set; } - public string? OperatorName { get; set; } + public class OperatorDropDownModel { + public Guid OperatorId { get; set; } + public string? OperatorName { get; set; } + } } } diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/ContractRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/ContractRequestHandler.cs new file mode 100644 index 00000000..6bb1e297 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/ContractRequestHandler.cs @@ -0,0 +1,66 @@ +using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.RequestHandlers; + +public class ContractRequestHandler : IRequestHandler>>, + IRequestHandler>, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler>>, + IRequestHandler>> +{ + + private readonly IApiClient ApiClient; + + public ContractRequestHandler(IApiClient apiClient) + { + this.ApiClient = apiClient; + } + + public async Task>> Handle(ContractQueries.GetContractsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetContracts(request, cancellationToken); + } + + public async Task> Handle(ContractQueries.GetContractQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetContract(request, cancellationToken); + } + + public async Task Handle(ContractCommands.CreateContractCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.CreateContract(request, cancellationToken); + } + + public async Task Handle(ContractCommands.AddProductToContractCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.AddProductToContract(request, cancellationToken); + } + + public async Task Handle(ContractCommands.AddTransactionFeeToProductCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.AddTransactionFeeToProduct(request, cancellationToken); + } + + public async Task Handle(ContractCommands.RemoveTransactionFeeFromProductCommand request, + CancellationToken cancellationToken) + { + return await this.ApiClient.RemoveTransactionFeeFromProduct(request, cancellationToken); + } + + 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); + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DashboardRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DashboardRequestHandler.cs new file mode 100644 index 00000000..08212f91 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DashboardRequestHandler.cs @@ -0,0 +1,101 @@ +using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.RequestHandlers; + +public class DashboardRequestHandler : IRequestHandler>, + IRequestHandler>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>, + IRequestHandler>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>, + IRequestHandler>> +{ + private readonly IApiClient ApiClient; + + public DashboardRequestHandler(IApiClient apiClient) { + this.ApiClient = apiClient; + + } + + // Implementations similar to above handlers returning stub data + public async Task> Handle(Queries.GetTodaysSalesQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetTodaysSales(request, cancellationToken); + } + + public async Task> Handle(Queries.GetTodaysSettlementQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockTodaysSettlement()); + } + + public async Task>> Handle(Queries.GetTodaysSalesCountByHourQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockSalesCountByHour()); + } + + public async Task>> Handle(Queries.GetTodaysSalesValueByHourQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockSalesValueByHour()); + } + + public async Task> Handle(MerchantQueries.GetMerchantKpiQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchantKpi(request, cancellationToken); + } + + public async Task> Handle(Queries.GetTodaysFailedSalesQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetTodaysFailedSales(request, cancellationToken); + } + + public async Task>> Handle(Queries.GetTopProductDataQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockTopProducts()); + } + + public async Task>> Handle(Queries.GetBottomProductDataQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockBottomProducts()); + } + + public async Task>> Handle(Queries.GetTopMerchantDataQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockTopMerchants()); + } + + public async Task>> Handle(Queries.GetBottomMerchantDataQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockBottomMerchants()); + } + + public async Task>> Handle(Queries.GetTopOperatorDataQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockTopOperators()); + } + + public async Task>> Handle(Queries.GetBottomOperatorDataQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockBottomOperators()); + } + + public async Task> Handle(Queries.GetLastSettlementQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockLastSettlement()); + } + + public async Task>> Handle(Queries.GetTransactionDetailQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockTransactionDetails(request)); + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs index 481e6bbe..44cefe59 100644 --- a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs @@ -1,9 +1,7 @@ -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; -using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Client; using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.BusinessLogic.Requests; using MediatR; -using Shared.Results; using SimpleResults; namespace EstateManagementUI.BusinessLogic.RequestHandlers @@ -20,369 +18,4 @@ public async Task>> Handle(Queries.GetCompariso return await this.ApiClient.GetComparisonDates(request, cancellationToken); } } - - public class EstateRequestHandler : IRequestHandler>, - IRequestHandler, - IRequestHandler, - IRequestHandler>> { - private readonly IApiClient ApiClient; - - public EstateRequestHandler(IApiClient apiClient) { - this.ApiClient = apiClient; - } - - public async Task> Handle(EstateQueries.GetEstateQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetEstate(request, cancellationToken); - } - - public async Task Handle(EstateCommands.AddOperatorToEstateCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.AddEstateOperator(request, cancellationToken); - } - - public async Task Handle(EstateCommands.RemoveOperatorFromEstateCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.RemoveEstateOperator(request, cancellationToken); - } - - public async Task>> Handle(EstateQueries.GetAssignedOperatorsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetEstateAssignedOperators(request, cancellationToken); - } - } - - public class MerchantRequestHandler : IRequestHandler>>, - IRequestHandler>, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>> - { - - private readonly IApiClient ApiClient; - - public MerchantRequestHandler(IApiClient apiClient) - { - this.ApiClient = apiClient; - } - - public async Task>> Handle(MerchantQueries.GetMerchantsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchants(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.AddMerchantDeviceCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.AddDeviceToMerchant(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.AddOperatorToMerchantCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.AddOperatorToMerchant(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.CreateMerchantCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.CreateMerchant(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.MakeMerchantDepositCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.MakeMerchantDeposit(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.RemoveContractFromMerchantCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.RemoveContractFromMerchant(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.RemoveOperatorFromMerchantCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.RemoveOperatorFromMerchant(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.SwapMerchantDeviceCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.SwapMerchantDevice(request, cancellationToken); - } - - - public async Task Handle(MerchantCommands.UpdateMerchantCommand request, - CancellationToken cancellationToken) { - Result updateMerchantResult = await this.ApiClient.UpdateMerchant(request, cancellationToken); - if (updateMerchantResult.IsFailed) - return ResultHelpers.CreateFailure(updateMerchantResult); - - Result updateMerchantAddressResult = await this.ApiClient.UpdateMerchantAddress(request, cancellationToken); - if (updateMerchantAddressResult.IsFailed) - return ResultHelpers.CreateFailure(updateMerchantAddressResult); - Result updateMerchantContactResult = await this.ApiClient.UpdateMerchantContact(request, cancellationToken); - if (updateMerchantContactResult.IsFailed) - return ResultHelpers.CreateFailure(updateMerchantContactResult); - - return Result.Success(); - } - - public async Task> Handle(MerchantQueries.GetMerchantQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchant(request, cancellationToken); - } - - public async Task Handle(MerchantCommands.AssignContractToMerchantCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.AddContractToMerchant(request, cancellationToken); - } - - public async Task>> Handle(MerchantQueries.GetRecentMerchantsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetRecentMerchants(request, cancellationToken); - } - - public async Task>> Handle(MerchantQueries.GetMerchantsForDropDownQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchants(request, cancellationToken); - } - - public async Task>> Handle(MerchantQueries.GetMerchantContractsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchantContracts(request, cancellationToken); - } - - public async Task>> Handle(MerchantQueries.GetMerchantOperatorsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchantOperators(request, cancellationToken); - } - - public async Task>> Handle(MerchantQueries.GetMerchantDevicesQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchantDevices(request, cancellationToken); - } - } - - public class ContractRequestHandler : IRequestHandler>>, - IRequestHandler>, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler, - IRequestHandler>>, - IRequestHandler>> - { - - private readonly IApiClient ApiClient; - - public ContractRequestHandler(IApiClient apiClient) - { - this.ApiClient = apiClient; - } - - public async Task>> Handle(ContractQueries.GetContractsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetContracts(request, cancellationToken); - } - - public async Task> Handle(ContractQueries.GetContractQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetContract(request, cancellationToken); - } - - public async Task Handle(ContractCommands.CreateContractCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.CreateContract(request, cancellationToken); - } - - public async Task Handle(ContractCommands.AddProductToContractCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.AddProductToContract(request, cancellationToken); - } - - public async Task Handle(ContractCommands.AddTransactionFeeToProductCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.AddTransactionFeeToProduct(request, cancellationToken); - } - - public async Task Handle(ContractCommands.RemoveTransactionFeeFromProductCommand request, - CancellationToken cancellationToken) - { - return await this.ApiClient.RemoveTransactionFeeFromProduct(request, cancellationToken); - } - - 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>>, - IRequestHandler>, - IRequestHandler>>, - IRequestHandler, - IRequestHandler - { - private readonly IApiClient ApiClient; - - public OperatorRequestHandler(IApiClient apiClient) - { - this.ApiClient = apiClient; - } - - public async Task>> Handle(OperatorQueries.GetOperatorsQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetOperators(request, cancellationToken); - } - public async Task> Handle(OperatorQueries.GetOperatorQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetOperator(request, cancellationToken); - } - public async Task Handle(OperatorCommands.CreateOperatorCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.CreateOperator(request, cancellationToken); - } - public async Task Handle(OperatorCommands.UpdateOperatorCommand request, - CancellationToken cancellationToken) { - return await this.ApiClient.UpdateOperator(request, cancellationToken); - } - - public async Task>> Handle(OperatorQueries.GetOperatorsForDropDownQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetOperators(request, cancellationToken); - } - } - - public class FileRequestHandler : IRequestHandler>>, - IRequestHandler>, - IRequestHandler> { - - private readonly IApiClient ApiClient; - - public FileRequestHandler(IApiClient apiClient) - { - this.ApiClient = apiClient; - } - - public async Task>> Handle(Queries.GetFileImportLogsListQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockFileImportLogs()); - } - - public async Task> Handle(Queries.GetFileImportLogQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockFileImportLog()); - } - - public async Task> Handle(Queries.GetFileDetailsQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockFileDetails()); - } - } - - public class DashboardRequestHandler : IRequestHandler>, - IRequestHandler>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>, - IRequestHandler>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>>, - IRequestHandler>, - IRequestHandler>> - { - private readonly IApiClient ApiClient; - - public DashboardRequestHandler(IApiClient apiClient) { - this.ApiClient = apiClient; - - } - - // Implementations similar to above handlers returning stub data - public async Task> Handle(Queries.GetTodaysSalesQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetTodaysSales(request, cancellationToken); - } - - public async Task> Handle(Queries.GetTodaysSettlementQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockTodaysSettlement()); - } - - public async Task>> Handle(Queries.GetTodaysSalesCountByHourQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockSalesCountByHour()); - } - - public async Task>> Handle(Queries.GetTodaysSalesValueByHourQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockSalesValueByHour()); - } - - public async Task> Handle(MerchantQueries.GetMerchantKpiQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetMerchantKpi(request, cancellationToken); - } - - public async Task> Handle(Queries.GetTodaysFailedSalesQuery request, - CancellationToken cancellationToken) { - return await this.ApiClient.GetTodaysFailedSales(request, cancellationToken); - } - - public async Task>> Handle(Queries.GetTopProductDataQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockTopProducts()); - } - - public async Task>> Handle(Queries.GetBottomProductDataQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockBottomProducts()); - } - - public async Task>> Handle(Queries.GetTopMerchantDataQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockTopMerchants()); - } - - public async Task>> Handle(Queries.GetBottomMerchantDataQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockBottomMerchants()); - } - - public async Task>> Handle(Queries.GetTopOperatorDataQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockTopOperators()); - } - - public async Task>> Handle(Queries.GetBottomOperatorDataQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockBottomOperators()); - } - - public async Task> Handle(Queries.GetLastSettlementQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockLastSettlement()); - } - - public async Task>> Handle(Queries.GetTransactionDetailQuery request, - CancellationToken cancellationToken) { - return Result.Success(StubTestData.GetMockTransactionDetails(request)); - } - } } diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs new file mode 100644 index 00000000..ef864a95 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs @@ -0,0 +1,38 @@ +using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.RequestHandlers; + +public class EstateRequestHandler : IRequestHandler>, + IRequestHandler, + IRequestHandler, + IRequestHandler>> { + private readonly IApiClient ApiClient; + + public EstateRequestHandler(IApiClient apiClient) { + this.ApiClient = apiClient; + } + + public async Task> Handle(EstateQueries.GetEstateQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetEstate(request, cancellationToken); + } + + public async Task Handle(EstateCommands.AddOperatorToEstateCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.AddEstateOperator(request, cancellationToken); + } + + public async Task Handle(EstateCommands.RemoveOperatorFromEstateCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.RemoveEstateOperator(request, cancellationToken); + } + + public async Task>> Handle(EstateQueries.GetAssignedOperatorsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetEstateAssignedOperators(request, cancellationToken); + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/FileRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/FileRequestHandler.cs new file mode 100644 index 00000000..3833172e --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/FileRequestHandler.cs @@ -0,0 +1,34 @@ +using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.RequestHandlers; + +public class FileRequestHandler : IRequestHandler>>, + IRequestHandler>, + IRequestHandler> { + + private readonly IApiClient ApiClient; + + public FileRequestHandler(IApiClient apiClient) + { + this.ApiClient = apiClient; + } + + public async Task>> Handle(Queries.GetFileImportLogsListQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockFileImportLogs()); + } + + public async Task> Handle(Queries.GetFileImportLogQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockFileImportLog()); + } + + public async Task> Handle(Queries.GetFileDetailsQuery request, + CancellationToken cancellationToken) { + return Result.Success(StubTestData.GetMockFileDetails()); + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/MerchantRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/MerchantRequestHandler.cs new file mode 100644 index 00000000..9d572aaa --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/MerchantRequestHandler.cs @@ -0,0 +1,126 @@ +using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using MediatR; +using Shared.Results; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.RequestHandlers; + +public class MerchantRequestHandler : IRequestHandler>>, + IRequestHandler>, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>>, + IRequestHandler>> +{ + + private readonly IApiClient ApiClient; + + public MerchantRequestHandler(IApiClient apiClient) + { + this.ApiClient = apiClient; + } + + public async Task>> Handle(MerchantQueries.GetMerchantsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchants(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.AddMerchantDeviceCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.AddDeviceToMerchant(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.AddOperatorToMerchantCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.AddOperatorToMerchant(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.CreateMerchantCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.CreateMerchant(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.MakeMerchantDepositCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.MakeMerchantDeposit(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.RemoveContractFromMerchantCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.RemoveContractFromMerchant(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.RemoveOperatorFromMerchantCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.RemoveOperatorFromMerchant(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.SwapMerchantDeviceCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.SwapMerchantDevice(request, cancellationToken); + } + + + public async Task Handle(MerchantCommands.UpdateMerchantCommand request, + CancellationToken cancellationToken) { + Result updateMerchantResult = await this.ApiClient.UpdateMerchant(request, cancellationToken); + if (updateMerchantResult.IsFailed) + return ResultHelpers.CreateFailure(updateMerchantResult); + + Result updateMerchantAddressResult = await this.ApiClient.UpdateMerchantAddress(request, cancellationToken); + if (updateMerchantAddressResult.IsFailed) + return ResultHelpers.CreateFailure(updateMerchantAddressResult); + Result updateMerchantContactResult = await this.ApiClient.UpdateMerchantContact(request, cancellationToken); + if (updateMerchantContactResult.IsFailed) + return ResultHelpers.CreateFailure(updateMerchantContactResult); + + return Result.Success(); + } + + public async Task> Handle(MerchantQueries.GetMerchantQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchant(request, cancellationToken); + } + + public async Task Handle(MerchantCommands.AssignContractToMerchantCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.AddContractToMerchant(request, cancellationToken); + } + + public async Task>> Handle(MerchantQueries.GetRecentMerchantsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetRecentMerchants(request, cancellationToken); + } + + public async Task>> Handle(MerchantQueries.GetMerchantsForDropDownQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchants(request, cancellationToken); + } + + public async Task>> Handle(MerchantQueries.GetMerchantContractsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchantContracts(request, cancellationToken); + } + + public async Task>> Handle(MerchantQueries.GetMerchantOperatorsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchantOperators(request, cancellationToken); + } + + public async Task>> Handle(MerchantQueries.GetMerchantDevicesQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetMerchantDevices(request, cancellationToken); + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/OperatorRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/OperatorRequestHandler.cs new file mode 100644 index 00000000..d6ffa4b0 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/OperatorRequestHandler.cs @@ -0,0 +1,43 @@ +using EstateManagementUI.BusinessLogic.Client; +using EstateManagementUI.BusinessLogic.Models; +using EstateManagementUI.BusinessLogic.Requests; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.RequestHandlers; + +public class OperatorRequestHandler : IRequestHandler>>, + IRequestHandler>, + IRequestHandler>>, + IRequestHandler, + IRequestHandler +{ + private readonly IApiClient ApiClient; + + public OperatorRequestHandler(IApiClient apiClient) + { + this.ApiClient = apiClient; + } + + public async Task>> Handle(OperatorQueries.GetOperatorsQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetOperators(request, cancellationToken); + } + public async Task> Handle(OperatorQueries.GetOperatorQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetOperator(request, cancellationToken); + } + public async Task Handle(OperatorCommands.CreateOperatorCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.CreateOperator(request, cancellationToken); + } + public async Task Handle(OperatorCommands.UpdateOperatorCommand request, + CancellationToken cancellationToken) { + return await this.ApiClient.UpdateOperator(request, cancellationToken); + } + + public async Task>> Handle(OperatorQueries.GetOperatorsForDropDownQuery request, + CancellationToken cancellationToken) { + return await this.ApiClient.GetOperators(request, cancellationToken); + } +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/Commands.cs b/EstateManagmentUI.BusinessLogic/Requests/Commands.cs new file mode 100644 index 00000000..26d015a4 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/Commands.cs @@ -0,0 +1,12 @@ +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class Commands +{ + public record CreateMerchantUserCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, string EmailAddress, string Password) : IRequest; + + + +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/ContractCommands.cs b/EstateManagmentUI.BusinessLogic/Requests/ContractCommands.cs new file mode 100644 index 00000000..5199f224 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/ContractCommands.cs @@ -0,0 +1,11 @@ +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class ContractCommands { + public record CreateContractCommand(CorrelationId CorrelationId, Guid EstateId, string Description, Guid OperatorId) : IRequest; + public record AddProductToContractCommand(CorrelationId CorrelationId, Guid EstateId, Guid ContractId, string ProductName, string DisplayText, decimal? Value) : IRequest; + public record AddTransactionFeeToProductCommand(CorrelationId CorrelationId, Guid EstateId, Guid ContractId, Guid ProductId, string Description, decimal Value, String CalculationType, String FeeType) : IRequest; + public record RemoveTransactionFeeFromProductCommand(CorrelationId CorrelationId, Guid EstateId, Guid ContractId, Guid ProductId, Guid FeeId) : IRequest; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/ContractQueries.cs b/EstateManagmentUI.BusinessLogic/Requests/ContractQueries.cs new file mode 100644 index 00000000..23903ac6 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/ContractQueries.cs @@ -0,0 +1,12 @@ +using EstateManagementUI.BusinessLogic.Models; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +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, Guid EstateId) : IRequest>>; + public record GetContractQuery(CorrelationId CorrelationId, Guid EstateId, Guid ContractId) : IRequest>; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/CorrelationIdHelper.cs b/EstateManagmentUI.BusinessLogic/Requests/CorrelationIdHelper.cs new file mode 100644 index 00000000..d7af3030 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/CorrelationIdHelper.cs @@ -0,0 +1,8 @@ +namespace EstateManagementUI.BusinessLogic.Requests; + +public record CorrelationId(Guid Value); + +public static class CorrelationIdHelper +{ + public static CorrelationId New() => new(Guid.NewGuid()); +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/EstateCommands.cs b/EstateManagmentUI.BusinessLogic/Requests/EstateCommands.cs new file mode 100644 index 00000000..226a2e5d --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/EstateCommands.cs @@ -0,0 +1,9 @@ +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class EstateCommands { + public record AddOperatorToEstateCommand(CorrelationId CorrelationId, Guid EstateId, Guid OperatorId) : IRequest; + public record RemoveOperatorFromEstateCommand(CorrelationId CorrelationId, Guid EstateId, Guid OperatorId) : IRequest; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/EstateQueries.cs b/EstateManagmentUI.BusinessLogic/Requests/EstateQueries.cs new file mode 100644 index 00000000..09447f2c --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/EstateQueries.cs @@ -0,0 +1,10 @@ +using EstateManagementUI.BusinessLogic.Models; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class EstateQueries { + public record GetEstateQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>; + public record GetAssignedOperatorsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/MerchantCommands.cs b/EstateManagmentUI.BusinessLogic/Requests/MerchantCommands.cs new file mode 100644 index 00000000..11e7c57c --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/MerchantCommands.cs @@ -0,0 +1,18 @@ +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class MerchantCommands { + public record MerchantAddress(Guid AddressId, string AddressLine1, string Town, string Region, string PostalCode, string Country); + public record MerchantContact(Guid ContactId, string ContactName, string ContactEmail, string ContactPhone); + public record UpdateMerchantCommand(CorrelationId CorrelationId,Guid EstateId, Guid MerchantId, string Name, String SettlementSchedule, MerchantAddress MerchantAddress, MerchantContact MerchantContact) : IRequest; + 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 record AddMerchantDeviceCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, string DeviceIdentifier) : IRequest; + public record SwapMerchantDeviceCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, string OldDevice, string NewDevice) : IRequest; + public record MakeMerchantDepositCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, decimal Amount, DateTime Date, string Reference) : IRequest; + public record CreateMerchantCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, string Name, String SettlementSchedule, MerchantAddress MerchantAddress, MerchantContact MerchantContact) : IRequest; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/MerchantQueries.cs b/EstateManagmentUI.BusinessLogic/Requests/MerchantQueries.cs new file mode 100644 index 00000000..819b3a79 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/MerchantQueries.cs @@ -0,0 +1,16 @@ +using EstateManagementUI.BusinessLogic.Models; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class MerchantQueries { + public record GetMerchantsQuery(CorrelationId CorrelationId, Guid EstateId, String? Name, String? Reference, Int32? SettlementSchedule, String? Region, String? PostCode) : IRequest>>; + public record GetMerchantsForDropDownQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetRecentMerchantsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetMerchantKpiQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>; + public record GetMerchantQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>; + public record GetMerchantOperatorsQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>>; + public record GetMerchantContractsQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>>; + public record GetMerchantDevicesQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>>; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/OperatorCommands.cs b/EstateManagmentUI.BusinessLogic/Requests/OperatorCommands.cs new file mode 100644 index 00000000..3e8ef978 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/OperatorCommands.cs @@ -0,0 +1,10 @@ +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class OperatorCommands { + public record UpdateOperatorCommand(CorrelationId CorrelationId,Guid EstateId, Guid OperatorId, string Name, bool RequireCustomMerchantNumber, bool RequireCustomTerminalNumber) : IRequest; + + public record CreateOperatorCommand(CorrelationId CorrelationId, Guid EstateId, string Name, bool RequireCustomMerchantNumber, bool RequireCustomTerminalNumber) : IRequest; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/OperatorQueries.cs b/EstateManagmentUI.BusinessLogic/Requests/OperatorQueries.cs new file mode 100644 index 00000000..d5d919e2 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/OperatorQueries.cs @@ -0,0 +1,11 @@ +using EstateManagementUI.BusinessLogic.Models; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public class OperatorQueries { + public record GetOperatorsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetOperatorQuery(CorrelationId CorrelationId, Guid EstateId, Guid OperatorId) : IRequest>; + public record GetOperatorsForDropDownQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/Queries.cs b/EstateManagmentUI.BusinessLogic/Requests/Queries.cs new file mode 100644 index 00000000..a3361300 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Requests/Queries.cs @@ -0,0 +1,35 @@ +using EstateManagementUI.BusinessLogic.Models; +using MediatR; +using SimpleResults; + +namespace EstateManagementUI.BusinessLogic.Requests; + +public static class Queries +{ + 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) + : IRequest>; + public record GetFileDetailsQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid FileId) : IRequest>; + public record GetComparisonDatesQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; + public record GetTodaysSalesQuery(CorrelationId CorrelationId, Guid EstateId, DateTime ComparisonDate) : IRequest>; + public record GetTodaysSettlementQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>; + public record GetTodaysSalesCountByHourQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>>; + public record GetTodaysSalesValueByHourQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>>; + + public record GetTodaysFailedSalesQuery(CorrelationId CorrelationId, Guid EstateId, string ResponseCode, DateTime ComparisonDate) : IRequest>; + public record GetTopProductDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; + public record GetBottomProductDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; + public record GetTopMerchantDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; + public record GetBottomMerchantDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; + public record GetTopOperatorDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; + public record GetBottomOperatorDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; + public record GetLastSettlementQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId) : IRequest>; + + public record GetMerchantTransactionSummaryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, Guid? MerchantId = null, Guid? OperatorId = null, Guid? ProductId = null) : IRequest>>; + public record GetProductPerformanceQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate) : IRequest>>; + public record GetOperatorTransactionSummaryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, Guid? MerchantId = null, Guid? OperatorId = null) : IRequest>>; + public record GetMerchantSettlementHistoryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid? MerchantId, DateTime StartDate, DateTime EndDate) : IRequest>>; + public record GetSettlementSummaryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, Guid? MerchantId = null, string? Status = null) : IRequest>>; + public record GetTransactionDetailQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, List? MerchantIds = null, List? OperatorIds = null, List? ProductIds = null) : IRequest>>; +} \ No newline at end of file diff --git a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs deleted file mode 100644 index b41adbe2..00000000 --- a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs +++ /dev/null @@ -1,111 +0,0 @@ -using EstateManagementUI.BusinessLogic.Models; -using MediatR; -using SimpleResults; - -namespace EstateManagementUI.BusinessLogic.Requests; - -public record CorrelationId(Guid Value); - -public static class CorrelationIdHelper -{ - public static CorrelationId New() => new(Guid.NewGuid()); -} - -public static class MerchantQueries { - public record GetMerchantsQuery(CorrelationId CorrelationId, Guid EstateId, String? Name, String? Reference, Int32? SettlementSchedule, String? Region, String? PostCode) : IRequest>>; - public record GetMerchantsForDropDownQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; - public record GetRecentMerchantsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; - public record GetMerchantKpiQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>; - public record GetMerchantQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>; - public record GetMerchantOperatorsQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>>; - public record GetMerchantContractsQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>>; - public record GetMerchantDevicesQuery(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId) : IRequest>>; -} - -public static class EstateQueries { - public record GetEstateQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>; - 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, Guid EstateId) : IRequest>>; - public record GetContractQuery(CorrelationId CorrelationId, Guid EstateId, Guid ContractId) : IRequest>; -} - -public class OperatorQueries { - public record GetOperatorsQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; - public record GetOperatorQuery(CorrelationId CorrelationId, Guid EstateId, Guid OperatorId) : IRequest>; - public record GetOperatorsForDropDownQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; -} - -public static class Queries -{ - 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) - : IRequest>; - public record GetFileDetailsQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid FileId) : IRequest>; - public record GetComparisonDatesQuery(CorrelationId CorrelationId, Guid EstateId) : IRequest>>; - public record GetTodaysSalesQuery(CorrelationId CorrelationId, Guid EstateId, DateTime ComparisonDate) : IRequest>; - public record GetTodaysSettlementQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>; - public record GetTodaysSalesCountByHourQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>>; - public record GetTodaysSalesValueByHourQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>>; - - public record GetTodaysFailedSalesQuery(CorrelationId CorrelationId, Guid EstateId, string ResponseCode, DateTime ComparisonDate) : IRequest>; - public record GetTopProductDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; - public record GetBottomProductDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; - public record GetTopMerchantDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; - public record GetBottomMerchantDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; - public record GetTopOperatorDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; - public record GetBottomOperatorDataQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, int ResultCount) : IRequest>>; - public record GetLastSettlementQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId) : IRequest>; - - public record GetMerchantTransactionSummaryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, Guid? MerchantId = null, Guid? OperatorId = null, Guid? ProductId = null) : IRequest>>; - public record GetProductPerformanceQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate) : IRequest>>; - public record GetOperatorTransactionSummaryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, Guid? MerchantId = null, Guid? OperatorId = null) : IRequest>>; - public record GetMerchantSettlementHistoryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid? MerchantId, DateTime StartDate, DateTime EndDate) : IRequest>>; - public record GetSettlementSummaryQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, Guid? MerchantId = null, string? Status = null) : IRequest>>; - public record GetTransactionDetailQuery(CorrelationId CorrelationId, string AccessToken, Guid EstateId, DateTime StartDate, DateTime EndDate, List? MerchantIds = null, List? OperatorIds = null, List? ProductIds = null) : IRequest>>; -} - -public static class EstateCommands { - public record AddOperatorToEstateCommand(CorrelationId CorrelationId, Guid EstateId, Guid OperatorId) : IRequest; - public record RemoveOperatorFromEstateCommand(CorrelationId CorrelationId, Guid EstateId, Guid OperatorId) : IRequest; -} - -public static class MerchantCommands { - public record MerchantAddress(Guid AddressId, string AddressLine1, string Town, string Region, string PostalCode, string Country); - public record MerchantContact(Guid ContactId, string ContactName, string ContactEmail, string ContactPhone); - public record UpdateMerchantCommand(CorrelationId CorrelationId,Guid EstateId, Guid MerchantId, string Name, String SettlementSchedule, MerchantAddress MerchantAddress, MerchantContact MerchantContact) : IRequest; - 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 record AddMerchantDeviceCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, string DeviceIdentifier) : IRequest; - public record SwapMerchantDeviceCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, string OldDevice, string NewDevice) : IRequest; - public record MakeMerchantDepositCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, decimal Amount, DateTime Date, string Reference) : IRequest; - public record CreateMerchantCommand(CorrelationId CorrelationId, Guid EstateId, Guid MerchantId, string Name, String SettlementSchedule, MerchantAddress MerchantAddress, MerchantContact MerchantContact) : IRequest; -} - -public static class OperatorCommands { - public record UpdateOperatorCommand(CorrelationId CorrelationId,Guid EstateId, Guid OperatorId, string Name, bool RequireCustomMerchantNumber, bool RequireCustomTerminalNumber) : IRequest; - - public record CreateOperatorCommand(CorrelationId CorrelationId, Guid EstateId, string Name, bool RequireCustomMerchantNumber, bool RequireCustomTerminalNumber) : IRequest; -} - -public static class ContractCommands { - public record CreateContractCommand(CorrelationId CorrelationId, Guid EstateId, string Description, Guid OperatorId) : IRequest; - public record AddProductToContractCommand(CorrelationId CorrelationId, Guid EstateId, Guid ContractId, string ProductName, string DisplayText, decimal? Value) : IRequest; - public record AddTransactionFeeToProductCommand(CorrelationId CorrelationId, Guid EstateId, Guid ContractId, Guid ProductId, string Description, decimal Value, String CalculationType, String FeeType) : IRequest; - public record RemoveTransactionFeeFromProductCommand(CorrelationId CorrelationId, Guid EstateId, Guid ContractId, Guid ProductId, Guid FeeId) : IRequest; -} - -public static class Commands -{ - public record CreateMerchantUserCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, string EmailAddress, string Password) : IRequest; - - - -} diff --git a/EstateManagmentUI.BusinessLogic/Services/ITestDataStore.cs b/EstateManagmentUI.BusinessLogic/Services/ITestDataStore.cs index b7e35f81..0e282686 100644 --- a/EstateManagmentUI.BusinessLogic/Services/ITestDataStore.cs +++ b/EstateManagmentUI.BusinessLogic/Services/ITestDataStore.cs @@ -9,29 +9,29 @@ namespace EstateManagementUI.BusinessLogic.Services; public interface ITestDataStore { // Estate Management - EstateModel GetEstate(Guid estateId); - void SetEstate(EstateModel estate); + EstateModels.EstateModel GetEstate(Guid estateId); + void SetEstate(EstateModels.EstateModel estate); // Merchant Management - List GetMerchants(Guid estateId); - List GetRecentMerchants(Guid estateId); - MerchantModel? GetMerchant(Guid estateId, Guid merchantId); - void AddMerchant(Guid estateId, MerchantModel merchant); - void UpdateMerchant(Guid estateId, MerchantModel merchant); + List GetMerchants(Guid estateId); + List GetRecentMerchants(Guid estateId); + MerchantModels.MerchantModel? GetMerchant(Guid estateId, Guid merchantId); + void AddMerchant(Guid estateId, MerchantModels.MerchantModel merchant); + void UpdateMerchant(Guid estateId, MerchantModels.MerchantModel merchant); void RemoveMerchant(Guid estateId, Guid merchantId); // Operator Management - List GetOperators(Guid estateId); - OperatorModel? GetOperator(Guid estateId, Guid operatorId); - void AddOperator(Guid estateId, OperatorModel operatorModel); - void UpdateOperator(Guid estateId, OperatorModel operatorModel); + List GetOperators(Guid estateId); + OperatorModels.OperatorModel? GetOperator(Guid estateId, Guid operatorId); + void AddOperator(Guid estateId, OperatorModels.OperatorModel operatorModel); + void UpdateOperator(Guid estateId, OperatorModels.OperatorModel operatorModel); void RemoveOperator(Guid estateId, Guid operatorId); // Contract Management - List GetContracts(Guid estateId); - ContractModel? GetContract(Guid estateId, Guid contractId); - void AddContract(Guid estateId, ContractModel contract); - void UpdateContract(Guid estateId, ContractModel contract); + List GetContracts(Guid estateId); + ContractModels.ContractModel? GetContract(Guid estateId, Guid contractId); + void AddContract(Guid estateId, ContractModels.ContractModel contract); + void UpdateContract(Guid estateId, ContractModels.ContractModel contract); void RemoveContract(Guid estateId, Guid contractId); // Reset all test data (for test isolation) diff --git a/EstateManagmentUI.BusinessLogic/Services/TestDataStore.cs b/EstateManagmentUI.BusinessLogic/Services/TestDataStore.cs index 8f9ff646..916442f4 100644 --- a/EstateManagmentUI.BusinessLogic/Services/TestDataStore.cs +++ b/EstateManagmentUI.BusinessLogic/Services/TestDataStore.cs @@ -1,4 +1,3 @@ -using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using EstateManagementUI.BusinessLogic.Models; using System.Collections.Concurrent; @@ -10,10 +9,10 @@ namespace EstateManagementUI.BusinessLogic.Services; /// public class TestDataStore : ITestDataStore { - private readonly ConcurrentDictionary _estates = new(); - private readonly ConcurrentDictionary> _merchants = new(); - private readonly ConcurrentDictionary> _operators = new(); - private readonly ConcurrentDictionary> _contracts = new(); + private readonly ConcurrentDictionary _estates = new(); + private readonly ConcurrentDictionary> _merchants = new(); + private readonly ConcurrentDictionary> _operators = new(); + private readonly ConcurrentDictionary> _contracts = new(); public TestDataStore() { @@ -21,14 +20,14 @@ public TestDataStore() this.InitializeDefaultData(); } - public EstateModel GetEstate(Guid estateId) + public EstateModels.EstateModel GetEstate(Guid estateId) { if (this._estates.TryGetValue(estateId, out var estate)) { // Populate operators list if (this._operators.TryGetValue(estateId, out var operatorDict)) { - estate.Operators = operatorDict.Values.Select(o => new EstateOperatorModel + estate.Operators = operatorDict.Values.Select(o => new EstateModels.EstateOperatorModel { OperatorId = o.OperatorId, Name = o.Name, @@ -38,7 +37,7 @@ public EstateModel GetEstate(Guid estateId) } if (this._contracts.TryGetValue(estateId, out var contractDict)) { - estate.Contracts = contractDict.Values.Select(o => new EstateContractModel() + estate.Contracts = contractDict.Values.Select(o => new EstateModels.EstateContractModel() { OperatorId = o.OperatorId, Name = o.Description, @@ -48,7 +47,7 @@ public EstateModel GetEstate(Guid estateId) } if (this._merchants.TryGetValue(estateId, out var merchantDict)) { - estate.Merchants = merchantDict.Values.Select(o => new EstateMerchantModel() + estate.Merchants = merchantDict.Values.Select(o => new EstateModels.EstateMerchantModel() { Name = o.MerchantName, Reference = o.MerchantReference, @@ -56,13 +55,13 @@ public EstateModel GetEstate(Guid estateId) }).ToList(); } - estate.Users = [new EstateUserModel { CreatedDateTime = DateTime.Now, EmailAddress = "estatedevuser1@estate.co.uk", UserId = Guid.Parse("61BFC7DC-FDB4-408A-9CAA-B9F0CF690130") }]; + estate.Users = [new EstateModels.EstateUserModel { CreatedDateTime = DateTime.Now, EmailAddress = "estatedevuser1@estate.co.uk", UserId = Guid.Parse("61BFC7DC-FDB4-408A-9CAA-B9F0CF690130") }]; return estate; } // Return a default estate if not found for consistency - return new EstateModel + return new EstateModels.EstateModel { EstateId = estateId, EstateName = "Unknown Estate", @@ -70,40 +69,40 @@ public EstateModel GetEstate(Guid estateId) }; } - public void SetEstate(EstateModel estate) + public void SetEstate(EstateModels.EstateModel estate) { this._estates[estate.EstateId] = estate; // Ensure collections exist for this estate - this._merchants.TryAdd(estate.EstateId, new ConcurrentDictionary()); - this._operators.TryAdd(estate.EstateId, new ConcurrentDictionary()); - this._contracts.TryAdd(estate.EstateId, new ConcurrentDictionary()); + this._merchants.TryAdd(estate.EstateId, new ConcurrentDictionary()); + this._operators.TryAdd(estate.EstateId, new ConcurrentDictionary()); + this._contracts.TryAdd(estate.EstateId, new ConcurrentDictionary()); } - public List GetMerchants(Guid estateId) + public List GetMerchants(Guid estateId) { if (this._merchants.TryGetValue(estateId, out var merchantDict)) { return merchantDict.Values.ToList(); } - return new List(); + return new List(); } - public List GetRecentMerchants(Guid estateId) + public List GetRecentMerchants(Guid estateId) { if (this._merchants.TryGetValue(estateId, out var merchantDict)) { - return merchantDict.Values.Select(m => new RecentMerchantsModel { + return merchantDict.Values.Select(m => new MerchantModels.RecentMerchantsModel { CreatedDateTime = m.CreatedDateTime, Reference = m.MerchantReference, Name = m.MerchantName, MerchantId = m.MerchantId }).ToList(); } - return new List(); + return new List(); } - public MerchantModel? GetMerchant(Guid estateId, Guid merchantId) + public MerchantModels.MerchantModel? GetMerchant(Guid estateId, Guid merchantId) { if (this._merchants.TryGetValue(estateId, out var merchantDict)) { @@ -113,15 +112,15 @@ public List GetRecentMerchants(Guid estateId) return null; } - public void AddMerchant(Guid estateId, MerchantModel merchant) + public void AddMerchant(Guid estateId, MerchantModels.MerchantModel merchant) { - var merchantDict = this._merchants.GetOrAdd(estateId, _ => new ConcurrentDictionary()); + var merchantDict = this._merchants.GetOrAdd(estateId, _ => new ConcurrentDictionary()); merchantDict[merchant.MerchantId] = merchant; } - public void UpdateMerchant(Guid estateId, MerchantModel merchant) + public void UpdateMerchant(Guid estateId, MerchantModels.MerchantModel merchant) { - var merchantDict = this._merchants.GetOrAdd(estateId, _ => new ConcurrentDictionary()); + var merchantDict = this._merchants.GetOrAdd(estateId, _ => new ConcurrentDictionary()); merchantDict[merchant.MerchantId] = merchant; } @@ -133,16 +132,16 @@ public void RemoveMerchant(Guid estateId, Guid merchantId) } } - public List GetOperators(Guid estateId) + public List GetOperators(Guid estateId) { if (this._operators.TryGetValue(estateId, out var operatorDict)) { return operatorDict.Values.ToList(); } - return new List(); + return new List(); } - public OperatorModel? GetOperator(Guid estateId, Guid operatorId) + public OperatorModels.OperatorModel? GetOperator(Guid estateId, Guid operatorId) { if (this._operators.TryGetValue(estateId, out var operatorDict)) { @@ -152,15 +151,15 @@ public List GetOperators(Guid estateId) return null; } - public void AddOperator(Guid estateId, OperatorModel operatorModel) + public void AddOperator(Guid estateId, OperatorModels.OperatorModel operatorModel) { - var operatorDict = this._operators.GetOrAdd(estateId, _ => new ConcurrentDictionary()); + var operatorDict = this._operators.GetOrAdd(estateId, _ => new ConcurrentDictionary()); operatorDict[operatorModel.OperatorId] = operatorModel; } - public void UpdateOperator(Guid estateId, OperatorModel operatorModel) + public void UpdateOperator(Guid estateId, OperatorModels.OperatorModel operatorModel) { - var operatorDict = this._operators.GetOrAdd(estateId, _ => new ConcurrentDictionary()); + var operatorDict = this._operators.GetOrAdd(estateId, _ => new ConcurrentDictionary()); operatorDict[operatorModel.OperatorId] = operatorModel; } @@ -172,16 +171,16 @@ public void RemoveOperator(Guid estateId, Guid operatorId) } } - public List GetContracts(Guid estateId) + public List GetContracts(Guid estateId) { if (this._contracts.TryGetValue(estateId, out var contractDict)) { return contractDict.Values.ToList(); } - return new List(); + return new List(); } - public ContractModel? GetContract(Guid estateId, Guid contractId) + public ContractModels.ContractModel? GetContract(Guid estateId, Guid contractId) { if (this._contracts.TryGetValue(estateId, out var contractDict)) { @@ -191,15 +190,15 @@ public List GetContracts(Guid estateId) return null; } - public void AddContract(Guid estateId, ContractModel contract) + public void AddContract(Guid estateId, ContractModels.ContractModel contract) { - var contractDict = this._contracts.GetOrAdd(estateId, _ => new ConcurrentDictionary()); + var contractDict = this._contracts.GetOrAdd(estateId, _ => new ConcurrentDictionary()); contractDict[contract.ContractId] = contract; } - public void UpdateContract(Guid estateId, ContractModel contract) + public void UpdateContract(Guid estateId, ContractModels.ContractModel contract) { - var contractDict = this._contracts.GetOrAdd(estateId, _ => new ConcurrentDictionary()); + var contractDict = this._contracts.GetOrAdd(estateId, _ => new ConcurrentDictionary()); contractDict[contract.ContractId] = contract; } @@ -226,7 +225,7 @@ private void InitializeDefaultData() { // Default test estate var estateId = Guid.Parse("11111111-1111-1111-1111-111111111111"); - var estate = new EstateModel + var estate = new EstateModels.EstateModel { EstateId = estateId, EstateName = "Test Estate", @@ -235,7 +234,7 @@ private void InitializeDefaultData() this.SetEstate(estate); // Default test merchants - this.AddMerchant(estateId, new MerchantModel + this.AddMerchant(estateId, new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222222"), MerchantName = "Test Merchant 1", @@ -254,7 +253,7 @@ private void InitializeDefaultData() CreatedDateTime = DateTime.Now }); - this.AddMerchant(estateId, new MerchantModel + this.AddMerchant(estateId, new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222223"), MerchantName = "Test Merchant 2", @@ -265,7 +264,7 @@ private void InitializeDefaultData() CreatedDateTime = DateTime.Now.AddDays(-1) }); - this.AddMerchant(estateId, new MerchantModel + this.AddMerchant(estateId, new MerchantModels.MerchantModel { MerchantId = Guid.Parse("22222222-2222-2222-2222-222222222224"), MerchantName = "Test Merchant 3", @@ -277,7 +276,7 @@ private void InitializeDefaultData() }); // Default test operators - this.AddOperator(estateId, new OperatorModel + this.AddOperator(estateId, new OperatorModels.OperatorModel { OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333333"), Name = "Safaricom", @@ -285,7 +284,7 @@ private void InitializeDefaultData() RequireCustomTerminalNumber = false }); - this.AddOperator(estateId, new OperatorModel + this.AddOperator(estateId, new OperatorModels.OperatorModel { OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333334"), Name = "Voucher", @@ -294,15 +293,15 @@ private void InitializeDefaultData() }); // Default test contracts - this.AddContract(estateId, new ContractModel + this.AddContract(estateId, new ContractModels.ContractModel { ContractId = Guid.Parse("44444444-4444-4444-4444-444444444444"), Description = "Standard Transaction Contract", OperatorName = "Safaricom", OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333333"), - Products = new List + Products = new List { - new ContractProductModel + new ContractModels.ContractProductModel { ContractProductId = Guid.Parse("55555555-5555-5555-5555-555555555555"), ProductName = "Mobile Topup", @@ -310,9 +309,9 @@ private void InitializeDefaultData() ProductType = "Mobile Topup", Value = "Variable", NumberOfFees = 2, - TransactionFees = new List + TransactionFees = new List { - new ContractProductTransactionFeeModel + new ContractModels.ContractProductTransactionFeeModel { TransactionFeeId = Guid.Parse("66666666-6666-6666-6666-666666666666"), Description = "Merchant Commission", @@ -320,7 +319,7 @@ private void InitializeDefaultData() FeeType = 0, Value = 0.50m }, - new ContractProductTransactionFeeModel + new ContractModels.ContractProductTransactionFeeModel { TransactionFeeId = Guid.Parse("77777777-7777-7777-7777-777777777777"), Description = "Service Provider Fee", @@ -333,15 +332,15 @@ private void InitializeDefaultData() } }); - this.AddContract(estateId, new ContractModel + this.AddContract(estateId, new ContractModels.ContractModel { ContractId = Guid.Parse("44444444-4444-4444-4444-444444444445"), Description = "Voucher Sales Contract", OperatorName = "Voucher", OperatorId = Guid.Parse("33333333-3333-3333-3333-333333333334"), - Products = new List + Products = new List { - new ContractProductModel + new ContractModels.ContractProductModel { ContractProductId = Guid.Parse("55555555-5555-5555-5555-555555555556"), ProductName = "Voucher", diff --git a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs index a59f5180..e6aac87a 100644 --- a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs +++ b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs @@ -120,7 +120,7 @@ public Task Publish(TNotification notification, CancellationToken } // Helper methods for retrieving data - private Result GetMerchantResult(Guid estateId, Guid merchantId) + private Result GetMerchantResult(Guid estateId, Guid merchantId) { var merchant = this._testDataStore.GetMerchant(estateId, merchantId); return merchant != null @@ -128,7 +128,7 @@ private Result GetMerchantResult(Guid estateId, Guid merchantId) : Result.Failure($"Merchant {merchantId} not found"); } - private Result GetOperatorResult(Guid estateId, Guid operatorId) + private Result GetOperatorResult(Guid estateId, Guid operatorId) { var operatorModel = this._testDataStore.GetOperator(estateId, operatorId); return operatorModel != null @@ -136,7 +136,7 @@ private Result GetOperatorResult(Guid estateId, Guid operatorId) : Result.Failure($"Operator {operatorId} not found"); } - private Result GetContractResult(Guid estateId, Guid contractId) + private Result GetContractResult(Guid estateId, Guid contractId) { var contract = this._testDataStore.GetContract(estateId, contractId); return contract != null @@ -147,7 +147,7 @@ private Result GetContractResult(Guid estateId, Guid contractId) // Command execution methods private Result ExecuteCreateMerchant(MerchantCommands.CreateMerchantCommand cmd) { - var merchant = new MerchantModel + var merchant = new MerchantModels.MerchantModel { MerchantId = Guid.NewGuid(), MerchantName = cmd.Name, @@ -172,7 +172,7 @@ private Result ExecuteUpdateMerchant(MerchantCommands.UpdateMerchantCommand cmd) private Result ExecuteCreateOperator(OperatorCommands.CreateOperatorCommand cmd) { - var operatorModel = new OperatorModel + var operatorModel = new OperatorModels.OperatorModel { OperatorId = Guid.NewGuid(), Name = cmd.Name, @@ -198,12 +198,12 @@ private Result ExecuteUpdateOperator(OperatorCommands.UpdateOperatorCommand cmd) private Result ExecuteCreateContract(ContractCommands.CreateContractCommand cmd) { - var contract = new ContractModel + var contract = new ContractModels.ContractModel { ContractId = Guid.NewGuid(), Description = cmd.Description, OperatorId = cmd.OperatorId, - Products = new List() + Products = new List() }; var operatorModel = this._testDataStore.GetOperator(cmd.EstateId, cmd.OperatorId); @@ -223,9 +223,9 @@ private Result ExecuteAddProductToContract(ContractCommands.AddProductToContract return Result.Failure($"Contract {cmd.ContractId} not found"); if (contract.Products == null) - contract.Products = new List(); + contract.Products = new List(); - contract.Products.Add(new ContractProductModel + contract.Products.Add(new ContractModels.ContractProductModel { ContractProductId = Guid.NewGuid(), ProductName = cmd.ProductName, @@ -248,9 +248,9 @@ private Result ExecuteAddTransactionFee(ContractCommands.AddTransactionFeeToProd return Result.Failure($"Product {cmd.ProductId} not found in contract"); if (product.TransactionFees == null) - product.TransactionFees = new List(); + product.TransactionFees = new List(); - product.TransactionFees.Add(new ContractProductTransactionFeeModel + product.TransactionFees.Add(new ContractModels.ContractProductTransactionFeeModel { TransactionFeeId = Guid.NewGuid(), Description = cmd.Description, @@ -272,7 +272,7 @@ private Result ExecuteAddTransactionFee(ContractCommands.RemoveTransactionFeeFro return Result.Failure($"Product {cmd.ProductId} not found in contract"); if (product.TransactionFees == null) - product.TransactionFees = new List(); + product.TransactionFees = new List(); var fee = product.TransactionFees.Single(f => f.TransactionFeeId == cmd.FeeId); product.TransactionFees.Remove(fee); @@ -485,7 +485,7 @@ private static TodaysSalesModel GetMockTodaysFailedSales(DateTime comparisonDate new TodaysSalesValueByHourModel { Hour = 10, TodaysSalesValue = 18500, ComparisonSalesValue = 15000 } }; - private static MerchantKpiModel GetMockMerchantKpi() => new() + private static MerchantModels.MerchantKpiModel GetMockMerchantKpi() => new() { MerchantsWithNoSaleInLast7Days = 5, MerchantsWithNoSaleToday = 12, @@ -651,7 +651,7 @@ private List GetMockProductPerformance(Queries.GetProdu // Collect all unique products from all contracts var productNames = contracts - .SelectMany(c => c.Products ?? new List()) + .SelectMany(c => c.Products ?? new List()) .Select(p => p.ProductName) .Where(p => !string.IsNullOrEmpty(p)) .Distinct() @@ -821,7 +821,7 @@ private List GetMockTransactionDetails(Queries.GetTransa // Get all products with their IDs from contracts var productList = contracts - .SelectMany(c => c.Products ?? new List()) + .SelectMany(c => c.Products ?? new List()) .Where(p => !string.IsNullOrEmpty(p.ProductName)) .ToList();