Файл: Министерство цифрового развития.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.03.2024

Просмотров: 45

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

    1. Определение объектов тестирования

Объекты тестирования разделены на две группы – функциональные и нефункциональные. В данном случае к функциональному тестированию относится:

  • тестирование входа в приложение через логин и пароль;

  • тестирование проверки статуса заявки по номеру

  • тестирование просмотра заявок

  • тестирование изменения заявок;

  • тестирование изменения данных в базе;

  • тестирование добавления заявок;

  • тестирование обмена данными между базами;

  • тестирование выгрузки отчета.

К нефункциональному тестированию относится:

  • тестирование приложения на совместимость с операционными системами Windows 8.1/10;

  • тестирование пользовательского интерфейса.

    1. Описание процесса тестирования

Описание процесса функционального тестирования приведено в таблице (табл. 4.2). Тестирование проводилось методом черного ящика.

Таблица 4.2

Функциональное тестирование. Тест-кейсы

№ п/п

Название

Тестовые данные

Ожидаемый результат

Фактический результат

Статус

1

2

3

4

5

6

1.

Вход с правильным логином и паролем

Логин: dvandreev

Пароль: Aa12345


Открывается рабочее окно

Рабочее окно открылось

Пройден

2.

Вход с неправильным логином и паролем

Логин: dvandreev2

Пароль: Aa1234


Всплывающее окно «Неверный логин или пароль»

Рабочее окно не открылось, сообщение получено

Пройден

3.

Вход с пустым логином

Логин:

Пароль: Aa12345


Всплывающее окно «Введите логин»

Рабочее окно не открылось, сообщение получено

Пройден

4.

Вход с пустым паролем

Логин: dvandreev

Пароль:


Всплывающее окно «Введите пароль»

Рабочее окно не открылось, сообщение получено

Пройден

5.

Создание заявки без авторизации и заполнением всех полей.

ФИО: тест

Телефон: тест

Рабочая почта: тест

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно с уведомлением о создании заявки и её номером.

Заявка создалась, сообщение получено.

Пройден

6.

Создание заявки без авторизации и указания ФИО

ФИО:

Телефон: тест

Рабочая почта: тест

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно: «Заполните поле ФИО»

Заявка не создалась, сообщение получено.

Пройден

7.

Создание заявки без авторизации и указания телефона

ФИО: тест

Телефон:

Рабочая почта: тест

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно: «Заполните поле ТЕЛЕФОН»

Заявка не создалась, сообщение получено.

Пройден

8.

Создание заявки без авторизации и указания рабочей почты

ФИО: тест

Телефон: тест

Рабочая почта:

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно: «Заполните поле РАБОЧАЯ ПОЧТА»

Заявка не создалась, сообщение получено.

Пройден

9.

Создание заявки без авторизации и указания описания проблемы

ФИО: тест

Телефон: тест

Рабочая почта: тест

Описание заявки:

Всплывающее окно: «Заполните поле ОПИСАНИЕ ПРОБЛЕМЫ»

Заявка не создалась, сообщение получено.

Пройден

10.

Создание заявки с авторизацией и заполнением всех полей.

ФИО: тест

Телефон: тест

Рабочая почта: тест

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно с уведомлением о создании заявки и её номером.

Заявка создалась, сообщение получено.

Пройден

11.

Создание заявки с авторизацией без указания ФИО

ФИО:

Телефон: тест

Рабочая почта: тест

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно: «Заполните поле ФИО»

Заявка не создалась, сообщение получено.

Пройден

12.

Создание заявки с авторизацией без указания телефона

ФИО: тест

Телефон:

Рабочая почта: тест

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно: «Заполните поле ТЕЛЕФОН»

Заявка не создалась, сообщение получено.

Пройден

13.

Создание заявки с авторизацией без указания рабочей почты

ФИО: тест

Телефон: тест

Рабочая почта:

Описание заявки: Тест тест тест тест тест тест тест тест тест.

Всплывающее окно: «Заполните поле РАБОЧАЯ ПОЧТА»

Заявка не создалась, сообщение получено.

Пройден

14.

Создание заявки с авторизацией без указания описания проблемы

ФИО: тест

Телефон: тест

Рабочая почта: тест

Описание заявки:

Всплывающее окно: «Заполните поле ОПИСАНИЕ ПРОБЛЕМЫ»

Заявка не создалась, сообщение получено.

Пройден

