using System;
using System.Xml.Linq;
using Sicentury.Core;
namespace MECF.Framework.Common.Account.Permissions;
public sealed class PermissionControlItem : BindableBase, ICloneable
{
#region Variables
private string _permissionId;
private string _name;
private string _description;
private PermissionMappedType _myPermission;
private PermissionMappedType _previousPermission;
#endregion
#region Construcors
public PermissionControlItem(string name, PermissionMappedType permission, string id = "", string description = "")
{
_permissionId = id;
_name = name;
_description = description;
_myPermission = permission;
_previousPermission = permission;
}
#endregion
#region Properties
///
/// 返回当前权限是否发生了变化。
///
public bool IsChanged => _myPermission != _previousPermission;
public string ID
{
get => _permissionId;
set => Set(ref _permissionId, value);
}
public PermissionMappedType Permission
{
get => _myPermission;
set
{
_myPermission = value;
OnPropertyChanged();
OnPropertyChanged(nameof(IsChanged));
}
}
public string Name
{
get => _name;
set => Set(ref _name, value);
}
public string Description
{
get => _description;
set => Set(ref _description, value);
}
#endregion
#region Methods
public object Clone()
{
return new PermissionControlItem(Name, Permission, ID, Description);
}
public void Update()
{
_previousPermission = _myPermission;
}
///
/// 从当前对象创建XElement对象。
///
///
public XElement ToXElement()
{
var xe = new XElement("Perm",
new XAttribute("name", Name),
new XAttribute("id", ID),
new XAttribute("perm", Permission.EnumValue),
new XAttribute("description", Description));
return xe;
}
///
public override string ToString()
{
return $"{Name}, {Permission}, Changed: {IsChanged}";
}
#endregion
}