private void buttonOk_Click(object sender, RoutedEventArgs e)
        {
            using (DBWokrSql db = new DBWokrSql(Connection))
                try
                {
                    switch (TYPE_)
                    {
                        case AuthType.Enter:

                            int id = db.GetIDAdmin(textBoxLogin.Text, textBoxPassword.Text);

                            Login = textBoxLogin.Text;

                            if (id > 0)
                                this.DialogResult = true;
                            else
                                this.DialogResult = false;
                            break;
                        case AuthType.Add:

                            if (db.AddAdmin(textBoxLogin.Text, textBoxPassword.Text, Father_) < 0)
                            { MessageBox.Show("Користувач з таким ім'ям вже існує, спробуйте ще.", "Увага"); return; }

                            MessageBox.Show(string.Format("Користувач {0} з паролем {1} доданий.",  textBoxLogin.Text,  textBoxPassword.Text), "");

                            break;

                        case AuthType.Update:

                            int idAdmin = db.GetIDAdmin(original.Login);

                            db.UpdateAdmin(idAdmin, textBoxLogin.Text, textBoxPassword.Text);

                            MessageBox.Show(string.Format("Логін {0} змінений на {1}\n Пароль {2} змінений на {3}", original.Login.PadRight(10), textBoxLogin.Text.PadRight(10), original.Password.PadRight(10), textBoxPassword.Text.PadRight(10)), "");

                            break;
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message, "Увага"); }

            this.Close();
        }
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                using (DBWokrSql db = new DBWokrSql(Connection))
                {
                    switch (Type_)
                    {
                        case TypeForm.Admin:
                            e.Result = db.GetAdmins();
                            break;
                        case TypeForm.Users:
                            e.Result = db.GetStatisticUsers();
                            break;
                        case TypeForm.User:
                            e.Result = db.GetTickets(Id_user);
                            break;
                    }

                    e.Cancel = false;

                }
            }
            catch (Exception ex)
            {
                e.Cancel = false;
                e.Result = "Не має зв`язку з базою: " + ex.Message;
            }
        }
        private void TextInput(string text = "")
        {
            if (Type_ != TypeForm.Users) return;

            IEnumerable<object> data = new object[0];
            using (DBWokrSql db = new DBWokrSql(Connection))
            {
                data = db.GetStatisticUsersLike(textBox.Text + text);
            }

            listView.Items.Clear();

            foreach (var item in data)
                listView.Items.Add(item);

            label.Content = "Знайдено :" + listView.Items.Count;
        }
        private void SelectUser()
        {
            if (listView.SelectedItem == null) { MessageBox.Show("Спочатку треба обрати елемент у таблиці", "Увага"); return; }

            if (listView.SelectedItem is Users)
            {
                    Users user = listView.SelectedItem as Users;
                    int id = 0;
                    using (DBWokrSql db = new DBWokrSql(Connection))
                        id = db.GetIdUser(user.Fname, user.Lname);
                    WindowStatistic ws = new WindowStatistic(TypeForm.User, Connection, CurrentAdmin, id);
                    ws.ShowDialog();

            }
            else
                if(listView.SelectedItem is Ticket)
            {
                Ticket ticket = listView.SelectedItem as Ticket;

                WindowTicket wt = new WindowTicket(Connection, ticket.ID);

                wt.ShowDialog();
            }
        }
        private void lo_Loaded(object sender, RoutedEventArgs e)
        {
            // ButtonRemove
            {
                Grid newGrid = new Grid() { Margin = new Thickness(5) };
                buttonRemove.Content = newGrid;
                newGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
                Image newImage = new Image() { };
                newGrid.Children.Add(newImage);
                newImage.Source = new BitmapImage(new Uri("bin/Resource/Delete.ico", UriKind.Relative)) { CreateOptions = BitmapCreateOptions.IgnoreImageCache };
                Grid.SetRow(newImage, 0);
            }
            // ButtonAdd
            {
                Grid newGrid = new Grid() { Margin = new Thickness(5) };
                buttonAdd.Content = newGrid;
                newGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
                Image newImage = new Image() { };
                newGrid.Children.Add(newImage);
                newImage.Source = new BitmapImage(new Uri("bin/Resource/Add.ico", UriKind.Relative)) { CreateOptions = BitmapCreateOptions.IgnoreImageCache };
                Grid.SetRow(newImage, 0);
            }

            // ButtonDetail
            {
                Grid newGrid = new Grid() { Margin = new Thickness(5) };
                buttonChange.Content = newGrid;
                newGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
                Image newImage = new Image() { };
                newGrid.Children.Add(newImage);
                newImage.Source = new BitmapImage(new Uri("bin/Resource/Change.png", UriKind.Relative)) { CreateOptions = BitmapCreateOptions.IgnoreImageCache };
                Grid.SetRow(newImage, 0);
            }

            switch (Type_)
            {
                case TypeForm.Admin:
                    {
                        #region
                        label.Visibility = Visibility.Hidden;
                        textBox.Visibility = Visibility.Hidden;
                        buttonChange.ToolTip = "Змінити дані адміністратора";
                        buttonAdd.ToolTip = "Додати адміністратора";
                        buttonRemove.ToolTip = "Видалити адміністратора";

                        GridView myGrid = new GridView();
                        myGrid.AllowsColumnReorder = true;

                        GridViewColumn colum1 = new GridViewColumn();
                        colum1.DisplayMemberBinding = new Binding("Login");
                        colum1.Header = "Логін";
                        colum1.Width = 120;
                        myGrid.Columns.Add(colum1);

                        GridViewColumn colum2 = new GridViewColumn();
                        colum2.DisplayMemberBinding = new Binding("Password");
                        colum2.Header = "Пароль";
                        colum2.Width = 120;
                        myGrid.Columns.Add(colum2);

                        GridViewColumn colum3 = new GridViewColumn();
                        colum3.DisplayMemberBinding = new Binding("Owner");
                        colum3.Header = "Хто створив";
                        colum3.Width = 120;
                        myGrid.Columns.Add(colum3);

                        GridViewColumn colum4 = new GridViewColumn();
                        colum4.DisplayMemberBinding = new Binding("Date");
                        colum4.Header = "Коли";
                        colum4.Width = 85;
                        myGrid.Columns.Add(colum4);

                        listView.View = myGrid;
                        listView.FontSize = 16;

                        UpdateListView();

                        break;
                        #endregion
                    }
                case TypeForm.Users:
                    {
                        #region
                        buttonAdd.Visibility = Visibility.Hidden;
                        buttonRemove.Visibility = Visibility.Hidden;
                        textBox.Text = "Пошук";
                        buttonChange.ToolTip = "Детальніше про користувача";

                        GridView myGrid = new GridView();
                        myGrid.AllowsColumnReorder = true;

                        GridViewColumn colum2 = new GridViewColumn();
                        colum2.DisplayMemberBinding = new Binding("Lname");
                        colum2.Header = "Прізвище";
                        colum2.Width = 90;
                        myGrid.Columns.Add(colum2);

                        GridViewColumn colum1 = new GridViewColumn();
                        colum1.DisplayMemberBinding = new Binding("Fname");
                        colum1.Header = "Им'я";
                        colum1.Width = 90;
                        myGrid.Columns.Add(colum1);

                        GridViewColumn colum3 = new GridViewColumn();
                        colum3.DisplayMemberBinding = new Binding("Count");
                        colum3.Header = "Спроби";
                        colum3.Width = 65;
                        myGrid.Columns.Add(colum3);

                        GridViewColumn colum4 = new GridViewColumn();
                        colum4.DisplayMemberBinding = new Binding("Online");
                        colum4.Header = "Онлайн";
                        colum4.Width = 70;
                        myGrid.Columns.Add(colum4);

                        GridViewColumn colum5 = new GridViewColumn();
                        colum5.DisplayMemberBinding = new Binding("Offline");
                        colum5.Header = "Оффлайн";
                        colum5.Width = 80;
                        myGrid.Columns.Add(colum5);

                        GridViewColumn colum6 = new GridViewColumn();
                        colum6.DisplayMemberBinding = new Binding("Passed");
                        colum6.Header = "Успішно";
                        colum6.Width = 70;
                        myGrid.Columns.Add(colum6);

                        listView.View = myGrid;
                        listView.FontSize = 16;

                        UpdateListView();

                        break;
                        #endregion
                    }
                case TypeForm.User:
                    {
                        #region
                        buttonAdd.Visibility = Visibility.Hidden;
                        buttonRemove.Visibility = Visibility.Hidden;
                        using (DBWokrSql db = new DBWokrSql(Connection))
                        {
                            textBox.Text = db.GetUser(Id_user).Fname+"   "+ db.GetUser(Id_user).Lname;
                        }
                        textBox.FontSize = 18;
                        textBox.IsReadOnly = true;
                        buttonChange.ToolTip = "Детальніше про білет користувача";

                        GridView myGrid = new GridView();
                        myGrid.AllowsColumnReorder = true;

                        GridViewColumn colum1 = new GridViewColumn();
                        colum1.DisplayMemberBinding = new Binding("ID");
                        colum1.Header = "Білет №";
                        colum1.Width = 70;
                        myGrid.Columns.Add(colum1);

                        GridViewColumn colum2 = new GridViewColumn();
                        colum2.DisplayMemberBinding = new Binding("level");
                        colum2.Header = "Рівень";
                        colum2.Width = 120;
                        myGrid.Columns.Add(colum2);

                        GridViewColumn colum3 = new GridViewColumn();
                        colum3.DisplayMemberBinding = new Binding("date");
                        colum3.Header = "Дата";
                        colum3.Width = 85;
                        myGrid.Columns.Add(colum3);

                        GridViewColumn colum4 = new GridViewColumn();
                        colum4.DisplayMemberBinding = new Binding("IsOffline");
                        colum4.Header = "Онлайн";
                        colum4.Width = 80;
                        myGrid.Columns.Add(colum4);

                        GridViewColumn colum5 = new GridViewColumn();
                        colum5.DisplayMemberBinding = new Binding("IsPassed");
                        colum5.Header = "Здав";
                        colum5.Width = 80;
                        myGrid.Columns.Add(colum5);

                        listView.View = myGrid;
                        listView.FontSize = 16;

                        UpdateListView();

                        break;
                        #endregion
                    }
            }
        }
        private void buttonRemove_Click(object sender, RoutedEventArgs e)
        {
            if (listView.SelectedItem == null) { MessageBox.Show("Спочатку треба обрати користувача", "Увага"); return; }

            if (listView.SelectedItem is AdminInfo)
                using (DBWokrSql db = new DBWokrSql(Connection))
                    try { db.DeleteAdmin((listView.SelectedItem as AdminInfo).Login); } catch (Exception ex) { MessageBox.Show("Помилка при видалені\n" + ex.Message, "Увага"); }

            UpdateListView();
        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show(String.Format("Питання буде {0} у базі. Ви впевнені?", ID == 0 ? "збережено" : "змінено"), "Увага", MessageBoxButton.OKCancel) != MessageBoxResult.OK) return;

            if (String.IsNullOrWhiteSpace(textBoxLevel.Text)) { MessageBox.Show("Перевірте поле Рівень"); return; }
            if (String.IsNullOrWhiteSpace(textBoxTopic.Text)) { MessageBox.Show("Перевірте поле Тема "); return; }
            if (String.IsNullOrWhiteSpace(textBoxQuestion.Text)) { MessageBox.Show("Перевірте поле питання ");return; }

            int idTick = 0;
            using (DBWokrSql db = new DBWokrSql(Connect))
            {
                if (ID == 0)
                {
                    //create question
                    idTick = db.AddNewQuestion(
                        new QuestionInfo() { ID = 0, Topic = textBoxTopic.Text, Info = textBoxInfo.Text, Level = textBoxLevel.Text, Question = textBoxQuestion.Text },
                        ans
                        );
                }
                else
                {
                    //update question
                    var questionCurrent = db.GetQuestion(ID);
                    if (
                        !(questionCurrent.Info.Equals(textBoxInfo.Text.Replace('\'', ' ')) &&
                        questionCurrent.Level.Equals(textBoxLevel.Text) &&
                        questionCurrent.Question.Equals(textBoxQuestion.Text.Replace('\'', ' ')) &&
                        questionCurrent.Topic.Equals(textBoxTopic.Text))
                        )
                        idTick = db.UpdateQuestion(questionCurrent);

                    if (idTick == 0) //question didn`t change
                    {
                        //update answers
                        var answersCurrent = db.GetAnswers(ID);

                        //get all new answers and check them by similar in database, if they were not found -- add them
                        foreach (var item in ans)
                        {
                            if (answersCurrent.IsGetValue(item))
                            {
                                var ss = answersCurrent.Where(s => s.ID == item.ID).First();

                                if (ss.IsTrue == item.IsTrue && ss.Text.Equals(item.Text.Replace('\'', ' ')))
                                    continue;
                                else
                                    db.UpdateAnswer(ID, item);
                            }
                            else
                            {
                                int idAnswer = db.AddAnswer(item.Text);

                                db.AddQuestionAnswer(ID, idAnswer, item.IsTrue);
                            }

                        }

                        //marked all answers that not use
                        foreach (var item in answersCurrent)
                            if (!ans.IsGetValue(item))
                                db.DisableAnswer(item.ID);
                    }
                    else
                    {// add answers to new question
                        foreach (var item in ans)
                        {
                            int idAnswer = db.AddAnswer(item.Text);

                            db.AddQuestionAnswer(idTick, idAnswer, item.IsTrue);
                        }
                    }
                }

            }

            MessageBox.Show("Питання було успішно збережено під номером " + (idTick == 0 ? ID : idTick));
        }
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            if (!IsShow)
                try
                {
                    using (DBWokrSql db = new DBWokrSql(ConnectString))
                    {
                        var Ticket = db.CreateTicket(Id_level);

                        var user = db.GetUser(Id_user);
                        bool IsOnline = string.IsNullOrWhiteSpace(TicketStore);
                        if (user.ID != 13)
                            Id_ticket = db.AddTicket(Ticket, Id_user, !IsOnline);
                        else
                            IsTEST = true;

                        if (!IsOnline)
                        {
                            TicketStore = Path.ChangeExtension(Path.Combine(Path.GetDirectoryName(TicketStore), Path.GetFileNameWithoutExtension(TicketStore) + Id_ticket), "docx");
                            //Write to file
                            if (db.WriteTicketToWord(Ticket, user, Id_ticket, TicketStore))
                                System.Diagnostics.Process.Start("WINWORD.EXE", "\"" + TicketStore + "\"");
                            else
                                MessageBox.Show("Увага!! Помилка при створені файлу");
                        }
                        else
                        {
                            e.Result = new OutputParams() { id_Ticket = Id_ticket, Ticket_ = Ticket };
                        }

                    }
                }
                catch (Exception ex)
                {
                    e.Cancel = false;
                    e.Result = "Не має зв`язку з базою: " + ex.Message;
                    throw new Exception(ex.Message);
                }
            else
            {
                using (DBWokrSql db = new DBWokrSql(ConnectString))
                {
                    e.Result = new OutputParams() { id_Ticket = Id_ticket, Ticket_ = db.GetTicketRezults(Id_ticket) };
                }
            }
        }
        void CheckRezult(bool IsTest = false)
        {
            if (IsShow) return;

            timer.Stop();
            timer.Dispose();

            #region SendRezult

            if (!IsTest && !SendRezult && !IsShow)
                using (var db = new DBWokrSql(ConnectString))
                {
                    foreach (UserControlQuestion item in StackPanelQuestion.Children)
                        foreach (var ans in item.GetUserAnswers())
                            db.AddRezult(Id_ticket, ans, item.IDquestion);

                    SendRezult = true;
                    #endregion

                    #region CheckRezult

                    int error = 0,
                    countAnswerTrue = 0,
                    userCountAnser = 0;

                    foreach (UserControlQuestion item in StackPanelQuestion.Children)
                    {
                        var answers = db.GetAnswers(item.IDquestion, true).Select(x => x.ID);

                        countAnswerTrue += answers.Count();

                        userCountAnser += item.GetUserAnswers().Count();

                        if (answers.Count() != item.GetUserAnswers().Count()) { error++; continue; }

                        foreach (var ans in item.GetUserAnswers())
                        {
                            if (!answers.Contains(ans))
                            {
                                error++; break;
                            }
                        }

                    }
                    //update Ticket column isPasses
                    if (error >= 3 || countAnswerTrue != userCountAnser)
                        MessageBox.Show("Ви не склали іспит");
                    else
                        MessageBox.Show("Вітаємо! Ви успішно склали іспит. Нам дуже приємно працювати з такими фахівцями як Ви.");

                    db.UpdateTicketRezult(Id_ticket, error < 3);
                    #endregion
                }
        }
Example #10
0
 private void BackgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
 {
     try
     {
         string connetcString = e.Argument.ToString();
         using (var db = new DBWokrSql(connetcString))
             e.Cancel = true;
     }
     catch (Exception ex)
     {
         e.Result =(object) "Не має зв`язку!\n" + ex.Message;
     }
 }