123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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
- {
- /// <summary>
- /// источник данных для списка пользователей на соответствующей странице
- /// </summary>
- internal class UserListModel:INotifyPropertyChanged
- {
- List<UserTable> users;//возвращаемый в ItemsSource список пользователей
- 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 = "Все роли" }); //добавляем элемент для списка в ComboBox (в базе его нет)
- idRole = 0;//значение первого элемента списка
- }
- /// <summary>
- /// свойство для списка пользователей
- /// </summary>
- public List<UserTable> Users { get=>users; set
- {
- users = value;
- 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(nameof(IdRole)));
- AllFilters();
- }
- }
- /// <summary>
- /// по аналогии с предыдущим срабатывает при изменении текстового поля на странице
- /// </summary>
- public string Surname { get => surname; set
- {
- surname = value;
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(Surname)));
- AllFilters();
- }
- }
-
- /// <summary>
- /// метод, в котором применяются сразу все доступные фильтры
- /// </summary>
- void AllFilters()
- {
- List<UserTable> 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;
- }
- }
|