using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xAiService.DI; using xCommons.Extensions; using xFileService.DI; using xMessageService.DI; using xServices.Configurations; using xServices.Constants; using xServices.TermsConditions.DI; using xStorageService.DI; using xStringService.DI; using xTagService.DI; namespace xServices.DI { public static class XDIHelperExtension { /// /// Retrive Services Configurations ... /// /// /// public static XServicesConfiguration GetXServicesConfiguration( this IConfiguration source ) { // var xConfig = source .GetSection(ConfigurationNodeNames.SERVICES_NODE); var result = xConfig.Get(); // return result; } /// /// Register Service Configuration ... /// /// /// public static void AddXServicesConfiguration( this IServiceCollection services, IConfiguration configuration ) { // var config = configuration .GetXServicesConfiguration(); if (config.IsNull()) { config = new XServicesConfiguration(); } // services.AddSingleton(config); } /// /// Register Service Configuration ... /// /// /// public static void AddXServicesConfiguration( this IServiceCollection services, XServicesConfiguration configuration ) { // if (configuration.IsNull()) { configuration = new XServicesConfiguration(); } // services.AddSingleton(configuration); } /// /// Register Services ... /// /// /// public static void AddXServices( this IServiceCollection services, IConfiguration configuration, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // var config = configuration.GetXServicesConfiguration(); // AddServices( config: config, services: services, lifeTime: lifeTime, configuration: configuration ); } /// /// Register Services ... /// /// /// /// public static void AddXServices( this IServiceCollection services, IConfiguration configuration, XServicesConfiguration config, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // AddServices( config: config, services: services, lifeTime: lifeTime, configuration: configuration ); } /// /// Use All Required Middlewares ... /// /// public static void UseXServices(this IApplicationBuilder app) { // // Use Storage Service ... app.UseXStorageService(); } // #region Private ... /// /// Register Required Services ... /// /// /// /// private static void AddServices( this IServiceCollection services, IConfiguration configuration, XServicesConfiguration config = null, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // // Check config ... if (config.IsNull()) { config = new XServicesConfiguration(); } // // Tag Service ... services.AddXTagService(lifeTime: lifeTime); // // Storage Service ... services.AddXStorageService(configuration); // // File Service ... services.AddXFileService(lifeTime: lifeTime); // // Message Service ... services.AddXMessageService(config: configuration); // // String Servicce ... services.AddXStringService(lifeTime: lifeTime); // // Terms and Conditions Service ... services.AddXTermsConditionsService(lifeTime: lifeTime); // // Ai Service ... services.AddXAIService( lifeTime: lifeTime, configuration: configuration ); } #endregion } }