Bladeren bron

Добавление классов (Подтягивание ФИО Исполнителей и Менеджеров)

Данилов Денис 1 jaar geleden
bovenliggende
commit
02d75396a1

+ 54 - 0
esoft/Class/ActualContext.cs

@@ -0,0 +1,54 @@
+using esoft.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Documents;
+
+namespace esoft.Class
+{
+    /// <summary>
+    /// Получение контекста таблиц БД
+    /// </summary>
+    public class ActualContext
+    {
+        readonly List<User> users;
+        readonly List<Executor> executor;
+        readonly List<Manager> manager;
+
+        public List<User> Users
+        {
+            get { return users; }         
+        }
+        public List<Executor> Executor 
+        {
+            get {  return executor; } 
+        }
+        public List <Manager> Manager
+        {
+            get { return manager; }
+        }
+
+        /// <summary>
+        /// Заполнение контекстом полей
+        /// </summary>
+        public ActualContext()
+        {
+            try
+            {
+                users = esoftEntities.GetContext().User.ToList();
+                executor = esoftEntities.GetContext().Executor.ToList();
+                manager = esoftEntities.GetContext().Manager.ToList();
+            }
+            catch
+            {
+                MessageBox.Show("Ошибка подключчения",
+                    "Проверте подключение к интернету", 
+                    MessageBoxButton.OK, 
+                    MessageBoxImage.Error);
+            }
+        }
+    }
+}

+ 80 - 0
esoft/Class/ExecuterFill.cs

@@ -0,0 +1,80 @@
+using esoft.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace esoft.Class
+{
+    /// <summary>
+    /// Класс для заполнения и работы с Исполнителями
+    /// </summary>
+    public class ExecuterFill : User
+    {
+        string grade; //Уровень Менеджера
+        int managerID; //Менеджер которому подчиняется Исполнитель
+        string fioUser; //ФИО Исполнителя
+
+        public string Grade
+        {
+            get { return grade; }
+            set { grade = value; }
+        }
+        public int ManagerID
+        {
+            get { return managerID; }
+            set { managerID = value; }
+        }
+        public string FioUser
+        {
+            get { return fioUser; }
+            set { fioUser = value; }
+        }
+        /// <summary>
+        /// Метод формирующий удоный для работы список Исполнителей
+        /// </summary>
+        /// <returns>Список исполнителей</returns>
+        public static List<ExecuterFill> Fill()
+        {
+            List<ExecuterFill> executerFills = new List<ExecuterFill>();
+            try
+            {
+                
+                List<Executor> executors = esoftEntities.GetContext().Executor.ToList();
+                List<User> users = esoftEntities.GetContext().User.ToList();
+                foreach (var user in users)
+                {
+                    foreach (var executer in executors)
+                    {
+                        if (user.ID == executer.ID)
+                        {
+                            executerFills.Add(new ExecuterFill
+                            {
+                                ID = user.ID,
+                                Password = user.Password,
+                                FirstName = user.FirstName,
+                                MiddleName = user.MiddleName,
+                                LastName = user.LastName,
+                                Login = user.Login,
+                                IsDeleted = user.IsDeleted,
+                                FioUser = UserInFIO.SoloUser(user),
+                                Grade = executer.Grade,
+                                managerID = executer.ManagerID
+                            });
+                        }
+                    }
+                }
+            }
+            catch
+            {
+                MessageBox.Show("Ошибка заполнения списка Исполнителей",
+                    "Ошибка",
+                    MessageBoxButton.OK,
+                    MessageBoxImage.Error);
+            }
+            return executerFills;
+        }
+    }
+}

+ 141 - 0
esoft/Class/TaskFill.cs

