115 lines
3.0 KiB
C#
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);
|
|
}
|
|
} |