|
@@ -18,22 +18,28 @@ using System.Windows.Shapes;
|
|
|
|
|
|
namespace esoft.Pages
|
|
|
{
|
|
|
- /// <summary>
|
|
|
- /// Логика взаимодействия для ExecutorsListPage.xaml
|
|
|
- /// </summary>
|
|
|
public partial class ExecutorsListPage : Page
|
|
|
{
|
|
|
- ActualContext actualContext = new ActualContext(); // Контекст таблиц
|
|
|
- ExecuterFill executer = new ExecuterFill(); // Полученный контекст формы
|
|
|
- List<ExecuterFill> executerContext = new List<ExecuterFill>(); // Список исполнителей
|
|
|
+ // Контекст для работы с данными таблицы
|
|
|
+ ActualContext actualContext = new ActualContext();
|
|
|
|
|
|
+ // Объект исполнителя для получения данных формы
|
|
|
+ ExecuterFill executer = new ExecuterFill();
|
|
|
+
|
|
|
+ // Список исполнителей
|
|
|
+ List<ExecuterFill> executerContext = new List<ExecuterFill>();
|
|
|
+
|
|
|
+ // Конструктор страницы списка исполнителей
|
|
|
public ExecutorsListPage()
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
+
|
|
|
+ // Заполнение формы и загрузка правил для текущего пользователя
|
|
|
FillForm();
|
|
|
LoadUserRule();
|
|
|
}
|
|
|
|
|
|
+ // Загрузка правил для текущего пользователя
|
|
|
private void LoadUserRule()
|
|
|
{
|
|
|
executerContext = Class.ExecuterFill.Fill();
|
|
@@ -41,7 +47,7 @@ namespace esoft.Pages
|
|
|
var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
|
|
|
- // Проверка роли пользователя
|
|
|
+ // Проверка роли пользователя и настройка видимости кнопок
|
|
|
if (isManager)
|
|
|
{
|
|
|
BtnAddExecutor.Visibility = Visibility.Visible;
|
|
@@ -55,38 +61,38 @@ namespace esoft.Pages
|
|
|
BtnUpdate.Visibility = Visibility.Hidden;
|
|
|
}
|
|
|
|
|
|
+ // Отображение списка исполнителей в ListView
|
|
|
LViewExecutors.ItemsSource = executerContext;
|
|
|
}
|
|
|
|
|
|
+ // Заполнение формы данными
|
|
|
private void FillForm()
|
|
|
{
|
|
|
- // Получение списка исполнителей
|
|
|
+ // Получение списка исполнителей для ComboBox
|
|
|
List<User> usersExecutor = actualContext.Users.Where(user => actualContext.Executor.Any(ex => ex.ID == user.ID)).ToList();
|
|
|
cbExecutor.ItemsSource = UserInFIO.GroupUser(usersExecutor);
|
|
|
|
|
|
- // Получение списка менеджеров
|
|
|
+ // Получение списка менеджеров для ComboBox
|
|
|
List<User> usersManager = actualContext.Users.Where(user => actualContext.Manager.Any(manager => manager.ID == user.ID)).ToList();
|
|
|
cbManager.ItemsSource = UserInFIO.GroupUser(usersManager);
|
|
|
}
|
|
|
|
|
|
+ // Обработчик нажатия на кнопку удаления исполнителя
|
|
|
private void BtnDeleteExecutor_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
-
|
|
|
executerContext = Class.ExecuterFill.Fill();
|
|
|
|
|
|
var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
|
|
|
-
|
|
|
if (LViewExecutors.SelectedItem is ExecuterFill selectedExecutor)
|
|
|
{
|
|
|
- // Проверка роли пользователя
|
|
|
+ // Проверка роли пользователя и прав на удаление
|
|
|
if (isManager)
|
|
|
{
|
|
|
-
|
|
|
if (selectedExecutor.ManagerID != currentUser.ID)
|
|
|
{
|
|
|
- MessageBox.Show("Извините, но вы не можете удалить исполнителя, который за вами не закреплён!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ MessageBox.Show("Извините, но вы не можете удалить исполнителя, который за вами не закреплен!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -98,8 +104,11 @@ namespace esoft.Pages
|
|
|
var existingUser = context.User.FirstOrDefault(u => u.ID == selectedExecutor.ID);
|
|
|
if (existingUser != null)
|
|
|
{
|
|
|
+ // Помечаем исполнителя как удаленного
|
|
|
existingUser.IsDeleted = true;
|
|
|
context.SaveChanges();
|
|
|
+
|
|
|
+ // Обновляем список исполнителей в ListView
|
|
|
executerContext = Class.ExecuterFill.Fill().Where(executer => !executer.IsDeleted).ToList();
|
|
|
LViewExecutors.ItemsSource = executerContext;
|
|
|
}
|
|
@@ -114,21 +123,25 @@ namespace esoft.Pages
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- MessageBox.Show("Выберите исполнителя для редактирования.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ MessageBox.Show("Выберите исполнителя для удаления.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // Обработчик нажатия на кнопку добавления исполнителя
|
|
|
private void BtnAddExecutor_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- // Перенаправление пользователя на страницу с задачами
|
|
|
+ // Переход на страницу добавления исполнителя
|
|
|
NavigationService.Navigate(new Pages.AddExecutorPage(executer));
|
|
|
}
|
|
|
|
|
|
+ // Обработчик нажатия на кнопку обновления списка исполнителей
|
|
|
private void BtnUpdate_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
+ // Обновление списка исполнителей в ListView
|
|
|
LViewExecutors.ItemsSource = Class.ExecuterFill.Fill();
|
|
|
}
|
|
|
|
|
|
+ // Обработчик двойного клика по исполнителю для редактирования
|
|
|
private void LViewExecutors_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
|
{
|
|
|
executerContext = Class.ExecuterFill.Fill();
|
|
@@ -136,36 +149,35 @@ namespace esoft.Pages
|
|
|
var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
|
|
|
-
|
|
|
if (LViewExecutors.SelectedItem is ExecuterFill selectedExecutor)
|
|
|
{
|
|
|
- // Проверка роли пользователя
|
|
|
+ // Проверка роли пользователя и прав на редактирование
|
|
|
if (isManager)
|
|
|
{
|
|
|
if (selectedExecutor.ManagerID != currentUser.ID)
|
|
|
{
|
|
|
- MessageBox.Show("Извините, но вы не можете редактировать информацию исполнителя, который за вами не закреплён!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ MessageBox.Show("Извините, но вы не можете редактировать информацию исполнителя, который за вами не закреплен!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- // Передаем выбранного Исполнителя в окно редактирования
|
|
|
+ // Передаем выбранного исполнителя на страницу редактирования
|
|
|
AddExecutorPage editPage = new AddExecutorPage(selectedExecutor);
|
|
|
|
|
|
- // Заполнение данных из выбранного исполнителя в форму редактирования
|
|
|
+ // Заполняем форму редактирования данными из выбранного исполнителя
|
|
|
editPage.TBoxSurname.Text = selectedExecutor.MiddleName;
|
|
|
editPage.TBoxName.Text = selectedExecutor.FirstName;
|
|
|
editPage.TBoxLastName.Text = selectedExecutor.LastName;
|
|
|
editPage.TBoxLogin.Text = selectedExecutor.Login;
|
|
|
editPage.TBoxPassword.Text = selectedExecutor.Password;
|
|
|
|
|
|
- // Поиск соответствующего элемента в ComboBox `cbGrade` и установка его в качестве выбранного
|
|
|
+ // Поиск и установка выбранного элемента в ComboBox `cbGrade`
|
|
|
if (editPage.cbGrade.ItemsSource is IEnumerable<GetGrade> gradeList)
|
|
|
{
|
|
|
var selectedGrade = gradeList.FirstOrDefault(executor => executor.Name == selectedExecutor.Grade);
|
|
|
editPage.cbGrade.SelectedItem = selectedGrade;
|
|
|
}
|
|
|
|
|
|
- // Открываем окно редактирования
|
|
|
+ // Открываем страницу редактирования
|
|
|
NavigationService.Navigate(editPage);
|
|
|
}
|
|
|
}
|
|
@@ -177,24 +189,24 @@ namespace esoft.Pages
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- // Передаем выбранного Исполнителя в окно редактирования
|
|
|
+ // Передаем выбранного исполнителя на страницу редактирования
|
|
|
AddExecutorPage editPage = new AddExecutorPage(selectedExecutor);
|
|
|
|
|
|
- // Заполнение данных из выбранного исполнителя в форму редактирования
|
|
|
+ // Заполняем форму редактирования данными из выбранного исполнителя
|
|
|
editPage.TBoxSurname.Text = selectedExecutor.MiddleName;
|
|
|
editPage.TBoxName.Text = selectedExecutor.FirstName;
|
|
|
editPage.TBoxLastName.Text = selectedExecutor.LastName;
|
|
|
editPage.TBoxLogin.Text = selectedExecutor.Login;
|
|
|
editPage.TBoxPassword.Text = selectedExecutor.Password;
|
|
|
|
|
|
- // Поиск соответствующего элемента в ComboBox `cbGrade` и установка его в качестве выбранного
|
|
|
+ // Поиск и установка выбранного элемента в ComboBox `cbGrade`
|
|
|
if (editPage.cbGrade.ItemsSource is IEnumerable<GetGrade> gradeList)
|
|
|
{
|
|
|
var selectedGrade = gradeList.FirstOrDefault(executor => executor.Name == selectedExecutor.Grade);
|
|
|
editPage.cbGrade.SelectedItem = selectedGrade;
|
|
|
}
|
|
|
|
|
|
- // Открываем окно редактирования
|
|
|
+ // Открываем страницу редактирования
|
|
|
NavigationService.Navigate(editPage);
|
|
|
}
|
|
|
}
|
|
@@ -205,21 +217,22 @@ namespace esoft.Pages
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void FilterTasks()
|
|
|
+ // Функция фильтрации исполнителей
|
|
|
+ private void FilterExecutors()
|
|
|
{
|
|
|
- // Получение актуальных данных задач из базы или контекста приложения
|
|
|
+ // Получение актуальных данных исполнителей
|
|
|
executerContext = Class.ExecuterFill.Fill();
|
|
|
|
|
|
if (cbExecutor.SelectedItem != null)
|
|
|
{
|
|
|
string selectedExecutor = cbExecutor.SelectedItem.ToString();
|
|
|
- executerContext = executerContext.Where(task => task.FioUser == selectedExecutor).ToList();
|
|
|
+ executerContext = executerContext.Where(executor => executor.FioUser == selectedExecutor).ToList();
|
|
|
}
|
|
|
|
|
|
if (cbManager.SelectedItem != null)
|
|
|
{
|
|
|
string selectedManager = cbManager.SelectedItem.ToString();
|
|
|
- executerContext = executerContext.Where(task => task.FioManager == selectedManager).ToList();
|
|
|
+ executerContext = executerContext.Where(executor => executor.FioManager == selectedManager).ToList();
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(Search.Text))
|
|
@@ -227,55 +240,60 @@ namespace esoft.Pages
|
|
|
// Преобразование текста поиска к нижнему регистру (для удобства сравнения)
|
|
|
string searchText = Search.Text.ToLower();
|
|
|
|
|
|
- // Фильтрация задач по содержанию текста в полях Title
|
|
|
- executerContext = executerContext.Where(task => task.FioUser.ToLower().Contains(searchText)).ToList();
|
|
|
+ // Фильтрация исполнителей по содержанию текста в полях ФИО
|
|
|
+ executerContext = executerContext.Where(executor => executor.FioUser.ToLower().Contains(searchText)).ToList();
|
|
|
}
|
|
|
|
|
|
+ // Обновление списка исполнителей в ListView
|
|
|
LViewExecutors.ItemsSource = executerContext;
|
|
|
}
|
|
|
|
|
|
+ // Обработчик изменения выбора менеджера в ComboBox
|
|
|
private void cbManager_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
{
|
|
|
- FilterTasks();
|
|
|
+ FilterExecutors();
|
|
|
}
|
|
|
|
|
|
+ // Обработчик изменения выбора исполнителя в ComboBox
|
|
|
private void cbExecutor_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
{
|
|
|
- FilterTasks();
|
|
|
+ FilterExecutors();
|
|
|
}
|
|
|
|
|
|
+ // Обработчик изменения текста в поле поиска
|
|
|
private void Search_TextChanged(object sender, TextChangedEventArgs e)
|
|
|
{
|
|
|
- FilterTasks();
|
|
|
+ FilterExecutors();
|
|
|
}
|
|
|
|
|
|
+ // Обработчик кнопки очистки фильтра
|
|
|
private void btnClearFilter_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- // Очистка выбранных значений комбо боксов
|
|
|
+ // Очистка выбранных значений ComboBox
|
|
|
cbExecutor.SelectedItem = null;
|
|
|
cbManager.SelectedItem = null;
|
|
|
Search.Text = string.Empty;
|
|
|
|
|
|
- // Очистка фильтров и отображение всех задач без фильтрации
|
|
|
+ // Очистка фильтров и отображение всех исполнителей без фильтрации
|
|
|
LViewExecutors.ItemsSource = Class.ExecuterFill.Fill();
|
|
|
}
|
|
|
|
|
|
+ // Обработчик события загрузки списка исполнителей
|
|
|
private void LViewExecutors_Loaded(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
// Получение исполнителей, не помеченных на удаление
|
|
|
- executerContext = Class.ExecuterFill.Fill().Where(executer => !executer.IsDeleted).ToList();
|
|
|
+ executerContext = Class.ExecuterFill.Fill().Where(executor => !executor.IsDeleted).ToList();
|
|
|
LViewExecutors.ItemsSource = executerContext;
|
|
|
}
|
|
|
|
|
|
+ // Обработчик кнопки перехода к редактированию коэффициентов исполнителя
|
|
|
private void BtnPriceCoefficient_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
-
|
|
|
executerContext = Class.ExecuterFill.Fill();
|
|
|
|
|
|
var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
|
|
|
-
|
|
|
if (LViewExecutors.SelectedItem is ExecuterFill selectedExecutor)
|
|
|
{
|
|
|
// Проверка роли пользователя
|
|
@@ -283,7 +301,7 @@ namespace esoft.Pages
|
|
|
{
|
|
|
if (selectedExecutor.ManagerID != currentUser.ID)
|
|
|
{
|
|
|
- MessageBox.Show("Извините, но вы не можете просматривать информацию о зарплате исполнителя, который за вами не закреплён!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ MessageBox.Show("Извините, но вы не можете просматривать информацию о зарплате исполнителя, который за вами не закреплен!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
}
|
|
|
else
|
|
|
{
|