From bb431aff3352c5a372af8b3cf222bfd9a785df32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0?= Date: Sat, 27 Oct 2018 18:16:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=8D=D0=BB=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20=D0=B8=D0=B7=20DataGrid?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B8=D1=81=D1=85=D0=BE=D0=B4=D0=B8=D1=82?= =?UTF-8?q?=20=D0=B2=20=D0=B2=D0=B8=D0=B4=D0=B5=20=D1=81=D0=BA=D1=80=D1=8B?= =?UTF-8?q?=D1=82=D0=B8=D0=B5.=20=D0=A0=D0=B5=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=B6=D0=B5=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B8=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=20=D0=91=D0=94=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B1=D1=83=D0=B4=D0=B5=D1=82?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F=D1=82=D1=8C=D1=81?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B4=D0=B8=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=B0=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eCompanies/App.xaml.cs | 9 ------ eCompanies/CompaniesDBContext.cs | 5 +++- eCompanies/Company.cs | 4 +-- eCompanies/DataGridRowStatus.cs | 16 ++++++++++ eCompanies/HiddenConverter.cs | 28 ++++++++++++++++++ eCompanies/MainWindow.xaml | 2 ++ eCompanies/MainWindow.xaml.cs | 51 ++++++++++++-------------------- eCompanies/Users.cs | 2 ++ eCompanies/UsersWindow.xaml | 2 ++ eCompanies/UsersWindow.xaml.cs | 36 +++++++--------------- eCompanies/eCompanies.csproj | 2 ++ 11 files changed, 87 insertions(+), 70 deletions(-) create mode 100644 eCompanies/DataGridRowStatus.cs create mode 100644 eCompanies/HiddenConverter.cs diff --git a/eCompanies/App.xaml.cs b/eCompanies/App.xaml.cs index a30ee0f..0530423 100644 --- a/eCompanies/App.xaml.cs +++ b/eCompanies/App.xaml.cs @@ -42,15 +42,6 @@ namespace eCompanies } } - public static void updateCompany1(Company c) - { - //using (var db = new CompaniesDBContext()) - //{ - // var x = db.Company.Where(i => i.CompanyId.Equals(c.CompanyId)); - // foreach (Company t in x) t = c; - //} - } - public static void removeCompany(int id) { using (var db = new CompaniesDBContext()) diff --git a/eCompanies/CompaniesDBContext.cs b/eCompanies/CompaniesDBContext.cs index 4f02394..d0da161 100644 --- a/eCompanies/CompaniesDBContext.cs +++ b/eCompanies/CompaniesDBContext.cs @@ -38,7 +38,8 @@ namespace eCompanies entity.Property(e => e.Name).IsRequired(); entity.Ignore("contract"); - entity.Ignore("needUpdate"); + + entity.Ignore("dataGridRowStatus"); }); modelBuilder.Entity(entity => @@ -57,6 +58,8 @@ namespace eCompanies .WithMany(p => p.Users) .HasForeignKey(d => d.CompanyId) .HasConstraintName("FK_Users_Company"); + + entity.Ignore("dataGridRowStatus"); }); } } diff --git a/eCompanies/Company.cs b/eCompanies/Company.cs index e22b093..2776c75 100644 --- a/eCompanies/Company.cs +++ b/eCompanies/Company.cs @@ -17,7 +17,7 @@ namespace eCompanies public int ContractStatus { get; set; } public ICollection Users { get; set; } - - public bool needUpdate { get; set; } + + public DataGridRowStatus dataGridRowStatus { get; set; } } } diff --git a/eCompanies/DataGridRowStatus.cs b/eCompanies/DataGridRowStatus.cs new file mode 100644 index 0000000..776173e --- /dev/null +++ b/eCompanies/DataGridRowStatus.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace eCompanies +{ + public enum DataGridRowStatus + { + DEFAULT, + NEW, + UPDATED, + REMOVED + } +} diff --git a/eCompanies/HiddenConverter.cs b/eCompanies/HiddenConverter.cs new file mode 100644 index 0000000..2aeabe5 --- /dev/null +++ b/eCompanies/HiddenConverter.cs @@ -0,0 +1,28 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace eCompanies +{ + [ValueConversion(typeof(DataGridRowStatus), typeof(Visibility))] + public class HiddenConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if ((DataGridRowStatus)value == DataGridRowStatus.REMOVED) + { + return Visibility.Collapsed; + } + else + { + return Visibility.Visible; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/eCompanies/MainWindow.xaml b/eCompanies/MainWindow.xaml index 5c11e9e..f22ceda 100644 --- a/eCompanies/MainWindow.xaml +++ b/eCompanies/MainWindow.xaml @@ -10,6 +10,7 @@ + @@ -19,6 +20,7 @@ diff --git a/eCompanies/MainWindow.xaml.cs b/eCompanies/MainWindow.xaml.cs index 347c539..3ea9f99 100644 --- a/eCompanies/MainWindow.xaml.cs +++ b/eCompanies/MainWindow.xaml.cs @@ -14,7 +14,6 @@ namespace eCompanies public partial class MainWindow : Window { UsersWindow usersWindowInstance = null; - List deletingCompanyList = new List(); public MainWindow() { @@ -25,38 +24,26 @@ namespace eCompanies private void updateCompanyItem(Company updatingCompany) { if (updatingCompany == null) return; - updatingCompany.needUpdate = true; } - + + private void companyGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) + { + ((Company)e.Row.Item).dataGridRowStatus = DataGridRowStatus.UPDATED; + } private void RowEdit_Click(object sender, RoutedEventArgs e) { UpdateCompanyGridDelegate d = updateCompanyItem; Company company = (Company)companyGrid.CurrentItem; if (usersWindowInstance != null) usersWindowInstance.Close(); - usersWindowInstance = new UsersWindow(company, d); + usersWindowInstance = new UsersWindow(company, d, deletingUsersList); usersWindowInstance.Show(); } private void RowDelete_Click(object sender, RoutedEventArgs e) { - deleteCompanyFromGrid(); - } - - private void deleteCompanyFromGrid() - { - var companies = (ObservableCollection)companyGrid.DataContext; - foreach (Company c in companies) - { - int deletingUser = ((Company)companyGrid.CurrentItem).CompanyId; - if (Equals(c.CompanyId, deletingUser)) - { - deletingCompanyList.Add(((Company)companyGrid.CurrentItem).CompanyId); - companies.Remove(c); - companyGrid.DataContext = companies; - return; - } - } + ((Company)companyGrid.SelectedItem).dataGridRowStatus = DataGridRowStatus.REMOVED; + companyGrid.Items.Refresh(); } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) @@ -87,18 +74,18 @@ namespace eCompanies else if (mbr == MessageBoxResult.No) return; } - if (c.CompanyId == 0) - App.addCompany(c); - else if (c.needUpdate) - App.updateCompany(c); + //if (c.CompanyId == 0) + // App.addCompany(c); + //else if (c.needUpdate) + // App.updateCompany(c); } - if (deletingCompanyList != null) - App.removeCompany(deletingCompanyList); - } - - private void companyGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) - { - ((Company)e.Row.Item).needUpdate = true; + //if (deletingCompanyList != null) + // App.removeCompany(deletingCompanyList); + //if (deletingUsersList != null) + // App.removeUser(deletingUsersList); + // нужно здесь обновить всех редактированных юзеров + // и добавить новых в базу данных + // TODO: переписать все обновления БД для [dataGridRowStatus] } } } diff --git a/eCompanies/Users.cs b/eCompanies/Users.cs index e25a273..54b020f 100644 --- a/eCompanies/Users.cs +++ b/eCompanies/Users.cs @@ -9,5 +9,7 @@ public string Password { get; set; } public Company Company { get; set; } + + public DataGridRowStatus dataGridRowStatus { get; set; } } } diff --git a/eCompanies/UsersWindow.xaml b/eCompanies/UsersWindow.xaml index 27e07c6..d84be8c 100644 --- a/eCompanies/UsersWindow.xaml +++ b/eCompanies/UsersWindow.xaml @@ -24,10 +24,12 @@ DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"> + diff --git a/eCompanies/UsersWindow.xaml.cs b/eCompanies/UsersWindow.xaml.cs index 9a20e43..84681c4 100644 --- a/eCompanies/UsersWindow.xaml.cs +++ b/eCompanies/UsersWindow.xaml.cs @@ -14,14 +14,13 @@ namespace eCompanies { Company currentCompany; UpdateCompanyGridDelegate updateCompanyItem; - List deletingUsersList = new List(); - public UsersWindow(Company c, UpdateCompanyGridDelegate d) + public UsersWindow(Company c, UpdateCompanyGridDelegate d, List deletingUsersList) { InitializeComponent(); currentCompany = c; updateCompanyItem = d; - updateUsersGrid(c); + updateUsersGrid(c); } private void updateUsersGrid(Company c) @@ -58,12 +57,12 @@ namespace eCompanies return; } - if (deletingUsersList != null) - App.removeUser(deletingUsersList); - - u.CompanyId = currentCompany.CompanyId; - u.Company = currentCompany; - currentCompany.Users.Add(u); + if (u.UserId == 0) + { + u.CompanyId = currentCompany.CompanyId; + u.Company = currentCompany; + currentCompany.Users.Add(u); + } } currentCompany.ContractStatus = contractStatusComboBox.SelectedIndex; @@ -71,25 +70,10 @@ namespace eCompanies updateCompanyItem(currentCompany); } - private void deleteUserFromGrid() - { - var users = (ObservableCollection)usersGrid.DataContext; - foreach (Users u in users) - { - int deletingUser = ((Users)usersGrid.CurrentItem).UserId; - if (Equals(u.UserId, deletingUser)) - { - deletingUsersList.Add(((Users)usersGrid.CurrentItem).UserId); - users.Remove(u); - usersGrid.DataContext = users; - return; - } - } - } - private void RowDelete_Click(object sender, RoutedEventArgs e) { - deleteUserFromGrid(); + ((Users)usersGrid.SelectedItem).dataGridRowStatus = DataGridRowStatus.REMOVED; + usersGrid.Items.Refresh(); } } } diff --git a/eCompanies/eCompanies.csproj b/eCompanies/eCompanies.csproj index 1cf71d8..f580b12 100644 --- a/eCompanies/eCompanies.csproj +++ b/eCompanies/eCompanies.csproj @@ -140,8 +140,10 @@ + + UsersWindow.xaml