82 lines
2.5 KiB
C#
82 lines
2.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Collections.ObjectModel;
|
|||
|
using System.Linq;
|
|||
|
using Avalonia.Controls;
|
|||
|
using Avalonia.Interactivity;
|
|||
|
using demko_term.Models;
|
|||
|
using Microsoft.EntityFrameworkCore;
|
|||
|
|
|||
|
namespace demko_term;
|
|||
|
|
|||
|
public partial class HistoryWindow : Window
|
|||
|
{
|
|||
|
private ObservableCollection<HistoryPresenter> history = new();
|
|||
|
private List<HistoryPresenter> dataSourceHistory;
|
|||
|
|
|||
|
public HistoryWindow()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
DataContext = this;
|
|||
|
using var context = new DemoCourseworkContext();
|
|||
|
dataSourceHistory = context.EmployeesHistories
|
|||
|
.Include(h => h.Employee)
|
|||
|
.Select(h => new HistoryPresenter
|
|||
|
{
|
|||
|
Login = h.Employee.Login,
|
|||
|
LastLogin = h.LastLogin,
|
|||
|
SuccessLoginBool = h.SuccessLogin
|
|||
|
})
|
|||
|
.ToList();
|
|||
|
|
|||
|
LoginComboBox.ItemsSource = dataSourceHistory.Select(it => it.Login).Distinct().ToList();
|
|||
|
DateComboBox.ItemsSource = dataSourceHistory.Select(it => it.LastLogin).Where(it => it.HasValue).Distinct().ToList();
|
|||
|
|
|||
|
HistoryListBox.ItemsSource = history;
|
|||
|
DisplayServices();
|
|||
|
}
|
|||
|
|
|||
|
public class HistoryPresenter
|
|||
|
{
|
|||
|
public string Login { get; set; } = string.Empty;
|
|||
|
public DateTime? LastLogin { get; set; }
|
|||
|
public bool? SuccessLoginBool { get; set; }
|
|||
|
|
|||
|
public string SuccessLogin => SuccessLoginBool.HasValue ? (SuccessLoginBool.Value ? "Успешно" : "Не успешно") : "";
|
|||
|
}
|
|||
|
|
|||
|
private void DisplayServices()
|
|||
|
{
|
|||
|
var filteredData = dataSourceHistory;
|
|||
|
|
|||
|
if (LoginComboBox.SelectedItem is string selectedLogin)
|
|||
|
{
|
|||
|
filteredData = filteredData
|
|||
|
.Where(it => it.Login == selectedLogin)
|
|||
|
.ToList();
|
|||
|
}
|
|||
|
|
|||
|
if (DateComboBox.SelectedItem is DateTime selectedDate)
|
|||
|
{
|
|||
|
filteredData = filteredData
|
|||
|
.Where(it => it.LastLogin.HasValue && it.LastLogin.Value.Date == selectedDate.Date)
|
|||
|
.ToList();
|
|||
|
}
|
|||
|
|
|||
|
history.Clear();
|
|||
|
foreach (var item in filteredData.OrderBy(it => it.LastLogin))
|
|||
|
{
|
|||
|
history.Add(item);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void LoginComboBox_OnSelectionChanged(object? sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
DisplayServices();
|
|||
|
}
|
|||
|
|
|||
|
public void DateComboBox_OnSelectionChanged(object? sender, RoutedEventArgs e)
|
|||
|
{
|
|||
|
DisplayServices();
|
|||
|
}
|
|||
|
}
|