using EnVisage.Code.Cache; using EnVisage.Models; using Newtonsoft.Json; using NLog; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using System.Web; namespace EnVisage.Code.BLL { public class CustomerInfoControlAPIManager { protected readonly Logger Logger = LogManager.GetCurrentClassLogger(); public ClientInfoControlModel GetClientInfo(string name) { char[] splprm = { '.' }; string[] parts = name.Split(splprm); if (parts.Length > 1) name = parts[0]; HttpClient _client = Connect(); if (_client == null) return new ClientInfoControlModel(); HttpResponseMessage response = _client.GetAsync("api/ClientInformationAPI/GetClientInfo/" + name).Result; if (response.IsSuccessStatusCode) { var _ClientInfo = response.Content.ReadAsAsync().Result; return _ClientInfo; } else { } return null; } public ClientInfoControlModel GetClientInfo() { try { string domain = HttpContext.Current.Request.Url.Host; char[] splprm = { '.' }; string[] parts = domain.Split(splprm); if (parts.Length > 1) domain = parts[0]; //ClientInfoAPICache cache = new ClientInfoAPICache(); //var cliObj = cache.GetValueFromCache(); //if (cliObj == null) // cliObj = new ClientInfoControlModel(); //if (cliObj.Id != Guid.Empty && cliObj.InstanceUrl == domain) // return cliObj; Logger.Log(NLog.LogLevel.Debug, "Getting ClientInfo for " + domain); HttpClient _client = Connect(); if (_client == null) { var url = ConfigurationManager.AppSettings["ClientInformationControlUrl"]; Logger.Log(NLog.LogLevel.Debug, "Failed Client Info api connection" + url == null ? "No URL" : url); return new ClientInfoControlModel(); } HttpResponseMessage response = _client.GetAsync("api/ClientInformationAPI/GetClientInfo/" + domain).Result; if (response.IsSuccessStatusCode) { Logger.Log(NLog.LogLevel.Debug, "Loading client info data from cic"); var _ClientInfo = response.Content.ReadAsAsync().Result; Logger.Log(NLog.LogLevel.Debug, "Client Info Data:" + JsonConvert.SerializeObject(_ClientInfo)); // cache.AddValueToCache(_ClientInfo); return _ClientInfo; } else { Logger.Log(NLog.LogLevel.Debug, "Failed Client Info api connection Result status:" + response.StatusCode.ToDisplayValue()); } }catch(Exception dds) { var sb = DateTime.Now.ToString() + ": " + dds.Message; var logger = LogManager.GetCurrentClassLogger(); if (logger != null) logger.Fatal(sb.ToString()); Logger.Log(NLog.LogLevel.Debug, "Failed Client Info api connection exception:" + dds.ToString()); } return null; } private HttpClient Connect() { try { string url = ConfigurationManager.AppSettings["ClientInformationControlUrl"]; if (url != null) { HttpClient _client = new HttpClient(); _client.BaseAddress = new Uri(url); _client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); return _client; } }catch(Exception dds) { var sb = DateTime.Now.ToString() + ": " + dds.Message; var logger = LogManager.GetCurrentClassLogger(); if (logger != null) logger.Fatal(sb.ToString()); } return null; } } }