15.

Открытие заявки, внесение изменения в протокол без нажатия кнопки «сохранить»

Протокол: тест тест тест

Закрыть заявку

Изменения в заявке не сохранились.

В графе «протокол» не сохранилось изменений.

Пройден

16.

Открытие заявки, внесение изменения в протокол с нажатием кнопки «сохранить»

Протокол: тест тест тест

Сохранить.

Закрыть заявку.

Изменения в заявке сохранились

В графе «протокол» сохранились изменения.

Пройден

17.

Поиск существующего номера заявки без авторизации

Номер заявки: 1007

Вывод сообщения со статусом заявки и решением для пользователя

Заявка найдена, сообщение получено

Пройден

18.

Поиск не существующего номера заявки без авторизации

Номер заявки: 999999

Всплывающее окно: «Заявки с таким номером не существует»

Заявка не нашлась, сообщение получено

Пройден

19.

Поиск заявки без ввода номера заявки без авторизации

Номер заявки: не вводить

Вывод сообщения с просьбой ввести номер заявки

Заявка не найдена, сообщение получено

Пройден

20.

Поиск существующего номера заявки с авторизацией из рабочего окна

Номер заявки: 1007

Вывод сообщения со статусом заявки и решением для пользователя

Заявка найдена, сообщение получено

Пройден

21.

Поиск не существующего номера заявки с авторизацией из рабочего окна

Номер заявки: 999999

Всплывающее окно: «Заявки с таким номером не существует»

Заявка не нашлась, сообщение получено

Пройден

22.

Поиск заявки с авторизацией из рабочего окна без ввода номера заявки

Номер заявки: не вводить

Вывод сообщения с просьбой ввести номер заявки

Заявка не найдена, сообщение получено

Пройден

23.

Просмотр вкладки «Заявки моей команды»

Нажать кнопку «Заявки моей команды»

Должны отображаться только заявки в которых группа к которой относится пользователь является ответственной

Вкладка открылась, отображаются только заявки в которых группа к которой относится пользователь является ответственной

Пройден

24.

Просмотр вкладки «Закрытые заявки»

Нажать кнопку «Закрытые заявки»

Должны отображаться только заявки со статусом «Закрыта»

Вкладка открылась, отображаются только заявки со статусом «Закрыта»

Пройден


Как было сказано ранее, к нефункциональному тестированию относится тестирование приложения на совместимость с операционными системами Windows 8.1/10 и тестирование пользовательского интерфейса.

Вначале было проведено тестирование разработанного приложения на совместимость с ОС MS Windows 8.1 и MS Windows 10. В результате запуска приложение отобразилось корректно, все функции работали в соответствии с требованиями.

Далее было проведено тестирование графического интерфейса пользователя. Он отображается корректно, текст разборчив и не сливается с фоном, все кнопки и ссылки, не требует длительного времени на освоение и находятся на виду.
Общая проверка:

  • для начального окна установлен запрет на изменение размера;

  • вид и взаимное расположение элементов при уменьшении или увеличении рабочего окна не меняется;

  • орфографические и пунктуационные ошибки отсутствуют;

  • все страницы имеют правильные заголовки;

  • для перехода по кнопкам, выпадающим спискам и текстбоксам может быть использована клавиша TAB;

  • для перехода по кнопкам, выпадающим спискам и текстбоксам могут быть использованы стрелки;

  • для нажатия на кнопку может быть использована клавиша ENTER;

  • двойной клик не используется.

Окна и страницы:

  • цвет фона начального окна соответствует требованиям;

  • цвет фона рабочего окна соответствует требованиям;

  • цвет шрифта соответствует требованиям;

  • размер шрифта соответствует требованиям;

  • в начальном окне логотип располагается в левом верхнем углу;

  • в рабочем окне логотип располагается в левом верхнем углу;

  • цвет фона страниц соответствует требованиям.

Выпадающие списки:

  • при наведении курсора на выпадающий список, кнопка выпадающего списка меняет цвет с серого на голубой;

  • элементы выпадающего списка в начальном окне располагаются в алфавитном порядке;

  • элементы выпадающего списка на странице «Передача» располагаются в алфавитном порядке;

  • выбранный элемент обозначается выбранным;

  • для перехода по элементам выпадающего списка могут быть использованы стрелки.


