예제 #1
0
        public bool SetStatus(string taskName, string status)
        {
            var now         = DateTime.Now.ToString();
            var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
            var command     = new OleDbCommand($"UPDATE Tasks SET Status = '{status}' WHERE TaskName = '{taskName}'")
            {
                Connection = _connection
            };

            _connection.Open();
            try
            {
                command.ExecuteNonQuery();
                Logger.Instance.Debug($"Task status updated: '{taskName}' {status}");

                return(true);
            }
            catch (Exception)
            {
                Logger.Instance.Error($"An error occured while updating the status of task {taskName}.");
            }
            finally
            {
                _connection.Close();
            }

            return(false);
        }
예제 #2
0
        public bool StartTask(string taskName)
        {
            var dateNow     = DateTime.Now;
            var now         = dateNow.ToString();
            var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
            var command     = new OleDbCommand($"UPDATE Tasks SET ExecutionStartDateTime = '{now}' WHERE TaskName = '{taskName}'")
            {
                Connection = _connection
            };

            _connection.Open();
            try
            {
                _executionStartDateTime = dateNow;
                command.ExecuteNonQuery();

                return(true);
            }
            catch (Exception)
            {
                Logger.Instance.Error($"An error occured while updating the start datetime of task {taskName}.");
            }
            finally
            {
                _connection.Close();
            }

            return(false);
        }
예제 #3
0
        public bool CreateTask(string taskName, string displayName, DateTime startDateTime, int repeatInterval, string externalExecutable, string jobParameters)
        {
            // var _connection = ConnectionInstance.Instance.GetConnection($"DSN={Settings.DsnName}");
            var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
            var command     = new OleDbCommand($"INSERT INTO Tasks (TaskName, TaskDisplayName, StartDateTime, MinuteRepeatInterval, externalExecutable, JobParameters) VALUES ('{taskName}', '{displayName}', '{startDateTime.ToString()}', {repeatInterval}, '{externalExecutable.Replace("'", "''")}', '{jobParameters.Replace("'", "''")}')")
            {
                Connection = _connection
            };

            _connection.Open();
            try
            {
                command.ExecuteNonQuery();
                Logger.Instance.Debug($"Task saved: '{taskName}'");

                return(true);
            }
            catch (Exception)
            {
                Logger.Instance.Error($"An error occured while creating the task {taskName}.");
            }
            finally
            {
                _connection.Close();
            }

            return(false);
        }
예제 #4
0
        public bool TaskExists(string task = null)
        {
            if (!string.IsNullOrEmpty(task) || !string.IsNullOrEmpty(Task))
            {
                if (string.IsNullOrEmpty(task))
                {
                    task = Task;
                }

                var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
                var command     = new OleDbCommand($"SELECT * FROM `Tasks` WHERE TaskName = '{task}'", _connection);
                _connection.Open();
                var reader = command.ExecuteReader();
                try
                {
                    while (reader.Read())
                    {
                        return(true);
                    }

                    return(false);
                }
                finally
                {
                    reader.Close();
                    _connection.Close();
                }
            }

            return(false);
        }
예제 #5
0
        public bool DeleteTask(string taskName)
        {
            var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
            var command     = new OleDbCommand($"DELETE FROM Tasks WHERE TaskName = '{taskName}'")
            {
                Connection = _connection
            };

            _connection.Open();
            try
            {
                command.ExecuteNonQuery();
                Logger.Instance.Debug($"Task deleted: '{taskName}'");

                return(true);
            }
            catch (Exception)
            {
                Logger.Instance.Error($"An error occured while deleting the task {taskName}.");
            }
            finally
            {
                _connection.Close();
            }

            return(false);
        }
