| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 | using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Windows;using System.Windows.Controls;using System.Windows.Input;using Aitex.Core.RT.Log;using MECF.Framework.UI.Client.CenterViews.Configs.Roles;using MECF.Framework.UI.Client.ClientBase;using OpenSEMI.ClientBase;using OpenSEMI.ClientBase.Command;namespace FurnaceUI.Views.Configs{    public class RoleViewModel : BaseModel    {        public bool IsPermission { get => this.Permission == 3; }        private bool _IsEnabledRoleName = false;        public bool IsEnabledRoleName        {            get { return _IsEnabledRoleName; }            set { _IsEnabledRoleName = value; NotifyOfPropertyChange("IsEnabledRoleName"); }        }        public RoleViewModel()        {            this.DisplayName = "Role";        }        protected override void OnInitialize()        {            base.OnInitialize();        }        protected override void OnActivate()        {            _RolesList.Clear();            _TreeSelectedRole = null;            RoleManager.Initialize();            LoadRoleList();            base.OnActivate();        }        protected override void OnDeactivate(bool close)        {            if (ControlMode == CtrlMode.EDIT && IsPermission)            {                if (DialogBox.Confirm("The data has been modified. Do you want to save the change(s)?"))                {                    if (SaveChanged())                    {                        ControlMode = CtrlMode.VIEW;                        DialogBox.ShowInfo("Operated successfully.");                    }                }            }            base.OnDeactivate(close);        }        public void OnRoleChanged()        {            string[] RoleNameList = { "Manager", "Engineer", "Technician", "Operator" };            string _RoleName = RoleNameList.Contains(TreeSelectedRole.DisplayRoleName) ? TreeSelectedRole.DisplayRoleName : "";            IsEnabledRoleName = true;            if (!string.IsNullOrEmpty(_RoleName))                IsEnabledRoleName = false;            if (ControlMode == CtrlMode.EDIT)            {                if (!string.IsNullOrEmpty(TreeSelectedRole.DisplayRoleName) && TreeSelectedRole.DisplayRoleName.Length > 18)                    TreeSelectedRole.DisplayRoleName = TreeSelectedRole.DisplayRoleName.Substring(0, 18);                return;            }            //check role to set the mode from view to edit            if (_TreeSelectedRole != null && _TreeSelectedRole.IsRoleChanged())                ControlMode = CtrlMode.EDIT;        }        public bool OnAutoLogoutTimeChecked(object sender)        {            ControlMode = CtrlMode.EDIT;            return ((CheckBox)(sender)).IsChecked.Value;        }        private bool SaveChanged()        {            if (String.IsNullOrWhiteSpace(TreeSelectedRole.DisplayRoleName))            {                DialogBox.ShowWarning("{0} cannot be empty.", "Role name");                //TreeSelectedRole.DisplayRoleName = "No Name";                return false;            }            if (IsRoleExists(TreeSelectedRole))            {                DialogBox.ShowWarning("{0} already exists.", "Role");                return false;            }            foreach (MenuInfo menu in TreeSelectedRole.MenuCollection)            {                menu.IndexPermission = menu.DisplayIndexPermission + 1;            }            TreeSelectedRole.RoleName = TreeSelectedRole.DisplayRoleName;            TreeSelectedRole.IsAutoLogout = TreeSelectedRole.DisplayIsAutoLogout;            TreeSelectedRole.AutoLogoutTime = TreeSelectedRole.DisplayAutoLogoutTime;            TreeSelectedRole.RoleNameTextSaved = TreeSelectedRole.TimeTextSaved = true;            TreeSelectedRole.Description = TreeSelectedRole.DisplayDescription;            try            {                RoleManager.SaveRole(TreeSelectedRole);            }            catch (Exception ex)            {                LOG.Write(ex);                return false;            }            return true;        }        private Boolean IsRoleExists(RoleItem role)        {            if (RoleList == null || RoleList.Count == 0)                return false;            var sameNameList = RoleList.Where(t => t.DisplayRoleName == role.DisplayRoleName);            if (sameNameList == null || sameNameList.Count() <= 1)                return false;            return true;        }        private void LoadRoleList()        {            _RolesList.Clear();            List<RoleItem> roles = RoleManager.GetAllRoles();            if (roles == null || roles.Count == 0)                return;            foreach (RoleItem r in roles)            {                RoleItem treeRole = RoleManager.CloneRole(r);                if (treeRole != null)                {                    _RolesList.Add(treeRole);                }            }            TreeSelectedRole = _RolesList.FirstOrDefault();            TreeSelectedRole.IsSelected = true;            ControlMode = CtrlMode.VIEW;        }        private void OnRoleTreeSelectedChanged(EventCommandParameter<object, RoutedEventArgs> arg)        {            RoleItem roleItem = arg.CustomParameter as RoleItem;            if (roleItem == null)                return;            TreeSelectedRole = roleItem;        }        private void OnBtnAddRoleCommand(Object arg)        {            RoleItem newRole = RoleManager.CreateRole();            if (newRole != null)            {                _RolesList.Add(newRole);                TreeSelectedRole = newRole;                TreeSelectedRole.IsSelected = true;            }            ControlMode = CtrlMode.EDIT;        }        private void OnBtnDeleteRoleCommand(Object arg)        {            if (TreeSelectedRole == null) return;            if (!DialogBox.Confirm("Are you sure that you want to delete this role?"))            {                return;            }            if (BaseApp.Instance.UserContext.RoleID == TreeSelectedRole.RoleID)            {                DialogBox.ShowWarning("The action cannot be completed because {0} is currently in use.", "the role");                return;            }            try            {                int index = _RolesList.IndexOf(TreeSelectedRole);                _RolesList.Remove(TreeSelectedRole);                RoleManager.DeleteRole(TreeSelectedRole.RoleID);                index = index > 1 ? index - 1 : 0;                TreeSelectedRole = _RolesList == null ? null : _RolesList[index];                TreeSelectedRole.IsSelected = true;                DialogBox.ShowInfo("Operated successfully.");            }            catch (Exception ex)            {                LOG.Error(ex.StackTrace);                DialogBox.ShowInfo("Operation failed.");            }        }        private void OnBtnCloneRoleCommand(Object arg)        {            if (_TreeSelectedRole != null)            {                RoleItem newRole = RoleManager.CreateRole(_TreeSelectedRole);                if (newRole != null)                {                    newRole.DisplayRoleName = newRole.RoleName = "Copy of " + newRole.DisplayRoleName;                    _RolesList.Add(newRole);                    TreeSelectedRole = newRole;                    TreeSelectedRole.IsSelected = true;                    ControlMode = CtrlMode.EDIT;                }            }        }        private void OnBtnSaveCommand(Object arg)        {            try            {                if (SaveChanged())                {                    ControlMode = CtrlMode.VIEW;                    DialogBox.ShowInfo("Operated successfully.");                }                else                    DialogBox.ShowInfo("Operation failed.");            }            catch (Exception ex)            {                LOG.Error(ex.StackTrace);                DialogBox.ShowInfo("Operation failed.");            }        }        private void OnBtnCancelRoleCommand(Object arg)        {            LoadRoleList();            ControlMode = CtrlMode.VIEW;        }        #region commands        private ICommand _RoleTreeSelectChangedCmd;        public ICommand RoleTreeSelectChangedCommand        {            get            {                if (this._RoleTreeSelectChangedCmd == null)                    this._RoleTreeSelectChangedCmd = new BaseCommand<EventCommandParameter<object, RoutedEventArgs>>((EventCommandParameter<object, RoutedEventArgs> arg) => this.OnRoleTreeSelectedChanged(arg));                return this._RoleTreeSelectChangedCmd;            }        }        private ICommand _BtnSaveCommand;        public ICommand btnSaveCommand        {            get            {                if (this._BtnSaveCommand == null)                    this._BtnSaveCommand = new BaseCommand<Object>((Object arg) => this.OnBtnSaveCommand(arg));                return this._BtnSaveCommand;            }        }        private ICommand _BtnAddRoleCommand;        public ICommand btnAddRoleCommand        {            get            {                if (this._BtnAddRoleCommand == null)                    this._BtnAddRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnAddRoleCommand(arg));                return this._BtnAddRoleCommand;            }        }        private ICommand _BtnDeleteRoleCommand;        public ICommand btnDeleteRoleCommand        {            get            {                if (this._BtnDeleteRoleCommand == null)                    this._BtnDeleteRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnDeleteRoleCommand(arg));                return this._BtnDeleteRoleCommand;            }        }        private ICommand _BtnCloneRoleCommand;        public ICommand btnCloneRoleCommand        {            get            {                if (this._BtnCloneRoleCommand == null)                    this._BtnCloneRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnCloneRoleCommand(arg));                return this._BtnCloneRoleCommand;            }        }        private ICommand _BtnCancelRoleCommand;        public ICommand BtnCancelRoleCommand        {            get            {                if (this._BtnCancelRoleCommand == null)                    this._BtnCancelRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnCancelRoleCommand(arg));                return this._BtnCancelRoleCommand;            }        }        #endregion        public RoleManager RoleManager        {            get { return RoleManager.Instance; }        }        public ObservableCollection<PermissionType> PermissionDictionary        {            get { return RolePermissionMapper.Instance.PermissionDictionary; }        }        private ObservableCollection<RoleItem> _RolesList = new ObservableCollection<RoleItem>();        public ObservableCollection<RoleItem> RoleList        {            get { return _RolesList; }        }        private RoleItem _TreeSelectedRole = null;        public RoleItem TreeSelectedRole        {            get { return _TreeSelectedRole; }            set            {                _TreeSelectedRole = value;                this.NotifyOfPropertyChange("TreeSelectedRole");            }        }        private CtrlMode _ControlMode = CtrlMode.VIEW;        public CtrlMode ControlMode        {            get { return _ControlMode; }            set { _ControlMode = value; NotifyOfPropertyChange("ControlMode"); }        }    }}
 |