Текстбоксы:

  • при наведении курсора на текстбокс, курсор меняется на поинтер;

  • расположены возле соответствующего текста;

  • в начальном окне пустые;

  • в начальном окне выровнены по одной линии, имеют одинаковый размер;

  • на странице «Добавление» содержат демонстрационные значения;

  • на странице «Добавление» выровнены по одной линии, имеют одинаковый размер;

  • текст в текстбоксах выделяется с помощью Ctrl+A/Shift+стрелка.

Кнопки:

  • цвет кнопок соответствует требованиям;

  • цвет шрифта кнопок соответствует требованиям;

  • при наведении курсора на кнопку, кнопка меняет цвет с серого на голубой;

  • кнопки «Вперед» и «Назад» в рабочем окне реализуют переходы по соответствующим окнам.

Таким образом, основной функционал приложения, совместимость с ОС Windows 8.1/10 и графический интерфейс пользователя полностью протестированы.


ЗАКЛЮЧЕНИЕ

Результатом выполнения дипломного проекта на тему «Разработка тикет системы для ИТ отдела» была разработана программа, предназначенная для работы ИТ отдела с заявками и обращениями пользователей.

В ходе моделирования программного продукта были построены следующие диаграммы:

  • Три диаграммы IDEF0

  • Одна диаграмма USECASE

  • Четыре диаграммы деятельности

  • Четыре диаграммы последовательности

В процессе проектирования и разработки были выполнены следующие задачи:

  • разработана одна база данных SQL, содержащая две таблицы: «Пользователь» и «Заявка».

  • разработано приложение, позволяющее:

    • Оставлять заявки в техническую поддержку;

    • Просматривать заявки;

    • Передавать заявки между различными профильными группами технической поддержки;

    • Закрывать заявки и вести их историю;

    • Просматривать статус своей заявки;

    • Просматривать решение по своей заявке;

    • Вести протокол заявки

  • реализован доступ приложения к разработанным базам.

Проведенное тестирование показало, что функционал программного продукта работает корректно, в соответствии с установленными требованиями.

Графический интерфейс интуитивно понятен, не требует длительного времени на освоение, работает корректно.

В процессе выполнения выпускной квалификационной работы был проведен расчет метрик стилистики и понятности программы, разработана следующая документация:

  • руководство пользователя;

  • руководство администратора

Таким образом, разработанный программный продукт дает возможность полноценно внедрить его в небольшом офисе или компании для упрощения работы ИТ отдела посредством регистрации обращений пользователей с помощью тикетов.

ИСПОЛЬЗОВАННЫЕ ИСТОЧНИКИ

1. Введение в SQL. Грабер М. – М.: Лори, 2018 – 378 с.

2. Инновации SQL Server 2019. Уорд. Б. – М.: ДМК Пресс, 2020 – 408 с.

3. Изучаем C#. Стиллмен Э. – М.: Питер, 2020 – 816 с.

4. Microsoft Docs Руководство по языку С# https://docs.microsoft.com/ru-ru/dotnet/csharp


5. Metanit.com Полное руководство по языку программирования С# 9.0 и платформе .NET5 https://metanit.com/sharp/tutorial/

6. SQL Задачи и решения. Учебник. Сергей Моисеенко http://www.sql-tutorial.ru/ru/content.html

7. Разработка обслуживаемых программ на языке C#, Джуст В. – М.: ДМК Пресс, 2017 – 192 с.

8. Microsoft Visual C#. Подробное руководство. 8-е изд. Шарп Д. – М.: Питер, 2017 – 848 с.

9. Руководство по SQL (полная версия) – https://proselyte.net/tutorials/sql/

10. Интерактивный учебник по SQL – https://sql-academy.org/ru/guide

11. Статья «Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая» – https://habr.com/ru/post/255361/

12. Статья «Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая» – https://habr.com/ru/post/255361/

13. Основа WPF – https://professorweb.ru/my/WPF/base_WPF/level1/base_WPF_index.php (07.04.2021)

14. Элементы управления WPF – https://professorweb.ru/my/WPF/UI_WPF/level6/UI_WPF_index.php (07.04.2021)

ПРИЛОЖЕНИЕ 1

Файл конфигурации App.config




















providerName="System.Data.SqlClient" />





Файл окна авторизации LoginWindow.xaml.cs

namespace WpfApp1 /// Логика взаимодействия для LoginWindow.xaml

