/* * Visit to: http://w...content-available-to-author-only...x.com */ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data.SqlClient; using System.Linq; using System.Runtime.CompilerServices; using System.Windows; using System.Data.Entity; using WPF_CRUD_EFCodeFirst_Simple.Annotations; using WPF_CRUD_EFCodeFirst_Simple.Models; namespace WPF_CRUD_EFCodeFirst_Simple { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window, INotifyPropertyChanged { public MainWindow() { InitializeComponent(); DataContext = this; } private readonly ManagerDbContext _context = new ManagerDbContext(); #region CRUD Implementing private IEnumerable _departmentses; public ObservableCollection Departmentses { get { return new ObservableCollection(_context.Departmentses); } set { _departmentses = value; OnPropertyChanged("Departmentses"); } } private IEnumerable _employee; public IEnumerable Employees { get { return new ObservableCollection(_context.Employees.Include(e => e.Departments)); } set { _employee = value; OnPropertyChanged("Employees"); } } private Employee _currentSelectedEmployee; public Employee CurrentSelectedEmployee { get { return _currentSelectedEmployee; } set { _currentSelectedEmployee = value; OnPropertyChanged("CurrentSelectedEmployee"); } } private void AddNewEmployee(Employee employee) { _context.Employees.Add(employee); _context.SaveChanges(); } private void UpdateCurrentEmployee(Employee employee) { var employeeToUpdate = _context.Employees.SingleOrDefault (x => x.Id == employee.Id); if (employeeToUpdate != null) { employeeToUpdate.FirstName = employee.FirstName; employeeToUpdate.LastName = employee.LastName; employeeToUpdate.Birthday = employee.Birthday; employeeToUpdate.DepId = employee.DepId; } _context.SaveChanges(); } private void DeleteCurrentEmployee(Employee employee) { var employeeToDelete = _context.Employees.SingleOrDefault (x => x.Id == employee.Id); _context.Employees.Remove(employeeToDelete); _context.SaveChanges(); } #endregion #region INotifyPropertyChanged Implementing public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } #endregion #region Event Handlers private bool insert = false; /// /// Clear Form /// /// /// private void BtnInsert_Click(object sender, RoutedEventArgs e) { try { if (DtpkBirthday.SelectedDate != null && CbbDepartment.SelectedValue != null) AddNewEmployee(new Employee { FirstName = TxtFirstName.Text, LastName = TxtLastName.Text, Birthday = (DateTime)DtpkBirthday.SelectedDate, DepId = (int)CbbDepartment.SelectedValue }); DataGrid1.ItemsSource = Employees; // Refresh } catch (Exception ex) { MessageBox.Show(ex.Message); } //TxtId.Clear(); //TxtFirstName.Clear(); //TxtLastName.Clear(); //DtpkBirthday.SelectedDate = DateTime.Now; //CbbDepartment.ClearValue(ComboBox.SelectedItemProperty); } /// /// Change a Employee Object /// /// /// private void BtnEdit_Click(object sender, RoutedEventArgs e) { try { UpdateCurrentEmployee(CurrentSelectedEmployee); } catch (SqlException ex) { MessageBox.Show(ex.Message); } } /// /// Delete Employee Object /// /// /// private void BtnDelete_Click(object sender, RoutedEventArgs e) { var status = MessageBox.Show("Bạn có muốn xóa Nhân Viên này không?", "Cảnh Báo", MessageBoxButton.YesNo, MessageBoxImage.Question); if (status == MessageBoxResult.No) return; //ELSE DeleteCurrentEmployee(CurrentSelectedEmployee); DataGrid1.ItemsSource = Employees; // Refresh } /// /// Close Form /// /// /// private void BtnExit_Click(object sender, RoutedEventArgs e) { Close(); } #endregion } }