From 44b59e67a1a8761b165b6076947308d77d82cea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0?= Date: Sun, 28 Oct 2018 01:02:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B1=D0=B8=D0=BB=D0=B4=20=D0=B7=D0=B0=20=D1=81?= =?UTF-8?q?=D1=83=D0=B1=D0=B1=D0=BE=D1=82=D1=83.=20=D0=A0=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=81=D0=B5=D1=85=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D0=B9=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= =?UTF-8?q?,=20=D0=BD=D0=BE=20=D0=BD=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eCompanies/App.xaml.cs | 24 +++++++++++----- eCompanies/MainWindow.xaml.cs | 50 +++++++++++++++++++++++++++++----- eCompanies/UsersWindow.xaml.cs | 5 ++-- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/eCompanies/App.xaml.cs b/eCompanies/App.xaml.cs index 70a7436..90047dc 100644 --- a/eCompanies/App.xaml.cs +++ b/eCompanies/App.xaml.cs @@ -28,6 +28,7 @@ namespace eCompanies { using (var db = new CompaniesDBContext()) { + c.CompanyId = 0; db.Company.Add(c); db.SaveChanges(); } @@ -51,16 +52,23 @@ namespace eCompanies db.SaveChanges(); } } - - public static void removeCompany(List idList) + + public static void addUser(Users u) { using (var db = new CompaniesDBContext()) { - foreach (int id in idList) - { - var x = db.Company.Where(i => i.CompanyId.Equals(id)); - foreach (Company c in x) db.Company.Remove(c); - } + u.UserId = 0; + db.Users.Add(u); + db.SaveChanges(); + } + } + + public static void updateUser(int id) + { + using (var db = new CompaniesDBContext()) + { + var x = db.Users.Where(i => i.UserId.Equals(id)); + foreach (Users u in x) db.Users.Update(u); db.SaveChanges(); } } @@ -103,5 +111,7 @@ namespace eCompanies MessageBoxButton.YesNo); } + + } } diff --git a/eCompanies/MainWindow.xaml.cs b/eCompanies/MainWindow.xaml.cs index 2d4d2b9..e162c25 100644 --- a/eCompanies/MainWindow.xaml.cs +++ b/eCompanies/MainWindow.xaml.cs @@ -21,6 +21,12 @@ namespace eCompanies companyGrid.DataContext = App.getCompanies(); } + internal static void refreshDataGrid(DataGrid dg) + { + dg.CancelEdit(); + dg.Items.Refresh(); + } + private void updateCompanyItem(Company updatingCompany) { if (updatingCompany == null) return; @@ -28,8 +34,7 @@ namespace eCompanies for (int i = 0; i != c.Count(); i++) if (c[i].CompanyId.Equals(updatingCompany.CompanyId)) c[i] = updatingCompany; - companyGrid.Items.Refresh(); - + refreshDataGrid(companyGrid); } private void companyGrid_AddingNewItem(object sender, AddingNewItemEventArgs e) @@ -39,7 +44,7 @@ namespace eCompanies newItem.dataGridRowStatus = DataGridRowStatus.NEW; var c = ((DataGrid)sender).DataContext as ObservableCollection; if (c.Count != 0) - newItem.CompanyId = ++c[c.Count - 1].CompanyId; + newItem.CompanyId = c[c.Count - 1].CompanyId + 1; } private void companyGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) @@ -61,9 +66,10 @@ namespace eCompanies private void RowDelete_Click(object sender, RoutedEventArgs e) { ((Company)companyGrid.SelectedItem).dataGridRowStatus = DataGridRowStatus.REMOVED; - companyGrid.Items.Refresh(); + refreshDataGrid(companyGrid); } + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { switch (App.saveResultsMsgBox()) @@ -79,10 +85,40 @@ namespace eCompanies case MessageBoxResult.No: return; case MessageBoxResult.Yes: e.Cancel = true; return; } + switch (c.dataGridRowStatus) + { + case DataGridRowStatus.REMOVED: + App.removeCompany(c.CompanyId); + break; + case DataGridRowStatus.NEW: + syncUsers(c); + App.addCompany(c); + break; + case DataGridRowStatus.UPDATED: + syncUsers(c); + App.updateCompany(c); + break; + } + } + } + + private void syncUsers(Company c) + { + foreach (Users u in c.Users) + { + switch (u.dataGridRowStatus) + { + case DataGridRowStatus.REMOVED: + App.removeUser(u.UserId); + break; + case DataGridRowStatus.NEW: + App.addUser(u); + break; + case DataGridRowStatus.UPDATED: + App.updateUser(u.UserId); + break; + } } - // нужно здесь обновить всех редактированных юзеров - // и добавить новых в базу данных - // TODO: переписать все обновления БД для [dataGridRowStatus] } } } diff --git a/eCompanies/UsersWindow.xaml.cs b/eCompanies/UsersWindow.xaml.cs index 01b9bcd..2caefe2 100644 --- a/eCompanies/UsersWindow.xaml.cs +++ b/eCompanies/UsersWindow.xaml.cs @@ -53,13 +53,14 @@ namespace eCompanies } currentCompany.ContractStatus = contractStatusComboBox.SelectedIndex; currentCompany.Name = companyNameBox.Text; + currentCompany.dataGridRowStatus = DataGridRowStatus.UPDATED; updateCompanyItem(currentCompany); } private void RowDelete_Click(object sender, RoutedEventArgs e) { ((Users)usersGrid.SelectedItem).dataGridRowStatus = DataGridRowStatus.REMOVED; - usersGrid.Items.Refresh(); + MainWindow.refreshDataGrid(usersGrid); } private void usersGrid_CellEditEnding(object sender, System.Windows.Controls.DataGridCellEditEndingEventArgs e) @@ -76,7 +77,7 @@ namespace eCompanies newItem.dataGridRowStatus = DataGridRowStatus.NEW; var c = ((DataGrid)sender).DataContext as ObservableCollection; if (c.Count != 0) - newItem.UserId = ++c[c.Count - 1].UserId; + newItem.UserId = c[c.Count - 1].UserId + 1; } } }