소스 검색

Добавление отборов в списке задач

Данилов Денис 1 년 전
부모
커밋
f990e708ae
4개의 변경된 파일84개의 추가작업 그리고 81개의 파일을 삭제
  1. 3 8
      esoft/Pages/AddEditServicePage.xaml
  2. 18 3
      esoft/Pages/AddEditServicePage.xaml.cs
  3. 5 13
      esoft/Pages/ServicesPage.xaml
  4. 58 57
      esoft/Pages/ServicesPage.xaml.cs

+ 3 - 8
esoft/Pages/AddEditServicePage.xaml

@@ -40,7 +40,7 @@
                             <Separator Width="20" Background="{x:Null}"/>
                             <TextBlock Style="{StaticResource BlockCommon}" Text="ФИО исполнителя:" FontSize="20"></TextBlock>
                             <Separator Width="5" Background="{x:Null}" />
-                            <ComboBox Name="cbExecutor" Width="276" Height="20" DisplayMemberPath="ID"></ComboBox>
+                            <ComboBox Name="cbExecutor" Width="276" Height="20" DisplayMemberPath=""></ComboBox>
                         </StackPanel>
                         
                         <Separator Width="17" Background="{x:Null}" />
@@ -57,7 +57,7 @@
                             <Separator Width="20" Background="{x:Null}"/>
                             <TextBlock Style="{StaticResource BlockCommon}" Text="ФИО менеджера:" FontSize="20"></TextBlock>
                             <Separator Width="17" Background="{x:Null}" />
-                            <ComboBox Name="cbManager" Width="276" Height="20" DisplayMemberPath="ID"></ComboBox>
+                            <ComboBox Name="cbManager" Width="276" Height="20" DisplayMemberPath=""></ComboBox>
                         </StackPanel>
                         
                         <Separator Width="17" Background="{x:Null}" />
@@ -74,12 +74,7 @@
                         <Separator Width="20" Background="{x:Null}"/>
                         <TextBlock Style="{StaticResource BlockCommon}" Text="Cтатус:" FontSize="20"></TextBlock>
                         <Separator Width="5" Background="{x:Null}" />
-                        <ComboBox Name="cbStatus" Width="184" Height="20">
-                            <ComboBoxItem Content="Запланирована"/>
-                            <ComboBoxItem Content="Исполняется"/>
-                            <ComboBoxItem Content="Выполнена"/>
-                            <ComboBoxItem Content="Отменена"/>
-                        </ComboBox>
+                        <ComboBox Name="cbStatus" Width="184" Height="20" DisplayMemberPath="Name"/>
 
                         <Separator Width="20" Background="{x:Null}" />
 

+ 18 - 3
esoft/Pages/AddEditServicePage.xaml.cs

@@ -1,4 +1,5 @@
-using esoft.Entities;
+using esoft.Class;
+using esoft.Entities;
 using System;
 using System.Collections.Generic;
 using System.Data.Entity.Core.Common.CommandTrees;
