using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Windows.Controls;
using System.Windows;
namespace MyWpfApp.models
{
///
/// источник данных для списка пользователей на соответствующей странице
///
internal class UserListModel:INotifyPropertyChanged
{
List users;//возвращаемый в ItemsSource список пользователей
List roles;//список ролей (загружается в соответствующий ComboBox)
int idRole;
string surname;
///
/// задаем в конструкторе значения по умолчанию
///
public UserListModel()
{
users = Globals.MyGlobalConnection.UserTable.ToList();//список из базы
roles = Globals.MyGlobalConnection.Roles.ToList();//список из базы
roles.Add(new Roles() { ID = 0, Role = "Все роли" }); //добавляем элемент для списка в ComboBox (в базе его нет)
idRole = 0;//значение первого элемента списка
}
///
/// свойство для списка пользователей
///
public List Users { get=>users; set
{
users = value;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(Users)));
}
}
///
/// свойство для списка ролей. Его мы не изменяем, а только получаем (поэтому нет set)
///
public List Roles { get => roles; }
///
/// свойство для изменения ID роли. срабатывает при изменении пункта из ComboBox на странице
///
public int IdRole { get => idRole;
set
{
idRole = value;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(IdRole)));
AllFilters();
}
}
///
/// по аналогии с предыдущим срабатывает при изменении текстового поля на странице
///
public string Surname { get => surname; set
{
surname = value;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(Surname)));
AllFilters();
}
}
///
/// метод, в котором применяются сразу все доступные фильтры
///
void AllFilters()
{
List userFiltered = Globals.MyGlobalConnection.UserTable.ToList();
if (idRole !=0) userFiltered = userFiltered.Where(x => x.LoginedTable.IDRole == idRole).ToList();
if (surname != null) userFiltered = userFiltered.Where(x => x.Surname.StartsWith(surname)).ToList();
Users = userFiltered;
}
string zaglushkaPath;
public string ZaglushkaPath { get { MessageBox.Show("ok"); return zaglushkaPath; } set => zaglushkaPath = "/Resources/zaglushka.png"; }
public event PropertyChangedEventHandler PropertyChanged;
}
}