CreateTournamentWindow.xaml.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Shapes;
  14. namespace Курсовой_проект_3._1.Windows
  15. {
  16. /// <summary>
  17. /// Логика взаимодействия для CreateTournamentWindow.xaml
  18. /// </summary>
  19. public partial class CreateTournamentWindow : Window
  20. {
  21. MyTeamContext _context;
  22. public CreateTournamentWindow()
  23. {
  24. InitializeComponent();
  25. _context = new MyTeamContext();
  26. }
  27. private void CreateBtn_Click(object sender, RoutedEventArgs e)
  28. {
  29. // проверка, есть ли ещё незаконченные турниры от этого пользователя
  30. if (_context.Tournaments.Where(t => t.FK_Organizer_Id == App.UserId).ToList().Count() != 0)
  31. {
  32. MessageBox.Show("У вас ещё есть незаконченные турниры!");
  33. return;
  34. }
  35. // инициализируем переменные
  36. string tournamentName = TournamentNameTBox.Text;
  37. string prizeFondstr = PrizeFondTBox.Text.Trim();
  38. string teamsCountstr = TeamCountCB.Text.Trim();
  39. string venue = VenueTBox.Text;
  40. string dataStart = DateOfStartDP.Text;
  41. string dataEnd = DateOfEndDP.Text;
  42. // проверка на заполнение всех полей
  43. if (string.IsNullOrWhiteSpace(tournamentName) || !Func.IsOnlyDigitString(prizeFondstr) || !Func.IsOnlyDigitString(teamsCountstr)
  44. || string.IsNullOrWhiteSpace(venue) || string.IsNullOrWhiteSpace(dataStart) || string.IsNullOrWhiteSpace(dataEnd))
  45. {
  46. MessageBox.Show("Все поля должны быть заполнены!");
  47. return;
  48. }
  49. int prizeFond = Convert.ToInt32(prizeFondstr);
  50. int teamsCount = Convert.ToInt32(teamsCountstr);
  51. // проверка, есть ли турниры с таким названием
  52. if (_context.Tournaments.Where(t => t.Name == tournamentName).ToList().Count() != 0)
  53. {
  54. MessageBox.Show("У вас ещё есть незаконченные турниры!");
  55. return;
  56. }
  57. // создаем новый объект Tournaments
  58. Tournaments tournament = new Tournaments();
  59. tournament.Name = tournamentName;
  60. tournament.PrizeFond = prizeFond;
  61. tournament.MaxTeamsCount = teamsCount;
  62. tournament.DateStart = Convert.ToDateTime(dataStart);
  63. tournament.DateEnd = Convert.ToDateTime(dataEnd);
  64. tournament.Venue = venue;
  65. tournament.FK_Organizer_Id = App.UserId;
  66. tournament.FK_Format_Id = 1;
  67. tournament.LogoPath = LogoImg.Source.ToString();
  68. _context.Tournaments.Add(tournament);
  69. _context.SaveChanges();
  70. int tournamentId = _context.Tournaments.Where(t => t.Name == tournamentName).Select(t => t.Id).Single();
  71. TournamentWindow tWnd = new TournamentWindow(tournamentId);
  72. tWnd.Show();
  73. foreach (var wnd in Application.Current.Windows)
  74. {
  75. if (wnd is ApplicationWindow)
  76. {
  77. ApplicationWindow appWnd = (ApplicationWindow)wnd;
  78. appWnd.Close();
  79. break;
  80. }
  81. }
  82. Close();
  83. }
  84. private void ChangeLogoBtn_Click(object sender, RoutedEventArgs e)
  85. {
  86. // Создаем OpenFileDialog
  87. Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
  88. // Устанавливаем фильтры и стандартное расширение файла
  89. dlg.DefaultExt = ".png";
  90. dlg.Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif";
  91. // Отображаем OpenFileDialog
  92. Nullable<bool> result = dlg.ShowDialog();
  93. // Получаем и устанавливаем новое изображение
  94. if (result == true)
  95. {
  96. // Open document
  97. string filename = dlg.FileName;
  98. LogoImg.Source = new BitmapImage(new Uri(filename));
  99. }
  100. }
  101. }
  102. }