|
@@ -9,48 +9,73 @@ using System.Windows;
|
|
|
|
|
|
namespace MyWpfApp.models
|
|
|
{
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// источник данных для списка пользователей на соответствующей странице
|
|
|
+ /// </summary>
|
|
|
internal class UserListModel:INotifyPropertyChanged
|
|
|
{
|
|
|
|
|
|
- List<UserTable> users;
|
|
|
+ List<UserTable> users;//возвращаемый в ItemsSource список пользователей
|
|
|
|
|
|
- List<Roles> roles;
|
|
|
+ List<Roles> roles;//список ролей (загружается в соответствующий ComboBox)
|
|
|
int idRole;
|
|
|
string surname;
|
|
|
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// задаем в конструкторе значения по умолчанию
|
|
|
+ /// </summary>
|
|
|
public UserListModel()
|
|
|
{
|
|
|
- users = Globals.MyGlobalConnection.UserTable.ToList();
|
|
|
- roles = Globals.MyGlobalConnection.Roles.ToList();
|
|
|
- roles.Add(new Roles() { ID = 0, Role = "Все роли" });
|
|
|
- idRole = 0;
|
|
|
+ users = Globals.MyGlobalConnection.UserTable.ToList();//список из базы
|
|
|
+ roles = Globals.MyGlobalConnection.Roles.ToList();//список из базы
|
|
|
+ roles.Add(new Roles() { ID = 0, Role = "Все роли" }); //добавляем элемент для списка в ComboBox (в базе его нет)
|
|
|
+ idRole = 0;//значение первого элемента списка
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// свойство для списка пользователей
|
|
|
+ /// </summary>
|
|
|
public List<UserTable> Users { get=>users; set
|
|
|
{
|
|
|
users = value;
|
|
|
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Users"));
|
|
|
+ PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(Users)));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// свойство для списка ролей. Его мы не изменяем, а только получаем (поэтому нет set)
|
|
|
+ /// </summary>
|
|
|
public List<Roles> Roles { get => roles; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// свойство для изменения ID роли. срабатывает при изменении пункта из ComboBox на странице
|
|
|
+ /// </summary>
|
|
|
public int IdRole { get => idRole;
|
|
|
set
|
|
|
{
|
|
|
idRole = value;
|
|
|
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IdRole"));
|
|
|
+ PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(IdRole)));
|
|
|
AllFilters();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// по аналогии с предыдущим срабатывает при изменении текстового поля на странице
|
|
|
+ /// </summary>
|
|
|
public string Surname { get => surname; set
|
|
|
{
|
|
|
surname = value;
|
|
|
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Surname"));
|
|
|
+ PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(Surname)));
|
|
|
AllFilters();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// метод, в котором применяются сразу все доступные фильтры
|
|
|
+ /// </summary>
|
|
|
void AllFilters()
|
|
|
{
|
|
|
List<UserTable> userFiltered = Globals.MyGlobalConnection.UserTable.ToList();
|