20230201_145_upperpc/InSituLaboratory.Models/UserModel.cs
2024-03-11 13:12:02 +08:00

120 lines
3.4 KiB
C#

using InSituLaboratory.IService;
using Prism.Mvvm;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InSituLaboratory.Models
{
public class UserModel : BindableBase, INotifyDataErrorInfo
{
public UserModel() { }
IUserService _userService;
public UserModel(IUserService userService)
{
_userService = userService;
}
public int Index { get; set; }
public int UserId { get; set; }
private string _userIcon;
public string UserIcon
{
get { return _userIcon; }
set { SetProperty(ref _userIcon, value); }
}
private string _userName;
public string UserName
{
get { return _userName; }
set
{
_userName = value;
_errors.Remove("UserName");
Task.Run(async () =>
{
await Task.Delay(500);// 只是做为耗时操作的测试,实际开发中不需要这句
if (string.IsNullOrEmpty(value))
{
_errors.Add("UserName", new List<string> { "用户名不能为空" });
ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs("UserName"));
}
else if (_userService != null && _userService.CheckUserName(value))
{
_errors.Add("UserName", new List<string> { "用户名已被占用" });
ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs("UserName"));
}
});
}
}
public string RealName { get; set; }
public int? Age { get; set; }
private int? _gender;
public int? Gender
{
get { return _gender; }
set { SetProperty(ref _gender, value); }
}
/// <summary>
/// 性别转化 1-男 0-女
/// </summary>
private string? _gender1;
public string? Gender1
{
get { return _gender1; }
set { SetProperty(ref _gender1, value); }
}
public string Address { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
private int _status;
public int Status
{
get { return _status; }
set { SetProperty(ref _status, value); }
}
public string? QQ { get; set; }
public string? WeChat { get; set; }
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set { SetProperty<bool>(ref _isSelected, value); }
}
public List<RoleModel> Roles { get; set; }
Dictionary<string, IList<string>> _errors = new Dictionary<string, IList<string>>();
public bool HasErrors => _errors.Count > 0;
public event EventHandler<DataErrorsChangedEventArgs>? ErrorsChanged;
public IEnumerable GetErrors(string? propertyName)
{
if (_errors.ContainsKey(propertyName))
return _errors[propertyName];
return null;
}
}
}