diff --git a/EstateManagementUI.BusinessLogic/Clients/ApiClient.cs b/EstateManagementUI.BusinessLogic/Clients/ApiClient.cs index 5c81eadb..7b5ce2be 100644 --- a/EstateManagementUI.BusinessLogic/Clients/ApiClient.cs +++ b/EstateManagementUI.BusinessLogic/Clients/ApiClient.cs @@ -73,7 +73,7 @@ public async Task AssignDeviceToMerchant(String accessToken, async Task ClientMethod() { AddMerchantDeviceRequest apiRequest = ModelFactory.ConvertFrom(assignDeviceToMerchantModel); - + return await this.TransactionProcessorClient.AddDeviceToMerchant(accessToken, estateId, merchantId, apiRequest, cancellationToken); } @@ -131,6 +131,8 @@ public async Task> GetEstate(String accessToken, Guid actionId, Guid estateId, CancellationToken cancellationToken) { + Logger.LogWarning("in GetEstate"); + async Task> ClientMethod() { Result? result = await this.TransactionProcessorClient.GetEstate(accessToken, estateId, cancellationToken); if (result.IsFailed) diff --git a/EstateManagementUI.BusinessLogic/EstateManagementUI.BusinessLogic.csproj b/EstateManagementUI.BusinessLogic/EstateManagementUI.BusinessLogic.csproj index 1d81d1a2..6722652c 100644 --- a/EstateManagementUI.BusinessLogic/EstateManagementUI.BusinessLogic.csproj +++ b/EstateManagementUI.BusinessLogic/EstateManagementUI.BusinessLogic.csproj @@ -7,7 +7,7 @@ - + all @@ -18,11 +18,11 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - + + diff --git a/EstateManagementUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs b/EstateManagementUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs index 30a36d8e..4e860847 100644 --- a/EstateManagementUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs +++ b/EstateManagementUI.BusinessLogic/RequestHandlers/EstateRequestHandler.cs @@ -16,7 +16,7 @@ public EstateRequestHandler(IApiClient apiClient) { public async Task> Handle(Queries.GetEstateQuery request, CancellationToken cancellationToken) { - Result model = await this.ApiClient.GetEstate(request.AccessToken, Guid.Empty, request.EstateId, cancellationToken); + Result model = await this.ApiClient.GetEstate(request.AccessToken, request.CorrelationId.Value, request.EstateId, cancellationToken); return model; } } diff --git a/EstateManagementUI.BusinessLogic/Requests/Commands.cs b/EstateManagementUI.BusinessLogic/Requests/Commands.cs index eea09eb3..a6e66bc3 100644 --- a/EstateManagementUI.BusinessLogic/Requests/Commands.cs +++ b/EstateManagementUI.BusinessLogic/Requests/Commands.cs @@ -7,51 +7,51 @@ namespace EstateManagmentUI.BusinessLogic.Requests; [ExcludeFromCodeCoverage] public record Commands { - public record AddNewOperatorCommand(String AccessToken, Guid EstateId, Guid OperatorId, String OperatorName, Boolean RequireCustomMerchantNumber, Boolean RequireCustomTerminalNumber) : IRequest; - public record UpdateOperatorCommand(String AccessToken, Guid EstateId, Guid OperatorId, String OperatorName, Boolean RequireCustomMerchantNumber, Boolean RequireCustomTerminalNumber) : IRequest; + public record AddNewOperatorCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid OperatorId, String OperatorName, Boolean RequireCustomMerchantNumber, Boolean RequireCustomTerminalNumber) : IRequest; + public record UpdateOperatorCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid OperatorId, String OperatorName, Boolean RequireCustomMerchantNumber, Boolean RequireCustomTerminalNumber) : IRequest; - public record AddMerchantCommand(String AccessToken, Guid EstateId, CreateMerchantModel CreateMerchantModel) : IRequest; + public record AddMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, CreateMerchantModel CreateMerchantModel) : IRequest; - public record UpdateMerchantCommand(String AccessToken, Guid EstateId,Guid MerchantId, UpdateMerchantModel UpdateMerchantModel) : IRequest; + public record UpdateMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId,Guid MerchantId, UpdateMerchantModel UpdateMerchantModel) : IRequest; - public record UpdateMerchantAddressCommand(String AccessToken, Guid EstateId, Guid MerchantId, AddressModel UpdatedAddressModel) : IRequest; + public record UpdateMerchantAddressCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, AddressModel UpdatedAddressModel) : IRequest; - public record UpdateMerchantContactCommand(String AccessToken, Guid EstateId, Guid MerchantId, ContactModel UpdatedContactModel) : IRequest; + public record UpdateMerchantContactCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, ContactModel UpdatedContactModel) : IRequest; - public record AssignOperatorToMerchantCommand(String AccessToken, + public record AssignOperatorToMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, AssignOperatorToMerchantModel AssignOperatorRequestModel) : IRequest; - public record RemoveOperatorFromMerchantCommand(String AccessToken, + public record RemoveOperatorFromMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, Guid OperatorId) : IRequest; - public record AssignContractToMerchantCommand(String AccessToken, + public record AssignContractToMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, AssignContractToMerchantModel AssignContractToMerchantModel) : IRequest; - public record RemoveContractFromMerchantCommand(String AccessToken, + public record RemoveContractFromMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, Guid ContractId) : IRequest; - public record CreateContractCommand(String AccessToken, + public record CreateContractCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, CreateContractModel CreateContractModel) : IRequest; - public record MakeDepositCommand(String AccessToken, + public record MakeDepositCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, MakeDepositModel MakeDepositModel) : IRequest; - public record CreateContractProductCommand(String AccessToken, Guid EstateId, Guid ContractId, CreateContractProductModel CreateContractProductModel) : IRequest; + public record CreateContractProductCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid ContractId, CreateContractProductModel CreateContractProductModel) : IRequest; - public record CreateContractProductTransactionFeeCommand(String AccessToken, Guid EstateId, Guid ContractId, Guid ProductId, CreateContractProductTransactionFeeModel CreateContractProductTransactionFeeModel) : IRequest; + public record CreateContractProductTransactionFeeCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid ContractId, Guid ProductId, CreateContractProductTransactionFeeModel CreateContractProductTransactionFeeModel) : IRequest; - public record AssignDeviceToMerchantCommand(String AccessToken, + public record AssignDeviceToMerchantCommand(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, AssignDeviceToMerchantModel AssignDeviceToMerchantModel) : IRequest; diff --git a/EstateManagementUI.BusinessLogic/Requests/Queries.cs b/EstateManagementUI.BusinessLogic/Requests/Queries.cs index cd5270b6..c21b57fd 100644 --- a/EstateManagementUI.BusinessLogic/Requests/Queries.cs +++ b/EstateManagementUI.BusinessLogic/Requests/Queries.cs @@ -4,52 +4,69 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; +using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using EstateManagementUI.BusinessLogic.Models; +using Microsoft.AspNetCore.Http; using SimpleResults; +using SQLitePCL; +using Shared.Logger.TennantContext; namespace EstateManagmentUI.BusinessLogic.Requests { + public record CorrelationId(Guid Value); + + public static class CorrelationIdHelper { + public static CorrelationId New(HttpContext context = null) { + CorrelationId c = new(Guid.NewGuid()); + if (TenantContext.CurrentTenant != null) { + TenantContext.CurrentTenant.SetCorrelationId(c.Value); + if (context != null) + context.Items["correlationId"] = c.Value; + } + return new CorrelationId(Guid.NewGuid()); + } + } [ExcludeFromCodeCoverage] public record Queries { - public record GetEstateQuery(String AccessToken, Guid EstateId) : IRequest>; - public record GetMerchantsQuery(String AccessToken, Guid EstateId) : IRequest>>; - public record GetOperatorsQuery(String AccessToken, Guid EstateId) : IRequest>>; - public record GetContractsQuery(String AccessToken, Guid EstateId) : IRequest>>; - public record GetOperatorQuery(String AccessToken, Guid EstateId, Guid OperatorId) : IRequest>; - public record GetContractQuery(String AccessToken, Guid EstateId, Guid ContractId) : IRequest>; - public record GetFileImportLogsListQuery(String AccessToken, Guid EstateId, Guid MerchantId, DateTime StartDate, DateTime EndDate) + public record GetEstateQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>; + public record GetMerchantsQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>>; + public record GetOperatorsQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>>; + public record GetContractsQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>>; + public record GetOperatorQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid OperatorId) : IRequest>; + public record GetContractQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid ContractId) : IRequest>; + public record GetFileImportLogsListQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, DateTime StartDate, DateTime EndDate) : IRequest>>; - public record GetFileImportLogQuery(String AccessToken, Guid EstateId, Guid MerchantId, Guid FileImportLogId) + public record GetFileImportLogQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId, Guid FileImportLogId) : IRequest>; - public record GetFileDetailsQuery(String AccessToken, Guid EstateId, Guid FileId) : IRequest>; + public record GetFileDetailsQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid FileId) : IRequest>; - public record GetComparisonDatesQuery(String AccessToken, Guid EstateId) : IRequest>>; + public record GetComparisonDatesQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>>; - public record GetTodaysSalesQuery(String AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>; - public record GetTodaysSettlementQuery(String AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>; + public record GetTodaysSalesQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>; + public record GetTodaysSettlementQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>; - public record GetTodaysSalesCountByHourQuery(String AccessToken, Guid EstateId, DateTime ComparisonDate) : IRequest>>; - public record GetTodaysSalesValueByHourQuery(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 GetMerchantKpiQuery(String AccessToken, Guid EstateId) : IRequest>; + public record GetMerchantKpiQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>; - public record GetTodaysFailedSalesQuery(String AccessToken, Guid EstateId, String ResponseCode, DateTime ComparisonDate) : IRequest>; + public record GetTodaysFailedSalesQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, String ResponseCode, DateTime ComparisonDate) : IRequest>; - public record GetTopProductDataQuery(String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; - public record GetBottomProductDataQuery(String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; + public record GetTopProductDataQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; + public record GetBottomProductDataQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; - public record GetTopMerchantDataQuery(String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; - public record GetBottomMerchantDataQuery(String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; + public record GetTopMerchantDataQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; + public record GetBottomMerchantDataQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; - public record GetTopOperatorDataQuery(String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; - public record GetBottomOperatorDataQuery(String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; + public record GetTopOperatorDataQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; + public record GetBottomOperatorDataQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Int32 ResultCount) : IRequest>>; - public record GetLastSettlementQuery(String AccessToken, Guid EstateId) : IRequest>; + public record GetLastSettlementQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId) : IRequest>; - public record GetMerchantQuery(String AccessToken, Guid EstateId, Guid MerchantId) : IRequest>; + public record GetMerchantQuery(CorrelationId CorrelationId, String AccessToken, Guid EstateId, Guid MerchantId) : IRequest>; } } diff --git a/EstateManagementUI.IntegrationTests/Common/DockerHelper.cs b/EstateManagementUI.IntegrationTests/Common/DockerHelper.cs index 1a11df53..8baf4060 100644 --- a/EstateManagementUI.IntegrationTests/Common/DockerHelper.cs +++ b/EstateManagementUI.IntegrationTests/Common/DockerHelper.cs @@ -146,6 +146,17 @@ protected override List GetRequiredProjections() return requiredProjections; } + public override ContainerBuilder SetupTransactionProcessorContainer() + { + + List variables = new List(); + variables.Add($"OperatorConfiguration:PataPawaPrePay:Url=http://{this.TestHostContainerName}:{DockerPorts.TestHostPort}/api/patapawaprepay"); + + this.AdditionalVariables.Add(ContainerType.FileProcessor, variables); + + return base.SetupTransactionProcessorContainer(); + } + /// /// Starts the containers for scenario run. /// diff --git a/EstateManagementUI.IntegrationTests/EstateManagementUI.IntegrationTests.csproj b/EstateManagementUI.IntegrationTests/EstateManagementUI.IntegrationTests.csproj index 370d3976..2ff71643 100644 --- a/EstateManagementUI.IntegrationTests/EstateManagementUI.IntegrationTests.csproj +++ b/EstateManagementUI.IntegrationTests/EstateManagementUI.IntegrationTests.csproj @@ -30,8 +30,8 @@ - - + + @@ -39,17 +39,17 @@ - + - + - + - + - + diff --git a/EstateManagementUI.Testing/TestData.cs b/EstateManagementUI.Testing/TestData.cs index bf0f73ba..c0e902db 100644 --- a/EstateManagementUI.Testing/TestData.cs +++ b/EstateManagementUI.Testing/TestData.cs @@ -1,3 +1,4 @@ +using Azure.Core; using EstateManagementUI.BusinessLogic.Models; using EstateManagementUI.ViewModels; using EstateManagmentUI.BusinessLogic.Requests; @@ -29,56 +30,57 @@ public static class TestData { public static DateTime ComparisonDate = new DateTime(2024,1,1); public static String AccessToken = "token1"; + public static CorrelationId CorrelationId = CorrelationIdHelper.New(); public static Guid EstateId = Guid.Parse("BD6F1ED7-6290-4285-A200-E4F8D25F4CBE"); - public static Queries.GetEstateQuery GetEstateQuery => new(AccessToken, EstateId); - public static Queries.GetMerchantsQuery GetMerchantsQuery => new(AccessToken, EstateId); + public static Queries.GetEstateQuery GetEstateQuery => new(CorrelationIdHelper.New(), AccessToken, EstateId); + public static Queries.GetMerchantsQuery GetMerchantsQuery => new(CorrelationId,AccessToken, EstateId); - public static Queries.GetMerchantQuery GetMerchantQuery => new(AccessToken, EstateId, Merchant1Id); - public static Queries.GetOperatorsQuery GetOperatorsQuery => new(AccessToken, EstateId); - public static Queries.GetOperatorQuery GetOperatorQuery => new(AccessToken, EstateId, Operator1Id); - public static Queries.GetContractsQuery GetContractsQuery => new(AccessToken, EstateId); - public static Queries.GetContractQuery GetContractQuery => new(AccessToken, EstateId, Contract1Id); + public static Queries.GetMerchantQuery GetMerchantQuery => new(CorrelationId, AccessToken, EstateId, Merchant1Id); + public static Queries.GetOperatorsQuery GetOperatorsQuery => new(CorrelationId, AccessToken, EstateId); + public static Queries.GetOperatorQuery GetOperatorQuery => new(CorrelationId, AccessToken, EstateId, Operator1Id); + public static Queries.GetContractsQuery GetContractsQuery => new(CorrelationId, AccessToken, EstateId); + public static Queries.GetContractQuery GetContractQuery => new(CorrelationId, AccessToken, EstateId, Contract1Id); public static Queries.GetFileImportLogsListQuery GetFileImportLogsListQuery => - new Queries.GetFileImportLogsListQuery(AccessToken, EstateId, Merchant1Id, FileImportLogQueryStartDate, + new Queries.GetFileImportLogsListQuery(CorrelationId, AccessToken, EstateId, Merchant1Id, FileImportLogQueryStartDate, FileImportLogQueryEndDate); public static Queries.GetFileImportLogQuery GetFileImportLogQuery => - new Queries.GetFileImportLogQuery(AccessToken, EstateId, Merchant1Id, FileImportLogId); + new Queries.GetFileImportLogQuery(CorrelationId, AccessToken, EstateId, Merchant1Id, FileImportLogId); public static Queries.GetFileDetailsQuery GetFileDetailsQuery => - new(AccessToken, EstateId, FileImportLogFile1.FileId); + new(CorrelationId, AccessToken, EstateId, FileImportLogFile1.FileId); - public static Queries.GetComparisonDatesQuery GetComparisonDatesQuery => new(AccessToken, EstateId); - public static Queries.GetTodaysSalesQuery GetTodaysSalesQuery => new(AccessToken, EstateId, DateTime.Now); - public static Queries.GetTodaysSettlementQuery GetTodaysSettlementQuery => new(AccessToken, EstateId, DateTime.Now); - public static Queries.GetTodaysSalesCountByHourQuery GetTodaysSalesCountByHourQuery => new(AccessToken, EstateId, DateTime.Now); - public static Queries.GetTodaysSalesValueByHourQuery GetTodaysSalesValueByHourQuery => new(AccessToken, EstateId, DateTime.Now); + public static Queries.GetComparisonDatesQuery GetComparisonDatesQuery => new(CorrelationId, AccessToken, EstateId); + public static Queries.GetTodaysSalesQuery GetTodaysSalesQuery => new(CorrelationId, AccessToken, EstateId, DateTime.Now); + public static Queries.GetTodaysSettlementQuery GetTodaysSettlementQuery => new(CorrelationId, AccessToken, EstateId, DateTime.Now); + public static Queries.GetTodaysSalesCountByHourQuery GetTodaysSalesCountByHourQuery => new(CorrelationId, AccessToken, EstateId, DateTime.Now); + public static Queries.GetTodaysSalesValueByHourQuery GetTodaysSalesValueByHourQuery => new(CorrelationId, AccessToken, EstateId, DateTime.Now); - public static Queries.GetMerchantKpiQuery GetMerchantKpiQuery => new (AccessToken, EstateId); + public static Queries.GetMerchantKpiQuery GetMerchantKpiQuery => new (CorrelationId, AccessToken, EstateId); public static Queries.GetTodaysFailedSalesQuery GetTodaysFailedSalesQuery => - new(AccessToken, EstateId, "1009", DateTime.Now); + new(CorrelationId, AccessToken, EstateId, "1009", DateTime.Now); public static Queries.GetTopProductDataQuery GetTopProductDataQuery => - new Queries.GetTopProductDataQuery(AccessToken, EstateId, 1); + new Queries.GetTopProductDataQuery(CorrelationId, AccessToken, EstateId, 1); - public static Queries.GetBottomProductDataQuery GetBottomProductDataQuery => new(AccessToken, EstateId, 1); - public static Queries.GetTopMerchantDataQuery GetTopMerchantDataQuery => new(AccessToken, EstateId, 1); - public static Queries.GetBottomMerchantDataQuery GetBottomMerchantDataQuery => new(AccessToken, EstateId, 1); - public static Queries.GetTopOperatorDataQuery GetTopOperatorDataQuery => new(AccessToken, EstateId, 1); - public static Queries.GetBottomOperatorDataQuery GetBottomOperatorDataQuery => new(AccessToken, EstateId, 1); + public static Queries.GetBottomProductDataQuery GetBottomProductDataQuery => new(CorrelationId, AccessToken, EstateId, 1); + public static Queries.GetTopMerchantDataQuery GetTopMerchantDataQuery => new(CorrelationId, AccessToken, EstateId, 1); + public static Queries.GetBottomMerchantDataQuery GetBottomMerchantDataQuery => new(CorrelationId, AccessToken, EstateId, 1); + public static Queries.GetTopOperatorDataQuery GetTopOperatorDataQuery => new(CorrelationId, AccessToken, EstateId, 1); + public static Queries.GetBottomOperatorDataQuery GetBottomOperatorDataQuery => new(CorrelationId, AccessToken, EstateId, 1); - public static Queries.GetLastSettlementQuery GetLastSettlementQuery => new(AccessToken, EstateId); + public static Queries.GetLastSettlementQuery GetLastSettlementQuery => new(CorrelationId, AccessToken, EstateId); - public static Commands.AddMerchantCommand AddNewMerchantCommand => new(AccessToken, EstateId, CreateMerchantModel(BusinessLogic.Models.SettlementSchedule.Immediate)); + public static Commands.AddMerchantCommand AddNewMerchantCommand => new(CorrelationId, AccessToken, EstateId, CreateMerchantModel(BusinessLogic.Models.SettlementSchedule.Immediate)); - public static Commands.UpdateMerchantCommand UpdateMerchantCommand => new(AccessToken, EstateId, Merchant1Id, new UpdateMerchantModel { + public static Commands.UpdateMerchantCommand UpdateMerchantCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, new UpdateMerchantModel { MerchantName = Merchant1Name, SettlementSchedule = EstateManagementUI.BusinessLogic.Models.SettlementSchedule.Immediate }); - public static Commands.UpdateMerchantAddressCommand UpdateMerchantAddressCommand => new(AccessToken, EstateId, Merchant1Id, new AddressModel + public static Commands.UpdateMerchantAddressCommand UpdateMerchantAddressCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, new AddressModel { AddressLine1 = Merchant1AddressLine1, AddressLine2 = Merchant1AddressLine2, @@ -90,38 +92,38 @@ public static class TestData { Town = Merchant1Town }); - public static Commands.UpdateMerchantContactCommand UpdateMerchantContactCommand => new(AccessToken, EstateId, Merchant1Id, new ContactModel + public static Commands.UpdateMerchantContactCommand UpdateMerchantContactCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, new ContactModel { ContactName = Merchant1ContactName, ContactPhoneNumber = Merchant1ContactPhoneNumber, ContactEmailAddress = Merchant1ContactEmailAddress }); - public static Commands.AssignContractToMerchantCommand AssignContractToMerchantCommand => new(AccessToken, EstateId, Merchant1Id, new AssignContractToMerchantModel { + public static Commands.AssignContractToMerchantCommand AssignContractToMerchantCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, new AssignContractToMerchantModel { ContractId = Contract1Id }); - public static Commands.RemoveContractFromMerchantCommand RemoveContractFromMerchantCommand => new(AccessToken, EstateId, Merchant1Id, Contract1Id); + public static Commands.RemoveContractFromMerchantCommand RemoveContractFromMerchantCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, Contract1Id); - public static Commands.AssignDeviceToMerchantCommand AssignDeviceToMerchantCommand => new(AccessToken, EstateId, Merchant1Id, AssignDeviceToMerchantModel); + public static Commands.AssignDeviceToMerchantCommand AssignDeviceToMerchantCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, AssignDeviceToMerchantModel); public static AssignOperatorToMerchantModel AssignOperatorToMerchantModel => new AssignOperatorToMerchantModel { OperatorId = Operator1Id }; public static AssignContractToMerchantModel AssignContractToMerchantModel => new AssignContractToMerchantModel { ContractId = TestData.Contract1Id }; public static String DeviceIdentifier = "123456ABCDEF"; public static AssignDeviceToMerchantModel AssignDeviceToMerchantModel => new AssignDeviceToMerchantModel { DeviceIdentifier = DeviceIdentifier }; - public static Commands.AssignOperatorToMerchantCommand AssignOperatorToMerchantCommand => new(AccessToken, EstateId, Merchant1Id, new AssignOperatorToMerchantModel { + public static Commands.AssignOperatorToMerchantCommand AssignOperatorToMerchantCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, new AssignOperatorToMerchantModel { OperatorId = Operator1Id }); - public static Commands.RemoveOperatorFromMerchantCommand RemoveOperatorFromMerchantCommand => new(AccessToken, EstateId, Merchant1Id, Operator1Id); + public static Commands.RemoveOperatorFromMerchantCommand RemoveOperatorFromMerchantCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, Operator1Id); - public static Commands.CreateContractCommand CreateContractCommand => new(AccessToken, EstateId, CreateContractModel); - public static Commands.CreateContractProductCommand CreateContractProductCommand => new(AccessToken, EstateId, Contract1Id, CreateContractProductModel); + public static Commands.CreateContractCommand CreateContractCommand => new(CorrelationId, AccessToken, EstateId, CreateContractModel); + public static Commands.CreateContractProductCommand CreateContractProductCommand => new(CorrelationId, AccessToken, EstateId, Contract1Id, CreateContractProductModel); - public static Commands.CreateContractProductTransactionFeeCommand CreateContractProductTransactionFeeCommand => new(AccessToken, EstateId, Contract1Id, Contract1Product1Id, CreateContractProductTransactionFeeModel); + public static Commands.CreateContractProductTransactionFeeCommand CreateContractProductTransactionFeeCommand => new(CorrelationId, AccessToken, EstateId, Contract1Id, Contract1Product1Id, CreateContractProductTransactionFeeModel); - public static Commands.MakeDepositCommand MakeDepositCommand => new(AccessToken, EstateId, Merchant1Id, MakeDepositModel); + public static Commands.MakeDepositCommand MakeDepositCommand => new(CorrelationId, AccessToken, EstateId, Merchant1Id, MakeDepositModel); public static CreateMerchantResponse CreateMerchantResponse => new() { EstateId = EstateId, MerchantId = Merchant1Id }; @@ -182,11 +184,11 @@ public static UpdateMerchantModel UpdateMerchantModel(BusinessLogic.Models.Settl public static ContactModel ContactModel => new ContactModel { ContactEmailAddress = Merchant1ContactEmailAddress, ContactName = Merchant1ContactName, ContactPhoneNumber = Merchant1ContactPhoneNumber }; public static Commands.AddNewOperatorCommand AddNewOperatorCommand => - new(AccessToken, EstateId, Operator1Id, Operator1Name, RequireCustomMerchantNumber, + new(CorrelationId, AccessToken, EstateId, Operator1Id, Operator1Name, RequireCustomMerchantNumber, RequireCustomTerminalNumber); public static Commands.UpdateOperatorCommand UpdateOperatorCommand => - new(AccessToken, EstateId, Operator1Id, Operator1Name, RequireCustomMerchantNumber, + new(CorrelationId, AccessToken, EstateId, Operator1Id, Operator1Name, RequireCustomMerchantNumber, RequireCustomTerminalNumber); public static String EstateName = "Test Estate 1"; diff --git a/EstateManagementUI.UITests/DataHelperFunctionsTests.cs b/EstateManagementUI.UITests/DataHelperFunctionsTests.cs index 9e5795ed..dc20390e 100644 --- a/EstateManagementUI.UITests/DataHelperFunctionsTests.cs +++ b/EstateManagementUI.UITests/DataHelperFunctionsTests.cs @@ -17,7 +17,8 @@ public async Task GetComparisonDates_ValidInputs_ReturnsComparisonDateListModel( // Arrange string accessToken = "testAccessToken"; Guid estateId = Guid.NewGuid(); - var comparisonDates = new List + CorrelationId correlationId = CorrelationIdHelper.New(); + var comparisonDates = new List { new ComparisonDateModel { Date = DateTime.Now, Description = "2023-01-01", OrderValue = 1 }, new ComparisonDateModel { Date = DateTime.Now.AddDays(1), Description = "2023-01-02", OrderValue = 2 } @@ -27,7 +28,7 @@ public async Task GetComparisonDates_ValidInputs_ReturnsComparisonDateListModel( .ReturnsAsync(result); // Act - var response = await DataHelperFunctions.GetComparisonDates(accessToken, estateId, this._mediatorMock.Object); + var response = await DataHelperFunctions.GetComparisonDates(correlationId, accessToken, estateId, this._mediatorMock.Object); // Assert response.ShouldNotBeNull(); @@ -41,6 +42,7 @@ public async Task GetOperatorsOld_ValidInputs_ReturnsOperatorListModel() // Arrange string accessToken = "testAccessToken"; Guid estateId = Guid.NewGuid(); + CorrelationId correlationId = CorrelationIdHelper.New(); var operators = new List { new OperatorModel { OperatorId = Guid.NewGuid(), Name = "Operator1" }, @@ -51,7 +53,7 @@ public async Task GetOperatorsOld_ValidInputs_ReturnsOperatorListModel() .ReturnsAsync(result); // Act - var response = await DataHelperFunctions.GetOperatorsOld(accessToken, estateId, this._mediatorMock.Object); + var response = await DataHelperFunctions.GetOperatorsOld(correlationId, accessToken, estateId, this._mediatorMock.Object); // Assert response.ShouldNotBeNull(); @@ -65,6 +67,7 @@ public async Task GetMerchants_ValidInputs_ReturnsMerchantListModel() // Arrange string accessToken = "testAccessToken"; Guid estateId = Guid.NewGuid(); + CorrelationId correlationId = CorrelationIdHelper.New(); var merchants = new List { new MerchantModel { MerchantId = Guid.NewGuid(), MerchantName = "Merchant1" }, @@ -75,7 +78,7 @@ public async Task GetMerchants_ValidInputs_ReturnsMerchantListModel() .ReturnsAsync(result); // Act - var response = await DataHelperFunctions.GetMerchants(accessToken, estateId, this._mediatorMock.Object); + var response = await DataHelperFunctions.GetMerchants(correlationId, accessToken, estateId, this._mediatorMock.Object); // Assert response.ShouldNotBeNull(); @@ -89,6 +92,7 @@ public async Task GetContracts_ValidInputs_ReturnsContractListModel() // Arrange string accessToken = "testAccessToken"; Guid estateId = Guid.NewGuid(); + CorrelationId correlationId = CorrelationIdHelper.New(); var contracts = new List { new ContractModel { ContractId = Guid.NewGuid(), Description = "Contract1" }, @@ -98,7 +102,7 @@ public async Task GetContracts_ValidInputs_ReturnsContractListModel() .ReturnsAsync(contracts); // Act - var response = await DataHelperFunctions.GetContracts(accessToken, estateId, this._mediatorMock.Object); + var response = await DataHelperFunctions.GetContracts(correlationId, accessToken, estateId, this._mediatorMock.Object); // Assert response.ShouldNotBeNull(); @@ -112,6 +116,7 @@ public async Task GetOperators_ValidInputs_ReturnsOperatorListModel() // Arrange string accessToken = "testAccessToken"; Guid estateId = Guid.NewGuid(); + CorrelationId correlationId = CorrelationIdHelper.New(); var operators = new List { new OperatorModel() { OperatorId = Guid.NewGuid(), Name = "Operator 1" }, @@ -121,7 +126,7 @@ public async Task GetOperators_ValidInputs_ReturnsOperatorListModel() .ReturnsAsync(operators); // Act - var response = await DataHelperFunctions.GetOperators(accessToken, estateId, this._mediatorMock.Object); + var response = await DataHelperFunctions.GetOperators(correlationId, accessToken, estateId, this._mediatorMock.Object); // Assert response.ShouldNotBeNull(); diff --git a/EstateManagementUI/Bootstrapper/AuthenticationRegistry.cs b/EstateManagementUI/Bootstrapper/AuthenticationRegistry.cs index c28eb447..fcb4a3e3 100644 --- a/EstateManagementUI/Bootstrapper/AuthenticationRegistry.cs +++ b/EstateManagementUI/Bootstrapper/AuthenticationRegistry.cs @@ -84,21 +84,21 @@ public AuthenticationRegistry() { }; options.Events.OnAccessDenied = context => { - var r = context.Result; - if (r.Failure != null) { - Shared.Logger.Logger.LogWarning($"context.Exception.Message {r.Failure.Message}"); - } + //var r = context.Result; + //if (r.Failure != null) { + // Shared.Logger.Logger.LogWarning($"context.Exception.Message {r.Failure.Message}"); + //} - if (r.Succeeded == false) { - Shared.Logger.Logger.LogWarning($"r.Succeeded == false"); - } + //if (r.Succeeded == false) { + // Shared.Logger.Logger.LogWarning($"r.Succeeded == false"); + //} return Task.CompletedTask; }; options.Events.OnAuthenticationFailed = context => { - Shared.Logger.Logger.LogWarning($"context.Exception.Message {context.Exception.Message}"); - Shared.Logger.Logger.LogWarning($"context.ProtocolMessage.ErrorUri {context.ProtocolMessage.ErrorUri}"); - Shared.Logger.Logger.LogWarning($"context.ProtocolMessage.Error {context.ProtocolMessage.Error}"); - Shared.Logger.Logger.LogWarning($"context.ProtocolMessage.ErrorDescription {context.ProtocolMessage.ErrorDescription}"); + //Shared.Logger.Logger.LogWarning($"context.Exception.Message {context.Exception.Message}"); + //Shared.Logger.Logger.LogWarning($"context.ProtocolMessage.ErrorUri {context.ProtocolMessage.ErrorUri}"); + //Shared.Logger.Logger.LogWarning($"context.ProtocolMessage.Error {context.ProtocolMessage.Error}"); + //Shared.Logger.Logger.LogWarning($"context.ProtocolMessage.ErrorDescription {context.ProtocolMessage.ErrorDescription}"); return Task.CompletedTask; }; @@ -108,17 +108,17 @@ public AuthenticationRegistry() { this.AddSingleton(); this.AddSingleton(); this.AddSingleton(); - String dbFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db"); - var fi = new FileInfo(dbFileName); - Shared.Logger.Logger.LogWarning($"File {dbFileName} exists [{fi.Exists}]"); - String dbFileName1 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db-shm"); - var fi1 = new FileInfo(dbFileName1); - Shared.Logger.Logger.LogWarning($"File {dbFileName1} exists [{fi1.Exists}]"); - String dbFileName2 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db-wal"); - var fi2 = new FileInfo(dbFileName2); - Shared.Logger.Logger.LogWarning($"File {dbFileName2} exists [{fi2.Exists}]"); + //String dbFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db"); + //var fi = new FileInfo(dbFileName); + //Shared.Logger.Logger.LogWarning($"File {dbFileName} exists [{fi.Exists}]"); + //String dbFileName1 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db-shm"); + //var fi1 = new FileInfo(dbFileName1); + //Shared.Logger.Logger.LogWarning($"File {dbFileName1} exists [{fi1.Exists}]"); + //String dbFileName2 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db-wal"); + //var fi2 = new FileInfo(dbFileName2); + //Shared.Logger.Logger.LogWarning($"File {dbFileName2} exists [{fi2.Exists}]"); String connectionString = $"Data Source={Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "permissions.db")}"; - Shared.Logger.Logger.LogWarning($"Permissions connection string {connectionString}"); + //Shared.Logger.Logger.LogWarning($"Permissions connection string {connectionString}"); this.AddSingleton, DbContextFactory>(); this.AddDbContextFactory(options => options.UseSqlite(connectionString)); diff --git a/EstateManagementUI/Bootstrapper/ClientRegistry.cs b/EstateManagementUI/Bootstrapper/ClientRegistry.cs index c33d7587..4a7bfab9 100644 --- a/EstateManagementUI/Bootstrapper/ClientRegistry.cs +++ b/EstateManagementUI/Bootstrapper/ClientRegistry.cs @@ -4,6 +4,7 @@ using System.Net.Http; using FileProcessor.Client; using System.Diagnostics.CodeAnalysis; +using ClientProxyBase; using EstateReportingAPI.Client; using TransactionProcessor.Client; @@ -15,28 +16,11 @@ public class ClientRegistry : ServiceRegistry public ClientRegistry() { //this.AddSingleton(); + this.AddHttpContextAccessor(); this.AddSingleton(); - this.AddSingleton(); - this.AddSingleton(); - this.AddSingleton(); - this.AddSingleton>(container => (serviceName) => - { - return ConfigurationReader.GetBaseServerUri(serviceName).OriginalString; - }); - - Boolean httpClientIgnoreCertificateErrors = - ConfigurationReader.GetValueOrDefault("AppSettings", - "HttpClientIgnoreCertificateErrors", false); - HttpClient httpClient = new HttpClient(); - if (httpClientIgnoreCertificateErrors) { - HttpClientHandler handler = new HttpClientHandler(); - handler.ServerCertificateCustomValidationCallback = - HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; - - httpClient = new HttpClient(handler); - } - this.AddSingleton(httpClient); - - + this.RegisterHttpClient(); + this.RegisterHttpClient(); + this.RegisterHttpClient(); + this.AddSingleton>(container => (serviceName) => ConfigurationReader.GetBaseServerUri(serviceName).OriginalString); } } \ No newline at end of file diff --git a/EstateManagementUI/Common/DataHelperFunctions.cs b/EstateManagementUI/Common/DataHelperFunctions.cs index 06c2c4b5..3f696cdc 100644 --- a/EstateManagementUI/Common/DataHelperFunctions.cs +++ b/EstateManagementUI/Common/DataHelperFunctions.cs @@ -11,9 +11,9 @@ using TransactionProcessor.DataTransferObjects.Responses.Contract; public static class DataHelperFunctions { - public static async Task GetComparisonDates(String accessToken, Guid estateId, IMediator mediator) + public static async Task GetComparisonDates(CorrelationId correlationId, String accessToken, Guid estateId, IMediator mediator) { - Queries.GetComparisonDatesQuery query = new Queries.GetComparisonDatesQuery(accessToken, estateId); + Queries.GetComparisonDatesQuery query = new Queries.GetComparisonDatesQuery(correlationId, accessToken, estateId); Result> response = await mediator.Send(query, CancellationToken.None); @@ -61,9 +61,9 @@ public static List GetSettlementSchedules() return schedules; } - public static async Task GetOperatorsOld(String accessToken, Guid estateId, IMediator mediator) + public static async Task GetOperatorsOld(CorrelationId correlationId, String accessToken, Guid estateId, IMediator mediator) { - Queries.GetOperatorsQuery query = new Queries.GetOperatorsQuery(accessToken, estateId); + Queries.GetOperatorsQuery query = new(correlationId, accessToken, estateId); Result> response = await mediator.Send(query, CancellationToken.None); @@ -83,9 +83,9 @@ public static async Task GetOperatorsOld(String accessToken, } - public static async Task> GetOperators(String accessToken, Guid estateId, IMediator mediator) + public static async Task> GetOperators(CorrelationId correlationId, String accessToken, Guid estateId, IMediator mediator) { - Queries.GetOperatorsQuery query = new Queries.GetOperatorsQuery(accessToken, estateId); + Queries.GetOperatorsQuery query = new(correlationId, accessToken, estateId); Result> response = await mediator.Send(query, CancellationToken.None); @@ -101,9 +101,9 @@ public static async Task> GetOperators(String accessToken, Guid return ordered; } - public static async Task GetMerchants(String accessToken, Guid estateId, IMediator mediator) + public static async Task GetMerchants(CorrelationId correlationId, String accessToken, Guid estateId, IMediator mediator) { - Queries.GetMerchantsQuery query = new Queries.GetMerchantsQuery(accessToken, estateId); + Queries.GetMerchantsQuery query = new Queries.GetMerchantsQuery(correlationId, accessToken, estateId); Result> response = await mediator.Send(query, CancellationToken.None); @@ -122,9 +122,9 @@ public static async Task GetMerchants(String accessToken, Gui return new MerchantListModel { Merchants = ordered }; } - public static async Task GetContracts(String accessToken, Guid estateId, IMediator mediator) + public static async Task GetContracts(CorrelationId correlationId, String accessToken, Guid estateId, IMediator mediator) { - Queries.GetContractsQuery query = new(accessToken, estateId); + Queries.GetContractsQuery query = new(correlationId, accessToken, estateId); Result> response = await mediator.Send(query, CancellationToken.None); if (response.IsFailed) { diff --git a/EstateManagementUI/Common/SecureHydroComponent.cs b/EstateManagementUI/Common/SecureHydroComponent.cs index 34b24f4f..b5f297a7 100644 --- a/EstateManagementUI/Common/SecureHydroComponent.cs +++ b/EstateManagementUI/Common/SecureHydroComponent.cs @@ -9,12 +9,26 @@ using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Security.Claims; +using EstateManagmentUI.BusinessLogic.Requests; using Microsoft.AspNetCore.Mvc.Rendering; namespace EstateManagementUI.Common; +public class StandardHydroComponent : HydroComponent { + public StandardHydroComponent() : base(){ + + } + + protected CorrelationId CorrelationId; + + protected async Task PopulateCorrelationId() { + if (HttpContext != null) + this.CorrelationId = CorrelationIdHelper.New(this.HttpContext); + } +} + [ExcludeFromCodeCoverage] -public class SecureHydroComponent : HydroComponent { +public class SecureHydroComponent : StandardHydroComponent { private readonly String SectionName; private readonly String PageName; @@ -67,6 +81,8 @@ protected async Task PopulateTokenAndEstateId() { if (HttpContext.User != null) this.EstateId = Helpers.GetClaimValue(HttpContext.User.Identity as ClaimsIdentity, Helpers.EstateIdClaimType); + + await this.PopulateCorrelationId(); } public override async Task RenderAsync() diff --git a/EstateManagementUI/EstateManagementUI.csproj b/EstateManagementUI/EstateManagementUI.csproj index d3e6d194..4006a019 100644 --- a/EstateManagementUI/EstateManagementUI.csproj +++ b/EstateManagementUI/EstateManagementUI.csproj @@ -41,7 +41,7 @@ - + diff --git a/EstateManagementUI/Pages/Contract/Contract/NewContract.cshtml.cs b/EstateManagementUI/Pages/Contract/Contract/NewContract.cshtml.cs index 9754526f..2bae987d 100644 --- a/EstateManagementUI/Pages/Contract/Contract/NewContract.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/Contract/NewContract.cshtml.cs @@ -92,13 +92,13 @@ public List GetOperators() { // Might have async issues :| this.PopulateTokenAndEstateId().Wait(); - return DataHelperFunctions.GetOperators(this.AccessToken, this.EstateId, this.Mediator).Result; + return DataHelperFunctions.GetOperators(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator).Result; } private async Task CreateNeContract() { - Commands.CreateContractCommand createContractCommand = new(this.AccessToken, this.EstateId, new CreateContractModel + Commands.CreateContractCommand createContractCommand = new(this.CorrelationId, this.AccessToken, this.EstateId, new CreateContractModel { OperatorId = Guid.Parse(this.OperatorId), Description = this.Name diff --git a/EstateManagementUI/Pages/Contract/Contract/ViewContract.cshtml.cs b/EstateManagementUI/Pages/Contract/Contract/ViewContract.cshtml.cs index f9938d85..d24ed2e7 100644 --- a/EstateManagementUI/Pages/Contract/Contract/ViewContract.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/Contract/ViewContract.cshtml.cs @@ -37,7 +37,7 @@ public override async Task MountAsync() { private async Task LoadContract(CancellationToken cancellationToken) { await this.PopulateTokenAndEstateId(); - Queries.GetContractQuery query = new(this.AccessToken, this.EstateId, this.ContractId); + Queries.GetContractQuery query = new(this.CorrelationId, this.AccessToken, this.EstateId, this.ContractId); Result result = await this.Mediator.Send(query, cancellationToken); if (result.IsFailed) { diff --git a/EstateManagementUI/Pages/Contract/ContractProduct/ContractProductsList.cshtml.cs b/EstateManagementUI/Pages/Contract/ContractProduct/ContractProductsList.cshtml.cs index 4df8fb44..b31eb34a 100644 --- a/EstateManagementUI/Pages/Contract/ContractProduct/ContractProductsList.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/ContractProduct/ContractProductsList.cshtml.cs @@ -38,7 +38,7 @@ private async Task GetContract() { await this.PopulateTokenAndEstateId(); - Queries.GetContractQuery query = new Queries.GetContractQuery(this.AccessToken, this.EstateId, ContractId); + Queries.GetContractQuery query = new Queries.GetContractQuery(this.CorrelationId, this.AccessToken, this.EstateId, ContractId); Result response = await Mediator.Send(query, CancellationToken.None); if (response.IsFailed) { diff --git a/EstateManagementUI/Pages/Contract/ContractProduct/NewContractProduct.cshtml.cs b/EstateManagementUI/Pages/Contract/ContractProduct/NewContractProduct.cshtml.cs index d5b76e1f..b3de72bc 100644 --- a/EstateManagementUI/Pages/Contract/ContractProduct/NewContractProduct.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/ContractProduct/NewContractProduct.cshtml.cs @@ -72,7 +72,7 @@ public List GetProductTypes() } private async Task CreateNeContractProduct() { - Commands.CreateContractProductCommand command = new(this.AccessToken, this.EstateId, this.ContractId, new CreateContractProductModel + Commands.CreateContractProductCommand command = new(this.CorrelationId, this.AccessToken, this.EstateId, this.ContractId, new CreateContractProductModel { DisplayText = this.DisplayText, IsVariable= this.IsVariableValue, diff --git a/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/ContractProductTransactionFeeList.cshtml.cs b/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/ContractProductTransactionFeeList.cshtml.cs index abd24a25..cd1ee671 100644 --- a/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/ContractProductTransactionFeeList.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/ContractProductTransactionFeeList.cshtml.cs @@ -37,7 +37,7 @@ private async Task GetContract() { await this.PopulateTokenAndEstateId(); - Queries.GetContractQuery query = new Queries.GetContractQuery(this.AccessToken, this.EstateId, ContractId); + Queries.GetContractQuery query = new Queries.GetContractQuery(this.CorrelationId, this.AccessToken, this.EstateId, ContractId); Result response = await Mediator.Send(query, CancellationToken.None); if (response.IsFailed) diff --git a/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/NewContractProductTransactionFee.cshtml.cs b/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/NewContractProductTransactionFee.cshtml.cs index 05f40b9f..a0fab712 100644 --- a/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/NewContractProductTransactionFee.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/ContractProductTransactionFee/NewContractProductTransactionFee.cshtml.cs @@ -49,7 +49,7 @@ private async Task Handle(ContractPageEvents.ContractProductTransactionFeeCreate public async Task Save() { await this.PopulateTokenAndEstateId(); - Commands.CreateContractProductTransactionFeeCommand command = new(this.AccessToken, this.EstateId, this.ContractId, this.ProductId, new CreateContractProductTransactionFeeModel + Commands.CreateContractProductTransactionFeeCommand command = new(this.CorrelationId, this.AccessToken, this.EstateId, this.ContractId, this.ProductId, new CreateContractProductTransactionFeeModel { Description = this.Description, Value = this.Value, diff --git a/EstateManagementUI/Pages/Contract/Contracts/ContractsList.cshtml.cs b/EstateManagementUI/Pages/Contract/Contracts/ContractsList.cshtml.cs index f197f802..dee5ca1c 100644 --- a/EstateManagementUI/Pages/Contract/Contracts/ContractsList.cshtml.cs +++ b/EstateManagementUI/Pages/Contract/Contracts/ContractsList.cshtml.cs @@ -31,7 +31,7 @@ private async Task GetContracts() { await this.PopulateTokenAndEstateId(); - Queries.GetContractsQuery query = new Queries.GetContractsQuery(this.AccessToken, this.EstateId); + Queries.GetContractsQuery query = new Queries.GetContractsQuery(this.CorrelationId, this.AccessToken, this.EstateId); Result> response = await this.Mediator.Send(query, CancellationToken.None); if (response.IsFailed) diff --git a/EstateManagementUI/Pages/Dashboard/Dashboard/Dashboard.cshtml.cs b/EstateManagementUI/Pages/Dashboard/Dashboard/Dashboard.cshtml.cs index b00c5412..98388f26 100644 --- a/EstateManagementUI/Pages/Dashboard/Dashboard/Dashboard.cshtml.cs +++ b/EstateManagementUI/Pages/Dashboard/Dashboard/Dashboard.cshtml.cs @@ -48,15 +48,15 @@ public override async Task MountAsync() { await this.PopulateTokenAndEstateId(); - this.Merchant = await DataHelperFunctions.GetMerchants(this.AccessToken, this.EstateId, this.Mediator); - this.Operator = await DataHelperFunctions.GetOperatorsOld(this.AccessToken, this.EstateId, this.Mediator); - this.ComparisonDate = await DataHelperFunctions.GetComparisonDates(this.AccessToken, this.EstateId, this.Mediator); + this.Merchant = await DataHelperFunctions.GetMerchants(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); + this.Operator = await DataHelperFunctions.GetOperatorsOld(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); + this.ComparisonDate = await DataHelperFunctions.GetComparisonDates(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); await this.Query(); } private async Task GetTodaysSales(DateTime selectedDate) { - Queries.GetTodaysSalesQuery getTodaysSalesQuery = new(this.AccessToken, + Queries.GetTodaysSalesQuery getTodaysSalesQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, selectedDate); Result getTodaysSalesQueryResult = await this.Mediator.Send(getTodaysSalesQuery, CancellationToken.None); @@ -77,7 +77,7 @@ private async Task GetTodaysSales(DateTime selectedDate) { } private async Task GetTodaysSettlement(DateTime selectedDate) { - Queries.GetTodaysSettlementQuery getTodaysSettlemntQuery = new(this.AccessToken, + Queries.GetTodaysSettlementQuery getTodaysSettlemntQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, selectedDate); Result getTodaysSettlementQueryResult = await this.Mediator.Send(getTodaysSettlemntQuery, CancellationToken.None); @@ -101,7 +101,7 @@ private async Task GetTodaysSettlement(DateTime selectedDate) { private async Task GetTodaysSalesCountByHour(DateTime selectedDate) { Queries.GetTodaysSalesCountByHourQuery getTodaysSalesCountByHourQuery = - new(this.AccessToken, this.EstateId, selectedDate); + new(this.CorrelationId, this.AccessToken, this.EstateId, selectedDate); Result> getTodaysSalesCountByHourQueryResult = await this.Mediator.Send(getTodaysSalesCountByHourQuery, CancellationToken.None); if (getTodaysSalesCountByHourQueryResult.IsSuccess && getTodaysSalesCountByHourQueryResult.Data != null) @@ -132,7 +132,7 @@ private async Task GetTodaysSalesCountByHour(DateTime selectedDate) { private async Task GetTodaysSalesValueByHour(DateTime selectedDate) { Queries.GetTodaysSalesValueByHourQuery getTodaysSalesValueByHourQuery = - new(this.AccessToken, this.EstateId, selectedDate); + new(this.CorrelationId, this.AccessToken, this.EstateId, selectedDate); Result> getTodaysSalesValueByHourQueryResult = await this.Mediator.Send(getTodaysSalesValueByHourQuery, CancellationToken.None); diff --git a/EstateManagementUI/Pages/Estate/OperatorList/OperatorList.cshtml.cs b/EstateManagementUI/Pages/Estate/OperatorList/OperatorList.cshtml.cs index 26fef3c1..3e030ae9 100644 --- a/EstateManagementUI/Pages/Estate/OperatorList/OperatorList.cshtml.cs +++ b/EstateManagementUI/Pages/Estate/OperatorList/OperatorList.cshtml.cs @@ -27,8 +27,8 @@ public OperatorList(IMediator mediator, IPermissionsService permissionsService) public override async Task MountAsync() { await PopulateTokenAndEstateId(); - - Queries.GetEstateQuery query = new Queries.GetEstateQuery(AccessToken, EstateId); + CorrelationId c = CorrelationIdHelper.New(); + Queries.GetEstateQuery query = new(c , AccessToken, EstateId); Result response = await Mediator.Send(query, CancellationToken.None); if (response.IsFailed) diff --git a/EstateManagementUI/Pages/Estate/UsersList/UsersList.cshtml.cs b/EstateManagementUI/Pages/Estate/UsersList/UsersList.cshtml.cs index 77cff8bc..baff7e94 100644 --- a/EstateManagementUI/Pages/Estate/UsersList/UsersList.cshtml.cs +++ b/EstateManagementUI/Pages/Estate/UsersList/UsersList.cshtml.cs @@ -29,7 +29,8 @@ public override async Task MountAsync() { await PopulateTokenAndEstateId(); - Queries.GetEstateQuery query = new Queries.GetEstateQuery(AccessToken, EstateId); + CorrelationId c = CorrelationIdHelper.New(); + Queries.GetEstateQuery query = new(c, AccessToken, EstateId); Result response = await Mediator.Send(query, CancellationToken.None); if (response.IsFailed) diff --git a/EstateManagementUI/Pages/Estate/ViewEstate/ViewEstate.cshtml.cs b/EstateManagementUI/Pages/Estate/ViewEstate/ViewEstate.cshtml.cs index 18bde9eb..ac75e380 100644 --- a/EstateManagementUI/Pages/Estate/ViewEstate/ViewEstate.cshtml.cs +++ b/EstateManagementUI/Pages/Estate/ViewEstate/ViewEstate.cshtml.cs @@ -12,8 +12,8 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Shared.Logger; using SimpleResults; -using static System.Collections.Specialized.BitVector32; namespace EstateManagementUI.Pages.Estate.ViewEstate { @@ -32,7 +32,7 @@ public override async Task MountAsync() { await PopulateTokenAndEstateId(); - Queries.GetEstateQuery query = new Queries.GetEstateQuery(AccessToken, EstateId); + Queries.GetEstateQuery query = new(this.CorrelationId, AccessToken, EstateId); Result response = await Mediator.Send(query, CancellationToken.None); if (response.IsFailed) diff --git a/EstateManagementUI/Pages/FileProcessing/FileDetails/FileDetails.cshtml.cs b/EstateManagementUI/Pages/FileProcessing/FileDetails/FileDetails.cshtml.cs index 8c042dd5..0c8e6600 100644 --- a/EstateManagementUI/Pages/FileProcessing/FileDetails/FileDetails.cshtml.cs +++ b/EstateManagementUI/Pages/FileProcessing/FileDetails/FileDetails.cshtml.cs @@ -36,7 +36,7 @@ public override async Task MountAsync() { private async Task GetFileDetails() { await this.PopulateTokenAndEstateId(); - Queries.GetFileDetailsQuery fileDetailsQuery = new Queries.GetFileDetailsQuery(this.AccessToken, this.EstateId, this.FileId); + Queries.GetFileDetailsQuery fileDetailsQuery = new Queries.GetFileDetailsQuery(this.CorrelationId, this.AccessToken, this.EstateId, this.FileId); Result response = await this.Mediator.Send(fileDetailsQuery, CancellationToken.None); diff --git a/EstateManagementUI/Pages/FileProcessing/FileImportLog/FileImportLog.cshtml.cs b/EstateManagementUI/Pages/FileProcessing/FileImportLog/FileImportLog.cshtml.cs index 202ef60e..38e79e8c 100644 --- a/EstateManagementUI/Pages/FileProcessing/FileImportLog/FileImportLog.cshtml.cs +++ b/EstateManagementUI/Pages/FileProcessing/FileImportLog/FileImportLog.cshtml.cs @@ -36,14 +36,14 @@ public override async Task MountAsync() { private async Task GetFileImportLog() { await this.PopulateTokenAndEstateId(); - - Queries.GetEstateQuery estateQuery = new Queries.GetEstateQuery(this.AccessToken, this.EstateId); + CorrelationId c = CorrelationIdHelper.New(); + Queries.GetEstateQuery estateQuery = new(c, AccessToken, EstateId); Result estate = await this.Mediator.Send(estateQuery); if (estate.IsFailed) { // TODO: Handle error properly, e.g., show a message to the user } - Queries.GetFileImportLogQuery query = new Queries.GetFileImportLogQuery(this.AccessToken, this.EstateId, + Queries.GetFileImportLogQuery query = new Queries.GetFileImportLogQuery(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, this.FileImportLogId); Result response = diff --git a/EstateManagementUI/Pages/FileProcessing/FileImportLogs/FileImportLogList.cshtml.cs b/EstateManagementUI/Pages/FileProcessing/FileImportLogs/FileImportLogList.cshtml.cs index b1ff96e8..82b74267 100644 --- a/EstateManagementUI/Pages/FileProcessing/FileImportLogs/FileImportLogList.cshtml.cs +++ b/EstateManagementUI/Pages/FileProcessing/FileImportLogs/FileImportLogList.cshtml.cs @@ -52,7 +52,7 @@ private async Task GetMerchants() { await this.PopulateTokenAndEstateId(); - Queries.GetMerchantsQuery query = new Queries.GetMerchantsQuery(this.AccessToken, this.EstateId); + Queries.GetMerchantsQuery query = new Queries.GetMerchantsQuery(this.CorrelationId, this.AccessToken, this.EstateId); Result> response = await this.Mediator.Send(query, CancellationToken.None); if (response.IsFailed) @@ -78,7 +78,7 @@ private async Task GetFiles() { await this.PopulateTokenAndEstateId(); - Queries.GetFileImportLogsListQuery query = new Queries.GetFileImportLogsListQuery(this.AccessToken, this.EstateId, Guid.Parse(this.Merchant.MerchantId), this.StartDate.SelectedDate.Value, this.EndDate.SelectedDate.Value); + Queries.GetFileImportLogsListQuery query = new Queries.GetFileImportLogsListQuery(this.CorrelationId, this.AccessToken, this.EstateId, Guid.Parse(this.Merchant.MerchantId), this.StartDate.SelectedDate.Value, this.EndDate.SelectedDate.Value); Result> response = await this.Mediator.Send(query, CancellationToken.None); diff --git a/EstateManagementUI/Pages/Merchant/MerchantDetails/AddContractDialog.cshtml.cs b/EstateManagementUI/Pages/Merchant/MerchantDetails/AddContractDialog.cshtml.cs index 8850af79..d2051cdf 100644 --- a/EstateManagementUI/Pages/Merchant/MerchantDetails/AddContractDialog.cshtml.cs +++ b/EstateManagementUI/Pages/Merchant/MerchantDetails/AddContractDialog.cshtml.cs @@ -28,7 +28,7 @@ public override async Task MountAsync() { await this.PopulateTokenAndEstateId(); - this.Contract = await DataHelperFunctions.GetContracts(this.AccessToken, this.EstateId, this.Mediator); + this.Contract = await DataHelperFunctions.GetContracts(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); } public async Task Save() { @@ -38,7 +38,7 @@ public async Task Save() { ContractId= Guid.Parse(this.Contract.ContractId) }; Commands.AssignContractToMerchantCommand assignContractToMerchantCommand = - new(this.AccessToken, this.EstateId, this.MerchantId, assignContractToMerchantModel); + new(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, assignContractToMerchantModel); Result result = await this.Mediator.Send(assignContractToMerchantCommand, CancellationToken.None); if (result.IsSuccess) { diff --git a/EstateManagementUI/Pages/Merchant/MerchantDetails/AddDeviceDialog.cshtml.cs b/EstateManagementUI/Pages/Merchant/MerchantDetails/AddDeviceDialog.cshtml.cs index 824f23a3..27efeb46 100644 --- a/EstateManagementUI/Pages/Merchant/MerchantDetails/AddDeviceDialog.cshtml.cs +++ b/EstateManagementUI/Pages/Merchant/MerchantDetails/AddDeviceDialog.cshtml.cs @@ -36,7 +36,7 @@ public async Task Save() { DeviceIdentifier= this.MerchantDevice }; Commands.AssignDeviceToMerchantCommand assignContractToMerchantCommand = - new(this.AccessToken, this.EstateId, this.MerchantId, assignDeviceToMerchant); + new(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, assignDeviceToMerchant); Result result = await this.Mediator.Send(assignContractToMerchantCommand, CancellationToken.None); if (result.IsSuccess) { diff --git a/EstateManagementUI/Pages/Merchant/MerchantDetails/AddOperatorDialog.cshtml.cs b/EstateManagementUI/Pages/Merchant/MerchantDetails/AddOperatorDialog.cshtml.cs index b2a062ad..22ac842e 100644 --- a/EstateManagementUI/Pages/Merchant/MerchantDetails/AddOperatorDialog.cshtml.cs +++ b/EstateManagementUI/Pages/Merchant/MerchantDetails/AddOperatorDialog.cshtml.cs @@ -31,7 +31,7 @@ public override async Task MountAsync() { await this.PopulateTokenAndEstateId(); - this.Operator = await DataHelperFunctions.GetOperatorsOld(this.AccessToken, this.EstateId, this.Mediator); + this.Operator = await DataHelperFunctions.GetOperatorsOld(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); } public async Task Save() { @@ -43,7 +43,7 @@ public async Task Save() { TerminalNumber = this.TerminalNumber }; Commands.AssignOperatorToMerchantCommand assignOperatorToMerchantCommand = - new(this.AccessToken, this.EstateId, this.MerchantId, assignOperatorToMerchantModel); + new(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, assignOperatorToMerchantModel); Result result = await this.Mediator.Send(assignOperatorToMerchantCommand, CancellationToken.None); if (result.IsSuccess) { diff --git a/EstateManagementUI/Pages/Merchant/MerchantDetails/MakeDeposit.cshtml.cs b/EstateManagementUI/Pages/Merchant/MerchantDetails/MakeDeposit.cshtml.cs index f5710f3d..633c4b1e 100644 --- a/EstateManagementUI/Pages/Merchant/MerchantDetails/MakeDeposit.cshtml.cs +++ b/EstateManagementUI/Pages/Merchant/MerchantDetails/MakeDeposit.cshtml.cs @@ -136,7 +136,7 @@ public override async Task MountAsync() protected async Task LoadMerchant(CancellationToken cancellationToken) { await this.PopulateTokenAndEstateId(); - Queries.GetMerchantQuery query = new(this.AccessToken, this.EstateId, this.MerchantId); + Queries.GetMerchantQuery query = new(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId); Result result = await this.Mediator.Send(query, cancellationToken); //if (result.IsFailed) { // // handle this @@ -150,7 +150,7 @@ protected async Task LoadMerchant(CancellationToken cancellationToken) { public async Task Save() { await this.PopulateTokenAndEstateId(); - Commands.MakeDepositCommand command = new(this.AccessToken, this.EstateId, this.MerchantId, new BusinessLogic.Models.MakeDepositModel + Commands.MakeDepositCommand command = new(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, new BusinessLogic.Models.MakeDepositModel { Amount = this.Amount, Date = this.Date, diff --git a/EstateManagementUI/Pages/Merchant/MerchantDetails/Merchant.cs b/EstateManagementUI/Pages/Merchant/MerchantDetails/Merchant.cs index 00423343..eae595e1 100644 --- a/EstateManagementUI/Pages/Merchant/MerchantDetails/Merchant.cs +++ b/EstateManagementUI/Pages/Merchant/MerchantDetails/Merchant.cs @@ -78,7 +78,7 @@ protected async Task LoadMerchant(CancellationToken cancellationToken) { await this.PopulateTokenAndEstateId(); - Queries.GetMerchantQuery query = new(this.AccessToken, this.EstateId, this.MerchantId); + Queries.GetMerchantQuery query = new(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId); Result result = await this.Mediator.Send(query, cancellationToken); if (result.IsFailed) { @@ -86,7 +86,7 @@ protected async Task LoadMerchant(CancellationToken cancellationToken) { } // We need to now get all the contracts here to populate the names on the Merchant Model - Queries.GetContractsQuery contractsQuery = new Queries.GetContractsQuery(this.AccessToken, this.EstateId); + Queries.GetContractsQuery contractsQuery = new Queries.GetContractsQuery(this.CorrelationId, this.AccessToken, this.EstateId); Result> contractsResult = await this.Mediator.Send(contractsQuery, cancellationToken); if (contractsResult.IsFailed) { // TODO: Handle this @@ -177,7 +177,7 @@ private async Task CreateNewMerchant() { } }; - Commands.AddMerchantCommand command = new(this.AccessToken, this.EstateId, createMerchantModel); + Commands.AddMerchantCommand command = new(this.CorrelationId, this.AccessToken, this.EstateId, createMerchantModel); Result result = await this.Mediator.Send(command, CancellationToken.None); @@ -202,7 +202,7 @@ private async Task UpdateExitingMerchant() { }, MerchantName = this.Name }; - commands.Add(new Commands.UpdateMerchantCommand(this.AccessToken, this.EstateId, this.MerchantId, updateMerchantModel)); + commands.Add(new Commands.UpdateMerchantCommand(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, updateMerchantModel)); AddressModel updateAddressModel = new() { @@ -214,7 +214,7 @@ private async Task UpdateExitingMerchant() { PostalCode = this.Address.PostCode, AddressId = this.Address.AddressId, }; - commands.Add(new Commands.UpdateMerchantAddressCommand(this.AccessToken, this.EstateId, this.MerchantId, updateAddressModel)); + commands.Add(new Commands.UpdateMerchantAddressCommand(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, updateAddressModel)); ContactModel updateContactModel = new() { ContactName = this.Contact.ContactName, @@ -222,7 +222,7 @@ private async Task UpdateExitingMerchant() { ContactPhoneNumber = this.Contact.PhoneNumber, ContactId = this.Contact.ContactId }; - commands.Add(new Commands.UpdateMerchantContactCommand(this.AccessToken, this.EstateId, this.MerchantId, + commands.Add(new Commands.UpdateMerchantContactCommand(this.CorrelationId, this.AccessToken, this.EstateId, this.MerchantId, updateContactModel)); foreach (IRequest command in commands) { @@ -255,7 +255,7 @@ public async Task RemoveOperator(Guid merchantId, await this.PopulateTokenAndEstateId(); Commands.RemoveOperatorFromMerchantCommand removeOperatorFromMerchantCommand = - new(this.AccessToken, this.EstateId, merchantId, operatorId); + new(this.CorrelationId, this.AccessToken, this.EstateId, merchantId, operatorId); await this.Mediator.Send(removeOperatorFromMerchantCommand, CancellationToken.None); // TODO: handle result @@ -268,7 +268,7 @@ public async Task RemoveContract(Guid merchantId, await this.PopulateTokenAndEstateId(); Commands.RemoveContractFromMerchantCommand removeContractFromMerchantCommand = - new(this.AccessToken, this.EstateId, merchantId, contractId); + new(this.CorrelationId, this.AccessToken, this.EstateId, merchantId, contractId); await this.Mediator.Send(removeContractFromMerchantCommand, CancellationToken.None); // TODO: handle result diff --git a/EstateManagementUI/Pages/Merchant/MerchantsList/MerchantsList.cshtml.cs b/EstateManagementUI/Pages/Merchant/MerchantsList/MerchantsList.cshtml.cs index 6b0df5b7..190923d1 100644 --- a/EstateManagementUI/Pages/Merchant/MerchantsList/MerchantsList.cshtml.cs +++ b/EstateManagementUI/Pages/Merchant/MerchantsList/MerchantsList.cshtml.cs @@ -53,7 +53,7 @@ private async Task GetMerchants() { await PopulateTokenAndEstateId(); - Queries.GetMerchantsQuery query = new Queries.GetMerchantsQuery(AccessToken, EstateId); + Queries.GetMerchantsQuery query = new Queries.GetMerchantsQuery(this.CorrelationId, AccessToken, EstateId); Result> response = await Mediator.Send(query, CancellationToken.None); if (response.IsFailed) diff --git a/EstateManagementUI/Pages/Operator/OperatorDialogs/OperatorDialog.cs b/EstateManagementUI/Pages/Operator/OperatorDialogs/OperatorDialog.cs index 56213503..70f49d86 100644 --- a/EstateManagementUI/Pages/Operator/OperatorDialogs/OperatorDialog.cs +++ b/EstateManagementUI/Pages/Operator/OperatorDialogs/OperatorDialog.cs @@ -51,7 +51,7 @@ private async Task LoadOperator(CancellationToken cancellationToken) { await this.PopulateTokenAndEstateId(); - Queries.GetOperatorQuery query = new Queries.GetOperatorQuery(this.AccessToken, this.EstateId, this.OperatorId); + Queries.GetOperatorQuery query = new Queries.GetOperatorQuery(this.CorrelationId, this.AccessToken, this.EstateId, this.OperatorId); Result result = await this.Mediator.Send(query, cancellationToken); //if (result.IsFailed) { // // handle this @@ -81,7 +81,7 @@ public async Task Save() { await this.PopulateTokenAndEstateId(); if (this.OperatorId == Guid.Empty) { - Commands.AddNewOperatorCommand command = new Commands.AddNewOperatorCommand(this.AccessToken, this.EstateId, + Commands.AddNewOperatorCommand command = new Commands.AddNewOperatorCommand(this.CorrelationId, this.AccessToken, this.EstateId, Guid.NewGuid(), this.Name, this.RequireCustomMerchantNumber, this.RequireCustomTerminalNumber); Result result = await this.Mediator.Send(command, CancellationToken.None); @@ -94,7 +94,7 @@ public async Task Save() { this.Dispatch(new OperatorPageEvents.OperatorCreatedEvent(), Scope.Global); } else { - Commands.UpdateOperatorCommand command = new Commands.UpdateOperatorCommand(this.AccessToken, this.EstateId, + Commands.UpdateOperatorCommand command = new Commands.UpdateOperatorCommand(this.CorrelationId, this.AccessToken, this.EstateId, this.OperatorId, this.Name, this.RequireCustomMerchantNumber, this.RequireCustomTerminalNumber); Result result = await this.Mediator.Send(command, CancellationToken.None); diff --git a/EstateManagementUI/Pages/Operator/OperatorsList/OperatorsList.cshtml.cs b/EstateManagementUI/Pages/Operator/OperatorsList/OperatorsList.cshtml.cs index 10f47785..766c7cb2 100644 --- a/EstateManagementUI/Pages/Operator/OperatorsList/OperatorsList.cshtml.cs +++ b/EstateManagementUI/Pages/Operator/OperatorsList/OperatorsList.cshtml.cs @@ -51,7 +51,7 @@ private async Task GetOperators() { await PopulateTokenAndEstateId(); - Queries.GetOperatorsQuery query = new Queries.GetOperatorsQuery(AccessToken, EstateId); + Queries.GetOperatorsQuery query = new Queries.GetOperatorsQuery(this.CorrelationId, AccessToken, EstateId); Result> response = await Mediator.Send(query, CancellationToken.None); diff --git a/EstateManagementUI/Pages/PermissionManagement/Components/EnterUserCode.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Components/EnterUserCode.cshtml.cs index 409a2cb5..b5c8ec8d 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Components/EnterUserCode.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Components/EnterUserCode.cshtml.cs @@ -2,6 +2,7 @@ using System.Security.Cryptography; using System.Text; using Azure; +using EstateManagementUI.Common; using Hydro; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -12,7 +13,7 @@ namespace EstateManagementUI.Pages.PermissionManagement.Components { [ExcludeFromCodeCoverage] - public class EnterUserCode : HydroComponent + public class EnterUserCode : StandardHydroComponent { public String UserCode { get; set; } diff --git a/EstateManagementUI/Pages/PermissionManagement/Components/OptionSelect.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Components/OptionSelect.cshtml.cs index 7dd02bf4..882883f0 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Components/OptionSelect.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Components/OptionSelect.cshtml.cs @@ -1,3 +1,4 @@ +using EstateManagementUI.Common; using Hydro; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; @@ -7,7 +8,7 @@ namespace EstateManagementUI.Pages.PermissionManagement.Components { [ExcludeFromCodeCoverage] - public class OptionSelect : HydroComponent + public class OptionSelect : StandardHydroComponent { public void Submit1() { diff --git a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRole.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRole.cshtml.cs index 454a2e46..218e8dd7 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRole.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRole.cshtml.cs @@ -1,18 +1,19 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; using EstateManagementUI.BusinessLogic.Clients; using EstateManagementUI.BusinessLogic.PermissionService; using EstateManagementUI.BusinessLogic.PermissionService.Database.Entities; +using EstateManagementUI.Common; using EstateManagementUI.Pages.Shared.Components; using Hydro; using Microsoft.AspNetCore.Mvc; using SimpleResults; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; using static Hydro.Scope; namespace EstateManagementUI.Pages.PermissionManagement.Roles.EditRole; [ExcludeFromCodeCoverage] -public class AddRole : HydroComponent +public class AddRole : StandardHydroComponent { private readonly IPermissionsRepository PermissionsRepository; diff --git a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRoleUser.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRoleUser.cshtml.cs index 76a3bde9..07f81317 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRoleUser.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/AddRoleUser.cshtml.cs @@ -1,18 +1,19 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; using EstateManagementUI.BusinessLogic.Clients; using EstateManagementUI.BusinessLogic.PermissionService; using EstateManagementUI.BusinessLogic.PermissionService.Database.Entities; +using EstateManagementUI.Common; using EstateManagementUI.Pages.Shared.Components; using Hydro; using Microsoft.AspNetCore.Mvc; using SimpleResults; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; using static Hydro.Scope; namespace EstateManagementUI.Pages.PermissionManagement.Roles.EditRole; [ExcludeFromCodeCoverage] -public class AddRoleUser : HydroComponent +public class AddRoleUser : StandardHydroComponent { private readonly IPermissionsRepository PermissionsRepository; public int Id { get; set; } diff --git a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRole.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRole.cshtml.cs index c9d1bf17..86832d28 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRole.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRole.cshtml.cs @@ -1,18 +1,19 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; using EstateManagementUI.BusinessLogic.Clients; using EstateManagementUI.BusinessLogic.PermissionService; using EstateManagementUI.BusinessLogic.PermissionService.Database.Entities; +using EstateManagementUI.Common; using EstateManagementUI.Pages.Shared.Components; using Hydro; using Microsoft.AspNetCore.Mvc; using SimpleResults; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; using static Hydro.Scope; namespace EstateManagementUI.Pages.PermissionManagement.Roles.EditRole; [ExcludeFromCodeCoverage] -public class EditRole : HydroComponent +public class EditRole : StandardHydroComponent { private readonly IPermissionsRepository PermissionsRepository; public int Id { get; set; } diff --git a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRoleUsers.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRoleUsers.cshtml.cs index 47000691..030e6eb1 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRoleUsers.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Roles/EditRole/EditRoleUsers.cshtml.cs @@ -1,18 +1,19 @@ -using System.ComponentModel.DataAnnotations; -using System.Diagnostics.CodeAnalysis; using EstateManagementUI.BusinessLogic.Clients; using EstateManagementUI.BusinessLogic.PermissionService; using EstateManagementUI.BusinessLogic.PermissionService.Database.Entities; +using EstateManagementUI.Common; using EstateManagementUI.Pages.Shared.Components; using Hydro; using Microsoft.AspNetCore.Mvc; using SimpleResults; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; using static Hydro.Scope; namespace EstateManagementUI.Pages.PermissionManagement.Roles.EditRole; [ExcludeFromCodeCoverage] -public class EditRoleUsers : HydroComponent +public class EditRoleUsers : StandardHydroComponent { private readonly IPermissionsRepository PermissionsRepository; public int Id { get; set; } diff --git a/EstateManagementUI/Pages/PermissionManagement/Roles/RoleList/RoleList.cshtml.cs b/EstateManagementUI/Pages/PermissionManagement/Roles/RoleList/RoleList.cshtml.cs index 32877e1d..cb3f0ec7 100644 --- a/EstateManagementUI/Pages/PermissionManagement/Roles/RoleList/RoleList.cshtml.cs +++ b/EstateManagementUI/Pages/PermissionManagement/Roles/RoleList/RoleList.cshtml.cs @@ -1,5 +1,6 @@ using EstateManagementUI.BusinessLogic.Clients; using EstateManagementUI.BusinessLogic.PermissionService; +using EstateManagementUI.Common; using Hydro; using Microsoft.AspNetCore.Mvc; using SimpleResults; @@ -8,7 +9,7 @@ namespace EstateManagementUI.Pages.PermissionManagement.Roles.RoleList { [ExcludeFromCodeCoverage] - public class RoleList : HydroComponent + public class RoleList : StandardHydroComponent { private readonly IPermissionsRepository PermissionsRepository; diff --git a/EstateManagementUI/Pages/Reporting/SettlementAnalysis/SettlementAnalysis.cshtml.cs b/EstateManagementUI/Pages/Reporting/SettlementAnalysis/SettlementAnalysis.cshtml.cs index 73865b91..b0d35492 100644 --- a/EstateManagementUI/Pages/Reporting/SettlementAnalysis/SettlementAnalysis.cshtml.cs +++ b/EstateManagementUI/Pages/Reporting/SettlementAnalysis/SettlementAnalysis.cshtml.cs @@ -29,7 +29,7 @@ public override async Task MountAsync() { await this.PopulateTokenAndEstateId(); - this.ComparisonDate = await DataHelperFunctions.GetComparisonDates(this.AccessToken, this.EstateId, this.Mediator); + this.ComparisonDate = await DataHelperFunctions.GetComparisonDates(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); await this.Query(); } @@ -50,7 +50,7 @@ public async Task Query() private async Task GetTodaysSettlement(DateTime selectedDate) { - Queries.GetTodaysSettlementQuery getTodaysSettlementQuery = new(this.AccessToken, + Queries.GetTodaysSettlementQuery getTodaysSettlementQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, selectedDate); Result getTodaysSettlementQueryResult = await this.Mediator.Send(getTodaysSettlementQuery, CancellationToken.None); @@ -74,7 +74,7 @@ private async Task GetTodaysSettlement(DateTime selectedDate) private async Task GetLastSettlement() { - Queries.GetLastSettlementQuery getLastSettlementQuery = new(this.AccessToken, + Queries.GetLastSettlementQuery getLastSettlementQuery = new(this.CorrelationId, this.AccessToken, this.EstateId); Result getLastSettlementQueryResult = await this.Mediator.Send(getLastSettlementQuery, CancellationToken.None); diff --git a/EstateManagementUI/Pages/Reporting/TransactionAnalysis/TransactionAnalysis.cshtml.cs b/EstateManagementUI/Pages/Reporting/TransactionAnalysis/TransactionAnalysis.cshtml.cs index 0eb5faa1..a468ea60 100644 --- a/EstateManagementUI/Pages/Reporting/TransactionAnalysis/TransactionAnalysis.cshtml.cs +++ b/EstateManagementUI/Pages/Reporting/TransactionAnalysis/TransactionAnalysis.cshtml.cs @@ -35,7 +35,7 @@ public override async Task MountAsync() { await this.PopulateTokenAndEstateId(); - this.ComparisonDate = await DataHelperFunctions.GetComparisonDates(this.AccessToken, this.EstateId, this.Mediator); + this.ComparisonDate = await DataHelperFunctions.GetComparisonDates(this.CorrelationId, this.AccessToken, this.EstateId, this.Mediator); await this.Query(); } @@ -60,7 +60,7 @@ public async Task Query() } private async Task GetMerchantKpis() { - Queries.GetMerchantKpiQuery getMerchantKpiQuery = new(this.AccessToken, this.EstateId); + Queries.GetMerchantKpiQuery getMerchantKpiQuery = new(this.CorrelationId, this.AccessToken, this.EstateId); Result getMerchantKpiQueryResult = await this.Mediator.Send(getMerchantKpiQuery, CancellationToken.None); if (getMerchantKpiQueryResult.IsSuccess && getMerchantKpiQueryResult.Data != null) @@ -80,7 +80,7 @@ private async Task GetMerchantKpis() { private async Task GetTodaysSales(DateTime selectedDate) { - Queries.GetTodaysSalesQuery getTodaysSalesQuery = new(this.AccessToken, + Queries.GetTodaysSalesQuery getTodaysSalesQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, selectedDate); Result getTodaysSalesQueryResult = await this.Mediator.Send(getTodaysSalesQuery, CancellationToken.None); @@ -102,7 +102,7 @@ private async Task GetTodaysSales(DateTime selectedDate) private async Task GetBottomMerchantsBySales() { - Queries.GetBottomMerchantDataQuery getBottomMerchantDataQuery = new(this.AccessToken, + Queries.GetBottomMerchantDataQuery getBottomMerchantDataQuery = new(this.CorrelationId, this.AccessToken, this.EstateId,3); var getBottomMerchantDataQueryResult = await this.Mediator.Send(getBottomMerchantDataQuery, CancellationToken.None); @@ -123,7 +123,7 @@ private async Task GetBottomMerchantsBySales() private async Task GetBottomOperatorsBySales() { - Queries.GetBottomOperatorDataQuery getBottomOperatorDataQuery = new(this.AccessToken, + Queries.GetBottomOperatorDataQuery getBottomOperatorDataQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, 3); var getBottomOperatorDataQueryResult = await this.Mediator.Send(getBottomOperatorDataQuery, CancellationToken.None); @@ -147,7 +147,7 @@ private async Task GetBottomOperatorsBySales() private async Task GetBottomProductsBySales() { - Queries.GetBottomProductDataQuery getBottomProductDataQuery = new(this.AccessToken, + Queries.GetBottomProductDataQuery getBottomProductDataQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, 3); var getBottomProductDataQueryResult = await this.Mediator.Send(getBottomProductDataQuery, CancellationToken.None); @@ -171,7 +171,7 @@ private async Task GetBottomProductsBySales() private async Task GetTodaysFailedSales(DateTime selectedDate, String responseCode) { - Queries.GetTodaysFailedSalesQuery getTodaysFailedSalesQuery = new(this.AccessToken, + Queries.GetTodaysFailedSalesQuery getTodaysFailedSalesQuery = new(this.CorrelationId, this.AccessToken, this.EstateId, responseCode, selectedDate); Result getTodaysFailedSalesQueryResult = await this.Mediator.Send(getTodaysFailedSalesQuery, CancellationToken.None); diff --git a/EstateManagementUI/Pages/Shared/Components/LoginButton.cshtml.cs b/EstateManagementUI/Pages/Shared/Components/LoginButton.cshtml.cs index 4b6c78ef..0045fac9 100644 --- a/EstateManagementUI/Pages/Shared/Components/LoginButton.cshtml.cs +++ b/EstateManagementUI/Pages/Shared/Components/LoginButton.cshtml.cs @@ -1,4 +1,5 @@ -using Hydro; +using EstateManagementUI.Common; +using Hydro; using Microsoft.AspNetCore.Mvc; using System; using System.Diagnostics.CodeAnalysis; @@ -6,7 +7,7 @@ namespace EstateManagementUI.Pages.Shared.Components { [ExcludeFromCodeCoverage] - public class LoginButton : HydroComponent + public class LoginButton : StandardHydroComponent { public async Task LogIn() { diff --git a/EstateManagementUI/Pages/Shared/Components/Toasts.cshtml.cs b/EstateManagementUI/Pages/Shared/Components/Toasts.cshtml.cs index d16497cf..36fc3502 100644 --- a/EstateManagementUI/Pages/Shared/Components/Toasts.cshtml.cs +++ b/EstateManagementUI/Pages/Shared/Components/Toasts.cshtml.cs @@ -1,12 +1,13 @@ -using System.Diagnostics.CodeAnalysis; +using EstateManagementUI.Common; using Hydro; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Diagnostics.CodeAnalysis; namespace EstateManagementUI.Pages.Shared.Components { [ExcludeFromCodeCoverage] - public class Toasts : HydroComponent + public class Toasts : StandardHydroComponent { public List ToastsList { get; set; } = new(); diff --git a/EstateManagementUI/Pages/Shared/Profile/ProfileDropdown.cshtml.cs b/EstateManagementUI/Pages/Shared/Profile/ProfileDropdown.cshtml.cs index 10d4159e..bfaa139d 100644 --- a/EstateManagementUI/Pages/Shared/Profile/ProfileDropdown.cshtml.cs +++ b/EstateManagementUI/Pages/Shared/Profile/ProfileDropdown.cshtml.cs @@ -1,3 +1,4 @@ +using EstateManagementUI.Common; using Hydro; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Components; @@ -5,7 +6,8 @@ using System.Globalization; namespace EstateManagementUI.Pages.Shared.Profile; -public class ProfileDropdown : HydroComponent { +public class ProfileDropdown : StandardHydroComponent +{ private readonly IHttpContextAccessor HttpContextAccessor; public ProfileDropdown(IHttpContextAccessor httpContextAccessor) { diff --git a/EstateManagementUI/Program.cs b/EstateManagementUI/Program.cs index ec5b2cd6..08eaf087 100644 --- a/EstateManagementUI/Program.cs +++ b/EstateManagementUI/Program.cs @@ -1,15 +1,8 @@ -using System.ComponentModel.Design; -using System.Diagnostics.CodeAnalysis; -using System.IdentityModel.Tokens.Jwt; -using System.Net; -using System.Security.Cryptography.X509Certificates; -using EstateManagementUI.Bootstrapper; using EstateManagementUI.BusinessLogic.PermissionService; using EstateManagementUI.BusinessLogic.PermissionService.Database; using EstateManagementUI.BusinessLogic.PermissionService.Database.Entities; using Hydro; using Hydro.Configuration; -using Lamar; using Lamar.Microsoft.DependencyInjection; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics; @@ -24,127 +17,16 @@ using NLog.Extensions.Logging; using Shared.Extensions; using Shared.General; +using Shared.Logger; +using Shared.Middleware; using SimpleResults; +using System.ComponentModel.Design; +using System.Diagnostics.CodeAnalysis; +using System.Net; +using System.Security.Cryptography.X509Certificates; using ILogger = Microsoft.Extensions.Logging.ILogger; using Logger = Shared.Logger.Logger; -[ExcludeFromCodeCoverage] -public class Startup { - private static IWebHostEnvironment WebHostEnvironment; - public static Container Container; - - public static IConfigurationRoot Configuration { get; set; } - - public Startup(IWebHostEnvironment webHostEnvironment) - { - IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(webHostEnvironment.ContentRootPath) - .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) - .AddJsonFile($"/home/txnproc/config/appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true) - .AddEnvironmentVariables(); - - Startup.Configuration = builder.Build(); - Startup.WebHostEnvironment = webHostEnvironment; - - JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureContainer(ServiceRegistry services) - { - ConfigurationReader.Initialise(Startup.Configuration); - - services.AddHttpContextAccessor(); - - services.IncludeRegistry(); - if (Startup.WebHostEnvironment.IsEnvironment("IntegrationTest") == false){ - services.IncludeRegistry(); - } - services.IncludeRegistry(); - services.IncludeRegistry(); - - Startup.Container = new Container(services); - } - - public void Configure(IApplicationBuilder app, IWebHostEnvironment env, - ILoggerFactory loggerFactory) { - - // TODO: where should the logging be configured?? - - //// Configure the HTTP request pipeline. - //if (!env.IsDevelopment()) - //{ - // app.UseExceptionHandler("/Error"); - // // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - // app.UseHsts(); - //} - //else - //{ - // app.UseDeveloperExceptionPage(); - - //} - - //app.UseExceptionHandler(b => b.Run(async context => - //{ - // if (!context.IsHydro()) - // { - // return; - // } - - // IExceptionHandlerFeature contextFeature = context.Features.Get(); - // switch (contextFeature?.Error) - // { - // // custom cases for custom exception types if needed - - // default: - // context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; - - // await context.Response.WriteAsJsonAsync(new UnhandledHydroError( - // Message: "There was a problem with this operation and it wasn't finished", - // Data: null - // )); - - // return; - // } - //})); - - String nlogConfigFilename = "nlog.config"; - - if (env.IsDevelopment()) - { - var developmentNlogConfigFilename = "nlog.development.config"; - if (File.Exists(Path.Combine(env.ContentRootPath, developmentNlogConfigFilename))) - { - nlogConfigFilename = developmentNlogConfigFilename; - } - - app.UseDeveloperExceptionPage(); - } - - app.AddRequestLogging(); - app.AddResponseLogging(); - - app.UseHttpsRedirection(); - app.UseStaticFiles(); - - app.UseRouting(); - - app.UseAuthentication(); - app.UseAuthorization(); - - app.UseHydro(env); - - app.UseEndpoints(endpoints => - { - endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); - endpoints.MapRazorPages(); - }); - - app.PreWarm().Wait(); - } -} - [ExcludeFromCodeCoverage] public class Program { @@ -220,9 +102,27 @@ public static IHostBuilder CreateHostBuilder(String[] args) { .AddJsonFile("hosting.json", optional: true).AddJsonFile("hosting.development.json", optional: true) .AddEnvironmentVariables().Build(); + String contentRoot = Directory.GetCurrentDirectory(); + String nlogConfigPath = Path.Combine(contentRoot, "nlog.config"); + + LogManager.Setup(b => + { + b.SetupLogFactory(setup => + { + setup.AddCallSiteHiddenAssembly(typeof(NlogLogger).Assembly); + setup.AddCallSiteHiddenAssembly(typeof(Shared.Logger.Logger).Assembly); + setup.AddCallSiteHiddenAssembly(typeof(TenantMiddleware).Assembly); + }); + b.LoadConfigurationFromFile(nlogConfigPath); + }); + IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args); hostBuilder.UseWindowsService(); hostBuilder.UseLamar(); + hostBuilder.ConfigureLogging((context, + loggingBuilder) => { + loggingBuilder.AddNLog(); + }); hostBuilder.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); @@ -244,31 +144,7 @@ public static IHostBuilder CreateHostBuilder(String[] args) { }); webBuilder.UseConfiguration(config); - webBuilder.ConfigureLogging((context, - loggingBuilder) => { - // NLog: Setup NLog for Dependency injection - - //loggingBuilder.ClearProviders(); - loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); // TODO: Config - - String nlogConfigFilename = "nlog.config"; - - if (context.HostingEnvironment.IsDevelopment()) { - var developmentNlogConfigFilename = "nlog.development.config"; - if (File.Exists(Path.Combine(context.HostingEnvironment.ContentRootPath, - developmentNlogConfigFilename))) { - nlogConfigFilename = developmentNlogConfigFilename; - } - } - - NLog.LogManager.Setup().LoadConfigurationFromFile(nlogConfigFilename); - loggingBuilder.AddNLog(); - - var loggerFactory = new NLog.Extensions.Logging.NLogLoggerFactory(); - var l = loggerFactory.CreateLogger(""); - Shared.Logger.Logger.Initialise(l); - Startup.Configuration.LogConfiguration(Shared.Logger.Logger.LogWarning); - }); + webBuilder.UseKestrel(options => { var port = 5004; @@ -294,28 +170,14 @@ public static IHostBuilder CreateHostBuilder(String[] args) { } private static X509Certificate2 LoadCertificate(String path) { - Shared.Logger.Logger.LogWarning(path); - var g = Directory.Exists($"{path}//Certificates"); - if (g) { - { + //just to ensure that we are picking the right file! little bit of ugly code: + var files = Directory.GetFiles($"{path}/Certificates"); - //just to ensure that we are picking the right file! little bit of ugly code: - var files = Directory.GetFiles($"{path}/Certificates"); - foreach (String file in files) { - Shared.Logger.Logger.LogWarning(file); - } - var certificateFile = files.First(name => name.Contains("pfx")); - Console.WriteLine($"Certficate File: {certificateFile}"); - - var x509 = new X509Certificate2(certificateFile, "password"); - return x509; - } - } - else { - Shared.Logger.Logger.LogWarning($"Folder [{path}//Certificates] doesnt exist"); - } + var certificateFile = files.First(name => name.Contains("pfx")); + Console.WriteLine($"Certficate File: {certificateFile}"); - return null; + var x509 = new X509Certificate2(certificateFile, "password"); + return x509; } } diff --git a/EstateManagementUI/Startup.cs b/EstateManagementUI/Startup.cs new file mode 100644 index 00000000..f035380f --- /dev/null +++ b/EstateManagementUI/Startup.cs @@ -0,0 +1,125 @@ +using EstateManagementUI.Bootstrapper; +using Hydro.Configuration; +using Lamar; +using Microsoft.Extensions.Logging; +using Shared.Extensions; +using Shared.General; +using Shared.Middleware; +using System.Diagnostics.CodeAnalysis; +using System.IdentityModel.Tokens.Jwt; + +[ExcludeFromCodeCoverage] +public class Startup { + private static IWebHostEnvironment WebHostEnvironment; + public static Container Container; + + public static IConfigurationRoot Configuration { get; set; } + + public Startup(IWebHostEnvironment webHostEnvironment) + { + IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(webHostEnvironment.ContentRootPath) + .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) + .AddJsonFile($"/home/txnproc/config/appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true) + .AddEnvironmentVariables(); + + Startup.Configuration = builder.Build(); + Startup.WebHostEnvironment = webHostEnvironment; + + JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); + } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureContainer(ServiceRegistry services) + { + ConfigurationReader.Initialise(Startup.Configuration); + + services.AddHttpContextAccessor(); + + services.IncludeRegistry(); + if (Startup.WebHostEnvironment.IsEnvironment("IntegrationTest") == false) + { + services.IncludeRegistry(); + } + services.IncludeRegistry(); + services.IncludeRegistry(); + + Startup.Container = new Container(services); + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, + ILoggerFactory loggerFactory) { + + ILogger logger = loggerFactory.CreateLogger("MessagingService"); + + Shared.Logger.Logger.Initialise(logger); + Startup.Configuration.LogConfiguration(Shared.Logger.Logger.LogWarning); + + // TODO: where should the logging be configured?? + + //// Configure the HTTP request pipeline. + //if (!env.IsDevelopment()) + //{ + // app.UseExceptionHandler("/Error"); + // // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + // app.UseHsts(); + //} + //else + //{ + // app.UseDeveloperExceptionPage(); + + //} + + //app.UseExceptionHandler(b => b.Run(async context => + //{ + // if (!context.IsHydro()) + // { + // return; + // } + + // IExceptionHandlerFeature contextFeature = context.Features.Get(); + // switch (contextFeature?.Error) + // { + // // custom cases for custom exception types if needed + + // default: + // context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; + + // await context.Response.WriteAsJsonAsync(new UnhandledHydroError( + // Message: "There was a problem with this operation and it wasn't finished", + // Data: null + // )); + + // return; + // } + //})); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseMiddleware(); + app.AddRequestLogging(); + app.AddResponseLogging(); + + app.UseHttpsRedirection(); + app.UseStaticFiles(); + + app.UseRouting(); + + app.UseAuthentication(); + app.UseAuthorization(); + + app.UseHydro(env); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); + endpoints.MapRazorPages(); + }); + + app.PreWarm().Wait(); + } +} \ No newline at end of file diff --git a/EstateManagementUI/nlog.config b/EstateManagementUI/nlog.config index 16779679..214efef3 100644 --- a/EstateManagementUI/nlog.config +++ b/EstateManagementUI/nlog.config @@ -5,7 +5,7 @@