diff --git a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor.cs b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor.cs index 224b2c73..48ba6c57 100644 --- a/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor.cs +++ b/EstateManagementUI.BlazorServer/Components/Pages/Contracts/Edit.razor.cs @@ -111,14 +111,11 @@ private async Task HandleAddProduct() isAddingProduct = true; productErrorMessage = null; - try - { - var estateId = Guid.Parse("11111111-1111-1111-1111-111111111111"); - var accessToken = "stubbed-token"; + try { + var estateId = await this.GetEstateId(); - var command = new Commands.AddProductToContractCommand( + var command = new ContractCommands.AddProductToContractCommand( CorrelationIdHelper.New(), - accessToken, estateId, ContractId, productModel.ProductName!, @@ -132,7 +129,14 @@ private async Task HandleAddProduct() { successMessage = "Product added successfully"; CloseAddProductModal(); + + // Small delay so user sees confirmation (adjust duration as needed) + await Task.Delay(2500); + await LoadContract(); + + StateHasChanged(); + } else { diff --git a/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs b/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs index dca2ac9c..2f116746 100644 --- a/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs +++ b/EstateManagmentUI.BusinessLogic/Client/ContractMethods.cs @@ -7,6 +7,7 @@ using System.Text; using EstateManagementUI.BusinessLogic.BackendAPI.DataTransferObjects; using TransactionProcessor.DataTransferObjects.Requests.Contract; +using TransactionProcessor.DataTransferObjects.Responses.Contract; namespace EstateManagementUI.BusinessLogic.Client { public partial interface IApiClient { @@ -22,6 +23,8 @@ Task> GetContract(ContractQueries.GetContractQuery request Task CreateContract(ContractCommands.CreateContractCommand request, CancellationToken cancellationToken); + Task AddProductToContract(ContractCommands.AddProductToContractCommand request, + CancellationToken cancellationToken); } public partial class ApiClient : IApiClient { @@ -106,5 +109,20 @@ public async Task CreateContract(ContractCommands.CreateContractCommand return Result.Success(); } + + public async Task AddProductToContract(ContractCommands.AddProductToContractCommand request, + CancellationToken cancellationToken) { + var token = await this.GetToken(cancellationToken); + if (token.IsFailed) + return ResultHelpers.CreateFailure(token); + + var apiRequest = new AddProductToContractRequest() { ProductType = ProductType.NotSet, Value = request.Value, DisplayText = request.DisplayText, ProductName = request.ProductName}; + + var apiResult = await this.TransactionProcessorClient.AddProductToContract(token.Data, request.EstateId, request.ContractId, apiRequest, cancellationToken); + if (apiResult.IsFailed) + return ResultHelpers.CreateFailure(apiResult); + + return Result.Success(); + } } } diff --git a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs index 8e95211d..4d680749 100644 --- a/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs +++ b/EstateManagmentUI.BusinessLogic/RequestHandlers/DateRequestHandler.cs @@ -173,7 +173,7 @@ public async Task>> Handle(MerchantQueries.GetM public class ContractRequestHandler : IRequestHandler>>, IRequestHandler>, IRequestHandler, - IRequestHandler, + IRequestHandler, IRequestHandler, IRequestHandler>>, IRequestHandler>> @@ -201,9 +201,9 @@ public async Task Handle(ContractCommands.CreateContractCommand request, return await this.ApiClient.CreateContract(request, cancellationToken); } - public async Task Handle(Commands.AddProductToContractCommand request, + public async Task Handle(ContractCommands.AddProductToContractCommand request, CancellationToken cancellationToken) { - return Result.Success(); + return await this.ApiClient.AddProductToContract(request, cancellationToken); } public async Task Handle(Commands.AddTransactionFeeForProductToContractCommand request, diff --git a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs index 02533ae8..abbe7b84 100644 --- a/EstateManagmentUI.BusinessLogic/Requests/Requests.cs +++ b/EstateManagmentUI.BusinessLogic/Requests/Requests.cs @@ -97,6 +97,7 @@ public record CreateOperatorCommand(CorrelationId CorrelationId, Guid EstateId, 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 static class Commands @@ -105,6 +106,5 @@ public record CreateMerchantUserCommand(CorrelationId CorrelationId, string Acce - public record AddProductToContractCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid ContractId, string ProductName, string DisplayText, decimal? Value) : IRequest; public record AddTransactionFeeForProductToContractCommand(CorrelationId CorrelationId, string AccessToken, Guid EstateId, Guid ContractId, Guid ProductId, string Description, decimal Value) : IRequest; } diff --git a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs index baf25662..a93dee45 100644 --- a/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs +++ b/EstateManagmentUI.BusinessLogic/Services/TestMediatorService.cs @@ -72,7 +72,7 @@ public Task Send(IRequest request, Cancellation OperatorCommands.CreateOperatorCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteCreateOperator(cmd)), OperatorCommands.UpdateOperatorCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteUpdateOperator(cmd)), ContractCommands.CreateContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteCreateContract(cmd)), - Commands.AddProductToContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddProductToContract(cmd)), + ContractCommands.AddProductToContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddProductToContract(cmd)), Commands.AddTransactionFeeForProductToContractCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAddTransactionFee(cmd)), MerchantCommands.AssignContractToMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteAssignContractToMerchant(cmd)), MerchantCommands.RemoveContractFromMerchantCommand cmd => Task.FromResult((TResponse)(object)this.ExecuteRemoveContractFromMerchant(cmd)), @@ -216,7 +216,7 @@ private Result ExecuteCreateContract(ContractCommands.CreateContractCommand cmd) return Result.Success(); } - private Result ExecuteAddProductToContract(Commands.AddProductToContractCommand cmd) + private Result ExecuteAddProductToContract(ContractCommands.AddProductToContractCommand cmd) { var contract = this._testDataStore.GetContract(cmd.EstateId, cmd.ContractId); if (contract == null)