using Avalonia.Controls; using Avalonia.Interactivity; using Demka_Snova_1.Hardik.Conect; using Demka_Snova_1.Hardik.Conect.Dao; using Demka_Snova_1.OknaRoley; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Demka_Snova_1.OknaFunciy; public partial class SotrudnikiWindow : Window { private List _sotrudnikiList; private List _activityList; public SotrudnikiWindow() { InitializeComponent(); this.DataContext = new SotrudnikDao(); this.FindControl("SotrudnikiDataGrid").ItemsSource = _sotrudnikiList; } private async Task LoadSotrudnikiAsync() { try { using (var db = new DatabaseConnection()) { _sotrudnikiList = db.GetAllSotrudniki(); _activityList = db.GetAllHistory(); this.FindControl("SotrudnikiDataGrid").ItemsSource = _sotrudnikiList; this.FindControl("HistoryDataGrid").ItemsSource = _activityList; } } catch (Exception ex) { await ShowErrorDialog($"Ошибка при загрузке данных: {ex.Message}"); } } private async void AddSotrudnik(object sender, RoutedEventArgs e) { var addWindow = new AddSotrudnikWindow(); var result = await addWindow.ShowDialog(this); if (result != null) { try { using (var db = new DatabaseConnection()) { result.ID = _sotrudnikiList.Count > 0 ? _sotrudnikiList.Max(s => s.ID) + 1 : 1; db.AddSotrudnik(result); await LoadSotrudnikiAsync(); } } catch (Exception ex) { await ShowErrorDialog($"Ошибка при добавлении сотрудника: {ex.Message}"); } } } private async void DeleteSotrudnik(object sender, RoutedEventArgs e) { var selected = GetSelectedSotrudnik(); if (selected != null) { try { using (var db = new DatabaseConnection()) { db.DeleteSotrudnik(selected.ID); await LoadSotrudnikiAsync(); } } catch (Exception ex) { await ShowErrorDialog($"Ошибка при удалении сотрудника: {ex.Message}"); } } else { await ShowErrorDialog("Выберите сотрудника для удаления."); } } private SotrudnikDao GetSelectedSotrudnik() { return this.FindControl("SotrudnikiDataGrid").SelectedItem as SotrudnikDao; } private async void ChangeRole(object sender, RoutedEventArgs e) { var selected = GetSelectedSotrudnik(); if (selected != null) { var roleWindow = new ChangeRoleWindow(selected); var result = await roleWindow.ShowDialog(this); if (result != null) { try { using (var db = new DatabaseConnection()) { db.UpdateSotrudnik(result); await LoadSotrudnikiAsync(); } } catch (Exception ex) { await ShowErrorDialog($"Ошибка при изменении роли: {ex.Message}"); } } } else { await ShowErrorDialog("Выберите сотрудника для изменения роли."); } } private void Exitka(object sender, RoutedEventArgs e) { new AdminWindow().Show(); this.Close(); } private async void ViewActivity(object sender, RoutedEventArgs e) { var activityWindow = new ActivityWindow(_activityList); await activityWindow.ShowDialog(this); } private async Task ShowErrorDialog(string message) { var dialog = new Window { Title = "Ошибка", Content = new TextBlock { Text = message }, Width = 300, Height = 200, WindowStartupLocation = WindowStartupLocation.CenterScreen }; await dialog.ShowDialog(this); } }