private static DanelVersion GenarateDanelVersion(SqlDataReader reader, string db_name, string clientLocation, string serverName, string listenerPort, string notificationPort, string wcfport, string notificationSubscriptionsPort, string winServiceName, string winNotificationName, string sqlInstance, int[] lckdMdls) { int majorVersion = Convert.ToInt32(reader["MajorVersion"].ToString()); int minorVersion = Convert.ToInt32(reader["MinorVersion"].ToString()); int subVersion = Convert.ToInt32(reader["SubVersion"].ToString()); int buildNumber = Convert.ToInt32(reader["BuildNumber"].ToString()); var dir = new DirectoryInfo(clientLocation); var par = dir.Parent.FullName; var v = Path.Combine(par.ToString(), "AppStart.exe"); clientLocation = v; Version version = new Version(majorVersion, minorVersion, subVersion, buildNumber); Version appVersion = version; if (File.Exists(v)) { FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(v); appVersion = new Version(myFileVersionInfo.FileMajorPart, myFileVersionInfo.FileMinorPart, myFileVersionInfo.FileBuildPart, myFileVersionInfo.FilePrivatePart); } DanelVersion danelVersion = new DanelVersion(); danelVersion.vr = version; danelVersion.appVr = appVersion; danelVersion.dbName = db_name; danelVersion.fp = clientLocation; danelVersion.listenerPort = listenerPort; danelVersion.notificationPort = notificationPort; danelVersion.wcfport = wcfport; danelVersion.notificationSubscriptionsPort = notificationSubscriptionsPort; danelVersion.clientFolder = par; danelVersion.winServiceName = winServiceName; danelVersion.serverName = serverName; danelVersion.winNotificationName = winNotificationName; danelVersion.sqlInstance = sqlInstance; danelVersion.lckdMdls = lckdMdls; danelVersion.version = $"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}"; danelVersion.appVersion = $"{appVersion.Major}.{appVersion.Minor}.{appVersion.Build}.{appVersion.Revision}"; danelVersion.notificationPorts = $"{notificationPort};{notificationSubscriptionsPort}"; danelVersion.listenerPorts = $"{listenerPort};{wcfport}"; //DanelVersion danelVersion = new DanelVersion( // version, // appVersion, // db_name, // clientLocation, // serverName, // listenerPort, // notificationPort, // wcfport, // notificationSubscriptionsPort, // par, // winServiceName, // winNotificationName, // sqlInstance, // lckdMdls); return(danelVersion); }
private void LoadEnvsIntoCache(object obj) { int num = 1; //var files = WebCacheManager.Instance.GetValue<string>("files"); //var filesDirectory = new DirectoryInfo(files.ToString()); //foreach (var item in filesDirectory.GetFiles()) // item.Delete(); List <DanelVersion> vers = new List <DanelVersion>(); var sqls = WebConfigManager.Instance["sql"].ToString(); var servers = sqls.Split(';'); foreach (var srv in servers) { using (var con = new SqlConnection()) { con.ConnectionString = $"Data Source={srv};Initial Catalog=master;Integrated Security=True;"; con.Open(); using (SqlCommand cmd = new SqlCommand()) { cmd.CommandText = $@"{WebConfigManager.Instance["env_proc"]}"; cmd.Connection = con; try { using (SqlDataReader reader = cmd.ExecuteReader()) { do { while (reader.Read()) { string db_name = reader["DB_NAME"].ToString(); string serverName = reader["ServerName"].ToString(); string notificationPort = reader["notificationPort"].ToString(); string listenerPort = reader["listenerPort"].ToString(); string wcfport = reader["wcfport"].ToString(); string sqlInstance = reader["sqlInstance"].ToString(); string notificationSubscriptionsPort = reader["notificationSubscriptionsPort"].ToString(); string clientLocation = GenerateClientLocation(reader, serverName); string serverLocation = reader["serverLocation"].ToString(); string winServiceName = serverLocation.Substring(serverLocation.LastIndexOf("\\") + 1); string notificationLocation = reader["notificationLocation"].ToString(); string winNotificationName = notificationLocation.Substring(notificationLocation.LastIndexOf("\\") + 1); int[] lckdMdls = null; var v = reader["lckdMdls"].ToString(); if (!string.IsNullOrEmpty(v)) { v = v.Remove(v.LastIndexOf(','), 1); lckdMdls = v.Split(',').Select(i => int.Parse(i)).ToArray(); } //string newFile = GenerateNewFile(files.ToString(), ref num, clientLocation); DanelVersion danelVersion = GenarateDanelVersion( reader, db_name, clientLocation, serverName, listenerPort, notificationPort, wcfport, notificationSubscriptionsPort, winServiceName, winNotificationName, sqlInstance, lckdMdls); danelVersion.id = num++; vers.Add(danelVersion); } } while (reader.NextResult()); } } catch (Exception) { Debug.WriteLine($"fail {cmd.Connection.ConnectionString}"); } } } } IOrderedEnumerable <DanelVersion> sorted = SortVers(vers); var toFaltArray = sorted.ToArray(); WebCacheManager.Instance.SetValue("flat-vers", toFaltArray); WebCacheManager.Instance.SetValue("versTime", DateTime.Now); var grpd = sorted.GroupBy(x => new Version(x.vr.Major, x.vr.Minor, x.vr.Build, x.vr.Revision)); var toArray = grpd.ToArray(); WebCacheManager.Instance.SetValue("vers", toArray); WebCacheManager.Instance.SetValue("versTime", DateTime.Now); }