dmeo040225/HistoryWindow.axaml.cs
2025-02-21 16:09:01 +03:00

115 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using dmeo040225.Models;
using dmeo040225.Services;
namespace dmeo040225;
public partial class HistoryWindow : Window
{
ObservableCollection<User> Users = new ObservableCollection<User>();
List<UserPresenter> dataSourceUsers;
public HistoryWindow()
{
InitializeComponent();
using var context = new DatabaseContext();
dataSourceUsers = context.Users.Select(user => new UserPresenter
{
Id = user.Id,
RoleId = user.RoleId,
Login = user.Login,
Password = user.Password,
Lastlogin = user.Lastlogin,
Logorno = user.Logorno,
}).ToList();
ListBoxHistory.ItemsSource = Users;
FilterCombobox.ItemsSource = dataSourceUsers.Select(user => user.Login).ToList();
DisplayServices();
TimerService.Instance.TimeUpdated += UpdateTimerText;
TimerService.Instance.TimerExpired += LogoutUser;
}
public class UserPresenter() : User
{
String logOrNoText
{
get
{
if (Logorno == true)
{
return "accessed";
}
else
{
return "denied";
}
}
}
}
public void DisplayServices()
{
var temp = dataSourceUsers;
Users.Clear();
switch (SortComboBox.SelectedIndex)
{
case 1: temp = temp.OrderBy(it => it.Lastlogin).ToList(); break;
case 0: temp = temp.OrderByDescending(it => it.Lastlogin).ToList(); break;
default: break;
}
if (FilterCombobox.SelectionBoxItem != null)
{
temp = temp.Where(u => u.Login == FilterCombobox.SelectionBoxItem.ToString()).ToList();
}
foreach (var item in temp)
{
Users.Add(item);
}
}
private void SortComboBox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
{
DisplayServices();
}
private void FilterCombobox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
{
DisplayServices();
}
private void Back_OnClick(object? sender, RoutedEventArgs e)
{
Close();
// MainWindow mainWindow = new MainWindow();
// mainWindow.Show();
}
private void UpdateTimerText(TimeSpan time)
{
TimerText.Text = $"Осталось: {time:mm\\:ss}";
}
private void LogoutUser()
{
Close();
var mainWindow = new MainWindow();
mainWindow.Show();
}
protected override void OnClosed(EventArgs e)
{
TimerService.Instance.TimeUpdated -= UpdateTimerText;
TimerService.Instance.TimerExpired -= LogoutUser;
base.OnClosed(e);
}
}