using System; using Microsoft.Extensions.DependencyInjection; using xCommons.Configurations; using xCommons.Extensions; using xExceptions.Constants; using xServices.TermsConditions.Interfaces; using xServices.TermsConditions.Provides; using xStringService.Interfaces.Entities; namespace xServices.TermsConditions.DI { public static class TermsConditionsExtensions { /// /// Register TermsConditions Provider ... /// /// /// public static void AddXTermsConditionsService( this IServiceCollection services, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // AddTermsConditionsService( services: services, lifeTime: lifeTime ); } // #region Private ... /// /// a LogTag for Service ... /// private static string XLogTag = "XTermsConditionsService"; /// /// print a log in Console ... /// /// private static void Log(string message) { Console.WriteLine($"{XLogTag} => {message}"); } /// /// Add Terms and Conditions Provider Service ... /// /// /// private static void AddTermsConditionsService( IServiceCollection services, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { // var exception = XException.InvalidArgs.ToException(); ; // // Services ... var isServicesExists = !services.IsNull(); if (!isServicesExists) { // Log("AddTermsConditions failed, services not provided ..."); throw exception; } // // Lifetime ... var isLifetimeExists = !lifeTime.IsNull(); if (!isLifetimeExists) { // Log("AddTermsConditions failed, lifetime not provided ..."); throw exception; } // // Check Dependencies Exists ... var isDependenciesPassed = !services .GetRegisteredService() .IsNull() && !services.GetRegisteredService() .IsNull(); if (!isDependenciesPassed) { // Log("AddTermsConditions failed due Dependencies Issues, IXStringRepository or XAppConfiguration not provided ..."); throw exception; } // // Register Resource Providers ... services.Add(new ServiceDescriptor(typeof(IXTermsComditionsProvider), typeof(XTermsComditionsProvider), lifeTime)); } #endregion } }