Room.xaml.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Shapes;
  15. using System.Windows.Threading;
  16. using System.Data;
  17. using System.Data.SqlClient;
  18. namespace HotelCalifornia
  19. {
  20. /// <summary>
  21. /// Логика взаимодействия для Room.xaml
  22. /// </summary>
  23. public partial class Room : Window
  24. {
  25. public Room()
  26. {
  27. InitializeComponent();
  28. //Таймер на обновление времени
  29. DispatcherTimer timer = new DispatcherTimer();
  30. timer.Tick += new EventHandler(Update_Timer_Tick);
  31. timer.Interval = new TimeSpan(0, 0, 1);
  32. timer.Start();
  33. }
  34. //Строка подключения
  35. SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=kursah;Integrated Security=True");
  36. //Значение статуса
  37. string status = "";
  38. //Вывод даты и время в textblock
  39. private void Update_Timer_Tick(object sender, EventArgs e)
  40. {
  41. timetxt.Text = DateTime.Now.ToString();
  42. }
  43. //Перетаскивание окна
  44. private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
  45. {
  46. try
  47. {
  48. DragMove();
  49. }
  50. catch
  51. {
  52. }
  53. }
  54. //Возврат к окну выбора функции
  55. private void Back(object sender, RoutedEventArgs e)
  56. {
  57. Variant variant = new Variant();
  58. variant.idadmintxt.Text = idadmintxt.Text;
  59. this.Close();
  60. variant.Show();
  61. }
  62. //Выход из приложения
  63. private void Close(object sender, RoutedEventArgs e)
  64. {
  65. Application.Current.Shutdown();
  66. }
  67. //Ограничение для ввода текста
  68. #region Ограничения
  69. //Для ввода только цифр
  70. private void numbertxt_PreviewTextInput(object sender, TextCompositionEventArgs e)
  71. {
  72. e.Handled = new Regex("[^0-9]+").IsMatch(e.Text);
  73. }
  74. //Для ввода только цифр
  75. private void telephonetxt_PreviewTextInput(object sender, TextCompositionEventArgs e)
  76. {
  77. e.Handled = new Regex("[^0-9]+").IsMatch(e.Text);
  78. }
  79. //Запрет пробела
  80. private void numbertxt_PreviewKeyDown(object sender, KeyEventArgs e)
  81. {
  82. if (e.Key == Key.Space)
  83. {
  84. e.Handled = true;
  85. }
  86. }
  87. //Запрет пробела
  88. private void telephonetxt_PreviewKeyDown(object sender, KeyEventArgs e)
  89. {
  90. if (e.Key == Key.Space)
  91. {
  92. e.Handled = true;
  93. }
  94. }
  95. #endregion
  96. //Добавление комнаты
  97. private void Add_Click(object sender, RoutedEventArgs e)
  98. {
  99. try
  100. {
  101. if (numbertxt.Text == "" || telephonetxt.Text == "")
  102. {
  103. MessageBox.Show("Заполните все поля!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  104. }
  105. else if (numbertxt.Text.Length < 3 || telephonetxt.Text.Length < 9)
  106. {
  107. MessageBox.Show("Поля не полностью заполены!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  108. }
  109. else
  110. {
  111. con.Open();
  112. SqlCommand cmd = new SqlCommand("Select * from Room where Number_Room ='" + numbertxt.Text + "'", con);
  113. cmd.CommandType = CommandType.Text;
  114. SqlDataAdapter adapter = new SqlDataAdapter();
  115. adapter.SelectCommand = cmd;
  116. DataSet dataSet = new DataSet();
  117. adapter.Fill(dataSet);
  118. if (dataSet.Tables[0].Rows.Count > 0)
  119. {
  120. MessageBox.Show("Такая комната уже есть!", "Информация", MessageBoxButton.OK, MessageBoxImage.Information);
  121. con.Close();
  122. }
  123. else
  124. {
  125. if (yescheck.IsChecked == true)
  126. status = "1";
  127. else
  128. status = "2";
  129. string sql = "INSERT INTO Room (Number_Room,Telephone_Room,Status_Room) VALUES('" + numbertxt.Text + "','" + telephonetxt.Text + "','" + status.ToString() + "')";
  130. SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
  131. dataAdapter.SelectCommand.ExecuteNonQuery();
  132. con.Close();
  133. idroomtxt.Text = "";
  134. numbertxt.Text = "";
  135. telephonetxt.Text = "";
  136. yescheck.IsChecked = true;
  137. showgrid();
  138. MessageBox.Show("Комната добавлена!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  139. }
  140. }
  141. }
  142. catch (Exception ex)
  143. {
  144. con.Close();
  145. MessageBox.Show("Возникла ошибка! " + ex.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  146. }
  147. }
  148. //Обнавление комнаты
  149. private void Update_Click(object sender, RoutedEventArgs e)
  150. {
  151. try
  152. {
  153. if (idroomtxt.Text == "")
  154. {
  155. MessageBox.Show("Поле не выбрано! Выберите нужное поле!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  156. }
  157. else if (numbertxt.Text == "" || telephonetxt.Text == "")
  158. {
  159. MessageBox.Show("Заполните все поля!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  160. }
  161. else if (numbertxt.Text.Length < 3 || telephonetxt.Text.Length < 9)
  162. {
  163. MessageBox.Show("Поля не полностью заполены!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  164. }
  165. else
  166. {
  167. try
  168. {
  169. if (yescheck.IsChecked == true)
  170. status = "1";
  171. else
  172. status = "2";
  173. con.Open();
  174. string sql = "Update Room set Number_Room ='" + numbertxt.Text + "', Telephone_Room = '" + telephonetxt.Text + "', Status_Room = '" + status.ToString() + "' where ID_Room = '" + idroomtxt.Text + "'; DELETE FROM RoomClient WHERE ID_Room = '"+idroomtxt.Text+ "'; DELETE FROM Rezervirovanie WHERE ID_Room = '"+idroomtxt.Text+"' and ID_Status = 1";
  175. SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
  176. dataAdapter.SelectCommand.ExecuteNonQuery();
  177. con.Close();
  178. idroomtxt.Text = "";
  179. numbertxt.Text = "";
  180. telephonetxt.Text = "";
  181. yescheck.IsChecked = true;
  182. showgrid();
  183. MessageBox.Show("Комната изменена!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  184. }
  185. catch (Exception ex)
  186. {
  187. con.Close();
  188. MessageBox.Show("Возникла ошибка! " + ex.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  189. }
  190. }
  191. }
  192. catch (Exception ex)
  193. {
  194. MessageBox.Show("Возникла ошибка! " + ex.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  195. }
  196. }
  197. //Удаление комнаты
  198. private void Delete_Click(object sender, RoutedEventArgs e)
  199. {
  200. if (idroomtxt.Text == "")
  201. {
  202. MessageBox.Show("Поле не выбрано! Выберите нужное поле!", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Information);
  203. }
  204. else
  205. {
  206. try
  207. {
  208. con.Open();
  209. string sql = "DELETE FROM Room WHERE ID_Room = '" + idroomtxt.Text + "'";
  210. SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
  211. dataAdapter.SelectCommand.ExecuteNonQuery();
  212. con.Close();
  213. idroomtxt.Text = "";
  214. numbertxt.Text = "";
  215. telephonetxt.Text = "";
  216. yescheck.IsChecked = true;
  217. showgrid();
  218. MessageBox.Show("Комната удалена!", "Информация", MessageBoxButton.OK, MessageBoxImage.Information);
  219. }
  220. catch (Exception ex)
  221. {
  222. con.Close();
  223. MessageBox.Show("Возникла ошибка! " + ex.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  224. }
  225. }
  226. }
  227. //Свернуть окно
  228. private void WindMin_Click(object sender, RoutedEventArgs e)
  229. {
  230. this.WindowState = WindowState.Minimized;
  231. }
  232. //Фомировка данных из БД
  233. void showgrid()
  234. {
  235. try
  236. {
  237. con.Open();
  238. string sql = "SELECT ID_Room, Number_Room, Telephone_Room, RoomStatus.Status From Room inner join RoomStatus on RoomStatus.ID_Status = Room.Status_Room";
  239. SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
  240. DataTable data = new DataTable("Room");
  241. dataAdapter.Fill(data);
  242. dataroom.ItemsSource = data.DefaultView;
  243. dataAdapter.Update(data);
  244. con.Close();
  245. dataroom.Columns[0].Header = "ID";
  246. dataroom.Columns[1].Header = "Номер комнты";
  247. dataroom.Columns[2].Header = "Телефон комнаты";
  248. dataroom.Columns[3].Header = "Статус комнаты";
  249. dataroom.Columns[0].Visibility = Visibility.Collapsed;
  250. }
  251. catch (Exception ex)
  252. {
  253. con.Close();
  254. MessageBox.Show("Возникла ошибка! " + ex.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  255. }
  256. }
  257. //Выбор строки из БД
  258. private void dataroom_SelectionChanged(object sender, SelectionChangedEventArgs e)
  259. {
  260. try
  261. {
  262. DataGrid gd = (DataGrid)sender;
  263. DataRowView rowView = gd.SelectedItem as DataRowView;
  264. if (rowView != null)
  265. {
  266. idroomtxt.Text = rowView["ID_Room"].ToString();
  267. numbertxt.Text = rowView["Number_Room"].ToString();
  268. telephonetxt.Text = rowView["Telephone_Room"].ToString();
  269. status = rowView["Status"].ToString();
  270. if (status == "Свободна")
  271. yescheck.IsChecked = true;
  272. else
  273. nocheck.IsChecked = true;
  274. }
  275. }
  276. catch (Exception ex)
  277. {
  278. MessageBox.Show("Возникла ошибка! " + ex.ToString(), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  279. }
  280. }
  281. //Обновление
  282. private void Refresh_Click(object sender, RoutedEventArgs e)
  283. {
  284. showgrid();
  285. idroomtxt.Text = "";
  286. numbertxt.Text = "";
  287. telephonetxt.Text = "";
  288. yescheck.IsChecked = true;
  289. }
  290. //Запуск в самом начале
  291. private void Window_Loaded(object sender, RoutedEventArgs e)
  292. {
  293. showgrid();
  294. }
  295. }
  296. }