@@ -0,0 +1,141 @@
+using esoft.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+
+namespace esoft.Class
+{
+    /// <summary>
+    /// Составления списка для отображения пользователю в зависимости от роли
+    /// </summary>
+    public class TaskFill : esoft.Entities.Task
+    {        
+        string fioManager;
+        string fioUser;
+
+        public string FioManager
+        {
+            get { return fioManager; } 
+            private set { fioManager = value; }
+        }
+        public string FioUser
+        {
+            get { return fioUser; }
+            private set { fioUser = value; }
+        }
+
+        /// <summary>
+        /// Собирает коллекцию для вывода задач пользователя
+        /// </summary>
+        /// <param name="actualContext">Контекст базы даных</param>
+        /// <param name="user">Пользователь</param>
+        /// <returns>Список отобранный для пользователя</returns>
+        public static List<TaskFill> TaskFills(User user)
+        {
+            try
+            {
+                ActualContext actualContext = new ActualContext();
+                List<Task> tasks = esoftEntities.GetContext().Task.ToList();
+                List<TaskFill> taskFills = new List<TaskFill>();
+                for (int i = 0; i < tasks.Count; i++)
+                {
+                    //Создание Списка Задач с удобными для DataGrid полями
+                    taskFills.Add(new TaskFill
+                    {
+                        ID = tasks[i].ID,
+                        ExecutorID = tasks[i].ExecutorID,
+                        Executor = tasks[i].Executor,
+                        Title = tasks[i].Title,
+                        Description = tasks[i].Description,
+                        CreateDateTime = tasks[i].CreateDateTime,
+                        Deadline = tasks[i].Deadline,
+                        Difficulty = tasks[i].Difficulty,
+                        Time = tasks[i].Time,
+                        Status = tasks[i].Status,
+                        WorkType = tasks[i].WorkType,
+                        CompletedDateTime = tasks[i].CompletedDateTime,
+                        IsDeleted = tasks[i].IsDeleted,
+                        FioUser = UserInFIO.SoloUser(
+                            actualContext.Users.FirstOrDefault(
+                                x => x.ID == tasks[i].ExecutorID)),
+                        FioManager = UserInFIO.SoloUser(
+                            actualContext.Users.FirstOrDefault(
+                                x => x.ID == actualContext.Executor.FirstOrDefault(
+                                    z => z.ID == tasks[i].ExecutorID).ManagerID))           
+                    });
+                }
+                if (actualContext.Manager.FirstOrDefault(x => x.ID == user.ID) == null) 
+                {
+                    return taskFills.OrderByDescending(
+                    x => x.CreateDateTime).Where(x => x.FioUser == UserInFIO.SoloUser(user)).ToList();
+                }
+                else
+                {
+                    return taskFills.OrderByDescending(
+                    x => x.CreateDateTime).Where(x => x.FioManager == UserInFIO.SoloUser(user)).ToList();
+                }
+                
+            }
+            catch
+            {
+                MessageBox.Show("Ошибка подключчения",
+                    "Проверте подключение к интернету",
+                    MessageBoxButton.OK,
+                    MessageBoxImage.Error);
+                return null;
+            }
+        }
+        /// <summary>
+        /// Вывод всех задач (без удалённых)
+        /// </summary>
+        /// <param name="actualContext">Контекст базы данных</param>
+        /// <returns>Возвращает список</returns>
+        public static List<TaskFill> TaskFills()
+        {
+            try
+            {
+                ActualContext actualContext = new ActualContext();
+                List<Task> tasks = esoftEntities.GetContext().Task.ToList().Where(x => x.IsDeleted == false).ToList();
+                List<TaskFill> taskFills = new List<TaskFill>();
+                for (int i = 0; i < tasks.Count; i++)
+                {
+                    //Создание Списка Задач с удобными для DataGrid полями
+                    taskFills.Add(new TaskFill
+                    {
+                        ID = tasks[i].ID,
+                        ExecutorID = tasks[i].ExecutorID,
+                        Executor = tasks[i].Executor,
+                        Title = tasks[i].Title,
+                        Description = tasks[i].Description,
+                        CreateDateTime = tasks[i].CreateDateTime,
+                        Deadline = tasks[i].Deadline,
+                        Difficulty = tasks[i].Difficulty,
+                        Time = tasks[i].Time,
+                        Status = tasks[i].Status,
+                        WorkType = tasks[i].WorkType,
+                        CompletedDateTime = tasks[i].CompletedDateTime,
+                        IsDeleted = tasks[i].IsDeleted,
+                        FioUser = UserInFIO.SoloUser(
+                            actualContext.Users.FirstOrDefault(
+                                x => x.ID == tasks[i].ExecutorID)),
+                        FioManager = UserInFIO.SoloUser(
+                            actualContext.Users.FirstOrDefault(
+                                x => x.ID == actualContext.Executor.FirstOrDefault(
+                                    z => z.ID == tasks[i].ExecutorID).ManagerID))
+                    });
+                }
+                return taskFills;
+            }
+            catch
+            {
+                MessageBox.Show("Ошибка подключчения",
+                    "Проверте подключение к интернету",
+                    MessageBoxButton.OK,
+                    MessageBoxImage.Error);
+                return null;
+            }
+        }
+    }
+}

