public string AccountToJson(Account account)
 {
     try
     {
         return JsonConvert.SerializeObject(account);
     }
     catch (JsonException ex)
     {
         return null;
     }
 }
 // перегрузка поиска логина по id с учетом времени
 //-----------------------
 public void add_new_account(Account account)
 {
     var query = @"REPLACE INTO steam_accounts
     (id, user_name, user_password, available, center_owner, center_holder, computer)  VALUES("
                 + account.id            + ", '"
                 + account.user_name     + "', '"
                 + account.user_password + "', "
                 + account.available     + ", '"
                 + account.center_owner  + "', '"
                 + account.center_holder + "', '"
                 + account.computer      + "')";
     ExecuteQuery(query);
 }
 public void AddTakenAccountsFromPostgres(DataTable source, List<int> hash)
 {
     foreach (DataRow row in source.Rows)
         if (hash.Contains(int.Parse(row["id"].ToString())))
         {
             var account = new Account(int.Parse(row["id"].ToString()))
             {
                 user_name = row["user_name"].ToString(),
                 user_password = row["user_password"].ToString(),
                 available = int.Parse(row["available"].ToString()),
                 center_owner = row["club"].ToString()
             };
             account.center_holder = account.available == 0 ? row["club"].ToString() : "";
             account.computer = row["computer"].ToString();
             add_new_account(account);
         }
 }
        public Account get_first_free_account(string holder, string compName )
        {
            var dt = GetQueryResult("SELECT * FROM steam_accounts WHERE available=1 ORDER by id");

            var rand = new Random();
            var i = rand.Next(0, dt.Rows.Count);
            var account = new Account(0)
            {
                id = int.Parse(dt.Rows[i][0].ToString())
            };
            change_account_status(account.id, holder, compName, 0);
            account.user_name       = dt.Rows[i][1].ToString();
            account.user_password   = dt.Rows[i][2].ToString();
            account.available       = 0;
            account.computer        = compName;
            return account;
        }
 public List<Account> get_accounts_for_requester(int limit)
 {
     // отбор аккаунтов указанного количества
     // для запросившего аккаунты. Сами аккаунты удаляются
     var dt = GetQueryResult(
         "SELECT * FROM steam_accounts WHERE available=1 LIMIT " + limit);
     var result = new List<Account>(0);
     foreach (DataRow row in dt.Rows)
     {
         var account = new Account(0)
         {
             id = int.Parse(row[0].ToString()),
             user_name = row[1].ToString(),
             user_password = row[2].ToString(),
             available = 1,
             computer = "",
             center_owner = "",
             center_holder = ""
         };
         delete_account(account);
         result.Add(account);
     }
     return result;
 }
 public List<Account> get_accounts_array(string title)
 {
     var dt = GetQueryResult(
         "SELECT * FROM steam_accounts");
     var result = new List<Account>(0);
     foreach (DataRow row in dt.Rows)
     {
         var account = new Account
         {
             id = int.Parse(row[0].ToString()),
             user_name = row[1].ToString(),
             user_password = row[2].ToString(),
             available = 1,
             center_owner = title,
             center_holder = "",
             computer = ""
         };
         result.Add(account);
     }
     return result;
 }
 public void delete_account(Account account)
 {
     ExecuteQuery("DELETE FROM steam_accounts WHERE id='" + account.id + "'");
 }
 public List<Account> GetAccountsForRequester(int limit)
 {
     // отбор аккаунтов указанного количества
     // для запросившего аккаунты. Сами аккаунты удаляются
     var dt = GetQueryResult(
         "select * from steam_accounts where available=1 limit " + limit);
     var result = new List<Account>(0);
     foreach (DataRow row in dt.Rows)
     {
         var account = new Account(0)
         {
             id = int.Parse(row[0].ToString()),
             user_name = row[1].ToString(),
             user_password = row[2].ToString(),
             available = 1,
             computer = "",
             center_owner = "",
             center_holder = ""
         };
         DeleteAccount(account);
         result.Add(account);
     }
     return result;
 }
        public bool UpdateAccount(Account account)
        {

            var query = @"UPDATE steamusers SET user_name='" + account.user_name
                        + "', user_password='******', available='" + account.available
                                + "', club='" + account.center_owner
                                    + "', computer='" + account.computer
                                        + "'  WHERE id='" + account.id + "'";
            if (ExecuteQuery(query))
            {
                CreateSystemMessage("Был обновлен аккаунт" +
                        "\r\nID аккаунта: " + account.id +
                        "\r\nЛогин: " + account.user_name +
                        "\r\nПароль: " + account.user_password +
                        "\r\nДоступ: " + account.available +
                        "\r\nВзят клубом: " + account.center_owner +
                        "\r\nКомпьютер: " + account.computer);
                return true;
            }
            CreateSystemMessage("Ошибка 1.9");
            return false;
        }
 public void DeleteAccount(Account account)
 {
     ExecuteQuery($"delete from steam_accounts where id='{account.id}'");
 }
 // перегрузка поиска логина по id с учетом времени
 //-----------------------
 public void add_new_account(Account account)
 {
     ExecuteQuery("replace into steam_accounts " + 
     "(id, user_name, user_password, available, center_owner, center_holder, computer)  values("
                 + account.id + ", '"
                 + account.user_name + "', '"
                 + account.user_password + "', "
                 + account.available + ", '"
                 + account.center_owner + "', '"
                 + account.center_holder + "', '"
                 + account.computer + "')");
 }
        public List<Account> get_account_array(int count, string title)
        {
            var dt = GetQueryResult($"SELECT * FROM steamusers WHERE available=1 LIMIT {count}");
            var result = new List<Account>(0);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                var account = new Account
                {
                    id = int.Parse(dt.Rows[i][0].ToString()),
                    user_name = dt.Rows[i][1].ToString(),
                    user_password = dt.Rows[i][2].ToString(),
                    available = 1,
                    center_owner = title,
                    center_holder = "",
                    computer = ""
                };

                ChangeAccountStatus(account.id, title, "", 0);
                result.Add(account);
            }
            return result;
        }
        public Account GetFirstFreeAccount(string club, string comp_name)
        {
            try
            {
                var dt = GetQueryResult(@"SELECT * FROM steamusers WHERE available=1 ORDER BY id");
                var account = new Account(0);
                //-------------------
                var rand = new Random();
                var i = rand.Next(0, dt.Rows.Count >= 5 ? 5 : dt.Rows.Count);
                //---------------------
                account.id = int.Parse(dt.Rows[i][0].ToString());
                ChangeAccountStatus(account.id, club, comp_name, 0);
                account.user_name = dt.Rows[i][1].ToString();
                account.user_password = dt.Rows[i][2].ToString();
                account.available = 0;
                account.center_owner = club;
                account.computer = comp_name;
                return account;
            }
            catch (Exception ex)
            {
                CreateSystemMessage("Ошибка 1.15: " + ex.Message);
                return null;
            }

        }
 public void DeleteAccount(Account account)
 {
     if (ExecuteQuery("DELETE FROM steamusers WHERE id='" + account.id + "'"))
         CreateSystemMessage("Был удален аккаунт по id = " + account.id);
     else
         CreateSystemMessage("Ошибка 1.13");
 }
 public DataTable AddNewAccount(Account account)
 {
     if (ExecuteQuery(
                 @"INSERT INTO steamusers (user_name, user_password, available)  VALUES('"
                 + account.user_name + "', '"
                 + account.user_password + "', '"
                 + account.available + "')"))
     {
         CreateSystemMessage("Был добавлен новый аккаунт");
         var result = SearchUserLogin(account.user_name);
         return result;
     }
     else
     {
         CreateSystemMessage("Ошибка 1.10");
         return null;
     }
 }
        public Account GetFirstFreeAccount(string holder, string compName)
        {
            var dt = GetQueryResult("select * from steam_accounts where available=1 order by id");

            var rand = new Random();
            var i = rand.Next(0, dt.Rows.Count);
            var account = new Account(0)
            {
                id = int.Parse(dt.Rows[i][0].ToString())
            };
            ChangeAccountStatus(account.id, holder, compName, 0);
            account.user_name = dt.Rows[i][1].ToString();
            account.user_password = dt.Rows[i][2].ToString();
            account.available = 0;
            account.computer = compName;
            return account;
        }
 public List<Account> get_accounts_reserved_for_me(string title)
 {
     var dt = get_accounts_taken_by(title);
     var result = new List<Account>(0);
     foreach (DataRow row in dt.Rows)
     {
         var account = new Account(0)
         {
             id = int.Parse(row[0].ToString()),
             user_name = row[1].ToString(),
             user_password = row[2].ToString(),
             available = 1,
             computer = "",
             center_owner = title,
             center_holder = ""
         };
         result.Add(account);
     }
     return result;
 }