소스 검색

Сделала 4 лабораторную

Igor 5 달 전
부모
커밋
0af846f38f
7개의 변경된 파일126개의 추가작업 그리고 25개의 파일을 삭제
  1. 17 14
      AddEditPage.xaml
  2. 32 1
      AddEditPage.xaml.cs
  3. 3 1
      App.config
  4. 11 1
      Entities/Model1.Context.cs
  5. 6 5
      ListHotels.xaml
  6. 30 3
      ListHotels.xaml.cs
  7. 27 0
      MainWindow.xaml.cs

+ 17 - 14
AddEditPage.xaml

@@ -14,21 +14,24 @@
             <ColumnDefinition Width="*"/>
         </Grid.ColumnDefinitions>
         <Grid.RowDefinitions>
-            <RowDefinition Height="*"/>
-            <RowDefinition Height="*"/>
-            <RowDefinition Height="*"/>
-            <RowDefinition Height="*"/>
-            <RowDefinition Height="*"/>
+            <RowDefinition Height="32"/>
+            <RowDefinition Height="32"/>
+            <RowDefinition Height="32"/>
+            <RowDefinition Height="32"/>
+            <RowDefinition Height="32"/>
+            <RowDefinition Height="64"/>
         </Grid.RowDefinitions>
-        <TextBlock Text="Фамилия" HorizontalAlignment="Center" Margin="0,30,0,40"/>
-        <TextBlock Text="Имя" Grid.Row="1" HorizontalAlignment="Center" Margin="0,30,0,40"/>
-        <TextBlock Text="Отчество" Grid.Row="2" HorizontalAlignment="Center" Margin="0,30,0,40"/>
-        <TextBlock Text="Логин" Grid.Row="3" HorizontalAlignment="Center" Margin="0,30,0,40"/>
-        <TextBox MaxLength="100" Grid.Column="1" Margin="0,20,0,40"/>
-        <TextBox MaxLength="50" Grid.Column="1" Grid.Row="1" Margin="0,20,0,40"/>
-        <TextBox MaxLength="100" Grid.Column="1" Grid.Row="2" Margin="0,20,0,40"/>
-        <TextBox MaxLength="15" Grid.Column="1" Grid.Row="3" Margin="0,20,350,40"/>
+        <TextBlock Text="Пароль" HorizontalAlignment="Center" Margin="4"/>
+        <TextBlock Text="Фамилия" Grid.Row="1" HorizontalAlignment="Center" Margin="4"/>
+        <TextBlock Text="Имя" Grid.Row="2" HorizontalAlignment="Center" Margin="4"/>
+        <TextBlock Text="Отчество" Grid.Row="3" HorizontalAlignment="Center" Margin="4"/>
+        <TextBlock Text="Логин" Grid.Row="4" HorizontalAlignment="Center" Margin="4"/>
+        <TextBox Text="{Binding Password}" MaxLength="50" Grid.Column="1" Margin="4,4,70,4"/>
+        <TextBox Text="{Binding FirstName}" MaxLength="100" Grid.Column="1" Grid.Row="1" Margin="4,4,70,4"/>
+        <TextBox Text="{Binding MiddleName}" MaxLength="50" Grid.Column="1" Grid.Row="2" Margin="4,4,70,4"/>
+        <TextBox Text="{Binding LastName}" MaxLength="100" Grid.Column="1" Grid.Row="3" Margin="4,4,70,4"/>
+        <TextBox Text="{Binding Login}" MaxLength="15" Grid.Column="1" Grid.Row="4" Margin="4,4,500,4"/>
 
-        <Button Content="Сохранить" Grid.ColumnSpan="2" Grid.Row="4" Name="BtnSave" Click="BtnSave_Click"></Button>
+        <Button Content="Сохранить" Grid.ColumnSpan="2" Grid.Row="5" Name="BtnSave" Click="BtnSave_Click"></Button>
     </Grid>
 </Page>

+ 32 - 1
AddEditPage.xaml.cs

