Esempio n. 1
0
        private void NewTheme_Selected(object sender, RoutedEventArgs e)
        {
            listTests.Items.Clear();
            SelectedTheme = ((ListBoxItem)sender).Content.ToString();
            string getTestsTests = "GET_TESTS_FOR_TEST";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                Classes.Theme currentTheme         = themes.Where(t => t.NameTheme.ToString() == SelectedTheme).First();
                SqlCommand    getTestsTestsCommand = new SqlCommand(getTestsTests, connection);
                getTestsTestsCommand.CommandType = System.Data.CommandType.StoredProcedure;
                SqlParameter themeIdParameter = new SqlParameter
                {
                    ParameterName = "@theme_Id",
                    Value         = currentTheme.IdTheme
                };
                getTestsTestsCommand.Parameters.Add(themeIdParameter);
                SqlDataReader reader = getTestsTestsCommand.ExecuteReader();

                while (reader.Read())
                {
                    ListViewItem test = new ListViewItem();
                    test.Content   = reader.GetValue(2).ToString();
                    test.Selected += NewTest_Selected;
                    listTests.Items.Add(test);
                }
                reader.Close();
            }
        }
Esempio n. 2
0
        public CreatorTests()
        {
            InitializeComponent();

            string getThemesForTests = "GET_THEME_FOR_TEST ";


            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();

                    SqlCommand getThemes = new SqlCommand(getThemesForTests, connection);
                    getThemes.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlDataReader reader1 = getThemes.ExecuteReader();

                    if (reader1.HasRows)
                    {
                        while (reader1.Read())
                        {
                            Classes.Theme newTheme = new Classes.Theme();
                            newTheme.IdTheme   = reader1.GetValue(0);
                            newTheme.NameTheme = reader1.GetValue(1).ToString();

                            themes.Add(newTheme);


                            ListViewItem theme = new ListViewItem();
                            theme.Content   = newTheme.NameTheme;
                            theme.Selected += NewTheme_Selected;
                            listThemes.Items.Add(theme);
                        }
                    }
                    reader1.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
Esempio n. 3
0
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (themeInBD != null && testInBD != null && questionInDB != null && listAnswerInDB != null)
                {
                    //если не ввожу значения, то беру из выбранных
                    if (themeInBD.NameTheme == null || testInBD.Name == null)
                    {
                        themeInBD.NameTheme = SelectedTheme;
                        testInBD.Name       = SelectedTest;
                    }

                    bool flagSave    = false; //проверка, можно ли сохранить в бд!
                    int  countAnswer = 0;     //проверка, есть ли все ответы!


                    if (themeInBD.NameTheme.ToString() != String.Empty && testInBD.Name.ToString() != String.Empty && questionInDB.SomeQuestion.ToString() != String.Empty && listAnswerInDB.Count == 3)
                    {
                        for (int i = 0; i < listAnswerInDB.Count; i++)
                        {
                            if (listAnswerInDB[i].SomeAnswer.ToString() != String.Empty)
                            {
                                countAnswer++;
                            }
                        }
                        if (countAnswer == 3)
                        {
                            flagSave = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Все составляющие долны быть заполнены!");
                        return;
                    }

                    //если всё классно, все объекты заполнены, то я начинаю их сохранять в бд
                    if (flagSave)
                    {
                        using (SqlConnection connection = new SqlConnection(connectionString))
                        {
                            try
                            {
                                connection.Open();


                                SqlTransaction transaction = connection.BeginTransaction();//Транзакции
                                try
                                {
                                    SqlCommand command = connection.CreateCommand();
                                    command.Transaction = transaction;
                                    command.CommandType = System.Data.CommandType.StoredProcedure;
                                    //Объект с которым буду работать и флаг(есть ли такая тема в бд)
                                    Classes.Theme theme     = new Classes.Theme();
                                    bool          flagTheme = false;


                                    command.CommandText = "GET_THEME_FOR_TEST";

                                    SqlDataReader readerTheme1 = command.ExecuteReader();

                                    if (readerTheme1.HasRows)
                                    {
                                        while (readerTheme1.Read())
                                        {
                                            if (SelectedTheme == readerTheme1.GetValue(1).ToString())
                                            {
                                                //заполняю выше созданный объект и устанавливаю флаг(что есть такая тема в бд)
                                                flagTheme       = true;
                                                theme.IdTheme   = readerTheme1.GetValue(0);
                                                theme.NameTheme = readerTheme1.GetValue(1);
                                                break;
                                            }
                                        }
                                    }
                                    readerTheme1.Close();


                                    if (flagTheme)
                                    {
                                        MessageBox.Show("К существующей теме добавляется информация!");
                                    }
                                    else
                                    {
                                        MessageBox.Show("Выберите одну из тем");
                                        return;
                                    }

                                    command.CommandText = "GET_TESTS_TEST";
                                    command.CommandType = System.Data.CommandType.StoredProcedure;
                                    SqlDataReader readerTest1 = command.ExecuteReader();

                                    Classes.Test test     = new Classes.Test();
                                    bool         flagTest = false;

                                    if (readerTest1.HasRows)
                                    {
                                        while (readerTest1.Read())
                                        {
                                            if (SelectedTest == readerTest1.GetValue(2).ToString())
                                            {
                                                flagTest     = true;
                                                test.idTest  = readerTest1.GetValue(0);
                                                test.idAdmin = readerTest1.GetValue(1);
                                                test.Name    = readerTest1.GetValue(2).ToString();
                                                test.IdTheme = readerTest1.GetValue(3);
                                                break;
                                            }
                                        }
                                    }
                                    readerTest1.Close();

                                    if (!flagTest)
                                    {
                                        // Добавить команду добавления теста
                                        numberQuestion = 1;
                                        SqlCommand addTestsCommand = new SqlCommand("Add_TESTS", connection);
                                        addTestsCommand.Transaction = transaction;
                                        addTestsCommand.CommandType = System.Data.CommandType.StoredProcedure;

                                        // Передаем параметры и значения
                                        SqlParameter nameTestParameter = new SqlParameter
                                        {
                                            ParameterName = "@name_test",
                                            Value         = testInBD.Name
                                        };

                                        SqlParameter adminIdParameter = new SqlParameter
                                        {
                                            ParameterName = "@admin_id",
                                            Value         = Admin.getInstance().Id
                                        };

                                        SqlParameter themeIdParameter = new SqlParameter
                                        {
                                            ParameterName = "@theme_Id",
                                            Value         = theme.IdTheme
                                        };

                                        // Добавляем парраметры
                                        addTestsCommand.Parameters.Add(nameTestParameter);
                                        addTestsCommand.Parameters.Add(adminIdParameter);
                                        addTestsCommand.Parameters.Add(themeIdParameter);
                                        addTestsCommand.ExecuteNonQuery();
                                    }
                                    else
                                    {
                                        MessageBox.Show("К существующему тесту добавляем информацию!");
                                    }


                                    SqlCommand getAllTestsCommand = new SqlCommand("GET_TESTS_TEST", connection);
                                    getAllTestsCommand.Transaction = transaction;
                                    getAllTestsCommand.CommandType = System.Data.CommandType.StoredProcedure;
                                    SqlDataReader readerTest2 = getAllTestsCommand.ExecuteReader();

                                    if (readerTest2.HasRows)
                                    {
                                        while (readerTest2.Read())
                                        {
                                            if (SelectedTest == readerTest2.GetValue(2).ToString())
                                            {
                                                test.idTest  = readerTest2.GetValue(0);
                                                test.idAdmin = readerTest2.GetValue(1);
                                                test.Name    = readerTest2.GetValue(2).ToString();
                                                test.IdTheme = readerTest2.GetValue(3);
                                                break;
                                            }
                                        }
                                    }
                                    readerTest2.Close();

                                    //--------------------------------------------------------------------------------------------------------------------------

                                    SqlCommand getTestQuestionsCommand = new SqlCommand("GET_QUESTIONS", connection);
                                    getTestQuestionsCommand.Transaction = transaction;
                                    getTestQuestionsCommand.CommandType = System.Data.CommandType.StoredProcedure;
                                    SqlDataReader readerQuestion1 = getTestQuestionsCommand.ExecuteReader();

                                    Classes.Question question     = new Classes.Question();
                                    bool             flagQuestion = false; //проверка, есть ли вопросы в бд

                                    if (readerQuestion1.HasRows)
                                    {
                                        while (readerQuestion1.Read())
                                        {
                                            if (SelectedQuestion == readerQuestion1.GetValue(2).ToString())
                                            {
                                                flagQuestion            = true;
                                                question.IdQuestion     = readerQuestion1.GetValue(0);
                                                question.IdTest         = readerQuestion1.GetValue(1);
                                                question.NumberQuestion = readerQuestion1.GetValue(2);
                                                question.SomeQuestion   = readerQuestion1.GetValue(3);
                                                break;
                                            }
                                        }
                                    }
                                    readerQuestion1.Close();

                                    if (!flagQuestion)
                                    {
                                        SqlCommand addQuestionsCommand = new SqlCommand("Add_QUESTIONS", connection);
                                        addQuestionsCommand.Transaction = transaction;
                                        addQuestionsCommand.CommandType = System.Data.CommandType.StoredProcedure;

                                        // Передаем параметры и значения
                                        SqlParameter testIdParameter = new SqlParameter
                                        {
                                            ParameterName = "@test_Id",
                                            Value         = (int)test.idTest
                                        };

                                        SqlParameter numberQuestionParameter = new SqlParameter
                                        {
                                            ParameterName = "@number_question",
                                            Value         = numberQuestion
                                        };

                                        SqlParameter questionParameter = new SqlParameter
                                        {
                                            ParameterName = "@question",
                                            Value         = questionInDB.SomeQuestion
                                        };
                                        // Добавляем парраметры
                                        addQuestionsCommand.Parameters.Add(testIdParameter);
                                        addQuestionsCommand.Parameters.Add(numberQuestionParameter);
                                        addQuestionsCommand.Parameters.Add(questionParameter);
                                        addQuestionsCommand.ExecuteNonQuery();
                                        numberQuestion++;
                                    }
                                    else
                                    {
                                        MessageBox.Show("Такой вопрос уже есть!");
                                        return;
                                    }

                                    SqlDataReader readerQuestion2 = getTestQuestionsCommand.ExecuteReader();

                                    bool isQuestion = false;
                                    if (readerQuestion2.HasRows)
                                    {
                                        while (readerQuestion2.Read())
                                        {
                                            if (SelectedQuestion == readerQuestion2.GetValue(3).ToString())
                                            {
                                                isQuestion              = true;
                                                question.IdQuestion     = readerQuestion2.GetValue(0);
                                                question.IdTest         = readerQuestion2.GetValue(1);
                                                question.NumberQuestion = readerQuestion2.GetValue(2);
                                                question.SomeQuestion   = readerQuestion2.GetValue(3);
                                                break;
                                            }
                                        }
                                    }
                                    readerQuestion2.Close();

                                    //--------------------------------------------------------------------------------------------------------------------------

                                    if (isQuestion)
                                    {
                                        SqlCommand addAnswerCommandOne = new SqlCommand("Add_ANSWER ", connection);
                                        addAnswerCommandOne.Transaction = transaction;
                                        addAnswerCommandOne.CommandType = System.Data.CommandType.StoredProcedure;
                                        // Передаем параметры и значения
                                        SqlParameter answerParameter = new SqlParameter
                                        {
                                            ParameterName = "@answer",
                                            Value         = listAnswerInDB[0].SomeAnswer
                                        };

                                        SqlParameter isRightParameter = new SqlParameter
                                        {
                                            ParameterName = "@is_right",
                                            Value         = 1
                                        };

                                        SqlParameter questionIdParameter = new SqlParameter
                                        {
                                            ParameterName = "@question_Id",
                                            Value         = question.IdQuestion
                                        };
                                        // Добавляем парраметры
                                        addAnswerCommandOne.Parameters.Add(answerParameter);
                                        addAnswerCommandOne.Parameters.Add(isRightParameter);
                                        addAnswerCommandOne.Parameters.Add(questionIdParameter);

                                        addAnswerCommandOne.ExecuteNonQuery();

                                        answerParameter.Value  = listAnswerInDB[1].SomeAnswer;
                                        isRightParameter.Value = 0;

                                        addAnswerCommandOne.ExecuteNonQuery();

                                        answerParameter.Value = listAnswerInDB[2].SomeAnswer;

                                        addAnswerCommandOne.ExecuteNonQuery();

                                        transaction.Commit();
                                    }

                                    MessageBox.Show("Добавление прошло успешно!");
                                    listQuestions.Items.Remove(listQuestions.SelectedItem);
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message);
                                    transaction.Rollback();
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Все составляющие должны быть заполнены!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 4
0
        public Topics(MainWindow mainWindow, Classes.User user)
        {
            this.user       = user;
            this.mainWindow = mainWindow;
            InitializeComponent();

            string sqlExpressionTheme = "GET_THEME_FOR_TEST";
            string sqlExpressionTest  = "GET_TESTS_TEST ";

            using (SqlConnection sqlConnection = new SqlConnection(connectionString))
            {
                sqlConnection.Open();
                SqlCommand sqlCommandTheme = new SqlCommand(sqlExpressionTheme, sqlConnection);
                sqlCommandTheme.CommandType = System.Data.CommandType.StoredProcedure;
                SqlDataReader readerTheme = sqlCommandTheme.ExecuteReader();

                if (readerTheme.HasRows)
                {
                    while (readerTheme.Read())
                    {
                        Classes.Theme theme = new Classes.Theme();
                        theme.IdTheme   = readerTheme.GetValue(0);
                        theme.NameTheme = readerTheme.GetValue(1);
                        themes.Add(theme);
                    }
                }
                readerTheme.Close();

                SqlCommand sqlCommand = new SqlCommand(sqlExpressionTest, sqlConnection);
                sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
                SqlDataReader readerTest = sqlCommand.ExecuteReader();


                if (readerTest.HasRows)
                {
                    while (readerTest.Read())
                    {
                        Classes.Test test = new Classes.Test();
                        test.idTest  = readerTest.GetValue(0);
                        test.Name    = readerTest.GetValue(2).ToString();
                        test.IdTheme = readerTest.GetValue(3);
                        tests.Add(test);
                    }
                }
                readerTest.Close();
                for (int i = 0; i < themes.Count; i++)
                {
                    Expander expander = new Expander();
                    expander.Header     = themes[i].NameTheme;
                    expander.Background = new SolidColorBrush(Colors.White);
                    expander.Foreground = new SolidColorBrush(Colors.DodgerBlue);



                    ListView listView = new ListView();
                    listView.SelectionChanged += Test_SelectionChanged;
                    for (int j = 0; j < tests.Count; j++)
                    {
                        if (themes[i].IdTheme.ToString() == tests[j].IdTheme.ToString())
                        {
                            listView.FontSize = 15;
                            listView.Margin   = new Thickness(10);

                            listView.Background = new SolidColorBrush(Colors.White);
                            listView.Foreground = new SolidColorBrush(Colors.DodgerBlue);
                            listView.Items.Add(tests[j].Name.ToString());
                        }
                    }
                    expander.Content = listView;
                    stkP.Children.Add(expander);
                }
            }
        }