{

public partial class LoginWindow : Window

{

public LoginWindow()

{

InitializeComponent();

}

private void Button_Click(object sender, RoutedEventArgs e) //обработка нажатия кнопки "Вход в систему"

{

if (LoginTextBox.Text == "") //Не введён логин

{

MessageBox.Show("Введите логин");

return;

}

if (PasswordTextBox.Password == "") //Не введён пароль

{

MessageBox.Show("Введите пароль");

return;

}

MainWindow.executeSQL("SELECT [Уникальный_ключ],[Фамилия],[Имя],[Отдел],[Должность],[Логин],[Пароль] FROM [TicketSystem].[dbo].[Пользователь]"); //Указываем таблицу и данные для извлечения из БД

for(int i = 0; i < MainWindow.DT.Rows.Count; i++)

{

List Values=MainWindow.getDynamicSqlValues(i,new string[] { "Уникальный_ключ", "Фамилия", "Имя", "Отдел", "Должность", "Логин", "Пароль" },MainWindow.DT); //Получаем данные из таблицы БД

Console.WriteLine(Values[0]);

Console.WriteLine(Values[1]);

Console.WriteLine(Values[2]);

Console.WriteLine(Values[3]);

Console.WriteLine(Values[4]);

if (Values[5] == LoginTextBox.Text && Values[6] == PasswordTextBox.Password) //Сопоставляем данные из полей "Логин" и "Пароль" с информацией из таблицы БД

{

MainWindow MW = new MainWindow();

MW.AccountData[0] = Values[0];

MW.AccountData[1] = Values[1];

MW.AccountData[2] = Values[2];

MW.AccountData[3] = Values[3];

MW.AccountData[4] = Values[4];

Console.WriteLine(MW.AccountData[0] + MW.AccountData[1]+MW.AccountData[3]+MW.AccountData[4]);

MW.setAccountData();

MW.Show();

Close();

return; //возврат значения

}

}

MessageBox.Show("Неверный логин или пароль!"); //Всплывающее окно

LoginTextBox.Text = "";

PasswordTextBox.Password = "";

}

private void Button_Click_1(object sender, RoutedEventArgs e) //Обработчик нажатия кнопки "Создать заявку"

{

RequestWindow RW = new RequestWindow(); //открывает новое окно "Создание заявки"

RW.Show();

}

private void Button_Click_2(object sender, RoutedEventArgs e) //Обработчик кнопки "Проверить заявку"

{

if (RequestCheck.Text == "") return; //возврат значения

try

{

MainWindow.executeSQL("SELECT [Статус],[Решение] FROM [TicketSystem].[dbo].[Заявка] WHERE([Уникальный_ключ]=" + RequestCheck.Text + ")"); //поиск заявки в БД

}

catch //Исключение - ничего не возвращается

{

return;

}
if (MainWindow.DT.Rows.Count == 0) //На случай указания не верного номера заявки

{

MessageBox.Show("Заявки с таким номером не существует!"); //всплывающее окно

return;

}

RStatus.Content = "Статус заявки: " +MainWindow.getSQLValue(0,"Статус"); //вывод на экран статуса

RDT.Text = "Решение по данной заявке: "+Environment.NewLine+MainWindow.getSQLValue(0, "Решение"); //вывод на экран решения

}

}

}

Файл рабочего окна MainWindow.xaml.cs

namespace WpfApp1 /// Логика взаимодействия для MainWindow.xaml