예제 #6
0
        public static Credentials GetDsnCreds(string dsn)
        {
            // var _connection = ConnectionInstance.Instance.GetConnection($"DSN={DsnName}");
            var _connection = new OleDbConnectionInstance(ConnectionString).GetConnection();
            var command     = new OleDbCommand($"SELECT Username, Password FROM DsnCredentials WHERE DsnName = '{dsn}'", _connection);

            _connection.Open();
            var reader = command.ExecuteReader();

            try
            {
                string username = null;
                string password = null;
                while (reader.Read())
                {
                    username = reader[0].ToString();
                    password = reader[1].ToString();
                }

                var    config        = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                string encryptionKey = config.AppSettings.Settings["EncryptionKey"].Value;

                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    return(new Credentials()
                    {
                        Username = username,
                        Password = Encryption.Decrypt(password, encryptionKey)
                    });
                }
            }
            catch (Exception)
            {
                Logger.Instance.Error($"An error occured while retrieving the Credentials for DSN {dsn}");
                MessageBox.Show($@"An error occured while retrieving the Credentials for DSN {dsn}", @"Emptied Successfully");
            }
            finally
            {
                reader.Close();
                _connection.Close();
            }

            return(null);
        }
예제 #7
0
        public bool EndTask(string taskName)
        {
            var now         = DateTime.Now.ToString();
            var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
            var command     = new OleDbCommand()
            {
                Connection = _connection
            };

            if (_executionStartDateTime != null)
            {
                TimeSpan executionDuration        = DateTime.Now - (_executionStartDateTime ?? DateTime.Now);
                double   executionDurationSeconds = executionDuration.TotalSeconds;

                command.CommandText = $"UPDATE Tasks SET ExecutionEndDateTime = '{now}', ExecutionDuration = {executionDurationSeconds} WHERE TaskName = '{taskName}'";
            }
            else
            {
                command.CommandText = $"UPDATE Tasks SET ExecutionEndDateTime = '{now}' WHERE TaskName = '{taskName}'";
            }

            _connection.Open();
            try
            {
                command.ExecuteNonQuery();

                return(true);
            }
            catch (Exception)
            {
                Logger.Instance.Error($"An error occured while updating the end datetime of task {taskName}.");
            }
            finally
            {
                _connection.Close();
            }

            return(false);
        }
예제 #8
0
        public static void SaveDsnCreds(string dsn, string user, string pass)
        {
            var    config        = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            string encryptionKey = config.AppSettings.Settings["EncryptionKey"].Value;

            pass = Encryption.Encrypt(pass, encryptionKey);

            // var _connection = ConnectionInstance.Instance.GetConnection($"DSN={DsnName}");
            var _connection   = new OleDbConnectionInstance(ConnectionString).GetConnection();
            var deleteCommand = new OleDbCommand($"DELETE * FROM DsnCredentials WHERE DsnName = '{dsn}' AND Username = '******'")
            {
                Connection = _connection
            };
            var insertCommand = new OleDbCommand($"INSERT INTO DsnCredentials ([DsnName], [Username], [Password]) VALUES (?,?,?)")
            {
                Connection = _connection
            };

            insertCommand.Parameters.AddWithValue("Dsn", dsn);
            insertCommand.Parameters.AddWithValue("Username", user);
            insertCommand.Parameters.AddWithValue("Password", pass);

            _connection.Open();
            try
            {
                deleteCommand.ExecuteNonQuery();
                insertCommand.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Logger.Instance.Error($"An error occured while saving Dsn Credentials.");
                Logger.Instance.Error(e.GetBaseException().Message);
            }
            finally
            {
                _connection.Close();
            }
        }
        public List <string> GetCommandsByTrigger()
        {
            var _connection = new OleDbConnectionInstance(Settings.ConnectionString).GetConnection();
            var command     = new OleDbCommand($"SELECT `Command` FROM `BatchTasks` WHERE (`Trigger` = '{Trigger}' OR `Task` = '{Task}') AND `Priority` <> -1 ORDER BY `Priority` DESC", _connection);

            _connection.Open();
            var reader = command.ExecuteReader();

            try
            {
                List <string> commands = new List <string>();
                while (reader.Read())
                {
                    commands.Add(reader[0].ToString());
                }

                return(commands);
            }
            finally
            {
                reader.Close();
                _connection.Close();
            }
        }