+ 64 - 0
esoft/Class/UserInFIO.cs

@@ -0,0 +1,64 @@
+using esoft.Entities;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace esoft.Class
+{
+    /// <summary>
+    /// Класс для преобразования из имени пользователя его ФИО
+    /// </summary>
+    internal static class UserInFIO
+    {
+        /// <summary>
+        /// Метод для формирования ФИО одного пользоватлея
+        /// </summary>
+        /// <param name="user">Пользователь которму нужно получить ФИО</param>
+        /// <returns>Строка ФИО</returns>
+        public static string SoloUser(User user) 
+        {
+            return $"{user.MiddleName} {user.FirstName[0]}. {user.LastName[0]}.";
+        }
+        /// <summary>
+        /// Метод для формирования ФИО группы пользоватлей
+        /// </summary>
+        /// <param name="user">Список пользователей</param>
+        /// <returns>Строкавая коллекция ФИО</returns>
+        public static List<string> GroupUser(List<User> user)
+        {
+            List<string> userFIO = new List<string>();
+            foreach (var item in user)
+            {
+                userFIO.Add($"{item.MiddleName} {item.FirstName[0]}. {item.LastName[0]}.");
+            }
+            return userFIO;
+        }
+        /// <summary>
+        /// Метод для формирования строки на форму для Исполнителя
+        /// </summary>
+        /// <param name="user">Активный пользователь</param>
+        /// <returns>Сформированная строка</returns>
+        public static string ExecuterOnForm(User user)
+        {
+            string answer = null;
+            try
+            {
+                Executor executer = esoftEntities.GetContext().Executor.FirstOrDefault(x => x.ID == user.ID);
+                answer = $"{user.MiddleName} {user.FirstName[0]}. {user.LastName[0]}.";
+                answer += $"\nЛогин - {user.Login}, Уровень - {executer.Grade}.";
+                
+            }
+            catch
+            {
+                MessageBox.Show("Ошибка получения уровня пользователя",
+                    "Ошибка",
+                    MessageBoxButton.OK,
+                    MessageBoxImage.Error);
+            }
+            return answer;
+        }
+    }
+}

+ 1 - 3
esoft/Pages/AddEditServicePage.xaml

@@ -13,9 +13,7 @@
         <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Width="700" Background="White">
             <StackPanel VerticalAlignment="Center" Width="700" Height="370" Background="#e8e8e8">
 
-                <StackPanel Height="25" Background="#87d3ff">
-
-                </StackPanel>
+                <StackPanel Height="25" Background="#87d3ff"/>
 
                 <Separator Height="10" Background="{x:Null}" />
 

+ 5 - 5
esoft/Pages/ServicesPage.xaml

@@ -22,10 +22,10 @@
                 <ComboBoxItem Content="По возрастанию даты"/>
                 <ComboBoxItem Content="По убыванию даты"/>
             </ComboBox>
-            <ComboBox Margin="5" Width="200" Height="25" Name="ComboManager" FontSize="16">
+            <ComboBox Margin="5" Width="200" Height="25" Name="ComboManager" DisplayMemberPath="ID" FontSize="16">
 
             </ComboBox>
