|
@@ -3,6 +3,7 @@ using esoft.Entities;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
+using System.Runtime.Remoting.Contexts;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
@@ -32,21 +33,57 @@ namespace esoft.Pages
|
|
|
LViewTask.ItemsSource = Class.TaskFill.TaskFills();
|
|
|
FillForm();
|
|
|
LoadAndSortTasks();
|
|
|
+ LoadUserRule();
|
|
|
}
|
|
|
|
|
|
- private void LoadAndSortTasks()
|
|
|
+ private void LoadUserRule()
|
|
|
{
|
|
|
taskContext = Class.TaskFill.TaskFills();
|
|
|
|
|
|
- if (taskContext.Any())
|
|
|
+ var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
+ var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
+
|
|
|
+ // Проверка роли пользователя
|
|
|
+ if (isManager)
|
|
|
{
|
|
|
- // Сортируем задачи по убыванию даты создания
|
|
|
- taskContext = taskContext.OrderByDescending(task => task.CreateDateTime).ToList();
|
|
|
+ // Логика сортировки для менеджеров
|
|
|
+ var subordinateExecutors = actualContext.Executor.Where(executor => executor.ManagerID == currentUser.ID).Select(executor => executor.ID).ToList();
|
|
|
+
|
|
|
+ taskContext = taskContext
|
|
|
+ .Where(task => subordinateExecutors.Contains(task.ExecutorID))
|
|
|
+ .OrderByDescending(task => task.CreateDateTime)
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ cbExecutor.Visibility = Visibility.Visible;
|
|
|
+ cbManager.Visibility = Visibility.Visible;
|
|
|
+ btnClearFilter.Visibility = Visibility.Visible;
|
|
|
+ Search.Visibility = Visibility.Visible;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Логика сортировки для исполнителей
|
|
|
+ taskContext = taskContext
|
|
|
+ .Where(task => task.ExecutorID == currentUser.ID) // Предполагается, что в классе TaskFill есть свойство ExecutorID
|
|
|
+ .OrderByDescending(task => task.CreateDateTime)
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ cbExecutor.Visibility = Visibility.Hidden;
|
|
|
+ cbManager.Visibility = Visibility.Hidden;
|
|
|
+ btnClearFilter.Visibility = Visibility.Hidden;
|
|
|
+ Search.Visibility = Visibility.Hidden;
|
|
|
}
|
|
|
|
|
|
LViewTask.ItemsSource = taskContext;
|
|
|
}
|
|
|
|
|
|
+ private void LoadAndSortTasks()
|
|
|
+ {
|
|
|
+ // Сортируем задачи по убыванию даты создания
|
|
|
+ taskContext = Class.TaskFill.TaskFills();
|
|
|
+ taskContext = taskContext.OrderByDescending(task => task.CreateDateTime).ToList();
|
|
|
+ LViewTask.ItemsSource = taskContext;
|
|
|
+ }
|
|
|
+
|
|
|
private void FillForm()
|
|
|
{
|
|
|
cbStatus.ItemsSource = StatusTask.FillStatus();
|
|
@@ -103,8 +140,23 @@ namespace esoft.Pages
|
|
|
|
|
|
if (cbStatus.SelectedItem != null)
|
|
|
{
|
|
|
+ var currentUser = GetCurrent.CurrentUser;
|
|
|
+ var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
string selectedStatus = ((StatusTask)cbStatus.SelectedItem).Name;
|
|
|
- taskContext = taskContext.Where(task => task.Status == selectedStatus).ToList();
|
|
|
+
|
|
|
+ if (isManager)
|
|
|
+ {
|
|
|
+ // Получаем ID подчиненных исполнителей для данного менеджера
|
|
|
+ var subordinateExecutors = actualContext.Executor.Where(executor => executor.ManagerID == currentUser.ID).Select(executor => executor.ID).ToList();
|
|
|
+
|
|
|
+ // Фильтрация задач подчиненных исполнителей менеджера по статусу
|
|
|
+ taskContext = taskContext.Where(task => subordinateExecutors.Contains(task.ExecutorID) && task.Status == selectedStatus).ToList();
|
|
|
+ }
|
|
|
+ else // Если текущий пользователь - исполнитель
|
|
|
+ {
|
|
|
+ // Фильтрация задач текущего исполнителя по статусу
|
|
|
+ taskContext = taskContext.Where(task => task.ExecutorID == currentUser.ID && task.Status == selectedStatus).ToList();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (cbExecutor.SelectedItem != null)
|
|
@@ -162,17 +214,20 @@ namespace esoft.Pages
|
|
|
LViewTask.ItemsSource = Class.TaskFill.TaskFills();
|
|
|
}
|
|
|
|
|
|
- private void LViewTask_Loaded(object sender, RoutedEventArgs e)
|
|
|
- {
|
|
|
- LViewTask.ItemsSource = Class.TaskFill.TaskFills();
|
|
|
- }
|
|
|
-
|
|
|
private void LViewTask_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
|
{
|
|
|
if (LViewTask.SelectedItem is TaskFill selectedTask)
|
|
|
{
|
|
|
- AddEditServicePage editPage = new AddEditServicePage(selectedTask); // Передаем выбранную задачу в окно редактирования
|
|
|
- NavigationService.Navigate(editPage); // Открываем окно редактирования
|
|
|
+ // Проверяем, не является ли статус задачи "выполнена" или "отменена"
|
|
|
+ if (selectedTask.Status != "выполнена" && selectedTask.Status != "отменена")
|
|
|
+ {
|
|
|
+ AddEditServicePage editPage = new AddEditServicePage(selectedTask); // Передаем выбранную задачу в окно редактирования
|
|
|
+ NavigationService.Navigate(editPage); // Открываем окно редактирования
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("Нельзя редактировать задачи со статусом '" + selectedTask.Status + "'", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|