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 Users = new ObservableCollection(); List 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); } }