EditAddSection.xaml.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using Microsoft.Win32;
  2. using SportComplex.Model;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. using System.Windows.Navigation;
  16. using System.Windows.Shapes;
  17. namespace SportComplex.Program.Pages.EditAddPages
  18. {
  19. /// <summary>
  20. /// Логика взаимодействия для EditAddSection.xaml
  21. /// </summary>
  22. public partial class EditAddSection : Page
  23. {
  24. // Поле для хранения экзепляра добавляемой секции (передаем объект класса Section)
  25. private Model.Section section = new Model.Section();
  26. public EditAddSection(Model.Section selectSection)
  27. {
  28. InitializeComponent();
  29. if (selectSection != null)
  30. section = selectSection;
  31. // Передача объекта класса для участия в привязке данных
  32. DataContext = section;
  33. }
  34. // Смена фотографии секции
  35. private void ChangeImageSectionBtn_Click(object sender, RoutedEventArgs e)
  36. {
  37. OpenFileDialog ofg = new OpenFileDialog();
  38. if (ofg.ShowDialog() == true && !String.IsNullOrWhiteSpace(ofg.FileName))
  39. {
  40. InputPhotoSectionTxb.Text = ofg.FileName.ToString();
  41. InputPhotoSectionTxb.Focus();
  42. }
  43. }
  44. // Вернуться назад
  45. private void BackBtn_Click(object sender, RoutedEventArgs e)
  46. {
  47. NavigationService.Navigate(new View());
  48. }
  49. // Сохранение секции
  50. private void SaveSectionBtn_Click(object sender, RoutedEventArgs e)
  51. {
  52. // Предварительная проверка на количесто символов, заполняемость
  53. StringBuilder errors = new StringBuilder();
  54. if (string.IsNullOrWhiteSpace(section.name))
  55. errors.AppendLine("* Название услуги не введено!");
  56. foreach (var record in Entities.GetContext().Section)
  57. {
  58. if (record.name == section.name)
  59. errors.AppendLine("* Такое название секции уже существует!");
  60. }
  61. if (section.duration == 0)
  62. errors.AppendLine("* Длительность должно составлять определенное кол-во времени");
  63. if (section.duration > 14400)
  64. errors.AppendLine("* Длительность не может быть более 4-х часов!");
  65. if (section.cost == 0)
  66. errors.AppendLine("* Стоимость не может быть равна значению '0'");
  67. if (section.cost > 100)
  68. errors.AppendLine("* Скидка не может быть больше 100%");
  69. // Если есть ошибки, то вывести это
  70. if (errors.Length > 0)
  71. {
  72. MessageBox.Show(errors.ToString());
  73. return;
  74. }
  75. // Добавлить новую запись
  76. if (section.ID_section == 0)
  77. Entities.GetContext().Section.Add(section);
  78. try
  79. {
  80. Entities.GetContext().SaveChanges();
  81. MessageBox.Show("Данные сохранены");
  82. NavigationService.Navigate(new View());
  83. }
  84. catch (Exception ex)
  85. { MessageBox.Show(ex.Message); }
  86. }
  87. // Обработчик на запрет ввода букв в строку стоимости
  88. private void InputCostSectionTxb_KeyDown(object sender, KeyEventArgs e)
  89. {
  90. if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
  91. }
  92. // Обработчик на запрет ввода букв в строку скидки
  93. private void InputDiscountSectionTxb_KeyDown(object sender, KeyEventArgs e)
  94. {
  95. if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
  96. }
  97. }
  98. }