Explorar el Código

3 часа работы, осталось только дублирование

Oleg Kireev hace 3 años
padre
commit
fba858ef69

+ 15 - 1
Hotel_Course_Project/AdminPage.xaml

@@ -23,7 +23,21 @@
                     </Grid.ColumnDefinitions>
 
                     <Button x:Name="AddStaffBtn" Click="AddStaffBtn_Click">Добавить</Button>
-                    <DataGrid x:Name="StaffList" Grid.Row="1" Grid.ColumnSpan="3" AutoGenerateColumns="False" ColumnWidth="*" IsReadOnly="True">
+
+                    <StackPanel Grid.Column="1" Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center">Сортировка</TextBlock>
+                        <ComboBox VerticalAlignment="Center" Name="SortStaffCB" SelectionChanged="ComboBox_SelectionChanged">
+                            <ComboBoxItem IsSelected="True" Name="activeS">Активные пользователи</ComboBoxItem>
+                            <ComboBoxItem Name="nonActiveS">Удалённые пользователи</ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+
+                    <StackPanel Grid.Column="2" Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center">Поиск</TextBlock>
+                        <TextBox  Name="StaffSeacrhTB" TextChanged="StaffSeacrhTB_TextChanged" VerticalAlignment="Center" Width="100"></TextBox>
+                        <Button Name="StaffSrchBtn" Click="StaffSrchBtn_Click">Поиск</Button>
+                    </StackPanel>
+                    <DataGrid x:Name="StaffList" Grid.Row="1" Grid.ColumnSpan="3" AutoGenerateColumns="False" ColumnWidth="*" IsReadOnly="True" >
                         <DataGrid.Columns>
                             <DataGridTextColumn Header="Фамилия" Binding="{Binding LName}"></DataGridTextColumn>
                             <DataGridTextColumn Header="Имя" Binding="{Binding FName}"></DataGridTextColumn>

+ 40 - 1
Hotel_Course_Project/AdminPage.xaml.cs

@@ -1,7 +1,9 @@
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
@@ -27,7 +29,15 @@ namespace Hotel_Course_Project
 
         private void Page_Loaded(object sender, RoutedEventArgs e)
         {
-            StaffList.ItemsSource = DataBase.db.Staff.ToList(); ;
+            StaffList.ItemsSource = null;
+            if (SortStaffCB.SelectedItem == activeS)
+            {
+                StaffList.ItemsSource = DataBase.db.Staff.Where(item => item.Id_PersStatus == 1).ToList();
+            }
+            else
+            {
+                StaffList.ItemsSource = DataBase.db.Staff.Where(item => item.Id_PersStatus == 2).ToList();
+            }
         }
 
         private void AddStaffBtn_Click(object sender, RoutedEventArgs e)
@@ -42,5 +52,34 @@ namespace Hotel_Course_Project
             PChanger.MainFrame.Navigate(new StaffChangeOrAddPage(staff));
             Page_Loaded(sender, e);
         }
+
+        private void ComboBox_SelectionChanged(object sender, RoutedEventArgs e)
+        {
+            if (StaffList != null)
+            {
+                Page_Loaded(sender, e);
+            }
+        }
+
+        private void StaffSrchBtn_Click(object sender, RoutedEventArgs e)
+        {
+            var seacrhed = DataBase.db.Staff.Where(item => (item.LName + " " + item.FName + " " + item.MName + " " + item.Login + " " + item.Password).Contains(StaffSeacrhTB.Text)).ToList();
+            if (SortStaffCB.SelectedItem == activeS)
+            {
+                StaffList.ItemsSource = seacrhed.Where(item => item.Id_PersStatus ==1).ToList() ;
+            }
+            else
+            {
+                StaffList.ItemsSource = seacrhed.Where(item => item.Id_PersStatus == 2).ToList();
+            }
+        }
+
+        private void StaffSeacrhTB_TextChanged(object sender, TextChangedEventArgs e)
+        {
+            if(StaffSeacrhTB.Text == "")
+            {
+                Page_Loaded(sender, e);
+            }
+        }
     }
 }

+ 4 - 1
Hotel_Course_Project/SomeMethods.cs

@@ -10,6 +10,7 @@ namespace Hotel_Course_Project
 {
     class SomeMethods
     {
+        #region Конвертирование байтового изображения в стандарт
         public static BitmapImage ConvertByteToBitmapImage(byte[] array)
         {
             using (var ms = new System.IO.MemoryStream(array))
@@ -22,7 +23,9 @@ namespace Hotel_Course_Project
                 return image;
             }
         }
+        #endregion
 
+        #region Конвертирование стандарт изображения в массив байта
         public static byte[] ConvertBitmapImageToByte(BitmapSource image)
         {
             using (var stream = new MemoryStream())
@@ -33,7 +36,7 @@ namespace Hotel_Course_Project
                 return stream.ToArray();
             }
         }
-
+        #endregion
 
     }
 }

+ 2 - 1
Hotel_Course_Project/StaffChangeOrAddPage.xaml

@@ -36,7 +36,8 @@
         <TextBox Grid.Row="3" Grid.Column="2" x:Name="SLogin" Text="{Binding Login}"></TextBox>
         <TextBox Grid.Row="4" Grid.Column="2" x:Name="SPassword" Text="{Binding Password}"></TextBox>
         <ComboBox Grid.Row="5" Grid.Column="2" x:Name="SStaffRole" SelectedItem="{Binding StaffRole}" DisplayMemberPath="Name" ItemsSource="{Binding Id_StaffRole.StaffRole.Id.Name}"></ComboBox>
