From 237d5d99e2a21dc6a1b05b9f951c9672cb4d85a8 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, 21 Oct 2018 19:04:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20DataGrid=20=D0=BD=D0=B0=20MainWindow=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=B7=D0=B0=D0=B8=D0=BC=D0=BE=D0=B4=D0=B5=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B8=D1=8F=20=D1=81=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BF=D0=B0=D0=BD=D0=B8=D1=8F=D0=BC=D0=B8.=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D0=B5=20Window=20-=20UsersWindow=20=D1=81=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B3=D0=B8=D1=87=D0=BD=D1=8B=D0=BC=20DataGr?= =?UTF-8?q?id.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B4?= =?UTF-8?q?=D0=B8=D0=B0=D0=BB=D0=BE=D0=B3=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D0=B8.=20=D0=A2?= =?UTF-8?q?=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20ContractStatus=20=D0=B2=20?= =?UTF-8?q?=D0=91=D0=94=20=D0=B8=D0=BC=D0=B5=D0=B5=D1=82=20=D1=82=D0=B8?= =?UTF-8?q?=D0=BF=20int.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db-creation.sql | 5 ++-- eCompanies/App.xaml.cs | 25 ++++++++++++++++++ eCompanies/Companies.cs | 5 ++-- eCompanies/CompaniesDBContext.cs | 4 +-- eCompanies/MainWindow.xaml | 19 +++++++++++--- eCompanies/MainWindow.xaml.cs | 28 ++++++++------------ eCompanies/UsersWindow.xaml | 29 +++++++++++++++++++++ eCompanies/UsersWindow.xaml.cs | 44 ++++++++++++++++++++++++++++++++ eCompanies/eCompanies.csproj | 7 +++++ 9 files changed, 138 insertions(+), 28 deletions(-) create mode 100644 eCompanies/UsersWindow.xaml create mode 100644 eCompanies/UsersWindow.xaml.cs diff --git a/db-creation.sql b/db-creation.sql index c7bf05e..8b63896 100644 --- a/db-creation.sql +++ b/db-creation.sql @@ -7,7 +7,7 @@ GO CREATE TABLE [Companies] ( [CompanyId] int NOT NULL IDENTITY, [Name] nvarchar(max) NOT NULL, - [ContractStatus] varchar(15) NOT NULL CHECK ([ContractStatus] IN('NotReachedYet', 'Reached', 'Terminated')), + [ContractStatus] int NOT NULL CHECK ([ContractStatus] IN(0, 1, 2)), CONSTRAINT [PK_CompanyId] PRIMARY KEY ([CompanyId]) ); GO @@ -24,5 +24,6 @@ CREATE TABLE [Users] ( GO INSERT INTO [Companies] (Name, ContractStatus) VALUES -('Defend Studio', 'NotReachedYet') +('Defend Studio', '0'), +('Yandex Music', '1') GO \ No newline at end of file diff --git a/eCompanies/App.xaml.cs b/eCompanies/App.xaml.cs index 2a0f874..7eb1fc0 100644 --- a/eCompanies/App.xaml.cs +++ b/eCompanies/App.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Configuration; using System.Data; using System.Linq; @@ -14,5 +15,29 @@ namespace eCompanies /// public partial class App : Application { + private void addCompany(Companies c) + { + using (var db = new CompaniesDBContext()) + { + db.Companies.Add(new Companies { Name = "Unknown company", ContractStatus = (int) Status.NotReachedYet }); + var count = db.SaveChanges(); + } + } + + public static ObservableCollection getCompanies() + { + using (var db = new CompaniesDBContext()) + return new ObservableCollection(db.Companies.AsEnumerable()); + } + + public static void updateCompany(Companies c) + { + using (var db = new CompaniesDBContext()) + { + db.Companies.Update(c); + db.SaveChanges(); + } + } + } } diff --git a/eCompanies/Companies.cs b/eCompanies/Companies.cs index f0e2d28..e3fcff6 100644 --- a/eCompanies/Companies.cs +++ b/eCompanies/Companies.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; namespace eCompanies { + public enum Status { NotReachedYet, Reached, Terminated } public partial class Companies { - public enum Status { NotReachedYet, Reached, Terminated } public Companies() { Users = new HashSet(); @@ -13,8 +13,7 @@ namespace eCompanies public int CompanyId { get; set; } public string Name { get; set; } - public string ContractStatus { get; set; } - + public int ContractStatus { get; set; } public ICollection Users { get; set; } } } diff --git a/eCompanies/CompaniesDBContext.cs b/eCompanies/CompaniesDBContext.cs index 3247c2d..ad10a8b 100644 --- a/eCompanies/CompaniesDBContext.cs +++ b/eCompanies/CompaniesDBContext.cs @@ -33,9 +33,7 @@ namespace eCompanies entity.HasKey(e => e.CompanyId); entity.Property(e => e.ContractStatus) - .IsRequired() - .HasMaxLength(15) - .IsUnicode(false); + .IsRequired(); entity.Property(e => e.Name).IsRequired(); }); diff --git a/eCompanies/MainWindow.xaml b/eCompanies/MainWindow.xaml index cf1f943..bc4c4bc 100644 --- a/eCompanies/MainWindow.xaml +++ b/eCompanies/MainWindow.xaml @@ -4,10 +4,23 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:eCompanies" + xmlns:core="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> - - - + + + + + + + + + + + + + + + diff --git a/eCompanies/MainWindow.xaml.cs b/eCompanies/MainWindow.xaml.cs index 2f301f5..4aa6fa9 100644 --- a/eCompanies/MainWindow.xaml.cs +++ b/eCompanies/MainWindow.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -20,31 +21,24 @@ namespace eCompanies /// public partial class MainWindow : Window { + UsersWindow usersWindowInstance = null; public MainWindow() { InitializeComponent(); - doSomethingWithDb(); + addTextToBlock(); } - - - private void addTextToBlock(string str = "") + + private void addTextToBlock() { - textBlock.Text += ("\n" + str); + companyGrid.DataContext = App.getCompanies(); } - private void doSomethingWithDb() + private void companyGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { - using (var db = new CompaniesDBContext()) - { - db.Companies.Add(new Companies { Name = "Unknown company", ContractStatus = Companies.Status.NotReachedYet.ToString() }); - var count = db.SaveChanges(); - addTextToBlock(count + " records saved to database"); - - addTextToBlock(); - addTextToBlock("All companies in database:"); - foreach (var company in db.Companies) - addTextToBlock(" - " + company.Name); - } + Companies company = (Companies)companyGrid.CurrentItem; + if (usersWindowInstance != null) usersWindowInstance.Close(); + usersWindowInstance = new UsersWindow(company); + usersWindowInstance.Show(); } } } diff --git a/eCompanies/UsersWindow.xaml b/eCompanies/UsersWindow.xaml new file mode 100644 index 0000000..b12f747 --- /dev/null +++ b/eCompanies/UsersWindow.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + Еще не заключен + Заключен + Расторгнут + + + diff --git a/eCompanies/UsersWindow.xaml.cs b/eCompanies/UsersWindow.xaml.cs new file mode 100644 index 0000000..74e067f --- /dev/null +++ b/eCompanies/UsersWindow.xaml.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +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.Shapes; + +namespace eCompanies +{ + /// + /// Логика взаимодействия для UsersWindow.xaml + /// + public partial class UsersWindow : Window + { + Companies currentCompany; + public UsersWindow(Companies c) + { + InitializeComponent(); + currentCompany = c; + companyNameBox.Text = c.Name; + contractStatusComboBox.SelectedIndex = c.ContractStatus; + usersGrid.DataContext = new ObservableCollection(c.Users.AsEnumerable()); + } + + private void usersGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + } + + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + MessageBoxResult mbr = MessageBox.Show("Вы закрываете окно с компанией. Хотите сохранить результаты?", "Сохранение изменений", MessageBoxButton.YesNo); + if (mbr == MessageBoxResult.Yes) + App.updateCompany(currentCompany); + } + } +} diff --git a/eCompanies/eCompanies.csproj b/eCompanies/eCompanies.csproj index 3ab5065..6b6e5a9 100644 --- a/eCompanies/eCompanies.csproj +++ b/eCompanies/eCompanies.csproj @@ -140,6 +140,9 @@ + + UsersWindow.xaml + MSBuild:Compile Designer @@ -153,6 +156,10 @@ MainWindow.xaml Code + + Designer + MSBuild:Compile +