|
@@ -31,6 +31,31 @@ namespace esoft.Pages
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
FillForm();
|
|
|
+ LoadUserRule();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void LoadUserRule()
|
|
|
+ {
|
|
|
+ executerContext = Class.ExecuterFill.Fill();
|
|
|
+
|
|
|
+ var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
+ var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
+
|
|
|
+ // Проверка роли пользователя
|
|
|
+ if (isManager)
|
|
|
+ {
|
|
|
+ BtnAddExecutor.Visibility = Visibility.Visible;
|
|
|
+ BtnDeleteExecutor.Visibility = Visibility.Visible;
|
|
|
+ BtnUpdate.Visibility = Visibility.Visible;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ BtnAddExecutor.Visibility = Visibility.Hidden;
|
|
|
+ BtnDeleteExecutor.Visibility = Visibility.Hidden;
|
|
|
+ BtnUpdate.Visibility = Visibility.Hidden;
|
|
|
+ }
|
|
|
+
|
|
|
+ LViewExecutors.ItemsSource = executerContext;
|
|
|
}
|
|
|
|
|
|
private void FillForm()
|
|
@@ -46,31 +71,49 @@ namespace esoft.Pages
|
|
|
|
|
|
private void BtnDeleteExecutor_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- try
|
|
|
+
|
|
|
+ executerContext = Class.ExecuterFill.Fill();
|
|
|
+
|
|
|
+ var currentUser = GetCurrent.CurrentUser; // Получаем текущего пользователя
|
|
|
+ var isManager = actualContext.Manager.Any(manager => manager.ID == currentUser.ID);
|
|
|
+
|
|
|
+
|
|
|
+ if (LViewExecutors.SelectedItem is ExecuterFill selectedExecutor)
|
|
|
{
|
|
|
- var context = esoftEntities.GetContext();
|
|
|
- if (LViewExecutors.SelectedItem is ExecuterFill selectedExecutor)
|
|
|
+ // Проверка роли пользователя
|
|
|
+ if (isManager)
|
|
|
{
|
|
|
- if (selectedExecutor != null)
|
|
|
+ if (selectedExecutor.ManagerID != currentUser.ID)
|
|
|
{
|
|
|
- var existingUser = context.User.FirstOrDefault(u => u.ID == selectedExecutor.ID);
|
|
|
- if (existingUser != null)
|
|
|
+ MessageBox.Show("Извините, но вы не можете удалить исполнителя, который за вами не закреплён!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ try
|
|
|
{
|
|
|
- existingUser.IsDeleted = true;
|
|
|
- context.SaveChanges();
|
|
|
- executerContext = Class.ExecuterFill.Fill().Where(executer => !executer.IsDeleted).ToList();
|
|
|
- LViewExecutors.ItemsSource = executerContext;
|
|
|
+ var context = esoftEntities.GetContext();
|
|
|
+ if (selectedExecutor != null)
|
|
|
+ {
|
|
|
+ var existingUser = context.User.FirstOrDefault(u => u.ID == selectedExecutor.ID);
|
|
|
+ if (existingUser != null)
|
|
|
+ {
|
|
|
+ existingUser.IsDeleted = true;
|
|
|
+ context.SaveChanges();
|
|
|
+ executerContext = Class.ExecuterFill.Fill().Where(executer => !executer.IsDeleted).ToList();
|
|
|
+ LViewExecutors.ItemsSource = executerContext;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ MessageBox.Show($"Ошибка при удалении пользователя: {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- MessageBox.Show("Выберите исполнителя для редактирования.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
- }
|
|
|
}
|
|
|
- catch (Exception ex)
|
|
|
+ else
|
|
|
{
|
|
|
- MessageBox.Show($"Ошибка при удалении пользователя: {ex.Message}", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
|
+ MessageBox.Show("Выберите исполнителя для редактирования.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -87,27 +130,73 @@ namespace esoft.Pages
|
|
|
|
|
|
private void LViewExecutors_MouseDoubleClick(object sender, MouseButtonEventArgs 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)
|
|
|
{
|
|
|
- // Передаем выбранного Исполнителя в окно редактирования
|
|
|
- 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` и установка его в качестве выбранного
|
|
|
- if (editPage.cbGrade.ItemsSource is IEnumerable<GetGrade> gradeList)
|
|
|
+ // Проверка роли пользователя
|
|
|
+ if (isManager)
|
|
|
{
|
|
|
- var selectedGrade = gradeList.FirstOrDefault(executor => executor.Name == selectedExecutor.Grade);
|
|
|
- editPage.cbGrade.SelectedItem = selectedGrade;
|
|
|
+ if (selectedExecutor.ManagerID != currentUser.ID)
|
|
|
+ {
|
|
|
+ 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` и установка его в качестве выбранного
|
|
|
+ if (editPage.cbGrade.ItemsSource is IEnumerable<GetGrade> gradeList)
|
|
|
+ {
|
|
|
+ var selectedGrade = gradeList.FirstOrDefault(executor => executor.Name == selectedExecutor.Grade);
|
|
|
+ editPage.cbGrade.SelectedItem = selectedGrade;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Открываем окно редактирования
|
|
|
+ NavigationService.Navigate(editPage);
|
|
|
+ }
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (selectedExecutor.ID != currentUser.ID)
|
|
|
+ {
|
|
|
+ MessageBox.Show("Извините, но с вашими правами, вы не можете редактировать информацию других исполнителей!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Передаем выбранного Исполнителя в окно редактирования
|
|
|
+ AddExecutorPage editPage = new AddExecutorPage(selectedExecutor);
|
|
|
|
|
|
- // Открываем окно редактирования
|
|
|
- NavigationService.Navigate(editPage);
|
|
|
+ // Заполнение данных из выбранного исполнителя в форму редактирования
|
|
|
+ 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` и установка его в качестве выбранного
|
|
|
+ if (editPage.cbGrade.ItemsSource is IEnumerable<GetGrade> gradeList)
|
|
|
+ {
|
|
|
+ var selectedGrade = gradeList.FirstOrDefault(executor => executor.Name == selectedExecutor.Grade);
|
|
|
+ editPage.cbGrade.SelectedItem = selectedGrade;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Открываем окно редактирования
|
|
|
+ NavigationService.Navigate(editPage);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -179,19 +268,59 @@ namespace esoft.Pages
|
|
|
|
|
|
private void BtnPriceCoefficient_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- if (LViewExecutors.SelectedItem != null)
|
|
|
+
|
|
|
+ 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 (LViewExecutors.SelectedItem is ExecuterFill selectedExecuter)
|
|
|
+ // Проверка роли пользователя
|
|
|
+ if (isManager)
|
|
|
{
|
|
|
- // Передаем выбранного исполнителя на страницу редактирования коэффициентов
|
|
|
- EditPriceCoefficient editPricePage = new EditPriceCoefficient(selectedExecuter);
|
|
|
+ if (selectedExecutor.ManagerID != currentUser.ID)
|
|
|
+ {
|
|
|
+ MessageBox.Show("Извините, но вы не можете просматривать информацию о зарплате исполнителя, который за вами не закреплён!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (LViewExecutors.SelectedItem is ExecuterFill selectedExecuter)
|
|
|
+ {
|
|
|
+ // Передаем выбранного исполнителя на страницу редактирования коэффициентов
|
|
|
+ EditPriceCoefficient editPricePage = new EditPriceCoefficient(selectedExecuter);
|
|
|
|
|
|
- // Открываем страницу редактирования коэффициентов
|
|
|
- NavigationService.Navigate(editPricePage);
|
|
|
+ // Открываем страницу редактирования коэффициентов
|
|
|
+ NavigationService.Navigate(editPricePage);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("Выберите исполнителя для редактирования коэффициентов.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- MessageBox.Show("Выберите исполнителя для редактирования коэффициентов.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ if (selectedExecutor.ID != currentUser.ID)
|
|
|
+ {
|
|
|
+ MessageBox.Show("Извините, но с вашими правами, вы не можете просматривать информацию о зарплате других исполнителей!", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (LViewExecutors.SelectedItem is ExecuterFill selectedExecuter)
|
|
|
+ {
|
|
|
+ // Передаем выбранного исполнителя на страницу редактирования коэффициентов
|
|
|
+ EditPriceCoefficient editPricePage = new EditPriceCoefficient(selectedExecuter);
|
|
|
+
|
|
|
+ // Открываем страницу редактирования коэффициентов
|
|
|
+ NavigationService.Navigate(editPricePage);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("Выберите исполнителя для редактирования коэффициентов.", "Внимание", MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|