-            <ComboBox Margin="5" Width="200" Height="25" Name="ComboExecutor" FontSize="16">
+            <ComboBox Margin="5" Width="200" Height="25" Name="ComboExecutor" DisplayMemberPath="ID" FontSize="16">
 
             </ComboBox>
             <ComboBox Margin="5" Width="200" Height="25" Name="ComboStatus" FontSize="16">
@@ -42,14 +42,14 @@
             <DataGrid.Columns>
                 <DataGridTextColumn Header="Название задачи" Binding="{Binding Title}" Width="750"></DataGridTextColumn>
                 <DataGridTextColumn Header="Дата задачи" Binding="{Binding CreateDateTime, StringFormat=\{0:dd.MM.yyyy\}}" Width="160"></DataGridTextColumn>
-                <DataGridTextColumn Header="Исполнитель" Binding="{Binding ExecutorID}" Width="331"></DataGridTextColumn>
-                <DataGridTextColumn Header="Менеджер" Binding="{Binding Executor.ManagerID}" Width="331"></DataGridTextColumn>
+                <DataGridTextColumn Header="Исполнитель" Binding="{Binding FioUser}" Width="331"></DataGridTextColumn>
+                <DataGridTextColumn Header="Менеджер" Binding="{Binding FioManager}" Width="331"></DataGridTextColumn>
                 <DataGridTextColumn Header="Статус" Binding="{Binding Status}" Width="220"></DataGridTextColumn>
                 
                 <DataGridTemplateColumn Width="50">
                     <DataGridTemplateColumn.CellTemplate>
                         <DataTemplate>
-                            <Button x:Name="BtnEdit" Content="📝" Click="BtnEdit_Click" BorderThickness="0" Background="#b3faff"/>
+                            <Button x:Name="BtnEdit" Content="📝" Click="BtnEdit_Click" BorderThickness="0" Background="#87d3ff"/>
                         </DataTemplate>
                     </DataGridTemplateColumn.CellTemplate>
                 </DataGridTemplateColumn>

+ 25 - 2
esoft/Pages/ServicesPage.xaml.cs

@@ -1,5 +1,7 @@
-using esoft.Entities;
+using esoft.Class;
+using esoft.Entities;
 using System;
+using System.CodeDom.Compiler;
 using System.Collections.Generic;
 using System.Linq;
 using System.Net.NetworkInformation;
@@ -22,10 +24,31 @@ namespace esoft.Pages
     /// </summary>
     public partial class ServicesPage : Page
     {
+
+        ActualContext actualContext = new ActualContext(); //контекст различных таблиц
+        TaskFill tasks = new TaskFill(); //полученный контекст формы
+        bool newTask;
+
         public ServicesPage()
         {
             InitializeComponent();
-            DGridTask.ItemsSource = esoftEntities.GetContext().Task.ToList();
+            DGridTask.ItemsSource = Class.TaskFill.TaskFills();
+
+
+            List<User> users = actualContext.Users;
+            for (int i = 0; i < users.Count; i++)
+            {
+                foreach (var ex in actualContext.Executor)
+                {
+                    if (users[i].ID != ex.ID)
+                    {
+                        users.Remove(users[i]);
+                        break;
+                    }
+                }
+            }
+            ComboExecutor.ItemsSource = UserInFIO.GroupUser(users);
+            ComboManager.ItemsSource = esoftEntities.GetContext().Manager.ToList();
         }
 
         private void BtnEdit_Click(object sender, RoutedEventArgs e)

+ 5 - 0
esoft/esoft.csproj

@@ -94,6 +94,10 @@
       <DependentUpon>App.xaml</DependentUpon>
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Class\ActualContext.cs" />
+    <Compile Include="Class\ExecuterFill.cs" />
+    <Compile Include="Class\TaskFill.cs" />
+    <Compile Include="Class\UserInFIO.cs" />
     <Compile Include="Entities\esoftModel.Context.cs">
       <AutoGen>True</AutoGen>
       <DesignTime>True</DesignTime>
@@ -202,5 +206,6 @@
   <ItemGroup>
     <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
   </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>