Blagodat/OknaFunciy/SotrudnikiWindow.axaml.cs

150 lines
4.3 KiB
C#
Raw Normal View History

2025-03-05 09:12:58 +00:00
using Avalonia.Controls;
using Avalonia.Interactivity;
using Demka_Snova_1.Hardik.Conect;
using Demka_Snova_1.Hardik.Conect.Dao;
using Demka_Snova_1.OknaRoley;
2025-04-22 07:25:24 +00:00
using System;
2025-03-05 09:12:58 +00:00
using System.Collections.Generic;
2025-04-22 07:25:24 +00:00
using System.Linq;
2025-03-05 09:12:58 +00:00
using System.Threading.Tasks;
namespace Demka_Snova_1.OknaFunciy;
public partial class SotrudnikiWindow : Window
{
private List<SotrudnikDao> _sotrudnikiList;
private List<historyDao> _activityList;
public SotrudnikiWindow()
{
InitializeComponent();
2025-04-25 07:00:58 +00:00
this.DataContext = new SotrudnikDao();
this.FindControl<DataGrid>("SotrudnikiDataGrid").ItemsSource = _sotrudnikiList;
2025-03-05 09:12:58 +00:00
}
2025-04-22 07:25:24 +00:00
private async Task LoadSotrudnikiAsync()
2025-03-05 09:12:58 +00:00
{
2025-04-22 07:25:24 +00:00
try
{
using (var db = new DatabaseConnection())
{
_sotrudnikiList = db.GetAllSotrudniki();
_activityList = db.GetAllHistory();
this.FindControl<DataGrid>("SotrudnikiDataGrid").ItemsSource = _sotrudnikiList;
2025-04-25 07:00:58 +00:00
this.FindControl<DataGrid>("HistoryDataGrid").ItemsSource = _activityList;
2025-04-22 07:25:24 +00:00
}
}
catch (Exception ex)
{
2025-04-23 07:04:16 +00:00
await ShowErrorDialog($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {ex.Message}");
2025-04-22 07:25:24 +00:00
}
2025-03-05 09:12:58 +00:00
}
2025-04-22 07:25:24 +00:00
private async void AddSotrudnik(object sender, RoutedEventArgs e)
2025-03-05 09:12:58 +00:00
{
var addWindow = new AddSotrudnikWindow();
2025-04-22 07:25:24 +00:00
var result = await addWindow.ShowDialog<SotrudnikDao>(this);
if (result != null)
2025-03-05 09:12:58 +00:00
{
2025-04-23 07:04:16 +00:00
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)
2025-03-05 09:12:58 +00:00
{
2025-04-23 07:04:16 +00:00
await ShowErrorDialog($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {ex.Message}");
2025-03-05 09:12:58 +00:00
}
2025-04-22 07:25:24 +00:00
}
2025-03-05 09:12:58 +00:00
}
2025-04-22 07:25:24 +00:00
private async void DeleteSotrudnik(object sender, RoutedEventArgs e)
2025-03-05 09:12:58 +00:00
{
2025-04-22 07:25:24 +00:00
var selected = GetSelectedSotrudnik();
if (selected != null)
2025-03-05 09:12:58 +00:00
{
2025-04-23 07:04:16 +00:00
try
2025-04-22 07:25:24 +00:00
{
2025-04-23 07:04:16 +00:00
using (var db = new DatabaseConnection())
{
db.DeleteSotrudnik(selected.ID);
await LoadSotrudnikiAsync();
}
}
catch (Exception ex)
{
await ShowErrorDialog($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {ex.Message}");
2025-04-22 07:25:24 +00:00
}
2025-03-05 09:12:58 +00:00
}
else
{
2025-04-23 07:04:16 +00:00
await ShowErrorDialog("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.");
2025-03-05 09:12:58 +00:00
}
}
private SotrudnikDao GetSelectedSotrudnik()
{
return this.FindControl<DataGrid>("SotrudnikiDataGrid").SelectedItem as SotrudnikDao;
}
2025-04-22 07:25:24 +00:00
private async void ChangeRole(object sender, RoutedEventArgs e)
2025-03-05 09:12:58 +00:00
{
2025-04-22 07:25:24 +00:00
var selected = GetSelectedSotrudnik();
if (selected != null)
2025-03-05 09:12:58 +00:00
{
2025-04-22 07:25:24 +00:00
var roleWindow = new ChangeRoleWindow(selected);
var result = await roleWindow.ShowDialog<SotrudnikDao>(this);
if (result != null)
2025-03-05 09:12:58 +00:00
{
2025-04-23 07:04:16 +00:00
try
2025-03-05 09:12:58 +00:00
{
2025-04-23 07:04:16 +00:00
using (var db = new DatabaseConnection())
{
db.UpdateSotrudnik(result);
await LoadSotrudnikiAsync();
}
}
catch (Exception ex)
{
await ShowErrorDialog($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: {ex.Message}");
2025-03-05 09:12:58 +00:00
}
2025-04-22 07:25:24 +00:00
}
2025-03-05 09:12:58 +00:00
}
else
{
2025-04-23 07:04:16 +00:00
await ShowErrorDialog("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.");
2025-03-05 09:12:58 +00:00
}
}
2025-04-22 07:25:24 +00:00
private void Exitka(object sender, RoutedEventArgs e)
2025-03-05 09:12:58 +00:00
{
2025-04-22 07:25:24 +00:00
new AdminWindow().Show();
this.Close();
2025-03-05 09:12:58 +00:00
}
2025-04-22 07:25:24 +00:00
private async void ViewActivity(object sender, RoutedEventArgs e)
2025-03-05 09:12:58 +00:00
{
2025-04-22 07:25:24 +00:00
var activityWindow = new ActivityWindow(_activityList);
await activityWindow.ShowDialog(this);
2025-03-05 09:12:58 +00:00
}
2025-04-23 07:04:16 +00:00
private async Task ShowErrorDialog(string message)
2025-03-05 09:12:58 +00:00
{
var dialog = new Window
{
Title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
2025-04-23 07:04:16 +00:00
Content = new TextBlock { Text = message },
2025-03-05 09:12:58 +00:00
Width = 300,
2025-04-23 07:04:16 +00:00
Height = 200,
WindowStartupLocation = WindowStartupLocation.CenterScreen
2025-03-05 09:12:58 +00:00
};
2025-04-22 07:25:24 +00:00
2025-04-23 07:04:16 +00:00
await dialog.ShowDialog(this);
2025-03-05 09:12:58 +00:00
}
}