using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Text.RegularExpressions; namespace Cafe.AddWindows { public partial class AddExchangeWindow : Window { public AddExchangeWindow() { InitializeComponent(); EmployeeBox.ItemsSource = Connection.db.Users.Where(item => item.IDRole != 1).Select(item => item.Login).ToList(); } private void DateTextChanged(object sender, TextChangedEventArgs e) { if (Regex.IsMatch((((TextBox)sender).Text).ToString(), "[^0-9.]")) { ((TextBox)sender).Text = ((TextBox)sender).Text.Remove(((TextBox)sender).Text.Length - 1); ((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length; } } private void TimeTextChanged(object sender, TextChangedEventArgs e) { if (Regex.IsMatch((((TextBox)sender).Text).ToString(), "[^0-9:]")) { ((TextBox)sender).Text = ((TextBox)sender).Text.Remove(((TextBox)sender).Text.Length - 1); ((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length; } } private void AddEmployeeClick(object sender, RoutedEventArgs e) { if (EmployeeBox.SelectedItem == null) { ErrorWindow errorWindow = new ErrorWindow("не выбрано работник"); errorWindow.Show(); return; } Users employee = Connection.db.Users.Where(item => item.Login == EmployeeBox.SelectedItem.ToString()).FirstOrDefault(); EmployeeBox.SelectedItem = null; EmployeeBox.ItemsSource = Connection.db.Users.Where(item => item.Login != employee.Login && item.IDRole != 1).Select(item => item.Login).ToList(); EmployeesList.Items.Add(employee); } private void SaveExchangeClick(object sender, RoutedEventArgs e) { if (EmployeesList.Items == null) { ErrorWindow errorWindow = new ErrorWindow("не выбрано ни одного работника"); errorWindow.Show(); return; } if (Date.Text == "" || TimeOfBegin.Text == "" || TimeOfEnd.Text == "") { ErrorWindow errorWindow = new ErrorWindow("не выбрано время"); errorWindow.Show(); return; } TimeSpan timeOfBeginResult; if (!TimeSpan.TryParse(TimeOfBegin.Text, out timeOfBeginResult) || TimeOfBegin.Text.Count(item => item == ':') != 1) { ErrorWindow errorWindow = new ErrorWindow("неверно указано время начала"); errorWindow.Show(); return; } TimeSpan timeOfEndResult; if (!TimeSpan.TryParse(TimeOfEnd.Text, out timeOfEndResult) || TimeOfEnd.Text.Count(item => item == ':') != 1) { ErrorWindow errorWindow = new ErrorWindow("неверно указано время окончания"); errorWindow.Show(); return; } DateTime dateResult; if (!DateTime.TryParse(Date.Text, out dateResult) || Date.Text.Count(item => item == '.') != 2) { ErrorWindow errorWindow = new ErrorWindow("неверно указана дата"); errorWindow.Show(); return; } List allExchangesOnDate = Connection.db.Exchange.Where(item => item.Date == dateResult).ToList(); if (allExchangesOnDate.Exists(item => (item.TimeOfBegin <= timeOfBeginResult && item.TimeOfEnd >= timeOfBeginResult) || (item.TimeOfBegin <= timeOfEndResult && item.TimeOfEnd >= timeOfEndResult))) { ErrorWindow errorWindow = new ErrorWindow("на это время уже запланирована смена"); errorWindow.Show(); return; } if (dateResult.Date - DateTime.Now.Date > new TimeSpan(5, 0, 0, 0)) { ErrorWindow errorWindow = new ErrorWindow("можно сформировать рассписание тольок на 5 дней вперёд"); errorWindow.Show(); return; } Exchange exchange = new Exchange() { Date = dateResult.Date, TimeOfBegin = timeOfBeginResult, TimeOfEnd = timeOfEndResult }; Connection.db.Exchange.Add(exchange); Connection.db.SaveChanges(); int idExchange = Connection.db.Exchange.Select(item => item.ID).ToList().Last(); foreach (var item in EmployeesList.Items) { EmployeesExchanges employeesExchanges = new EmployeesExchanges() { IDEmployee = ((Users)item).ID, IDExchange = idExchange }; Connection.db.EmployeesExchanges.Add(employeesExchanges); Connection.db.SaveChanges(); } MainWindow mainWindow = new MainWindow(); mainWindow.Show(); this.Close(); } private void BackButtonClick(object sender, RoutedEventArgs e) { MainWindow mainWindow = new MainWindow(); mainWindow.Show(); this.Close(); } } }