private String m_strErrorMsg = ""; // Message from call to server #endregion Data Members #region Constructors, Initialization & Destructor public cUpdatingSecuritiesPriceHistory(cPortfolio cPort) { m_objPortfolio = cPort; m_objErrorHandler = m_objPortfolio.cErrorLog; m_objDbConnection = m_objPortfolio.OleDBConn; param = new cParameters(m_objErrorHandler); param.initParams(); }//constructor
static void Main(string[] args) { #if DEBUG pDebug = true; #else pDebug = false; #endif string _stage = "Unknown Error"; string _myName = System.Reflection.Assembly.GetCallingAssembly().GetName().Name; try { Console.WriteLine($"----==== Starting [{_myName}] at {System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} ====----"); // _stage = "Checking OS"; if (cMiscTools.RunningOS == "Other") { throw new Exception("OS not supported!"); } // If the settings file exists, the params will be loaded from it _stage = "Loading settings file"; Console.Write("> Loading settings file... "); string[] _lines = File.ReadAllLines((cMiscTools.RunningOS == "Windows" ? Directory.GetCurrentDirectory().Substring(0, 3) : $"/media/bin/{_myName}/") + $"C# Apps Settings/{_myName}.settings", Encoding.Unicode); // _stage = "Creating Parameters object"; cParameters _params = new cParameters(); // _stage = "Getting settings from file"; _params.LoadParameters(_lines); // _stage = "Getting settings from args"; Console.Write($"OK!\n> Parameters: {(args.Length!=0?String.Join(" ", args):"NONE")}\n> Getting settings from args... "); _params.LoadParameters(args); // _stage = "Checking settings"; Console.WriteLine("OK!"); Console.Write("> Checking settings... "); if (String.IsNullOrEmpty(_params.DBServer)) { throw new Exception("DB server is mandatory: DB_SERVER=<ServerAddress>"); } if (String.IsNullOrEmpty(_params.DBUser)) { throw new Exception("DB user is mandatory: DB_USER=<UserCode>"); } if (String.IsNullOrEmpty(_params.DBPassword)) { throw new Exception("DB password is mandatory: DB_PASSWORD=<Password>"); } if (String.IsNullOrEmpty(_params.DBDataBase)) { throw new Exception("Database is mandatory: DB_DATABASE=<Database>"); } Console.WriteLine("OK!"); // _stage = "Creating connection objects"; cConnDetails _connDetailsDB = new cConnDetails(_params.DBServer, _params.DBUser, _params.DBPassword, _params.DBDataBase); cConnDetails _connDetailsMail = new cConnDetails(_params.MailServer, _params.MailUser, _params.MailPassword); // _stage = $"Connecting to {_connDetailsDB.Server}"; cDataAccess _da = new cDataAccess(_connDetailsDB); _da.Connect(); // _stage = "Getting alarms list"; Recordset _rs = new Recordset("Select Codigo,BD,Tabla,Campo_alarma,Nombre_idreg,idreg_valor,asunto_email,emails_aviso,condicion_alarma,campos_select,flagged=dbo.checkflag(flags,'FLAGGED'),server=isnull(server,''),FechaColumn=dbo.checkflag(flags,'XFEC2FECHA') from cab_alarmas where dbo.checkFlag(flags,'ACTIVE')=1 and codigo='ALARMTEST'", _da); _rs.Open(); //Dictionary<int, Dictionary<string, string>> _alarms = _rs.ToDictionary(); // string p; _stage = "Looping through alarms"; while (!_rs.EOF) { using (cAlarm _alarm = new cAlarm(_da, _rs["Codigo"].ToString(), _rs["BD"].ToString(), _rs["Tabla"].ToString(), _rs["Campo_alarma"].ToString(), _rs["Nombre_idreg"].ToString(), Convert.ToInt32(_rs["idreg_valor"]), _rs["asunto_email"].ToString(), _rs["emails_aviso"].ToString(), _rs["condicion_alarma"].ToString(), _rs["campos_select"].ToString(), Convert.ToInt32(_rs["flagged"]) == 1, _rs["server"].ToString(), Convert.ToInt32(_rs["FechaColumn"]) == 1)) { try { // _stage = $"Executing alarm {_alarm.Code}"; Console.Write($"> Executing alarm {_alarm.Code}..."); _alarm.Process(); Console.Write($" {(_alarm.Error ? "ERROR" : "OK")}! Sending {(_alarm.Error ? "error " : "")}email..."); // if (_alarm.Triggered || _alarm.Error) { _stage = $"Sending {(_alarm.Error ? "error " : "")} email"; using (cEmail _email = new cEmail(_connDetailsMail, _alarm.Error ? _params.MailErrorTo : (!String.IsNullOrEmpty(_params.MailTo) ? _params.MailTo : _alarm.EmailList), $"ALARM: {_alarm.EmailSubject}", _alarm.Contents, error: _alarm.Error)) { if (_alarm.Error) { _email.Recipients = _params.MailErrorTo; } _email.Send(); } Console.WriteLine(" OK!"); } else { Console.WriteLine(" Not triggered."); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } _rs.MoveNext(); } // _stage = "Disconnecting from DB server"; //_dbt.Disconnect(); } catch (Exception ex) { Console.WriteLine($"[Main#{_stage}] {ex.Message}"); return; } Console.WriteLine($"----==== Ending [{_myName}] at {System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} ====----"); }
static void Main(string[] args) { string _stage = "Unknown Error"; string _myName = System.Reflection.Assembly.GetCallingAssembly().GetName().Name; try { Console.WriteLine($"----==== Starting [{_myName}] at {System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} ====----"); // If the settings file exists, the params will be loaded from it _stage = "Loading settings file"; Console.Write("> Loading settings file... "); string[] _lines = File.ReadAllLines((cMiscTools.RunningOS == "Windows" ? Directory.GetCurrentDirectory().Substring(0, 3) : $"/media/bin/{_myName}/") + $"C# Apps Settings\\{_myName}.settings", (Debug)?Encoding.Unicode:Encoding.Default); Console.WriteLine("OK"); // _stage = "Creating Parameters object"; cParameters _params = new cParameters(); // _stage = "Getting settings from file"; Console.Write("> Loading parameters from settings... "); _params.LoadParameters(_lines); Console.WriteLine("OK"); // Just in case there are no data for some or all the mandatory parameters _stage = "Processing parameters"; _params.DBServer = String.IsNullOrEmpty(_params.DBServer) ? "DB01B" : _params.DBServer; _params.DBUser = String.IsNullOrEmpty(_params.DBUser) ? "procesos" : _params.DBUser; _params.DBPassword = String.IsNullOrEmpty(_params.DBPassword) ? "*seso69*" : _params.DBPassword; _params.DBDataBase = String.IsNullOrEmpty(_params.DBDataBase) ? "SISTEMAS" : _params.DBDataBase; _params.DBTimeOut = _params.DBTimeOut == null ? 300 : _params.DBTimeOut; _params.DomainServer = String.IsNullOrEmpty(_params.DomainServer) ? "sauron.systems.espackeuro.com" : _params.DomainServer; _params.ExchangeServer = String.IsNullOrEmpty(_params.ExchangeServer) ? "exchange01.systems.espackeuro.com" : _params.ExchangeServer; // Create the tuple which contains each server type and its value //args = new string[] { /*"NEXTCLOUD=nextcloud.espackeuro.com", */"DOMAIN=sauron.systems.espackeuro.com", "DATABASE=DB01B.local", "EXCHANGE=exchange01.systems.espackeuro.com" }; args = new string[] { $"DOMAIN={_params.DomainServer}", $"DATABASE={_params.DBServer}.local", $"EXCHANGE={_params.ExchangeServer}" }; _stage = "Creating servers tuple"; args.ToList().ForEach(server => { var tupla = server.Split('='); Values.Servers.Add(tupla[0], tupla[1]); }); Values.DBServer = Values.Servers["DATABASE"]; //Values.gDatos.Server = Values.Servers["DATABASE"]; //Values.gDatos.context_info = MasterPassword.MasterBytes; //Values.gDatos.TimeOut = 300; //Values.gDatos.Connect(); _stage = "Defining SQL Connection string"; Values.conn.ConnectionString = new SqlConnectionStringBuilder() { InitialCatalog = Values.DataBase, UserID = Values.User, Password = Values.Password, DataSource = Values.DBServer }.ConnectionString; // _stage = "Getting mail domains"; using (var _domains = new SqlDataAdapter("select domain from MAIL..domain where dbo.CheckFlag(flags,'FORWARD')=1 ", Values.conn)) { DataTable T = new DataTable(); _domains.Fill(T); Values.DomainList = T.Rows.OfType <DataRow>().Select(r => r["domain"].ToString()).ToList(); //_domains.Close(); } // _stage = "Getting sync flags"; using (var _frs = new SqlDataAdapter("Select Codigo, DescFlagEng from flags where Servicio='SYNC' and Tabla='Users'", Values.conn)) { DataTable T = new DataTable(); _frs.Fill(T); Values.FlagsDefs = T.Rows.OfType <DataRow>().ToDictionary(dr => dr["Codigo"].ToString(), dr => dr["DescFlagEng"].ToString());//.ToList().Select(fr => new KeyValuePair<string,string>(fr["Codigo"].ToString(), fr["DescFlagEng"].ToString())).ToDictionary<string,string>; } // _stage = "Creating service object"; if (Environment.UserInteractive) { SyncServiceClass service1 = new SyncServiceClass(args); service1.TestStartupAndStop(args); } else { // Put the body of your old Main method here. ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new SyncServiceClass(args) }; ServiceBase.Run(ServicesToRun); } } catch (Exception ex) { Console.WriteLine($"[Main#{_stage}] {ex.Message}"); return; } }