MainWindowViewModel.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using Avalonia.Controls;
  2. using MsBox.Avalonia;
  3. using MsBox.Avalonia.Enums;
  4. using N11_1.Models;
  5. using N11_1.Views;
  6. using ReactiveUI;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Threading.Tasks;
  11. namespace N11_1.ViewModels
  12. {
  13. public class MainWindowViewModel : ViewModelBase
  14. {
  15. //экземпляр таблицы
  16. public static _43pKotkovaContext connection = new _43pKotkovaContext();
  17. //элемент главной страницы
  18. UserControl thisContent = new TeacherDataList();
  19. public UserControl ThisContent { get => thisContent; set => this.RaiseAndSetIfChanged(ref thisContent, value); }
  20. //блоки главной страницы
  21. VMTeacherDataListViewModel teacherDataList = new VMTeacherDataListViewModel();
  22. VMTeacherAddViewModel teacherAdd = new VMTeacherAddViewModel();
  23. public VMTeacherDataListViewModel TeacherDataList { get => teacherDataList; set => this.RaiseAndSetIfChanged(ref teacherDataList, value); }
  24. public VMTeacherAddViewModel TeacherAdd { get => teacherAdd; set => this.RaiseAndSetIfChanged(ref teacherAdd, value); }
  25. /// <summary>
  26. /// Переход на страницу добавления учителя
  27. /// </summary>
  28. public void ToAddTeacher()
  29. {
  30. ThisContent = new TeacherAdd();
  31. }
  32. public async void BackToHome()
  33. {
  34. switch (await MessageBoxManager
  35. .GetMessageBoxStandard("Подтверждение выхода", "Вы действительно хотите выйти? Введенные вами данные не сохраняться",
  36. ButtonEnum.YesNo).ShowAsync())
  37. {
  38. case ButtonResult.Yes:
  39. {
  40. ThisContent = new TeacherDataList();
  41. break;
  42. }
  43. default:
  44. {
  45. break;
  46. }
  47. }
  48. }
  49. public async void AddTeacher()
  50. {
  51. string result = TeacherAdd.add();
  52. if (result != "")
  53. {
  54. await MessageBoxManager.GetMessageBoxStandard("Ошибка заполнения данных", result).ShowAsync();
  55. }
  56. else
  57. {
  58. try
  59. {
  60. TbTeacher teacher = new TbTeacher();//новый экземпляр учителя
  61. teacher.FirstName = TeacherAdd.Name;
  62. teacher.LastName = TeacherAdd.Surname;
  63. teacher.Patronymic = TeacherAdd.Patronomic;
  64. teacher.IdGender = (TeacherAdd.GenderM) ? 1 : 2;
  65. teacher.WorkExperience = Convert.ToDecimal(TeacherAdd.WorkExpensive);
  66. teacher.Email = TeacherAdd.Mail;
  67. teacher.Phone = TeacherAdd.Phone;
  68. teacher.DateOf = TeacherAdd.Dateofbirthd.DateTime;
  69. connection.TbTeachers.Add(teacher);//добавляем учителя
  70. connection.SaveChanges();//сохраняем учителя
  71. foreach(string item in TeacherAdd.SelectedLesson)
  72. {
  73. TbLesson lesson = connection.TbLessons.FirstOrDefault(tb => tb.Name == item);
  74. if(lesson != null)
  75. {
  76. TbTeachersLesson teachersLesson = new TbTeachersLesson()
  77. {
  78. IdLesson = lesson.Id,
  79. IdTeacher = teacher.Id
  80. };
  81. connection.TbTeachersLessons.Add(teachersLesson);
  82. }
  83. }
  84. connection.SaveChanges();//сохраняем преподователя
  85. await MessageBoxManager.GetMessageBoxStandard("Успешно", "Данные об учителе успешно добавлены").ShowAsync();
  86. teacherDataList = new VMTeacherDataListViewModel();
  87. ThisContent = new TeacherDataList();
  88. }
  89. catch
  90. {
  91. await MessageBoxManager.GetMessageBoxStandard("Ошибка сохранения данных", "Во время сохранения данных возникла ошибка").ShowAsync();
  92. }
  93. }
  94. }
  95. }
  96. }