diff --git a/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs b/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs index b6e77541..7a023a59 100644 --- a/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs +++ b/EstateManagementUI.BlazorServer.Tests/Pages/Estate/EstateIndexPageTests.cs @@ -35,8 +35,8 @@ public void EstateIndex_RendersCorrectly() .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) - .ReturnsAsync(Result.Success(new List())); + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + .ReturnsAsync(Result.Success(new List())); // Act var cut = RenderComponent(); @@ -65,8 +65,8 @@ public void EstateIndex_DisplaysEstateDetails() .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) - .ReturnsAsync(Result.Success(new List())); + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + .ReturnsAsync(Result.Success(new List())); // Act var cut = RenderComponent(); @@ -87,8 +87,8 @@ public void EstateIndex_HasCorrectPageTitle() .ReturnsAsync(Result.Success(new List())); _mockMediator.Setup(x => x.Send(It.IsAny(), default)) .ReturnsAsync(Result.Success(new List())); - _mockMediator.Setup(x => x.Send(It.IsAny(), default)) - .ReturnsAsync(Result.Success(new List())); + _mockMediator.Setup(x => x.Send(It.IsAny(), default)) + .ReturnsAsync(Result.Success(new List())); // Act var cut = RenderComponent(); diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor index 30a59ab9..8730ac11 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor @@ -11,27 +11,6 @@ Edit Contract -@if (!hasPermission) -{ -
-
-
- - - -
-

Access Denied

-

You don't have permission to edit contracts.

