コード例 #1
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);
            }
        }
コード例 #2
0
        public TestArticles(MainWindow mainWindow, Classes.User user, Classes.Test test)
        {
            this.mainWindow = mainWindow;
            this.user       = user;
            this.test       = test;

            InitializeComponent();

            txbNameTest.Text         = test.Name.ToString();
            txbNameTest.TextWrapping = TextWrapping.Wrap;

            string testArticles = "TEST_ARTICLES_TESTS";

            try
            {
                using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                {
                    sqlConnection.Open();
                    SqlCommand testArticlesCommand = new SqlCommand(testArticles, sqlConnection);
                    testArticlesCommand.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlParameter testIdParameter = new SqlParameter
                    {
                        ParameterName = "@test_Id",
                        Value         = test.idTest
                    };
                    testArticlesCommand.Parameters.Add(testIdParameter);
                    SqlDataReader readerQuestion = testArticlesCommand.ExecuteReader();

                    if (readerQuestion.HasRows)
                    {
                        while (readerQuestion.Read())
                        {
                            Classes.CreateTests createTest = new Classes.CreateTests();
                            createTest.NameTest       = readerQuestion.GetValue(0);
                            createTest.IdQuestion     = readerQuestion.GetValue(1);
                            createTest.NumberQuestion = readerQuestion.GetValue(2);
                            createTest.Question       = readerQuestion.GetValue(3);
                            createTests.Add(createTest);
                        }
                    }
                    readerQuestion.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


            try
            {
                for (int i = 0; i < createTests.Count; i++)
                {
                    Grid grid = new Grid();

                    grid.Height = 170;

                    TextBlock txbNumberQuestion = new TextBlock();
                    //txbNumberQuestion.Text = createTests[i].NumberQuestion.ToString() + ".";
                    txbNumberQuestion.Text     = (i + 1).ToString() + ".";
                    txbNumberQuestion.FontSize = 30;
                    txbNumberQuestion.Margin   = new Thickness(10, 20, 10, 20);

                    grid.Children.Add(txbNumberQuestion);

                    Border border = new Border();
                    border.Height            = 90;
                    border.Margin            = new Thickness(60, 20, 60, 20);
                    border.VerticalAlignment = VerticalAlignment.Top;
                    border.CornerRadius      = new CornerRadius(15);
                    border.BorderThickness   = new Thickness(1);
                    border.BorderBrush       = new SolidColorBrush(Colors.Black);

                    TextBlock txbQuestion = new TextBlock();
                    txbQuestion.Text         = createTests[i].Question.ToString();
                    txbQuestion.Margin       = new Thickness(5, 0, 0, 0);
                    txbQuestion.FontSize     = 30;
                    txbQuestion.TextWrapping = TextWrapping.Wrap;

                    border.Child = txbQuestion;

                    StackPanel stackPanel = new StackPanel();
                    stackPanel.Orientation = Orientation.Horizontal;
                    stackPanel.Margin      = new Thickness(60, 130, 0, 0);

                    //получаем ответы по вопросу
                    string articlesAnswer = "TEST_ARTICLES_ANSWERS ";


                    List <string> answers = new List <string>();
                    try
                    {
                        using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                        {
                            sqlConnection.Open();

                            SqlCommand articlesAnswerCommand = new SqlCommand(articlesAnswer, sqlConnection);
                            articlesAnswerCommand.CommandType = System.Data.CommandType.StoredProcedure;
                            SqlParameter qustionParameter = new SqlParameter
                            {
                                ParameterName = "@question",
                                Value         = createTests[i].Question
                            };
                            articlesAnswerCommand.Parameters.Add(qustionParameter);

                            SqlDataReader readerAnswer = articlesAnswerCommand.ExecuteReader();

                            if (readerAnswer.HasRows)
                            {
                                while (readerAnswer.Read())
                                {
                                    answers.Add(readerAnswer.GetValue(0).ToString());
                                }
                            }
                            readerAnswer.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                    answers = answers.OrderBy(a => Guid.NewGuid()).ToList();
                    for (int j = 0; j < answers.Count; j++)
                    {
                        RadioButton radioButton1 = new RadioButton();
                        radioButton1.Content  = answers[j].ToString();
                        radioButton1.FontSize = 18;
                        radioButton1.Margin   = new Thickness(20, 0, 0, 0);
                        radioButton1.Padding  = new Thickness(10, -3, 0, 0);
                        stackPanel.Children.Add(radioButton1);
                    }

                    grid.Children.Add(border);
                    grid.Children.Add(stackPanel);

                    stkPQuestion.Children.Add(grid);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
コード例 #3
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);
                }
            }
        }