//Обработчик события нажатия на кнопку "Удалить учетную запись"
        private void BtnRemove_Click(object sender, RoutedEventArgs e)
        {
            object o;

            //Проверка не выполнен ли выбор пользователь для удаления
            if (dgUsersAccounts.SelectedIndex == -1)
            {
                MessageBox.Show("Выберите пользователя для удаления");
            }
            //Если пользователь выбран
            else if (SQLCon.ExecuteScalar("SELECT COUNT(*) FROM tblAccounts WHERE IsAdmin='True'", out o))
            {
                //Если выбран-пользователь администратор для удаления и он один
                if (lstaccounts[dgUsersAccounts.SelectedIndex].Type == "Администратор" && (int)o == 1)
                {
                    MessageBox.Show("Вы не можете удалить эту учетную запись, так как это единственная учетная запись администратора.");
                }
                //Если выбран пользователь или существует несколько администраторов
                else if (MessageBox.Show("Вы действительно хотите удалить эту учетную запись?", "Удаление", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    //Удаление записи о пользователе в БД
                    string userName = lstaccounts[dgUsersAccounts.SelectedIndex].Name;
                    SQLCon.ExecuteScalar($"DELETE FROM tblAccounts WHERE UserName='******'");
                    //Удаление из списка lstaccounts пользователя
                    lstaccounts.RemoveAt(dgUsersAccounts.SelectedIndex);
                    dgUsersAccounts.Items.Refresh();
                }
            }
        }
 //Метод для добавления всех найденных пользователей из БД в DataGrid
 private void AddAccounts()
 {
     dgUsersAccounts.ItemsSource = lstaccounts;
     //Получение значений из таблицы БД
     foreach (DataRow row in SQLCon.GetDateTable("SELECT UserName, IsAdmin FROM tblAccounts").Rows)
     {
         if (!(bool)row["IsAdmin"])
         {
             lstaccounts.Add(new Account(row["UserName"] as string, "Пользователь"));
         }
         else
         {
             lstaccounts.Add(new Account(row["UserName"] as string, "Администратор"));
         }
     }
 }
        /// <summary>
        ///Событие нажатия на кнопку окна "Вход"
        /// </summary>
        private void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            //Проверка корректности введеного логина
            if (!User.IsCorrectName(tbxUserName.Text, out string message))
            {
                MessageBox.Show(message);
                tbxUserName.Focus();
            }
            //Проверка введен ли пароль
            else if (string.IsNullOrEmpty(pbxPassword.Password))
            {
                MessageBox.Show("Введите пароль!");
                pbxPassword.Focus();
            }

            else
            {
                //Проверка подключения к БД
                if (!SQLCon.ConnectToDatabase())
                {
                    Close();
                }

                //Получим хэш-пароль, применив алгоритм ГОСТ 34.11-2012
                byte[] password     = Encoding.GetEncoding(1251).GetBytes(pbxPassword.Password);
                GOST   o            = new GOST(512 /*256*/);
                byte[] hash_code    = o.H(password);
                string hashpassword = BitConverter.ToString(hash_code);

                //Получаем таблицу с учетными данными пользователя из БД, где найдутся такой логин и пароль в одной строке
                DataTable dateTable = SQLCon.GetDateTable($"SELECT * FROM tblAccounts WHERE UserName='******' AND Password='******';");
                if (dateTable != null && dateTable.Rows.Count != 0)
                {
                    User.Name     = dateTable.Rows[0]["UserName"] as string;
                    User.Password = dateTable.Rows[0]["Password"] as string;
                    User.IsAdmin  = (bool)dateTable.Rows[0]["IsAdmin"];
                    AccessWindow accessWindow = new AccessWindow();
                    Close();
                    accessWindow.ShowDialog();
                    //MessageBox.Show("Доступ разрешен.");
                }
                else
                {
                    MessageBox.Show("Доступ запрещен. Введен невенрный логин или пароль.");
                }
            }
        }
        public MainWindow()
        {
            InitializeComponent();
            if (!SQLCon.ConnectToDatabase())
            {
                Close();
            }

            //Если в таблице аккаунтов нет записей (т.е. самый первый вход), то переход на окно регистрации администратора
            //"SELECT COUNT(*) FROM tblAccounts"-запрос на количество всех записей в таблице
            if (SQLCon.ExecuteScalar("SELECT COUNT(*) FROM tblAccounts", out object o) && (int)o == 0)
            {
                Registration startWindow = new Registration(true, false);
                startWindow.ShowDialog();
                if (!startWindow.Success)
                {
                    Close();
                }
            }
        }
        //Обработчик события нажатия на кнопку "Зарегистрировать"/"Изменить пароль"
        private void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            object o;

            //Проверка на заполненость всех полей ввода
            if (!IsChangePassword && !User.IsCorrectName(tbxName.Text, out string message))
            {
                MessageBox.Show(message);
                tbxName.Focus();
            }
            else if (string.IsNullOrEmpty(pbxPassword1.Password))
            {
                MessageBox.Show("Введите пароль!");
                pbxPassword1.Focus();
            }
            else if (string.IsNullOrEmpty(pbxPassword2.Password))
            {
                MessageBox.Show("Повторите пароль!");
                pbxPassword1.Focus();
            }
            //Проверка на совпадение введенных паролей
            else if (pbxPassword1.Password != pbxPassword2.Password)
            {
                MessageBox.Show("Пароли не совпадают!");
                pbxPassword1.Focus();
            }

            //Если пройдены все предварительные проверки, выполнение регистрации
            else if (SQLCon.ExecuteScalar($"SELECT COUNT(*) FROM tblAccounts WHERE UserName='******'", out o))
            {
                //Проверка на наличие в БД пользователя с таким же логином(по sql-запросу выше)
                if (!IsChangePassword && (int)o != 0)
                {
                    MessageBox.Show("Пользователь с таким именем уже существует.");
                }
                else
                {
                    //Получим хэш-пароль, применив алгоритм ГОСТ 34.11-2012
                    byte[] password     = Encoding.GetEncoding(1251).GetBytes(pbxPassword1.Password);
                    GOST   g            = new GOST(512 /*256*/);
                    byte[] hash_code    = g.H(password);
                    string hashpassword = BitConverter.ToString(hash_code);

                    //Запись учет.данных администратора/пользователя в таблицу БД
                    if (!IsChangePassword && (int)o == 0)
                    {
                        if (SQLCon.ExecuteScalar($"INSERT INTO tblAccounts (UserName, Password, IsAdmin) VALUES ('{tbxName.Text}', '{hashpassword}', '{AsAdmin}')"))
                        {
                            MessageBox.Show("Регистрация успешно завершена.");
                            Success = true;
                            Close();
                        }
                    }
                    //Изменение хэш-кода пароля в БД на новый
                    else if (IsChangePassword)
                    {
                        if (hashpassword == User.Password)
                        {
                            MessageBox.Show("Введенный пароль совпадает с текущим. Необходимо ввести новый пароль");
                        }
                        else
                        {
                            SQLCon.ExecuteScalar(string.Format("UPDATE tblAccounts SET Password='******' WHERE [UserName]='{1}'", hashpassword, User.Name));
                            User.Password = hashpassword;
                            MessageBox.Show("Пароль изменен.");
                            Success = true;
                            MainWindow mainWindow = new MainWindow();
                            Close();
                            mainWindow.Show();
                        }
                    }
                }
            }
        }