-
-
- -
-
-} -else -{
@if (isLoading) { @@ -415,8 +394,12 @@ else private string? feeErrorMessage; private Guid currentProductId; - protected override async Task OnInitializedAsync() - { + + protected override async Task OnAfterRenderAsync(bool firstRender) { + if (!firstRender) { + await base.OnAfterRenderAsync(firstRender); + return; + } await RequirePermission(PermissionSection.Contract, PermissionFunction.Edit); await LoadContract(); } @@ -426,7 +409,8 @@ else try { isLoading = true; - var result = await Mediator.Send(new ContractQueries.GetContractQuery(CorrelationIdHelper.New(), Guid.Parse("11111111-1111-1111-1111-111111111111"), ContractId)); + Guid estateId = await GetEstateId(); + var result = await Mediator.Send(new ContractQueries.GetContractQuery(CorrelationIdHelper.New(), estateId, ContractId)); if (result.IsSuccess && result.Data != null) { @@ -442,6 +426,7 @@ else finally { isLoading = false; + StateHasChanged(); } } @@ -663,4 +648,3 @@ else public decimal? FeeValue { get; set; } } } -} diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/New.razor b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/New.razor index 7a503805..a13890b0 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/New.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/New.razor @@ -11,27 +11,6 @@ Create New Contract -@if (!hasPermission) -{ -
-
-
- - - -
-

Access Denied

-

You don't have permission to create contracts.

-
-
- -
-
-} -else -{
@@ -83,7 +62,7 @@ else @foreach (var op in operators) { - + } @@ -123,20 +102,25 @@ else private bool isLoadingOperators = true; private bool hasPermission = false; private string? errorMessage; - private List? operators; + private List? operators; - protected override async Task OnInitializedAsync() - { + protected override async Task OnAfterRenderAsync(bool firstRender) { + if (!firstRender) { + await base.OnAfterRenderAsync(firstRender); + return; + } await RequirePermission(PermissionSection.Contract, PermissionFunction.Create); await LoadOperators(); } + private async Task LoadOperators() { try { isLoadingOperators = true; - var result = await Mediator.Send(new OperatorQueries.GetOperatorsQuery(CorrelationIdHelper.New(), Guid.Parse("11111111-1111-1111-1111-111111111111"))); + var estateId = await GetEstateId(); + var result = await Mediator.Send(new OperatorQueries.GetOperatorsForDropDownQuery(CorrelationIdHelper.New(), estateId)); if (result.IsSuccess) { operators = ModelFactory.ConvertFrom(result.Data); @@ -145,6 +129,7 @@ else finally { isLoadingOperators = false; + StateHasChanged(); } } @@ -202,4 +187,3 @@ else public string? OperatorId { get; set; } } } -} diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor index c306d73e..f27c9f20 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor @@ -208,7 +208,7 @@ { @foreach (var op in availableOperators) { - + } } diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs index a80ae129..12bb8655 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Estate/Index.razor.cs @@ -14,7 +14,7 @@ public partial class Index private bool isLoading = true; private EstateModel? estate; private List merchants; - private List? availableOperators; + private List? availableOperators; private List assignedOperators = new(); private List contracts; private string activeTab = "overview"; @@ -54,7 +54,7 @@ private async Task LoadEstateData(CorrelationId correlationId, Guid esta 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.GetOperatorsQuery(correlationId, estateId)); + Task>> allOperatorsTask= Mediator.Send(new OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); await Task.WhenAll(estateTask, merchantTask, contractsTask, assignedOperatorsTask, allOperatorsTask); @@ -77,9 +77,17 @@ private async Task LoadEstateData(CorrelationId correlationId, Guid esta if (allOperatorsTask.Result.IsFailed) return ResultHelpers.CreateFailure(allOperatorsTask.Result); - List unfiltered = ModelFactory.ConvertFrom(allOperatorsTask.Result.Data); - this.availableOperators = unfiltered.Where(u => this.assignedOperators.Select(a => a.OperatorId).Contains(u.OperatorId) == false).ToList(); - + List unfiltered = ModelFactory.ConvertFrom(allOperatorsTask.Result.Data); + this.availableOperators = unfiltered + .Where(u => !this.assignedOperators.Any(a => a.OperatorId == u.OperatorId)) + .Select(u => new OperatorDropDownModel + { + OperatorId = u.OperatorId, + OperatorName = u.OperatorName + }) + .ToList(); + + return Result.Success(); } @@ -124,9 +132,18 @@ private async Task AddOperatorToEstate() // Add to assigned list var op = availableOperators?.FirstOrDefault(o => o.OperatorId == operatorId); - if (op != null && !assignedOperators.Any(a => a.OperatorId == operatorId)) - { - assignedOperators.Add(op); + if (op != null && !assignedOperators.Any(a => a.OperatorId == operatorId)) { + OperatorQueries.GetOperatorQuery query = new OperatorQueries.GetOperatorQuery(CorrelationIdHelper.New(), await this.GetEstateId(), operatorId); + var operatorResult = await Mediator.Send(query); + if (operatorResult.IsFailed) + this.NavigationManager.NavigateToErrorPage(); + + assignedOperators.Add(new OperatorModel() { + OperatorId = operatorResult.Data.OperatorId, + Name = operatorResult.Data.Name, + RequireCustomMerchantNumber = operatorResult.Data.RequireCustomMerchantNumber, + RequireCustomTerminalNumber = operatorResult.Data.RequireCustomTerminalNumber + }); } } else diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor index b853143c..58603eea 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor @@ -193,7 +193,7 @@ @if (availableOperators != null) { @foreach (var op in availableOperators) { - + } } diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs index f9b8ef49..1c0c8e48 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs @@ -29,7 +29,7 @@ public partial class Edit private MerchantEditModel merchantEditModel = new(); // Operators - private List? availableOperators; + private List? availableOperators; private List assignedOperators = new(); private bool showAddOperator = false; private string? selectedOperatorId; @@ -150,7 +150,7 @@ private async Task LoadOperators() { var correlationId = new CorrelationId(Guid.NewGuid()); var estateId = await this.GetEstateId(); - var result = await Mediator.Send(new OperatorQueries.GetOperatorsQuery(correlationId, estateId)); + var result = await Mediator.Send(new OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); if (result.IsFailed) { return ResultHelpers.CreateFailure(result); @@ -250,7 +250,7 @@ private async Task SaveAllChanges() } } - private void OnOperatorSelected() + private async Task OnOperatorSelected() { if (string.IsNullOrEmpty(selectedOperatorId)) { @@ -263,7 +263,12 @@ private void OnOperatorSelected() else { var operatorId = Guid.Parse(selectedOperatorId); - selectedOperator = availableOperators?.FirstOrDefault(o => o.OperatorId == operatorId); + OperatorQueries.GetOperatorQuery query = new OperatorQueries.GetOperatorQuery(CorrelationIdHelper.New(), await this.GetEstateId(), operatorId); + var getOperatorResult = await this.Mediator.Send(query); + if (getOperatorResult.IsFailed) + NavigationManager.NavigateToErrorPage(); + + selectedOperator = ModelFactory.ConvertFrom(getOperatorResult.Data); merchantNumber = null; terminalNumber = null; merchantNumberError = null; @@ -357,7 +362,7 @@ private async Task AddOperatorToMerchant() { assignedOperators.Add(new MerchantOperatorModel() { OperatorId = op.OperatorId, - OperatorName = op.Name + OperatorName = op.OperatorName, }); } } diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor index bc68cafa..c385b937 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionDetail.razor @@ -8,6 +8,7 @@ @using ContractProductModel = EstateManagementUI.BlazorServer.Models.ContractProductModel @using MerchantDropDownModel = EstateManagementUI.BlazorServer.Models.MerchantDropDownModel @using MerchantModel = EstateManagementUI.BlazorServer.Models.MerchantModel +@using OperatorDropDownModel = EstateManagementUI.BlazorServer.Models.OperatorDropDownModel @using OperatorModel = EstateManagementUI.BlazorServer.Models.OperatorModel @using TransactionDetailModel = EstateManagementUI.BlazorServer.Models.TransactionDetailModel @inject IMediator Mediator @@ -91,12 +92,12 @@
-
@@ -338,7 +339,7 @@ // Data private List? detailData; private List? merchants; - private List? operators; + private List? operators; private List? products; // KPIs @@ -433,7 +434,7 @@ // Load filter options var merchantsTask = Mediator.Send(new MerchantQueries.GetMerchantsForDropDownQuery(correlationId, estateId)); - var operatorsTask = Mediator.Send(new OperatorQueries.GetOperatorsQuery(correlationId, estateId)); + var operatorsTask = Mediator.Send(new OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); var contractsTask = Mediator.Send(new ContractQueries.GetContractsQuery(correlationId, estateId)); await Task.WhenAll(merchantsTask, operatorsTask, contractsTask); diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryMerchant.razor b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryMerchant.razor index f8eadb07..cbc7ae0f 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryMerchant.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryMerchant.razor @@ -4,6 +4,7 @@ @using EstateManagementUI.BusinessLogic.Requests @using MerchantDropDownModel = EstateManagementUI.BlazorServer.Models.MerchantDropDownModel @using MerchantTransactionSummaryModel = EstateManagementUI.BlazorServer.Models.MerchantTransactionSummaryModel +@using OperatorDropDownModel = EstateManagementUI.BlazorServer.Models.OperatorDropDownModel @using OperatorModel = EstateManagementUI.BlazorServer.Models.OperatorModel @rendermode InteractiveServer @inject IMediator Mediator @@ -94,7 +95,7 @@ { @foreach (var op in operators) { - + } } @@ -250,7 +251,7 @@ // Data private List? summaryData; private List? merchants; - private List? operators; + private List? operators; // KPIs private int totalMerchants = 0; @@ -277,7 +278,7 @@ // Load filter options var merchantsTask = Mediator.Send(new MerchantQueries.GetMerchantsForDropDownQuery(correlationId, estateId)); - var operatorsTask = Mediator.Send(new OperatorQueries.GetOperatorsQuery(correlationId, estateId)); + var operatorsTask = Mediator.Send(new OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); await Task.WhenAll(merchantsTask, operatorsTask); diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryOperator.razor b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryOperator.razor index 2e4e2363..2ff725de 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryOperator.razor +++ b/EstateManagementUI.BlazorServer/Components/Pages/Reporting/TransactionSummaryOperator.razor @@ -3,6 +3,7 @@ @using EstateManagementUI.BusinessLogic.Models @using EstateManagementUI.BusinessLogic.Requests @using MerchantDropDownModel = EstateManagementUI.BlazorServer.Models.MerchantDropDownModel +@using OperatorDropDownModel = EstateManagementUI.BlazorServer.Models.OperatorDropDownModel @using OperatorModel = EstateManagementUI.BlazorServer.Models.OperatorModel @using OperatorTransactionSummaryModel = EstateManagementUI.BlazorServer.Models.OperatorTransactionSummaryModel @rendermode InteractiveServer @@ -94,7 +95,7 @@ { @foreach (var op in operators) { - + } } @@ -256,7 +257,7 @@ // Data private List? summaryData; private List? merchants; - private List? operators; + private List? operators; // KPIs private int totalOperators = 0; @@ -285,7 +286,7 @@ // Load filter options var merchantsTask = Mediator.Send(new MerchantQueries.GetMerchantsForDropDownQuery(correlationId, estateId)); - var operatorsTask = Mediator.Send(new OperatorQueries.GetOperatorsQuery(correlationId, estateId)); + var operatorsTask = Mediator.Send(new OperatorQueries.GetOperatorsForDropDownQuery(correlationId, estateId)); await Task.WhenAll(merchantsTask, operatorsTask); diff --git a/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs b/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs index 303a4f42..953f2a0f 100644 --- a/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs +++ b/EstateManagementUI.BlazorServer/Factories/ModelFactory.cs @@ -1,6 +1,39 @@ - -using EstateManagementUI.BlazorServer.Models; +using EstateManagementUI.BusinessLogic.Models; using TransactionProcessor.DataTransferObjects.Responses.Contract; +using ComparisonDateModel = EstateManagementUI.BlazorServer.Models.ComparisonDateModel; +using ContractDropDownModel = EstateManagementUI.BlazorServer.Models.ContractDropDownModel; +using OperatorDropDownModel = EstateManagementUI.BlazorServer.Models.OperatorDropDownModel; +using ContractModel = EstateManagementUI.BlazorServer.Models.ContractModel; +using ContractProductModel = EstateManagementUI.BlazorServer.Models.ContractProductModel; +using ContractProductTransactionFeeModel = EstateManagementUI.BlazorServer.Models.ContractProductTransactionFeeModel; +using EstateContractModel = EstateManagementUI.BlazorServer.Models.EstateContractModel; +using EstateMerchantModel = EstateManagementUI.BlazorServer.Models.EstateMerchantModel; +using EstateModel = EstateManagementUI.BlazorServer.Models.EstateModel; +using EstateOperatorModel = EstateManagementUI.BlazorServer.Models.EstateOperatorModel; +using EstateUserModel = EstateManagementUI.BlazorServer.Models.EstateUserModel; +using FileDetailsModel = EstateManagementUI.BlazorServer.Models.FileDetailsModel; +using FileImportLogModel = EstateManagementUI.BlazorServer.Models.FileImportLogModel; +using MerchantContractModel = EstateManagementUI.BlazorServer.Models.MerchantContractModel; +using MerchantContractProductModel = EstateManagementUI.BlazorServer.Models.MerchantContractProductModel; +using MerchantDeviceModel = EstateManagementUI.BlazorServer.Models.MerchantDeviceModel; +using MerchantDropDownModel = EstateManagementUI.BlazorServer.Models.MerchantDropDownModel; +using MerchantKpiModel = EstateManagementUI.BlazorServer.Models.MerchantKpiModel; +using MerchantListModel = EstateManagementUI.BlazorServer.Models.MerchantListModel; +using MerchantModel = EstateManagementUI.BlazorServer.Models.MerchantModel; +using MerchantOperatorModel = EstateManagementUI.BlazorServer.Models.MerchantOperatorModel; +using MerchantSettlementHistoryModel = EstateManagementUI.BlazorServer.Models.MerchantSettlementHistoryModel; +using MerchantTransactionSummaryModel = EstateManagementUI.BlazorServer.Models.MerchantTransactionSummaryModel; +using OperatorModel = EstateManagementUI.BlazorServer.Models.OperatorModel; +using OperatorTransactionSummaryModel = EstateManagementUI.BlazorServer.Models.OperatorTransactionSummaryModel; +using ProductPerformanceModel = EstateManagementUI.BlazorServer.Models.ProductPerformanceModel; +using RecentContractModel = EstateManagementUI.BlazorServer.Models.RecentContractModel; +using RecentMerchantsModel = EstateManagementUI.BlazorServer.Models.RecentMerchantsModel; +using SettlementSummaryModel = EstateManagementUI.BlazorServer.Models.SettlementSummaryModel; +using TodaysSalesCountByHourModel = EstateManagementUI.BlazorServer.Models.TodaysSalesCountByHourModel; +using TodaysSalesModel = EstateManagementUI.BlazorServer.Models.TodaysSalesModel; +using TodaysSalesValueByHourModel = EstateManagementUI.BlazorServer.Models.TodaysSalesValueByHourModel; +using TodaysSettlementModel = EstateManagementUI.BlazorServer.Models.TodaysSettlementModel; +using TransactionDetailModel = EstateManagementUI.BlazorServer.Models.TransactionDetailModel; namespace EstateManagementUI.BlazorServer.Factories { public static class ModelFactory { @@ -460,5 +493,19 @@ public static List ConvertFrom(List? ConvertFrom(List resultData) { + List operatorList = new(); + foreach (BusinessLogic.Models.OperatorDropDownModel operatorDropDownModel in resultData) + { + operatorList.Add(new OperatorDropDownModel() + { + OperatorId = operatorDropDownModel.OperatorId, + OperatorName = operatorDropDownModel.OperatorName + }); + } + + return operatorList; + } } } \ No newline at end of file diff --git a/EstateManagementUI.BlazorServer/Models/Models.cs b/EstateManagementUI.BlazorServer/Models/Models.cs index bb09c764..7ebee164 100644 --- a/EstateManagementUI.BlazorServer/Models/Models.cs +++ b/EstateManagementUI.BlazorServer/Models/Models.cs @@ -83,6 +83,12 @@ public class ContractDropDownModel public string? OperatorName { get; set; } } +public class OperatorDropDownModel +{ + public Guid OperatorId { get; set; } + public string? OperatorName { get; set; } +} + // Contract Models public class ContractModel { diff --git a/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs b/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs index 3914e5ee..2b11111b 100644 --- a/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs +++ b/EstateManagmentUI.BusinessLogic/Client/APIModelFactory.cs @@ -114,10 +114,31 @@ public static OperatorModel ToOperator(this Operator apiResultData) { return model; } + public static OperatorDropDownModel ToOperatorDropDown(this Operator apiResultData) + { + OperatorDropDownModel model = new() + { + OperatorName= apiResultData.Name, + OperatorId = apiResultData.OperatorId + }; + return model; + } + + public static List ToOperatorDropDown(this List apiResultData) + { + List operators = new(); + foreach (Operator op in apiResultData) { + operators.Add(op.ToOperatorDropDown()); + } + + return operators; + } + public static List ToOperator(this List apiResultData) { List operators = new(); - foreach (Operator op in apiResultData) { + foreach (Operator op in apiResultData) + { operators.Add(op.ToOperator()); } diff --git a/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs b/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs index e07881a0..0f4064bc 100644 --- a/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/OperatorMethods.cs @@ -14,6 +14,9 @@ public partial interface IApiClient Task>> GetOperators(OperatorQueries.GetOperatorsQuery request, CancellationToken cancellationToken); + Task>> GetOperators(OperatorQueries.GetOperatorsForDropDownQuery request, + CancellationToken cancellationToken); + Task> GetOperator(OperatorQueries.GetOperatorQuery request, CancellationToken cancellationToken); @@ -42,6 +45,24 @@ public async Task>> GetOperators(OperatorQueries.GetO return Result.Success(operatorModels); } + public async Task>> GetOperators(OperatorQueries.GetOperatorsForDropDownQuery request, + CancellationToken cancellationToken) + { + // Get a token here + var token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + var apiResult = await this.EstateReportingApiClient.GetOperators(token.Data, request.EstateId, cancellationToken); + + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + List operatorModels = apiResult.Data.ToOperatorDropDown(); + + return Result.Success(operatorModels); + } + public async Task> GetOperator(OperatorQueries.GetOperatorQuery request, CancellationToken cancellationToken) { diff --git a/EstateManagmentUI.BusinessLogic/Models/Models.cs b/EstateManagmentUI.BusinessLogic/Models/Models.cs index 979ed5c2..509c5893 100644 --- a/EstateManagmentUI.BusinessLogic/Models/Models.cs +++ b/EstateManagmentUI.BusinessLogic/Models/Models.cs @@ -44,13 +44,7 @@ public class EstateMerchantModel { // Operator Models -public class OperatorModel -{ - public Guid OperatorId { get; set; } - public string? Name { get; set; } - public bool RequireCustomMerchantNumber { get; set; } - public bool RequireCustomTerminalNumber { get; set; } -} + // Contract Models public class ContractModel diff --git a/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs b/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs new file mode 100644 index 00000000..3fb39b40 --- /dev/null +++ b/EstateManagmentUI.BusinessLogic/Models/OperatorModels.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +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 OperatorDropDownModel + { + public Guid OperatorId { get; set; } + public string? OperatorName { get; set; } + } +} diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs index 4e818510..59b81164 100644 --- a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs @@ -224,6 +224,7 @@ public async Task>> Handle(ContractQueries.Ge public class OperatorRequestHandler : IRequestHandler>>, IRequestHandler>, + IRequestHandler>>, IRequestHandler, IRequestHandler { @@ -250,6 +251,11 @@ 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>>, diff --git a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs index af48e11b..f051df05 100644 --- a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs +++ b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs @@ -37,6 +37,7 @@ public record GetContractQuery(CorrelationId CorrelationId, Guid EstateId, Guid 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