@@ -12,6 +12,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using WpfApp1.Entities;
 
 namespace WpfApp1
 {
@@ -20,14 +21,44 @@ namespace WpfApp1
     /// </summary>
     public partial class AddEditPage : Page
     {
-        public AddEditPage()
+        private User _currentUser = new User();
+        public AddEditPage(User selectedUser)
         {
             InitializeComponent();
+
+            if (selectedUser != null)
+                _currentUser = selectedUser;
+
+            DataContext = _currentUser;
+            _currentUser.IsDeleted = false;
         }
 
         private void BtnSave_Click(object sender, RoutedEventArgs e)
         {
+            StringBuilder errors = new StringBuilder();
+            if (string.IsNullOrWhiteSpace(_currentUser.Password)) errors.AppendLine("Укажите свой пароль!");
+            if (string.IsNullOrWhiteSpace(_currentUser.FirstName))errors.AppendLine("Укажите имя!");
+            if (string.IsNullOrWhiteSpace(_currentUser.MiddleName))errors.AppendLine("Укажите фамилию!");
+            if (string.IsNullOrWhiteSpace(_currentUser.LastName))errors.AppendLine("Укажите отчество!");
+            if (string.IsNullOrWhiteSpace(_currentUser.Login))errors.AppendLine("Укажите свой логин!");
+            if (errors.Length > 0)
+            {
+                MessageBox.Show(errors.ToString());
+                return;
+            }
 
+            if (_currentUser.ID == 0)
+                user20Entities.GetContext().User.Add(_currentUser);
+            try
+            {
+                user20Entities.GetContext().SaveChanges();
+                MessageBox.Show("Данные сохранены!");
+                Manager.MainFrame.GoBack();
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(ex.Message.ToString());
+            }
         }
     }
 }

+ 3 - 1
App.config

@@ -7,7 +7,9 @@
   <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
   </startup>
-  <connectionStrings><add name="user26Entities" connectionString="metadata=res://*/Entities.HAVLAD.csdl|res://*/Entities.HAVLAD.ssdl|res://*/Entities.HAVLAD.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=srv-wsr\IS4;initial catalog=user20;user id=user20;password=is4-user20;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="user20Entities" connectionString="metadata=res://*/Entities.Model1.csdl|res://*/Entities.Model1.ssdl|res://*/Entities.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=srv-wsr\is4;initial catalog=user20;persist security info=True;user id=user20;password=is4-user20;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
+  <connectionStrings>
+	  <add name="user20Entities" connectionString="metadata=res://*/Entities.Model1.csdl|res://*/Entities.Model1.ssdl|res://*/Entities.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=srv-wsr\is4;initial catalog=user20;persist security info=True;user id=user20;password=is4-user20;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
+	  </connectionStrings>
   <entityFramework>
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
       <parameters>

+ 11 - 1
Entities/Model1.Context.cs

