using System; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xCommons.Extensions; using xMessageService.Constants; using xMessageService.Interfaces; using xMessageService.Models; using xMessageService.Providers; namespace xMessageService.DI { public static partial class XDIHelperExtension { /// /// Retrieve XMessage Configuration from App Settings /// /// /// public static XMessageConfiguration GetXMessageConfiguration (this IConfiguration config) { // var xMessageConfigSection = config.GetSection (ConfigurationNodeNames.MESSAGE_NODE_NAME); var xMessageConfiguration = xMessageConfigSection.Get (); // var defaultMailConfiguration = new Dictionary { ["EMPTY"] = new XMailConfiguration { Title = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER, Host = "", Port = 25, EnableSsl = false, Username = "", Password = "" } }; // var defaultSmsConfiguration = new Dictionary { ["EMPTY"] = new XSmsConfiguration { ServiceUrl = "", Username = "", Password = "", LineNumber = "", UserApiKey = "", SecretKey = "", } }; // if (xMessageConfiguration.IsNull ()) { // xMessageConfiguration = new XMessageConfiguration { DefaultSMSProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER, DefaultMailProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER, MailConfigurations = defaultMailConfiguration, SmsConfigurations = defaultSmsConfiguration }; // // Warn Message is Default Configuration ... Console.WriteLine ($"IMPORTANT: xMessageService Configuration is Default, so the Service can't works properly ..."); } // // Handle Default Mail Provider ... if (xMessageConfiguration.DefaultMailProvider.IsNullOrEmpty ()) { // if (xMessageConfiguration.IsNull () || // xMessageConfiguration.MailConfigurations.IsNull () || xMessageConfiguration.MailConfigurations.Count == 0) { // Console.WriteLine ("There is no defined Mail Provider Configurations ..."); xMessageConfiguration.DefaultMailProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER; } // if (xMessageConfiguration.DefaultMailProvider == xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER) { xMessageConfiguration.MailConfigurations = defaultMailConfiguration; } else { xMessageConfiguration.DefaultMailProvider = xMessageConfiguration.MailConfigurations.Keys.First (); } } // // Handle Default SMS Provider ... if (xMessageConfiguration.DefaultSMSProvider.IsNullOrEmpty ()) { // if (xMessageConfiguration.IsNull () || xMessageConfiguration.SmsConfigurations.IsNull () || xMessageConfiguration.SmsConfigurations.Count == 0) { // Console.WriteLine ("There is no defined SMS Provider Configurations ..."); xMessageConfiguration.DefaultSMSProvider = xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER; } // if (xMessageConfiguration.DefaultSMSProvider == xMessageServiceConstants.DEFAULT_EMPTY_PROVIDER) { xMessageConfiguration.SmsConfigurations = defaultSmsConfiguration; } else { xMessageConfiguration.DefaultSMSProvider = xMessageConfiguration.SmsConfigurations.Keys.First (); } } // return xMessageConfiguration; } /// /// Register XMessage Service /// /// /// public static void AddXMessageService (this IServiceCollection services, IConfiguration config) { // var xMessageConfiguration = config.GetXMessageConfiguration (); services.AddSingleton (xMessageConfiguration); // // Register SMS Service ... var xSmsService = new XSmsService ( xMessageConfiguration.DefaultSMSProvider, xMessageConfiguration.SmsConfigurations ); services.AddSingleton (xSmsService); // // Register Mail Service ... var xMailService = new XMailService ( xMessageConfiguration.DefaultMailProvider, xMessageConfiguration.MailConfigurations ); services.AddSingleton (xMailService); // // Register MEssage Provider ... services.AddSingleton (); } } }