using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Configuration; using System.Linq; namespace Neo.Afx.Services { public class ServiceConfigurations { readonly ServiceConfigurationSection _services; public ServiceConfigurations() { _services = new ServiceConfigurationSection(); } #region GetSystemUserID public long GetSystemUserID() { long id; if(!long.TryParse(ConfigurationManager.AppSettings["SystemUserID"], out id)) { return -1; } return id; } #endregion #region GetSystemUserEmail public string GetSystemUserEmail() { return ConfigurationManager.AppSettings["SystemUserEmail"]; } #endregion #region GetServices public IEnumerable GetServices() { return (from service in _services.GetServices().Cast() let serviceSettings = ConfigurationManager.GetSection(service.SectionName) as NameValueCollection where serviceSettings != null select new Service { ServiceID = -1, ServiceName = service.Name, PollFrequency = new PollFrequency { PollFrequencyID = (short)service.PollFrequency }, PollTime = service.PollTime.ToString(), ServiceTypeName = service.Type, ServiceSettings = serviceSettings.AllKeys.Select(s => new ServiceSetting { SettingKey = s, SettingValue = serviceSettings[s] }).ToList() }).ToList(); } #endregion #region UpdateRunStatus /// /// Updates the service run status. /// /// The service ID; may be null. /// The run date. /// The trace info; may be null. public void UpdateRunStatus(string serviceName, DateTime runDate, string traceInfo) { System.Diagnostics.Trace.WriteLine( String.Format("{0} {1} - {2}", DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"), serviceName, traceInfo)); } #endregion } }