114 lines
3.9 KiB
C#
114 lines
3.9 KiB
C#
using Avalonia.Controls;
|
|
using Clienty.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace Clienty
|
|
{
|
|
public partial class MainWindow : Window
|
|
{
|
|
List<Client> filteredClientList = new List<Client>();
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
Listbox.ItemsSource = Helper.ClientList;
|
|
|
|
// Список для ComboBox "Пол"
|
|
List<string> polList = new List<string>
|
|
{
|
|
"По умолчанию",
|
|
"мужчины",
|
|
"женщины"
|
|
};
|
|
FiltrPoPolu.ItemsSource = polList;
|
|
|
|
// Список для ComboBox "Отсортировать по"
|
|
List<string> sortList = new List<string>
|
|
{
|
|
"в алфавитном порядке",
|
|
"по дате регистрации"
|
|
};
|
|
FiltVsyakoe.ItemsSource = sortList;
|
|
}
|
|
|
|
|
|
private void TextBox_TextChanged(object? sender, Avalonia.Controls.TextChangedEventArgs e)
|
|
{
|
|
Change();
|
|
}
|
|
|
|
private void ComboBox_SelectionChanged(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
|
|
{
|
|
Change();
|
|
}
|
|
|
|
private void ComboBox_SelectionChanged_1(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
|
|
{
|
|
Change();
|
|
}
|
|
|
|
public void Change()
|
|
{
|
|
try
|
|
{
|
|
filteredClientList = Helper.ClientList;
|
|
// search
|
|
if (!string.IsNullOrEmpty(SearchClient.Text) || !string.IsNullOrWhiteSpace(SearchClient.Text))
|
|
{
|
|
var searchText = SearchClient.Text.ToLower().Trim();
|
|
filteredClientList = string.IsNullOrWhiteSpace(searchText)
|
|
? Helper.ClientList.ToList() // Если нет текста, показываем всех клиентов
|
|
: Helper.ClientList.Where(c =>
|
|
c.Firstname.ToLower().Contains(searchText) ||
|
|
c.Lastname.ToLower().Contains(searchText) ||
|
|
(c.Patronymic != null && c.Patronymic.ToLower().Contains(searchText)) ||
|
|
(c.Email != null && c.Email.ToLower().Contains(searchText)) ||
|
|
c.Phone.Contains(searchText)
|
|
).ToList();
|
|
|
|
}
|
|
|
|
// sort
|
|
switch (FiltVsyakoe.SelectedIndex)
|
|
{
|
|
case 0:
|
|
filteredClientList = filteredClientList.OrderBy(c => c.Lastname).ToList();
|
|
break;
|
|
case 1:
|
|
filteredClientList = filteredClientList.OrderBy(c => c.Registrationdate).ToList();
|
|
break;
|
|
|
|
}
|
|
|
|
// filter
|
|
if (FiltrPoPolu.SelectedIndex > 0)
|
|
{
|
|
var selectedGender = FiltrPoPolu.SelectedIndex > 0 && FiltrPoPolu.SelectedItem.ToString() == "мужчины" ? 1 : 2;
|
|
filteredClientList = filteredClientList.Where(c => c.Gendercode == selectedGender.ToString().ToCharArray()[0]).ToList();
|
|
}
|
|
Listbox.ItemsSource = filteredClientList;
|
|
|
|
|
|
}
|
|
catch
|
|
{
|
|
return;
|
|
}
|
|
//Kolich.Text =
|
|
}
|
|
|
|
private async void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
|
{
|
|
await new AddEdit().ShowDialog(this);
|
|
Change();
|
|
}
|
|
|
|
private async void Border_DoubleTapped(object? sender, Avalonia.Input.TappedEventArgs e)
|
|
{
|
|
//var clientId = int.Parse(((sender as Border).Tag as string));
|
|
//await new AddEdit(clientId).ShowDialog(this);
|
|
//Change();
|
|
}
|
|
}
|
|
} |