{

public partial class MainWindow : Window

{

public static string SQL;

public static SqlDataReader SqlReader;

public static SqlConnection SQLC = new SqlConnection();

public static SqlCommand cmd = new SqlCommand("", SQLC);

public static DataTable DT = new DataTable();

public static SqlDataAdapter Adapter = new SqlDataAdapter();

public static string ServerString = GetConnectionString();

public string[] AccountData = {"","","","",""};

public static DataTable LocalDT = new DataTable();

public MainWindow()

{

InitializeComponent();
updateRequestView();

}

public void setAccountData() //извлекаем данные авторизованного пользователя ФИО, должность, отдел

{

LabelFIO.Content = "ФИО: " + AccountData[1] + " " + AccountData[2];

LabelRole.Content = "Должность: " + AccountData[4];

LabelWorkGroup.Content = "Отдел: " + AccountData[3];

}

private void Window_Loaded(object Sender,RoutedEventArgs e)

{

}

public static String GetConnectionString() //Извлекаем файла конфигурации данные для подключения к БД

{

return ConfigurationManager.ConnectionStrings["conString"].ToString();

}

public static void openConnection() //Подключаемся к серверу согласно извлеченным данным

{

try

{

if(SQLC.State == ConnectionState.Closed)

{

SQLC.ConnectionString = GetConnectionString();

SQLC.Open();

}

}

catch (Exception ex) //Исключение - если не подключился

{

MessageBox.Show("SQL сервер не найден!"); //всплывающее окно

return;

}

}

public static void closeConnection() //отключаемся от сервера

{

try

{

if (SQLC.State == ConnectionState.Open)

{

SQLC.Close();

}

}

catch (Exception ex) //исключение если не отключился

{

MessageBox.Show("Невозможно закрыть сервер!");

}

}

public static void executeSQL(string Code) //Запись данных в буфер

{

MainWindow.openConnection(); //подключение
MainWindow.DT.Clear();
MainWindow.SQL = Code;

MainWindow.cmd.CommandType = System.Data.CommandType.Text;

MainWindow.cmd.CommandText = MainWindow.SQL;
MainWindow.Adapter.SelectCommand = MainWindow.cmd;

MainWindow.Adapter.Fill(MainWindow.DT);
MainWindow.closeConnection(); //закрытие подключения

}

public static void executeSQL(string Code, DataTable LocalDT) //

{

MainWindow.openConnection(); //подключение
LocalDT.Clear(); //очистка локальной таблицы
MainWindow.SQL = Code;

MainWindow.cmd.CommandType = System.Data.CommandType.Text;

MainWindow.cmd.CommandText = MainWindow.SQL;
MainWindow.Adapter.SelectCommand = MainWindow.cmd;

MainWindow.Adapter.Fill(LocalDT); //заполнение локальной таблицы данными
MainWindow.closeConnection(); //закрытие подключения

}

public static string getStringFromSql(string str) //получение индекса по строке

{

int SIndex = str.IndexOf(' ');

if (SIndex == -1) SIndex = str.Length;
return str.Substring(0, SIndex); //возвращает индекс

}

public static int getIndexColumn(string name) //возвращает индекс столбца

{

for(int i = 0; i < DT.Columns.Count; i++)

{

if (DT.Columns[i].ColumnName == name)

{

return i; //индекс

}

}

return 0;

}

public static int getIndexColumn(string name,DataTable SDT) //возвращает индекс столбца

{

for (int i = 0; i < SDT.Columns.Count; i++)

{

if (SDT.Columns[i].ColumnName == name)

{

return i; //индекс

}

}

return 0;

}

public static string getSQLValue(int index,string name) //возвращает значения

{

return DT.Rows[index].ItemArray[getIndexColumn(name)].ToString();

}

public static List getDynamicSqlValues(int Index, string[] Values, DataTable SDT) //Отображение данных в виде таблицы

{

List RValues = new List();
for (int i = 0; i < SDT.Columns.Count; i++) //столбцы

{

for (int j = 0; j < Values.Length; j++) //строки

{

if (SDT.Columns[i].ColumnName == Values[j])

{

RValues.Add(SDT.Rows[Index].ItemArray[i].ToString());

}

}

}

return RValues; //вернутые значения =)

}

public void updateRequestView() //отображение в виде таблицы по умолчанию

{

LocalDT.Clear();

LocalDT.Columns.Clear();

executeSQL("SELECT [Уникальный_ключ],[Тип_заявки],[Рабочая_группа],[Исполнитель],[Статус] FROM [TicketSystem].[dbo].[Заявка] WHERE([Статус]<>'Закрыта')", LocalDT); //отображение только закрытых заявок
loadToLocalData();

}

public void loadToLocalData() //Изменение имени столбцов

{

RequestCount.Text = LocalDT.Rows.Count.ToString();

LocalDT.Columns[getIndexColumn("Уникальный_ключ", LocalDT)].ColumnName = "ID"; //Переименование столбца

LocalDT.Columns[getIndexColumn("Тип_заявки", LocalDT)].ColumnName = "Тип заявки"; //Переименование столбца

LocalDT.Columns[getIndexColumn("Рабочая_группа", LocalDT)].ColumnName = "Рабочая группа"; //Переименование столбца

RequestDataView.ItemsSource = LocalDT.DefaultView;

}

private void CreateTick_Click(object sender, RoutedEventArgs e) //Обработчк нажатия кнопки "Создать заявку"

{

RequestWindow RW = new RequestWindow(); //открывает новое окно "Создание заявки"

RW.Show();

RW.adminSend((string)LabelFIO.Content.ToString().Substring(4));

}

private void FindButton_Click(object sender, RoutedEventArgs e) //Обработчик нажатия кнопки "Поиск"

{

if (TextBoxNumberTicket.Text == "") return; //возврат значения

LocalDT.Clear();

LocalDT.Columns.Clear();

try

{

executeSQL("SELECT [Уникальный_ключ],[Тип_заявки],[Рабочая_группа],[Исполнитель],[Статус] FROM [TicketSystem].[dbo].[Заявка] WHERE([Уникальный_ключ]=" + TextBoxNumberTicket.Text + ")", LocalDT); //отображение заявок с сортировкой по уникальному номеру.

}

catch

{

return;

}

loadToLocalData(); //Изменение имени столбцов

}

private void ClosedTicks_Click(object sender, RoutedEventArgs e) //Обработчик нажатия кнопки "Закрытые заявки"

{

LocalDT.Clear();

LocalDT.Columns.Clear();

executeSQL("SELECT [Уникальный_ключ],[Тип_заявки],[Рабочая_группа],[Исполнитель],[Статус] FROM [TicketSystem].[dbo].[Заявка] WHERE([Статус]='Закрыта')", LocalDT); //выбор только заявок со статусом "закрыта"

loadToLocalData();

}

private void AllTicks_Click(object sender, RoutedEventArgs e) //Обработчик нажатия кнопки "Все заявки"

{

updateRequestView(); //Отображение таблицы с заявками по умолчанию, без фильтров.

}

private void MyGroupTicks_Click(object sender, RoutedEventArgs e) //Обработчик нажатия кнопки "Заявки моей группы"

{

LocalDT.Clear();

LocalDT.Columns.Clear();

executeSQL("SELECT [Уникальный_ключ],[Тип_заявки],[Рабочая_группа],[Исполнитель],[Статус] FROM [TicketSystem].[dbo].[Заявка] WHERE([Рабочая_группа]='"+AccountData[3]+"')", LocalDT); //Отображение заявок в которых рабочая группа текущего пользователя является ответственной.

loadToLocalData(); //Изменение имени столбцов

}

private void RequestDataView_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

}

private void RequestDataView_DoubleClick(object sender, MouseButtonEventArgs e) //обработчик двойного клика по заголовку заявки в таблице

{

if (RequestDataView.SelectedItem == null) return;

DataRowView DRV = (DataRowView)RequestDataView.SelectedItem;

RequestProtocolWindow RPW = new RequestProtocolWindow(); //Открывает заявку в окне просмотра заявки

RPW.sendRequest(DRV["ID"].ToString());

RPW.Show();

}

}

}