@@ -22,11 +23,25 @@ namespace esoft.Pages
     /// </summary>
     public partial class AddEditServicePage : Page
     {
+        ActualContext actualContext = new ActualContext(); //Контекст таблиц
+        TaskFill tasks = new TaskFill(); //полученный контекст формы
+        List<TaskFill> taskContext = new List<TaskFill>(); //Список задач
+
         public AddEditServicePage()
         {
             InitializeComponent();
-            cbExecutor.ItemsSource = esoftEntities.GetContext().Executor.ToList();
-            cbManager.ItemsSource = esoftEntities.GetContext().Manager.ToList();
+            FillForm();
+        }
+
+        private void FillForm()
+        {
+            cbStatus.ItemsSource = StatusTask.FillStatus();
+
+            List<User> usersExecutor = actualContext.Users.Where(user => actualContext.Executor.Any(ex => ex.ID == user.ID)).ToList(); // Получение списка исполнителей
+            cbExecutor.ItemsSource = UserInFIO.GroupUser(usersExecutor);
+
+            List<User> usersManager = actualContext.Users.Where(user => actualContext.Manager.Any(manager => manager.ID == user.ID)).ToList(); // Получение списка менеджеров
+            cbManager.ItemsSource = UserInFIO.GroupUser(usersManager);
         }
 
         private void BtnSaveTask_Click(object sender, RoutedEventArgs e)

+ 5 - 13
esoft/Pages/ServicesPage.xaml

@@ -17,20 +17,12 @@
         </Grid.RowDefinitions>
 
         <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
-            <ComboBox Margin="5" Width="200" Height="25"
-                      Name="ComboSortBy" FontSize="16">
-                <ComboBoxItem Content="По возрастанию даты"/>
-                <ComboBoxItem Content="По убыванию даты"/>
-            </ComboBox>
-            <ComboBox Margin="5" Width="200" Height="25" Name="ComboManager" DisplayMemberPath="" FontSize="16">
-
-            </ComboBox>
-            <ComboBox Margin="5" Width="200" Height="25" Name="ComboExecutor" DisplayMemberPath="" FontSize="16">
-
-            </ComboBox>
-            <ComboBox Margin="5" Width="200" Height="25" Name="ComboStatus" FontSize="16" DisplayMemberPath="Name"></ComboBox>
-            <TextBox Height="25" Name="TBoxSearch" Width="200" Margin ="5" FontSize="16"/>
+            <ComboBox Margin="5" Width="200" Height="25" Name="cbManager" DisplayMemberPath="" FontSize="16" SelectionChanged="cbStatus_SelectionChanged"/>
+            <ComboBox Margin="5" Width="200" Height="25" Name="cbExecutor" DisplayMemberPath="" FontSize="16" SelectionChanged="cbExecutor_SelectionChanged"/>
+            <ComboBox Margin="5" Width="200" Height="25" Name="cbStatus" FontSize="16" DisplayMemberPath="Name" SelectionChanged="cbStatus_SelectionChanged"/>
+            <Button Height="25" Name="btnClearFilter" Content="Очистка фильтра" Width="200" Margin ="5" FontSize="16" Click="btnClearFilter_Click"/>
         </StackPanel>
+        
         <TextBlock Grid.Row="1" Width="auto" FontWeight="Bold" Name="BlockRecords"/>
 
         <DataGrid x:Name="DGridTask" Width="1850" Height="790" HorizontalAlignment="Center" VerticalAlignment="Top" Grid.Row="2" FontSize="25" AutoGenerateColumns="False" IsReadOnly="True">

+ 58 - 57
esoft/Pages/ServicesPage.xaml.cs

@@ -1,21 +1,11 @@
 using esoft.Class;
 using esoft.Entities;
-using System;
 using System.CodeDom.Compiler;
 using System.Collections.Generic;
 using System.Linq;
-using System.Net.NetworkInformation;
-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.Navigation;
-using System.Windows.Shapes;
 
 namespace esoft.Pages
 {
@@ -24,82 +14,93 @@ namespace esoft.Pages
     /// </summary>
     public partial class ServicesPage : Page
     {
-
-        ActualContext actualContext = new ActualContext(); //контекст различных таблиц
-        TaskFill tasks = new TaskFill(); //полученный контекст формы
+        ActualContext actualContext = new ActualContext();   // Контекст таблиц
+        TaskFill tasks = new TaskFill();                    // Полученный контекст формы
+        List<TaskFill> taskContext = new List<TaskFill>(); // Список задач
 
         public ServicesPage()
         {
             InitializeComponent();
             DGridTask.ItemsSource = Class.TaskFill.TaskFills();
-
             FillForm();
         }
 
         private void FillForm()
         {
-            ComboStatus.ItemsSource = StatusTask.FillStatus();
-            switch (tasks.Status)
+            cbStatus.ItemsSource = StatusTask.FillStatus();
+
+            List<User> usersExecutor = actualContext.Users.Where(user => actualContext.Executor.Any(ex => ex.ID == user.ID)).ToList(); // Получение списка исполнителей
+            cbExecutor.ItemsSource = UserInFIO.GroupUser(usersExecutor);
+
+            List<User> usersManager = actualContext.Users.Where(user => actualContext.Manager.Any(manager => manager.ID == user.ID)).ToList(); // Получение списка менеджеров
+            cbManager.ItemsSource = UserInFIO.GroupUser(usersManager);
+        }
+
+        private void BtnEdit_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void BtnAddTask_Click(object sender, RoutedEventArgs e)
+        {
+            NavigationService.Navigate(new AddEditServicePage());
+        }
+
+        private void BtnDeleteTask_Click(object sender, RoutedEventArgs e)
+        {
+
+        }
+
+        private void FilterTasks()
+        {
+            // Получение актуальных данных задач из базы или контекста приложения
+            taskContext = Class.TaskFill.TaskFills();
+
+            if (cbStatus.SelectedItem != null)
             {
-                case "запланирована":
-                    ComboStatus.SelectedIndex = 0;
-                    break;
-                case "исполняется":
-                    ComboStatus.SelectedIndex = 1;
-                    break;
-                case "выполнена":
-                    ComboStatus.SelectedIndex = 2;
-                    break;
-                case "отменена":
-                    ComboStatus.SelectedIndex = 3;
-                    break;
+                string selectedStatus = ((StatusTask)cbStatus.SelectedItem).Name;
+                taskContext = taskContext.Where(task => task.Status == selectedStatus).ToList();
             }
 
-            List<User> usersExecutor = actualContext.Users;
-            for (int i = 0; i < usersExecutor.Count; i++)
+            if (cbExecutor.SelectedItem != null)
             {
-                foreach (var ex in actualContext.Executor)
-                {
-                    if (usersExecutor[i].ID != ex.ID)
-                    {
-                        usersExecutor.Remove(usersExecutor[i]);
-                        break;
-                    }
-                }
+                string selectedExecutor = cbExecutor.SelectedItem.ToString();
+                taskContext = taskContext.Where(task => task.FioUser == selectedExecutor).ToList();
             }
-            ComboExecutor.ItemsSource = UserInFIO.GroupUser(usersExecutor);
-
-
-
 
-            List<User> usersManager = actualContext.Users;
-            for (int i = 0; i < usersManager.Count; i++)
+            if (cbManager.SelectedItem != null)
             {
-                foreach (var ex in actualContext.Manager)
-                {
-                    if (usersManager[i].ID != ex.ID)
-                    {
-                        usersManager.Remove(usersManager[i]);
-                        break;
-                    }
-                }
+                string selectedManager = cbManager.SelectedItem.ToString();
+                taskContext = taskContext.Where(task => task.FioManager == selectedManager).ToList();
             }
-            ComboManager.ItemsSource = UserInFIO.GroupUser(usersManager);
+
+            DGridTask.ItemsSource = taskContext;
         }
 
-        private void BtnEdit_Click(object sender, RoutedEventArgs e)
+        private void cbStatus_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
+            FilterTasks();
+        }
 
+        private void cbExecutor_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            FilterTasks();
         }
 
-        private void BtnAddTask_Click(object sender, RoutedEventArgs e)
+        private void cbManager_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            NavigationService.Navigate(new AddEditServicePage());
+            FilterTasks();
         }
 
-        private void BtnDeleteTask_Click(object sender, RoutedEventArgs e)
+        private void btnClearFilter_Click(object sender, RoutedEventArgs e)
         {
+            // Очистка выбранных значений комбо боксов
+            cbStatus.SelectedItem = null;
+            cbExecutor.SelectedItem = null;
+            cbManager.SelectedItem = null;
 
+            // Очистка фильтров и отображение всех задач без фильтрации
+            DGridTask.ItemsSource = Class.TaskFill.TaskFills();
         }
     }
 }