using LR1.Entities;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data.Services.Client;
using System.Data.Entity.Core.Objects;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.Entity.Core.Objects.DataClasses;
using System.Data.Entity.Core;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Migrations;
using System.Data.Entity.ModelConfiguration;
using System.Data.Entity.Spatial;
using System.Data.Entity.SqlServer;
using System.Data.Entity.Utilities;
using System.Data.Entity.Validation;
using System.Data.Objects;
using System.Data.Entity;
namespace LR1
{
///
/// Логика взаимодействия для Workers.xaml
///
public partial class Workers : Page
{
public static WorkersEntities DataEntitiesEmployee { get; set; }
public static ObservableCollection ListEmployee;
public Workers()
{
DataEntitiesEmployee = new WorkersEntities();
InitializeComponent();
ListEmployee = new ObservableCollection();
}
private bool isDirty = true;
private bool isLoaded = false;
private void UndoCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = isLoaded;
}
private void UndoCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
RewriteEmployee();
DataGridEmployee.IsReadOnly = true;
MessageBox.Show("Отмена");
isDirty = true;
isLoaded = false;
}
private void DeleteCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = isDirty;
}
private void DeleteCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
Employee emp = DataGridEmployee.SelectedItem as Employee;
if (emp !=null)
{
MessageBoxResult result = MessageBox.Show("Удалить сотрудника: " + emp.Surname + " " + emp.Patronymic, "Предупреждение", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
DataEntitiesEmployee.Employees.Remove(emp);
DataGridEmployee.SelectedIndex = DataGridEmployee.SelectedIndex == 0 ? 1 : DataGridEmployee.SelectedIndex - 1;
ListEmployee.Remove(emp);
DataEntitiesEmployee.SaveChanges();
}
}
else
{
MessageBox.Show("Выберите строку для удаления");
}
MessageBox.Show("Удаление");
isDirty = true;
isLoaded = false;
}
private void AddCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = isDirty;
}
private void AddCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
Employee employee = Employee.CreateEmployee(DataGridEmployee.Items.Count + 14, "не задано", "не задано", "не задано", 0);
employee.Telephone = "не задано";
employee.Email = "не задано";
try
{
DataEntitiesEmployee.Employees.Add(employee);
ListEmployee.Add(employee);
DataGridEmployee.ScrollIntoView(employee);
DataGridEmployee.SelectedIndex = DataGridEmployee.Items.Count - 1;
DataGridEmployee.Focus();
DataGridEmployee.IsReadOnly = false;
MessageBox.Show("Создание");
isDirty = false;
isLoaded = true;
}
catch (DataServiceRequestException ex)
{
throw new ApplicationException("Ошибка добавления нового сотрудника в контекст данных" + ex.ToString());
}
}
private void EditCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = isDirty;
}
private void EditCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Редактирование");
DataGridEmployee.IsReadOnly = false;
DataGridEmployee.BeginEdit();
isDirty = false;
isLoaded = true;
}
private void FindCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = isDirty;
}
private void FindCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Поиск");
isDirty = false;
isLoaded = true;
BorderFind.Visibility = System.Windows.Visibility.Visible;
}
private void SaveCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = isLoaded;
}
private void SaveCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Сохра");
DataEntitiesEmployee.SaveChanges();
isDirty = true;
DataGridEmployee.IsReadOnly=true;
isLoaded = false;
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
GetEmployees();
DataGridEmployee.ItemsSource = ListEmployee;
}
private void GetEmployees()
{
var queryEmployee = DataEntitiesEmployee.Employees.OrderBy(Employee => Employee.Surname);
foreach (Employee emp in queryEmployee)
{
ListEmployee.Add(emp);
}
DataGridEmployee.ItemsSource = ListEmployee;
}
private void RewriteEmployee()
{
DataEntitiesEmployee = new WorkersEntities();
ListEmployee.Clear();
GetEmployees();
}
private void TextBoxSurname_TextChanged(object sender, TextChangedEventArgs e)
{
ButtonFindTitle.IsEnabled = false;
ButtonFindSurname.IsEnabled = true;
ComboBoxTitle.Text = "";
}
private void ComboBoxTitle_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ButtonFindTitle.IsEnabled = true;
ButtonFindSurname.IsEnabled = false;
TextBoxSurname.Text = "";
}
private void ButtonFindSurname_Click(object sender, RoutedEventArgs e)
{
string surname = TextBoxSurname.Text;
DataEntitiesEmployee = new WorkersEntities();
ListEmployee.Clear();
var queryEmployee = from employee in DataEntitiesEmployee.Employees
where employee.Surname == surname
select employee;
foreach (Employee emp in queryEmployee)
{
ListEmployee.Add(emp);
}
if (ListEmployee.Count > 0)
{
DataGridEmployee.ItemsSource = ListEmployee;
ButtonFindSurname.IsEnabled = true;
ButtonFindTitle.IsEnabled = false;
}
else
MessageBox.Show("сотрудник с фамилией \n" + surname+" не найден", "Предупреждение!", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void ButtonFindTitle_Click(object sender, RoutedEventArgs e)
{
DataEntitiesEmployee = new WorkersEntities();
ListEmployee.Clear();
Title title = ComboBoxTitle.SelectedItem as Title;
//var queryEmployee = DataEntitiesEmployee.Employees.OrderBy(Employee => Employee.Surname);
var queryEmployee = from employee in DataEntitiesEmployee.Employees
where employee.TitleID == title.ID
orderby employee.Surname
select employee;
foreach (Employee emp in queryEmployee)
{
ListEmployee.Add(emp);
}
DataGridEmployee.ItemsSource = ListEmployee;
}
private void RefreshCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
RewriteEmployee();
DataGridEmployee.IsReadOnly = false;
}
}
}