Файл окна создания заявки RequestWindow.xaml.cs

namespace WpfApp1 /// Логика взаимодействия для RequestWindow.xaml

{

public partial class RequestWindow : Window

{

public RequestWindow()

{

InitializeComponent(); //инициализация компонента

}

public void adminSend(string FIO)

{

TB_FIO.Text = FIO;

}

private void Button_Click(object sender, RoutedEventArgs e) //обработчик нажатия кнопки "создать заявку"

{

if(TB_FIO.Text=="" || TB_Email.Text == "" || TB_Phone.Text == "")

{

MessageBox.Show("Введите свои данные полностью"); //Всплывающее окно

return;

}

if (ComboBoxRequestType.Text == "")

{

MessageBox.Show("Выберите тип заявки"); //Всплывающее окно

return;

}

string RBody = new TextRange(RequestBody.Document.ContentStart, RequestBody.Document.ContentEnd).Text;
if (RBody == "")

{

MessageBox.Show("Опишите проблему перед тем как отправить"); //Всплывающее окно

return;

}

try

{

MainWindow.executeSQL("INSERT INTO [TicketSystem].[dbo].[Заявка] ([Ваше_ФИО],[Рабочая_почта],[Контактный_телефон],[Тип_заявки],[Описание_заявки],[Статус],[Рабочая_группа],[Исполнитель]) VALUES('" + TB_FIO.Text + "', '" + TB_Email.Text + "','" + TB_Phone.Text + "','" + ComboBoxRequestType.Text + "','" + RBody + "','Зарегистрирована','Поддержка 1-я линия','Не назначен'); ");

}

catch

{