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 +