235 lines
5.5 KiB
C#
235 lines
5.5 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using Caliburn.Micro.Core;
|
|
using MECF.Framework.Common.Account;
|
|
using MECF.Framework.Common.Account.Extends;
|
|
|
|
namespace MECF.Framework.UI.Client.CenterViews.Configs.Roles
|
|
{
|
|
public class RoleItem : PropertyChangedBase
|
|
{
|
|
#region Constructors
|
|
|
|
public RoleItem(Role role)
|
|
{
|
|
Role = role;
|
|
DisplayRoleName = RoleName;
|
|
DisplayAutoLogoutTime = AutoLogoutTime;
|
|
DisplayIsAutoLogout = IsAutoLogout;
|
|
DisplayDescription = Description;
|
|
}
|
|
|
|
public RoleItem(string roleId)
|
|
{
|
|
Role = new Role(roleId, string.Empty, false, 0, null, false, string.Empty);
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
public Role Role { get; }
|
|
|
|
public string RoleId
|
|
{
|
|
get => Role.RoleId;
|
|
set => Role.RoleId = value;
|
|
}
|
|
|
|
public string RoleName
|
|
{
|
|
get => Role.RoleName;
|
|
set => Role.RoleName = value;
|
|
}
|
|
|
|
public int AutoLogoutTime
|
|
{
|
|
get => Role.LogoutTime;
|
|
set => Role.LogoutTime = value;
|
|
}
|
|
|
|
public string Description
|
|
{
|
|
get => Role.Description;
|
|
set => Role.Description = value;
|
|
}
|
|
|
|
public bool IsAutoLogout
|
|
{
|
|
get => Role.IsAutoLogout;
|
|
set => Role.IsAutoLogout = value;
|
|
}
|
|
|
|
public bool IsBuildIn
|
|
{
|
|
get => Role.IsBuildIn;
|
|
set => Role.IsBuildIn = value;
|
|
}
|
|
|
|
private string _displayRoleName;
|
|
|
|
public string DisplayRoleName
|
|
{
|
|
get => _displayRoleName;
|
|
set
|
|
{
|
|
_displayRoleName = value;
|
|
NotifyOfPropertyChange();
|
|
}
|
|
}
|
|
|
|
public int DisplayAutoLogoutTime
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public bool DisplayIsAutoLogout
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
|
|
public string DisplayDescription
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
|
|
private bool _isSelected;
|
|
public bool IsSelected
|
|
{
|
|
get => _isSelected;
|
|
set { _isSelected = value; NotifyOfPropertyChange(); }
|
|
}
|
|
|
|
private bool _roleNameTextSaved = true;
|
|
public bool RoleNameTextSaved
|
|
{
|
|
get => _roleNameTextSaved;
|
|
set
|
|
{
|
|
if (_roleNameTextSaved != value)
|
|
{
|
|
_roleNameTextSaved = value;
|
|
NotifyOfPropertyChange();
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool _timeTextSaved = true;
|
|
public bool TimeTextSaved
|
|
{
|
|
get => _timeTextSaved;
|
|
set
|
|
{
|
|
if (_timeTextSaved != value)
|
|
{
|
|
_timeTextSaved = value;
|
|
NotifyOfPropertyChange();
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool _descriptionTextSaved = true;
|
|
public bool DescriptionTextSaved
|
|
{
|
|
get => _descriptionTextSaved;
|
|
set
|
|
{
|
|
if (_descriptionTextSaved != value)
|
|
{
|
|
_descriptionTextSaved = value;
|
|
NotifyOfPropertyChange();
|
|
}
|
|
}
|
|
}
|
|
|
|
public ObservableCollection<PermissionControlItem> MenuPermCollection { get; } = new();
|
|
|
|
public ObservableCollection<PermissionControlItem> RecipePermCollection { get; } = new();
|
|
|
|
public ObservableCollection<PermissionControlItem> RecipeStepPermCollection { get; } = new();
|
|
|
|
public ObservableCollection<PermissionControlItem> ContentPermCollection { get; } = new();
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
public void AddMenuInfo(PermissionControlItem pInfo)
|
|
{
|
|
if (null == pInfo)
|
|
return;
|
|
|
|
MenuPermCollection.Add(pInfo);
|
|
}
|
|
|
|
public void AddRecipeInfo(PermissionControlItem pInfo)
|
|
{
|
|
if (null == pInfo)
|
|
return;
|
|
|
|
RecipePermCollection.Add(pInfo);
|
|
}
|
|
|
|
public void AddStepInfo(PermissionControlItem pInfo)
|
|
{
|
|
if (null == pInfo)
|
|
return;
|
|
|
|
RecipeStepPermCollection.Add(pInfo);
|
|
}
|
|
|
|
public void AddContentInfo(PermissionControlItem pInfo)
|
|
{
|
|
if (null == pInfo)
|
|
return;
|
|
|
|
ContentPermCollection.Add(pInfo);
|
|
}
|
|
|
|
public bool IsRoleChanged()
|
|
{
|
|
if (DisplayRoleName != Role.RoleName)
|
|
return true;
|
|
|
|
if (DisplayAutoLogoutTime != Role.LogoutTime)
|
|
return true;
|
|
|
|
if (DisplayIsAutoLogout != Role.IsAutoLogout)
|
|
return true;
|
|
|
|
if (DisplayDescription != Role.Description)
|
|
return true;
|
|
|
|
if (MenuPermCollection.Any(item => item.IsChanged))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (RecipePermCollection.Any(item => item.IsChanged))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (RecipeStepPermCollection.Any(item => item.IsChanged))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (ContentPermCollection.Any(item => item.IsChanged))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|