|
@@ -25,7 +25,7 @@ namespace esoft.Pages
|
|
|
public partial class AddExecutorPage : Page
|
|
|
{
|
|
|
ActualContext actualContext = new ActualContext();
|
|
|
- ExecuterFill tasks = new ExecuterFill();
|
|
|
+ ExecuterFill executor = new ExecuterFill();
|
|
|
List<ExecuterFill> executorContext = new List<ExecuterFill>();
|
|
|
List<TaskFill> taskContext = new List<TaskFill>();
|
|
|
private ExecuterFill selectedExecutor;
|
|
@@ -36,7 +36,7 @@ namespace esoft.Pages
|
|
|
InitializeComponent();
|
|
|
LViewTask.ItemsSource = Class.TaskFill.TaskFills();
|
|
|
selectedExecutor = executor;
|
|
|
- if (selectedExecutor.Executor != null)
|
|
|
+ if (selectedExecutor.FioUser != null)
|
|
|
{
|
|
|
isEditing = true;
|
|
|
}
|
|
@@ -68,7 +68,15 @@ namespace esoft.Pages
|
|
|
// Фильтрация задач по выбранному исполнителю
|
|
|
if (selectedExecutor != null)
|
|
|
{
|
|
|
- LViewTask.ItemsSource = taskContext.Where(task => task.FioUser == selectedExecutor.FioUser);
|
|
|
+ var executingTasks = taskContext.Where(task => task.FioUser == selectedExecutor.FioUser && task.Status == "исполняется").ToList();
|
|
|
+ if (executingTasks.Any())
|
|
|
+ {
|
|
|
+ LViewTask.ItemsSource = executingTasks;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ LViewTask.ItemsSource = taskContext.Where(task => task.FioUser == selectedExecutor.FioUser).ToList();
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -86,15 +94,113 @@ namespace esoft.Pages
|
|
|
|
|
|
private void BtnSaveExecutor_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string firstName = TBoxName.Text;
|
|
|
+ string middleName = TBoxSurname.Text;
|
|
|
+ string lastName = TBoxLastName.Text;
|
|
|
+ string login = TBoxLogin.Text;
|
|
|
+ string password = TBoxPassword.Text;
|
|
|
|
|
|
- }
|
|
|
+ if (string.IsNullOrWhiteSpace(firstName) || string.IsNullOrWhiteSpace(lastName) || string.IsNullOrWhiteSpace(login) || string.IsNullOrWhiteSpace(password))
|
|
|
+ {
|
|
|
+ MessageBox.Show("Пожалуйста, заполните все обязательные поля!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var context = esoftEntities.GetContext();
|
|
|
+
|
|
|
+ if (isEditing && selectedExecutor != null)
|
|
|
+ {
|
|
|
+ var existingUser = context.User.FirstOrDefault(u => u.ID == selectedExecutor.ID);
|
|
|
+
|
|
|
+ if (existingUser != null)
|
|
|
+ {
|
|
|
+ existingUser.FirstName = firstName;
|
|
|
+ existingUser.MiddleName = middleName;
|
|
|
+ existingUser.LastName = lastName;
|
|
|
+ existingUser.Login = login;
|
|
|
+ existingUser.Password = password;
|
|
|
+
|
|
|
+ context.SaveChanges();
|
|
|
+
|
|
|
+ MessageBoxResult result = MessageBox.Show("Информация о пользователе успешно обновлена!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ if (result == MessageBoxResult.OK)
|
|
|
+ {
|
|
|
+ if (isEditing)
|
|
|
+ {
|
|
|
+ // Получите соответствующего исполнителя для редактируемого пользователя
|
|
|
+ var executor = context.Executor.FirstOrDefault(exec => exec.ID == existingUser.ID);
|
|
|
+
|
|
|
+ if (executor != null)
|
|
|
+ {
|
|
|
+ executor.Grade = cbGrade.Text; // Обновите Grade исполнителя
|
|
|
+ context.SaveChanges(); // Сохраните изменения в исполнителе
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ NavigationService.GoBack();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else // Добавление нового пользователя
|
|
|
+ {
|
|
|
+ User newUser = new User
|
|
|
+ {
|
|
|
+ FirstName = firstName,
|
|
|
+ MiddleName = middleName,
|
|
|
+ LastName = lastName,
|
|
|
+ Login = login,
|
|
|
+ Password = password
|
|
|
+ };
|
|
|
+
|
|
|
+ context.User.Add(newUser);
|
|
|
+ context.SaveChanges();
|
|
|
|
|
|
+ MessageBoxResult result = MessageBox.Show("Пользователь успешно добавлен!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ if (result == MessageBoxResult.OK)
|
|
|
+ {
|
|
|
+ CreateExecutorForNewUser(newUser, cbGrade.Text);
|
|
|
+ NavigationService.GoBack();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show($"Ошибка при обработке пользователя: {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// Функция для получения ID менеджера
|
|
|
private int GetManagerID()
|
|
|
{
|
|
|
// Получение ID менеджера текущего пользователя
|
|
|
var currentUser = GetCurrent.CurrentUser;
|
|
|
- return currentUser?.ID ?? 0; // Предполагается, что ManagerID указывает на ID менеджера
|
|
|
+
|
|
|
+ // Предполагается, что ManagerID указывает на ID менеджера
|
|
|
+ return currentUser?.ID ?? 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void CreateExecutorForNewUser(User newUser, string grade)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var context = esoftEntities.GetContext();
|
|
|
+
|
|
|
+ esoft.Entities.Executor newExecutor = new esoft.Entities.Executor
|
|
|
+ {
|
|
|
+ ManagerID = GetManagerID(), // Получаем ID менеджера текущего пользователя
|
|
|
+ Grade = grade, //
|
|
|
+ ID = newUser.ID // Используем ID только что добавленного пользователя
|
|
|
+ };
|
|
|
+
|
|
|
+ context.Executor.Add(newExecutor);
|
|
|
+ context.SaveChanges();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show($"Ошибка при создании исполнителя: {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void LViewTask_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
@@ -104,8 +210,8 @@ namespace esoft.Pages
|
|
|
// Проверяем, не является ли статус задачи "выполнена" или "отменена"
|
|
|
if (selectedTask.Status != "выполнена" && selectedTask.Status != "отменена")
|
|
|
{
|
|
|
- AddEditServicePage editPage = new AddEditServicePage(selectedTask); // Передаем выбранную задачу в окно редактирования
|
|
|
- NavigationService.Navigate(editPage); // Открываем окно редактирования
|
|
|
+ AddEditServicePage editPage = new AddEditServicePage(selectedTask); // Передаем выбранную задачу в окно редактирования
|
|
|
+ NavigationService.Navigate(editPage); // Открываем окно редактирования
|
|
|
}
|
|
|
else
|
|
|
{
|