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.Opened += async (s, e) => await LoadSotrudnikiAsync(); } private async Task LoadSotrudnikiAsync() { try { using (var db = new DatabaseConnection()) { _sotrudnikiList = db.GetAllSotrudniki(); _activityList = db.GetAllHistory(); this.FindControl("SotrudnikiDataGrid").ItemsSource = _sotrudnikiList; } } catch (Exception ex) { await ShowError($"Ошибка при загрузке данных: {ex.Message}"); } } private async void AddSotrudnik(object sender, RoutedEventArgs e) { var addWindow = new AddSotrudnikWindow(); var result = await addWindow.ShowDialog(this); if (result != null) { using (var db = new DatabaseConnection()) { Добавьте здесь логику сохранения сотрудника в БД await LoadSotrudnikiAsync(); } } } private async void DeleteSotrudnik(object sender, RoutedEventArgs e) { var selected = GetSelectedSotrudnik(); if (selected != null) { using (var db = new DatabaseConnection()) { Добавьте здесь логику удаления сотрудника из БД await LoadSotrudnikiAsync(); } } else { await ShowError("Выберите сотрудника для удаления."); } } 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) { using (var db = new DatabaseConnection()) { Добавьте здесь логику обновления роли в БД await LoadSotrudnikiAsync(); } } } else { await ShowError("Выберите сотрудника для изменения роли."); } } 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 ShowError(string message) { var dialog = new Window { Title = "Ошибка", Content = message, Width = 300, Height = 200 }; if (this.IsVisible) { await dialog.ShowDialog(this); } else { dialog.Show(); } } }