diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs index 1280050b..7edebf13 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Merchants/Edit.razor.cs @@ -61,13 +61,18 @@ protected override async Task OnAfterRenderAsync(bool firstRender) await RequirePermission(PermissionSection.Merchant, PermissionFunction.Edit); - var loadMerchantTask = LoadMerchant(); + var loadMerchantResult = await LoadMerchant(); + + if (loadMerchantResult.IsFailed) { + this.NavigationManager.NavigateToErrorPage(); + } + var loadOperatorsTask = LoadOperators(); var loadContractsTask = LoadContracts(); - await Task.WhenAll(loadMerchantTask, loadOperatorsTask, loadContractsTask); + await Task.WhenAll(loadOperatorsTask, loadContractsTask); - if (loadMerchantTask.Result.IsFailed || loadOperatorsTask.Result.IsFailed || loadContractsTask.Result.IsFailed) { + if (loadOperatorsTask.Result.IsFailed || loadContractsTask.Result.IsFailed) { this.NavigationManager.NavigateToErrorPage(); } @@ -146,9 +151,11 @@ private async Task LoadOperators() { var result = await Mediator.Send(new Queries.GetOperatorsQuery(correlationId, estateId)); if (result.IsFailed) { + return ResultHelpers.CreateFailure(result); } - availableOperators = ModelFactory.ConvertFrom(result.Data); + var unfiltered = ModelFactory.ConvertFrom(result.Data); + this.availableOperators = unfiltered.Where(u => this.assignedOperators.Select(a => a.OperatorId).Contains(u.OperatorId) == false).ToList(); return Result.Success(); } @@ -160,11 +167,13 @@ private async Task LoadContracts() var accessToken = "stubbed-token"; var result = await Mediator.Send(new Queries.GetContractsQuery(correlationId, accessToken, estateId)); - - if (result.IsSuccess) + if (result.IsFailed) { - availableContracts = ModelFactory.ConvertFrom(result.Data); + return ResultHelpers.CreateFailure(result); } + + availableContracts = ModelFactory.ConvertFrom(result.Data); + return Result.Success(); } @@ -309,13 +318,11 @@ private async Task AddOperatorToMerchant() try { var correlationId = new CorrelationId(Guid.NewGuid()); - var estateId = Guid.Parse("11111111-1111-1111-1111-111111111111"); - var accessToken = "stubbed-token"; + var estateId = await this.GetEstateId(); var operatorId = Guid.Parse(selectedOperatorId); - var command = new Commands.AddOperatorToMerchantCommand( + var command = new MerchantCommands.AddOperatorToMerchantCommand( correlationId, - accessToken, estateId, MerchantId, operatorId, diff --git a/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs b/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs index a08f2f32..b1aedfc4 100644 --- a/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/MerchantMethods.cs @@ -24,10 +24,26 @@ public partial interface IApiClient Task UpdateMerchantAddress(MerchantCommands.UpdateMerchantCommand request, CancellationToken cancellationToken); Task UpdateMerchantContact(MerchantCommands.UpdateMerchantCommand request, CancellationToken cancellationToken); Task RemoveOperatorFromMerchant(MerchantCommands.RemoveOperatorFromMerchantCommand request, CancellationToken cancellationToken); + Task AddOperatorToMerchant(MerchantCommands.AddOperatorToMerchantCommand request, CancellationToken cancellationToken); } public partial class ApiClient : IApiClient { + public async Task AddOperatorToMerchant(MerchantCommands.AddOperatorToMerchantCommand request, + CancellationToken cancellationToken) + { + var token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + var apiRequest = new AssignOperatorRequest { TerminalNumber = request.TerminalNumber, MerchantNumber = request.MerchantNumber, OperatorId = request.OperatorId }; + + var apiResult = await this.TransactionProcessorClient.AssignOperatorToMerchant(token.Data, request.EstateId, request.MerchantId, apiRequest, cancellationToken); + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + return Result.Success(); + } public async Task RemoveOperatorFromMerchant(MerchantCommands.RemoveOperatorFromMerchantCommand request, CancellationToken cancellationToken) { var token = await this.GetToken(cancellationToken); diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs index 18b8b5f4..b7fccbf0 100644 --- a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs @@ -54,7 +54,7 @@ public async Task>> Handle(EstateQueries.GetAssignedO public class MerchantRequestHandler : IRequestHandler>>, IRequestHandler>, IRequestHandler, - IRequestHandler, + IRequestHandler, IRequestHandler, IRequestHandler, IRequestHandler, @@ -86,9 +86,9 @@ public async Task Handle(Commands.AddMerchantDeviceCommand request, return Result.Success(); } - public async Task Handle(Commands.AddOperatorToMerchantCommand request, + public async Task Handle(MerchantCommands.AddOperatorToMerchantCommand request, CancellationToken cancellationToken) { - return Result.Success(); + return await this.ApiClient.AddOperatorToMerchant(request, cancellationToken); } public async Task Handle(Commands.CreateMerchantCommand request, diff --git a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs index 0f8cdc45..8f18c467 100644 --- a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs +++ b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs @@ -71,14 +71,13 @@ 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 static class Commands { public record AddMerchantDeviceCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, string DeviceIdentifier) : IRequest; - public record AddOperatorToMerchantCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, Guid OperatorId, string? MerchantNumber, string? TerminalNumber) : IRequest; public record AssignContractToMerchantCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid MerchantId, Guid ContractId) : IRequest; public record CreateContractCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, string Description, Guid OperatorId) : IRequest; public record CreateMerchantCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, string Name, string ContactName, string ContactEmail) : IRequest; diff --git a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs index 6c636de2..f709cd71 100644 --- a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs +++ b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs @@ -76,7 +76,7 @@ public Task Send(IRequest request, Cancellation Commands.AddTransactionFeeForProductToContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddTransactionFee(cmd)), Commands.AssignContractToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAssignContractToMerchant(cmd)), Commands.RemoveContractFromMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteRemoveContractFromMerchant(cmd)), - Commands.AddOperatorToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddOperatorToMerchant(cmd)), + MerchantCommands.AddOperatorToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddOperatorToMerchant(cmd)), MerchantCommands.RemoveOperatorFromMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteRemoveOperatorFromMerchant(cmd)), EstateCommands.AddOperatorToEstateCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddOperatorToEstate(cmd)), EstateCommands.RemoveOperatorFromEstateCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteRemoveOperatorFromEstate(cmd)), @@ -281,7 +281,7 @@ private Result ExecuteRemoveContractFromMerchant(Commands.RemoveContractFromMerc return Result.Success(); } - private Result ExecuteAddOperatorToMerchant(Commands.AddOperatorToMerchantCommand cmd) + private Result ExecuteAddOperatorToMerchant(MerchantCommands.AddOperatorToMerchantCommand cmd) { var merchant = this._testDataStore.GetMerchant(cmd.EstateId, cmd.MerchantId); if (merchant == null)