using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace eCompanies { /// /// Логика взаимодействия для UsersWindow.xaml /// public partial class UsersWindow : Window { Company currentCompany; UpdateCompanyGridDelegate updateCompanyItem; public UsersWindow(Company c, UpdateCompanyGridDelegate d) { InitializeComponent(); currentCompany = c; if (currentCompany.dataGridRowStatus == DataGridRowStatus.DEFAULT) currentCompany.Users = App.getUsers(c.CompanyId); updateCompanyItem = d; updateUsersGrid(c); } private void updateUsersGrid(Company c) { companyNameBox.Text = c.Name; contractStatusComboBox.SelectedIndex = c.ContractStatus; usersGrid.DataContext = new ObservableCollection(c.Users.AsEnumerable()); } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { switch (App.saveResultsMsgBox()) { case MessageBoxResult.No: return; case MessageBoxResult.Cancel: e.Cancel = true; return; } currentCompany.Users.Clear(); foreach (Users u in (ObservableCollection)usersGrid.DataContext) { if (u.dataGridRowStatus != DataGridRowStatus.REMOVED) if (u.Login == null || u.Password == null || u.Name == null) switch (App.fieldHasNotFilled()) { case MessageBoxResult.No: return; case MessageBoxResult.Yes: e.Cancel = true; return; } u.CompanyId = currentCompany.CompanyId; u.Company = currentCompany; currentCompany.Users.Add(u); } currentCompany.ContractStatus = contractStatusComboBox.SelectedIndex; currentCompany.Name = companyNameBox.Text; if (currentCompany.dataGridRowStatus != DataGridRowStatus.NEW) currentCompany.dataGridRowStatus = DataGridRowStatus.UPDATED; updateCompanyItem(currentCompany); } private void RowDelete_Click(object sender, RoutedEventArgs e) { ((Users)usersGrid.SelectedItem).dataGridRowStatus = DataGridRowStatus.REMOVED; MainWindow.refreshDataGrid(usersGrid); } private void usersGrid_CellEditEnding(object sender, System.Windows.Controls.DataGridCellEditEndingEventArgs e) { var context = e.Row.DataContext as Users; if (context.dataGridRowStatus != DataGridRowStatus.NEW) context.dataGridRowStatus = DataGridRowStatus.UPDATED; } private void usersGrid_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e) { e.NewItem = new Users(); var newItem = e.NewItem as Users; newItem.dataGridRowStatus = DataGridRowStatus.NEW; } } }