123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- 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)
- {
- List<Users> employees = new List<Users>();
- foreach (var item in EmployeesList.Items)
- {
- employees.Add((Users)item);
- }
- if (!ExchangeValidation(employees, Date.Text, TimeOfBegin.Text, TimeOfEnd.Text))
- {
- return;
- }
- DateTime.TryParse(Date.Text, out DateTime dateResult);
- TimeSpan.TryParse(TimeOfBegin.Text, out TimeSpan timeOfBeginResult);
- TimeSpan.TryParse(TimeOfEnd.Text, out TimeSpan timeOfEndResult);
- 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();
- }
- public bool ExchangeValidation(List<Users> employees, string date, string timeOfBegin, string timeOfEnd)
- {
- if (employees == null)
- {
- ErrorWindow errorWindow = new ErrorWindow("не выбрано ни одного работника");
- errorWindow.Show();
- return false;
- }
- if (date == "" || timeOfBegin == "" || timeOfEnd == "")
- {
- ErrorWindow errorWindow = new ErrorWindow("не выбрано время");
- errorWindow.Show();
- return false;
- }
- TimeValidation(timeOfBegin);
- if (!TimeValidation(timeOfBegin))
- {
- return false;
- }
- TimeSpan.TryParse(timeOfBegin, out TimeSpan timeOfBeginResult);
- TimeValidation(timeOfEnd);
- if (!TimeValidation(timeOfEnd))
- {
- return false;
- }
- TimeSpan.TryParse(timeOfEnd, out TimeSpan timeOfEndResult);
- DateValidation(date);
- if (!DateValidation(date))
- {
- return false;
- }
- DateTime.TryParse(date, out DateTime dateResult);
- List<Exchange> 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 false;
- }
- if (dateResult.Date - DateTime.Now.Date > new TimeSpan(5, 0, 0, 0))
- {
- ErrorWindow errorWindow = new ErrorWindow("можно сформировать рассписание тольок на 5 дней вперёд");
- errorWindow.Show();
- return false;
- }
- return true;
- }
- public bool TimeValidation(string time)
- {
- TimeSpan timeResult;
- if (!TimeSpan.TryParse(time, out timeResult) || time.Count(item => item == ':') != 1)
- {
- ErrorWindow errorWindow = new ErrorWindow("неверно указано время");
- errorWindow.Show();
- return false;
- }
- return true;
- }
- public bool DateValidation(string date)
- {
- DateTime dateResult;
- if (!DateTime.TryParse(date, out dateResult) || date.Count(item => item == '.') != 2)
- {
- ErrorWindow errorWindow = new ErrorWindow("неверно указана дата");
- errorWindow.Show();
- return false;
- }
- return true;
- }
- private void BackButtonClick(object sender, RoutedEventArgs e)
- {
- MainWindow mainWindow = new MainWindow();
- mainWindow.Show();
- this.Close();
- }
- }
- }
|