/*
         * Функция нахождения ключа экстремистской фразы в словаре.
         * extremistPhrase - исходная экстремистская фраза.
         * connection - соединение с базой данных.
         */
        private string SearchExtremistPhraseID(ExtremistPhrase extremistPhrase, MicrosoftSQLConnection connection)
        {
            string typeID  = Convert.ToString(ExtremistTypes().IndexOf(extremistPhrase.typePhrase) + 1);
            string element = "phrase = N'" + extremistPhrase.phrase +
                             "' AND type_id = " + typeID;

            return(connection.SearchIDTableElement(VOCABULARY_NAME, element));
        }
        /*
         * Переопределение функции сравнения двух объектов класса ExtremistPhrase.
         */
        public override bool Equals(object obj)
        {
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }
            ExtremistPhrase extremistPhrase = (ExtremistPhrase)obj;

            return((this.phrase == extremistPhrase.phrase) &&
                   (this.typePhrase == extremistPhrase.typePhrase));
        }
        /// <summary>
        /// Обработчик нажатия кнопки "Удалить" для удаления экстремисткого выражения из базы данных
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonDeleteWordDB_Click(object sender, EventArgs e)
        {
            ExtremistPhrase phrase = phraseVocabulary.phrases[dataGridViewSourse.CurrentRow.Index];

            if (phraseVocabulary.DeleteExtremistPhrase(phrase))
            {
                UpdateTablePhraseVocabulary();
                MessageBox.Show("Фраза успешно удалена из базы данных.", "Сообщение об удалении фразы");
            }
            else
            {
                MessageBox.Show("Невозможно удалить фразу.", "Сообщение об удалении фразы");
            }
        }
 /*
  * Функция удаления экстремистской фразы из словаря.
  * deleteExtremistPhrase - экстремистская фраза, которая удаляется из словаря.
  */
 public bool DeleteExtremistPhrase(ExtremistPhrase deleteExtremistPhrase)
 {
     if (SearchExtremistPhrase(deleteExtremistPhrase))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool deleteElement = false;
         if (connection.IsOpenConnection())
         {
             string IDElement = "phrase_id = " + SearchExtremistPhraseID(deleteExtremistPhrase, connection);
             deleteElement = connection.DeleteTableElement(VOCABULARY_NAME, IDElement);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(deleteElement);
     }
     else
     {
         return(false);
     }
 }
 /// <summary>
 /// Обработчик нажатия кнопки "Изменить" для изменения экстремисткого выражения в базе данных
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonUpdateWordDB_Click(object sender, EventArgs e)
 {
     if (richTextBoxWord.Text == "")
     {
         MessageBox.Show("Ошибка изменения записи в базе данных! Введите в пустое поле фразу и попробуйте еще раз.", "Сообщение об ошибке");
     }
     else
     {
         ExtremistPhrase enterPhrase = new ExtremistPhrase(richTextBoxWord.Text,
                                                           phraseVocabulary.ExtremistTypes()[comboBoxExtrimism.SelectedIndex]);
         ExtremistPhrase updatePhrase = phraseVocabulary.phrases[dataGridViewSourse.CurrentRow.Index];
         if (phraseVocabulary.UpdateExtremistPhrase(enterPhrase, updatePhrase))
         {
             UpdateTablePhraseVocabulary();
             MessageBox.Show("Фраза успешно изменена в базе данных.", "Сообщение об изменении фразы");
         }
         else
         {
             MessageBox.Show("Невозможно изменить фразу.", "Сообщение об изменении фразы");
         }
     }
 }
 /*
  * Функция добавления новой экстремистской фразы в словарь.
  * addExtremistPhrase - экстремистская фраза, которую необходимо добавить в словарь.
  */
 public bool AddExtremistPhrase(ExtremistPhrase addExtremistPhrase)
 {
     if (!SearchExtremistPhrase(addExtremistPhrase))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool addElement = false;
         if (connection.IsOpenConnection())
         {
             string typeID = Convert.ToString(ExtremistTypes().IndexOf(addExtremistPhrase.typePhrase) + 1);
             string values = "(SELECT 1 + MAX(phrase_id) FROM " + VOCABULARY_NAME +
                             "), N'" + addExtremistPhrase.phrase + "', " + typeID;
             addElement = connection.AddTableElement(VOCABULARY_NAME, values);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(addElement);
     }
     else
     {
         return(false);
     }
 }
 /*
  * Функция изменения экстремистской фразы в словаре.
  * enterExtremistPhrase - экстремистская фраза, на которую изменяется исходная фраза.
  * updateExtremistPhrase - экстремистская фраза, которая изменяется в словаре.
  */
 public bool UpdateExtremistPhrase(ExtremistPhrase enterExtremistPhrase, ExtremistPhrase updateExtremistPhrase)
 {
     if (SearchExtremistPhrase(updateExtremistPhrase))
     {
         MicrosoftSQLConnection connection = new MicrosoftSQLConnection();
         bool updateElement = false;
         if (connection.IsOpenConnection())
         {
             string typeID = Convert.ToString(ExtremistTypes().IndexOf(enterExtremistPhrase.typePhrase) + 1);
             string set    = "phrase = N'" + enterExtremistPhrase.phrase +
                             "', type_id = " + typeID;
             string IDElement = "phrase_id = " + SearchExtremistPhraseID(updateExtremistPhrase, connection);
             updateElement = connection.UpdateTableElement(VOCABULARY_NAME, set, IDElement);
         }
         connection.CloseConnection();
         LoadVocabulary();
         return(updateElement);
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// Обработчик нажатия кнопки "Добавить" для добавления экстремисткого выражения в базу данных
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAddWordBD_Click(object sender, EventArgs e)
        {
            string text = "Введите слово(фразу)";

            if (richTextBoxWord.Text == text)
            {
                MessageBox.Show("Ошибка добавления в базу данных! Введите в пустое поле фразу и попробуйте еще раз.", "Сообщение об ошибке");
            }
            else
            {
                ExtremistPhrase phrase = new ExtremistPhrase(richTextBoxWord.Text,
                                                             phraseVocabulary.ExtremistTypes()[comboBoxExtrimism.SelectedIndex]);
                if (phraseVocabulary.AddExtremistPhrase(phrase))
                {
                    UpdateTablePhraseVocabulary();
                    AddPhraseCheckBox.Checked = false;
                    MessageBox.Show("Фраза успешно добавлена в базу данных.", "Сообщение об добавлении фразы");
                }
                else
                {
                    MessageBox.Show("Фраза уже существует в базе данных.", "Сообщение об добавлении фразы");
                }
            }
        }
 /*
  * Функция, которая проверяет, существует ли экстремистская фраза в словаре.
  * searchExtremistPhrase - экстремистская фраза, которая проверяется на существование в словаре.
  */
 private bool SearchExtremistPhrase(ExtremistPhrase searchExtremistPhrase)
 {
     return(phrases.IndexOf(searchExtremistPhrase) >= 0);
 }