diff --git a/TransactionProcessor.Mobile.BusinessLogic/Services/ApplicationCache.cs b/TransactionProcessor.Mobile.BusinessLogic/Services/ApplicationCache.cs index b4082860..bed30b1d 100644 --- a/TransactionProcessor.Mobile.BusinessLogic/Services/ApplicationCache.cs +++ b/TransactionProcessor.Mobile.BusinessLogic/Services/ApplicationCache.cs @@ -100,7 +100,11 @@ public Guid GetMerchantId() public String GetConfigHostUrl() { - return this.TryGetValue("ConfigHostUrl"); + var url = this.TryGetValue("ConfigHostUrl"); + if (String.IsNullOrWhiteSpace(url)) { + return "http://192.168.1.163:9200"; + } + return url; } public void SetConfigHostUrl(String value, diff --git a/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs b/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs index 9b51cd1d..1fdf9431 100644 --- a/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs +++ b/TransactionProcessor.Mobile/Extensions/MauiAppBuilderExtensions.cs @@ -46,7 +46,7 @@ public static class MauiAppBuilderExtensions { public static MauiAppBuilder ConfigureDatabase(this MauiAppBuilder builder) { String connectionString = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "transactionpos1.db"); - Func< BusinessLogic.Database.LogLevel > logLevelFunc = new Func(() => BusinessLogic.Database.LogLevel.Warn); + Func< BusinessLogic.Database.LogLevel > logLevelFunc = () => BusinessLogic.Database.LogLevel.Warn; IDatabaseContext database = new DatabaseContext(connectionString, logLevelFunc); database.InitialiseDatabase(); @@ -56,10 +56,6 @@ public static MauiAppBuilder ConfigureDatabase(this MauiAppBuilder builder) { } public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { - //builder.Services.AddHttpClient() - // .AddHttpMessageHandler() - // .ConfigurePrimaryHttpMessageHandler(GetHandler); - builder.Services.AddHttpClient("default") .AddHttpMessageHandler() .ConfigurePrimaryHttpMessageHandler(GetHandler); @@ -72,61 +68,22 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { }); builder.Services.AddSingleton>( - new Func(configSetting => - { - IApplicationCache applicationCache = MauiProgram.Container.Services - .GetService(); - - if (configSetting == "ConfigServiceUrl") - { - String configHostUrl = applicationCache.GetConfigHostUrl(); - if (String.IsNullOrEmpty(configHostUrl) == false) - { - return configHostUrl; - } - //return "https://sferguson.ddns.net:9200"; - return "http://192.168.1.167:9200"; - } - - Configuration configuration = applicationCache.GetConfiguration(); - - if (configuration != null) - { - if (configSetting == "ApplicationUpdateServiceUrl") { - if (String.IsNullOrWhiteSpace(configuration.ApplicationUpdateUri) == false) - { - return configuration.ApplicationUpdateUri; - } - - String configHostUrl = applicationCache.GetConfigHostUrl(); - return configHostUrl ?? String.Empty; - } - - if (configSetting == "SecurityService") - { - return configuration.SecurityServiceUri; - } - - if (configSetting == "TransactionProcessorACL") - { - return configuration.TransactionProcessorAclUri; - } - - if (configSetting == "TransactionProcessorApi") - { - return configuration.TransactionProcessorUri; - } - - if (configSetting == "EstateReportingApi") - { - return configuration.EstateReportingUri; - } - - return string.Empty; - } - - return string.Empty; - })); + new Func(configSetting => { + IApplicationCache applicationCache = MauiProgram.Container.Services.GetService(); + + if (applicationCache != null) + return configSetting switch { + "ConfigServiceUrl" => applicationCache.GetConfigHostUrl() ?? String.Empty, + "ApplicationUpdateServiceUrl" when String.IsNullOrWhiteSpace(applicationCache.GetConfiguration()?.ApplicationUpdateUri) == false => applicationCache.GetConfiguration().ApplicationUpdateUri, + "SecurityService" => applicationCache.GetConfiguration()?.SecurityServiceUri ?? String.Empty, + "TransactionProcessorACL" => applicationCache.GetConfiguration()?.TransactionProcessorAclUri ?? String.Empty, + "TransactionProcessorApi" => applicationCache.GetConfiguration()?.TransactionProcessorUri ?? String.Empty, + "EstateReportingApi" => applicationCache.GetConfiguration()?.EstateReportingUri ?? String.Empty, + _ => String.Empty + }; + + return null; + })); builder.Services.AddSingleton(); builder.Services.AddSingleton(); @@ -135,53 +92,38 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { builder.Services.AddSingleton(); builder.Services.AddSingleton>(new Func(useTrainingMode => - { - if (useTrainingMode) - { - return new TrainingConfigurationService(); - } - else - { - return MauiProgram.Container.Services.GetService(); - } - })); - - builder.Services.AddSingleton>(new Func(useTrainingMode => - { - if (useTrainingMode) - { - return new TrainingAuthenticationService(); - } - else - { - return MauiProgram.Container.Services.GetService(); - } - })); + { + return useTrainingMode switch { + true => new TrainingConfigurationService(), + _ => MauiProgram.Container.Services.GetService() + } ?? throw new InvalidOperationException("Failed to resolve IConfigurationService."); + })); + + builder.Services.AddSingleton(new Func(useTrainingMode => { + return useTrainingMode switch { + true => new TrainingAuthenticationService(), + _ => MauiProgram.Container.Services.GetService() + } ?? throw new InvalidOperationException("Failed to resolve IConfigurationService."); + })); builder.Services.AddSingleton>(new Func(useTrainingMode => - { - if (useTrainingMode) - { - return new TrainingTransactionService(); - } - else - { - return MauiProgram.Container.Services.GetService(); - } - })); - + { + return useTrainingMode switch + { + true => new TrainingTransactionService(), + _ => MauiProgram.Container.Services.GetService() + } ?? throw new InvalidOperationException("Failed to resolve ITransactionService."); + })); + builder.Services.AddSingleton>(new Func(useTrainingMode => - { - if (useTrainingMode) - { - return new TrainingMerchantService(); - } - else - { - return MauiProgram.Container.Services.GetService(); - } - })); - + { + return useTrainingMode switch + { + true => new TrainingMerchantService(), + _ => MauiProgram.Container.Services.GetService() + } ?? throw new InvalidOperationException("Failed to resolve ITransactionService."); + })); + builder.Services.RegisterHttpClientX(); builder.Services.AddSingleton(); @@ -190,17 +132,13 @@ public static MauiAppBuilder ConfigureAppServices(this MauiAppBuilder builder) { return builder; } - public static HttpMessageHandler GetHandler() - { + public static HttpMessageHandler GetHandler() { #if ANDROID - CustomAndroidMessageHandler androidMessageHandler = new() - { - + CustomAndroidMessageHandler androidMessageHandler = new() { ServerCertificateCustomValidationCallback = (sender, - certificate, - chain, - errors) => true, - + certificate, + chain, + errors) => true, }; return androidMessageHandler; #else @@ -217,7 +155,7 @@ public static HttpMessageHandler GetHandler() return httpMessageHandler; #endif } - + public static MauiAppBuilder ConfigureUIServices(this MauiAppBuilder builder) { builder.Services.AddSingleton(); builder.Services.AddSingleton();