-        <Image x:Name="SContractPhoto" Grid.RowSpan="4" Source="{Binding PhotoContract}" MouseLeftButtonDown="SContractPhoto_MouseLeftButtonDown"></Image>
+        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">Фотография Договора</TextBlock>
+        <Image x:Name="SContractPhoto" Grid.RowSpan="4" Grid.Row="1" Source="{Binding PhotoContract}" MouseLeftButtonDown="SContractPhoto_MouseLeftButtonDown"></Image>
 
         <Button Grid.Row="6" Grid.Column="1" x:Name="StaffDeleteOrRestoreBtn" Click="StaffDeleteOrRestoreBtn_Click"></Button>
         <Button Grid.Row="6" Grid.Column="2" x:Name="StaffChangeOrAddBtn" Click="StaffChangeOrAddBtn_Click"></Button>

+ 48 - 11
Hotel_Course_Project/StaffChangeOrAddPage.xaml.cs

@@ -25,6 +25,7 @@ namespace Hotel_Course_Project
         public byte[] cotractImage;
         public string FilePath;
         public Staff _staff;
+        public int IdStaff = 0;
         public StaffChangeOrAddPage(Staff staff)
         {
             InitializeComponent();
@@ -35,35 +36,56 @@ namespace Hotel_Course_Project
                 SStaffRole.Text = staff.ToString();
                 StaffChangeOrAddBtn.Content = "Изменить данные";
                 this.Title = "Информация о сотруднике";
+                IdStaff = staff.Id;
+                StaffDeleteOrRestoreBtn.Visibility = Visibility.Visible;
+                if (staff.Id_PersStatus == 1)
+                {
+                    StaffDeleteOrRestoreBtn.Content = "Удалить сотрудника";
+                }
+                else
+                {
+                    StaffDeleteOrRestoreBtn.Content = "Востановить сотрудника";
+                }
             }
             else
             {
                 StaffChangeOrAddBtn.Content = "Добавить сотрудника";
                 this.Title = "Окно добавления сотрудника";
+                StaffDeleteOrRestoreBtn.Visibility = Visibility.Collapsed;
             }
             SStaffRole.ItemsSource = DataBase.db.StaffRole.ToList();
             if (staff == null || staff.PhotoContract == null)
             {
-            SContractPhoto.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/no_picture.jpg"));
+                SContractPhoto.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/no_picture.jpg"));
             }
         }
 
         private void StaffChangeOrAddBtn_Click(object sender, RoutedEventArgs e)
         {
-            var existUser = DataBase.db.Staff.SingleOrDefault(item => item.Login == SLogin.Text);
-            if (existUser != null && DataContext == null) 
+
+            if (DataContext == null)
             {
-                MessageBox.Show("Такой логин уже имеется в базе данных");
-                return;
+                var existUser = DataBase.db.Staff.SingleOrDefault(item => item.Login == SLogin.Text);
+                if (existUser != null && DataContext == null)
+                {
+                    MessageBox.Show("Такой логин уже имеется в базе данных!");
+                    return;
+                }
             }
-            else if (SLName.Text == null || SFName.Text == null || SLogin.Text == null || SPassword.Text == null || SContractPhoto == null)
+            if (SLName.Text == null || SFName.Text == null || SLogin.Text == null || SPassword.Text == null)
             {
-                MessageBox.Show("Ключевые поля не были заполнены");
+                MessageBox.Show("Ключевые поля не были заполнены!");
                 return;
             }
             else
             {
-                if( DataContext == null)
+                var existUserS = DataBase.db.Staff.SingleOrDefault(item => item.Login == SLogin.Text && item.Id != IdStaff);
+                if (existUserS != null)
+                {
+                    MessageBox.Show("Такой логин уже имеется в базе данных у другого сотрудника!");
+                    return;
+                }
+                else if (DataContext == null)
                 {
                     int numRole = DataBase.db.StaffRole.SingleOrDefault(item => item.Name == SStaffRole.Text).Id;
                     Staff staff = new Staff()
@@ -79,19 +101,34 @@ namespace Hotel_Course_Project
                     };
                     DataBase.db.Staff.Add(staff);
                     var lastId = DataBase.db.Staff.OrderByDescending(item => item.Id).FirstOrDefault().Id;
-                    DataBase.db.SaveChanges();                    
+                    DataBase.db.SaveChanges();
+                    MessageBox.Show("Сотрудник добавлен в базу.");
                 }
                 else
                 {
-
+                    MessageBox.Show("Данные по сотрудинку изменены.");
+                    _staff.PhotoContract = cotractImage;
+                    DataBase.db.SaveChanges();
                 }
+                PChanger.MainFrame.GoBack();
             }
 
         }
 
         private void StaffDeleteOrRestoreBtn_Click(object sender, RoutedEventArgs e)
         {
-
+            if (_staff.Id_PersStatus == 1)
+            {
+                _staff.Id_PersStatus = 2;
+                MessageBox.Show("Статус пользователя изменился на <удалён>");
+            }
+            else
+            {
+                _staff.Id_PersStatus = 1;
+                MessageBox.Show("Статус пользователя восстановлен");
+            }
+            DataBase.db.SaveChanges();
+            PChanger.MainFrame.GoBack();
         }
 
         private void SContractPhoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)