@@ -15,11 +15,21 @@ namespace WpfApp1.Entities
     
     public partial class user20Entities : DbContext
     {
+        private static user20Entities _context;
+
         public user20Entities()
             : base("name=user20Entities")
         {
         }
-    
+
+        public static user20Entities GetContext()
+        {
+            if (_context == null)
+                _context = new user20Entities();
+
+            return _context;
+        }
+
         protected override void OnModelCreating(DbModelBuilder modelBuilder)
         {
             throw new UnintentionalCodeFirstException();

+ 6 - 5
ListHotels.xaml

@@ -6,7 +6,7 @@
       xmlns:local="clr-namespace:WpfApp1"
       mc:Ignorable="d" 
       d:DesignHeight="450" d:DesignWidth="800"
-      Title="ListHotels">
+      Title="ListHotels" IsVisibleChanged="Page_IsVisibleChanged">
 
     <Grid>
         <Grid.RowDefinitions>
@@ -15,10 +15,11 @@
         </Grid.RowDefinitions>
         <DataGrid x:Name="DGridHotels" AutoGenerateColumns = "false" IsReadOnly="True">
             <DataGrid.Columns>
-                <DataGridTextColumn Header="Фамилия" Binding="{Binding FirstName}" Width="160"></DataGridTextColumn>
-                <DataGridTextColumn Header="Имя" Binding="{Binding MiddleName}" Width="150"></DataGridTextColumn>
-                <DataGridTextColumn Header="Отчество" Binding="{Binding LastName}" Width="160"></DataGridTextColumn>
-                <DataGridTextColumn Header="Логин" Binding="{Binding Login}" Width="180"></DataGridTextColumn>
+                <DataGridTextColumn Header="Пароль" Binding="{Binding Password}" Width="100"></DataGridTextColumn>
+                <DataGridTextColumn Header="Фамилия" Binding="{Binding FirstName}" Width="140"></DataGridTextColumn>
+                <DataGridTextColumn Header="Имя" Binding="{Binding MiddleName}" Width="120"></DataGridTextColumn>
+                <DataGridTextColumn Header="Отчество" Binding="{Binding LastName}" Width="140"></DataGridTextColumn>
+                <DataGridTextColumn Header="Логин" Binding="{Binding Login}" Width="160"></DataGridTextColumn>
                 <DataGridCheckBoxColumn Header="Уволен" Binding="{Binding IsDeleted}" Width="150"></DataGridCheckBoxColumn>
                 <DataGridTemplateColumn Width="auto">
                     <DataGridTemplateColumn.CellTemplate>

+ 30 - 3
ListHotels.xaml.cs

@@ -12,6 +12,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using WpfApp1.Entities;
 
 namespace WpfApp1
 {
@@ -23,21 +24,47 @@ namespace WpfApp1
         public ListHotels()
         {
             InitializeComponent();
-            DGridHotels.ItemsSource = new Entities.user20Entities().User.ToList();
+            //DGridHotels.ItemsSource = new Entities.user20Entities().User.ToList();
         }
         private void BtnEdit_Click(object sender, RoutedEventArgs e)
         {
-
+            Manager.MainFrame.Navigate(new AddEditPage((sender as Button).DataContext as User));
         }
 
         private void BtnAdd_Click(object sender, RoutedEventArgs e)
         {
-            Manager.MainFrame.Navigate(new AddEditPage());
+            Manager.MainFrame.Navigate(new AddEditPage(null));
         }
 
         private void BtnDelete_Click(object sender, RoutedEventArgs e)
         {
+            var usersForRemoving = DGridHotels.SelectedItems.Cast<User>().ToList();
+            if (MessageBox.Show($"Вы точно хотите удалить следующие {usersForRemoving.Count()} данные?", "Внимание!",
+                MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
+            {
+                try
+                {
+                    usersForRemoving.ForEach(user => { user.IsDeleted = true;});
+                    user20Entities.GetContext().SaveChanges();
+                    MessageBox.Show("Данные удалены!");
+
+                    DGridHotels.ItemsSource = user20Entities.GetContext().User.Where(u => u.IsDeleted == false).ToList();
+                }
+                catch (Exception ex)
+                {
+                    var inner = ex.InnerException;
+                    MessageBox.Show(inner.ToString());
+                }
+            }
+        }
 
+        private void Page_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
+        {
+            if (Visibility == Visibility.Visible)
+            {
+                user20Entities.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload());
+                DGridHotels.ItemsSource = user20Entities.GetContext().User.ToList();
+            }
         }
     }
 }

+ 27 - 0
MainWindow.xaml.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -13,6 +14,7 @@ using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
+using WpfApp1.Entities;
 
 namespace WpfApp1
 {
@@ -26,8 +28,33 @@ namespace WpfApp1
             InitializeComponent();
             MainFrame.Navigate(new AuthPage());
             Manager.MainFrame = MainFrame;
+
+            //ImportUsers();
         }
 
+        //private void ImportUsers()
+        //{
+        //    var fileData = File.ReadAllLines(@"D:\документы 4\05.04\данные.txt");
+            
+        //    foreach (var Line in fileData)
+        //    {
+        //        var data = Line.Split('\t');
+        //        var tempoUser = new User
+        //        {
+        //            Password = "",
+        //            FirstName = data[3].Replace("\"",""),
+        //            MiddleName = data[2].Replace("\"",""),
+        //            LastName = data[4].Replace("\"",""),
+        //            Login = data[5].Replace("\"",""),
+        //            IsDeleted = (data[6] == "1") ? false : true
+
+        //        };
+        //        user20Entities.GetContext().User.Add(tempoUser);
+        //    }
+
+        //    user20Entities.GetContext().SaveChanges();
+        //}
+
         private void BtnBack_Click(object sender, RoutedEventArgs e)
         {
             Manager.MainFrame.GoBack();