示例#1
0
        private void NewAccount()
        {
            var account = AccountInstance.GetObject();

            BuildAccountInfo(account);
            // check the same login code
            var chk = AccountInstance.Find(f => f.Code.Equals(account.Code));

            if (null != chk)
            {
                ShowNotification("./account_add.aspx", "The login code \"" + account.Code + "\" is exist.", false);
            }
            else
            {
                AccountInstance.Add(account);

                // 保存历史记录
                SaveHistory(new TB_AccountHistory()
                {
                    ActionId = ActionInstance.Find(f => f.Name.Equals("AddAccount")).id,
                    ObjectA  = "[id=" + account.id + "] " + account.Name + ", " + account.Code
                });

                ShowNotification("./account_add.aspx", "You add a new account: " + account.Name + "(" + account.Code + ").");
            }
        }
示例#2
0
        protected void btDelete_Click(object sender, EventArgs e)
        {
            if (!HasSessionLose)
            {
                if ("" != hidID.Value)
                {
                    var ids  = GetIdList(hidID.Value.Split(new char[] { ',' }));
                    var list = RoleInstance.FindList(f => ids.Contains(f.id) && f.Delete == false);
                    foreach (var role in list)
                    {
                        role.Delete = true;
                        Update(role);

                        SaveHistory(new TB_AccountHistory
                        {
                            ActionId = ActionInstance.Find(f => f.Name.Equals("DeleteRole")).id,
                            ObjectA  = "[id=" + role.id + "] " + role.Name
                        });
                    }
                    // 更新默认角色
                    var dftRole = RoleInstance.Find(f => f.IsDefault == true && f.Delete == false);
                    foreach (var role in ids)
                    {
                        AccountInstance.ClearRoleInfo(role, null == dftRole ? 0 : dftRole.id);
                    }
                    ShowNotification("./role_list.aspx", "Success: You have delete " + ids.Count() + " role(s).");
                }
            }
        }
示例#3
0
        /// <summary>
        /// 根据编辑的菜单项更新角色的访问
        /// </summary>
        /// <param name="obj"></param>
        private void UpdateRole(TB_Permission obj)
        {
            // 更新默认角色可以访问的
            if (obj.IsDefault == true)
            {
                var dftPermission = PermissionInstance.GetDefaultMenus();
                // 查找非管理角色
                var roles = RoleInstance.FindList(f => f.IsAdministrator == false && f.Delete == false);
                foreach (var role in roles)
                {
                    var pers = role.Permission.Split(new char[] { ',' });
                    if (!pers.Contains(obj.id.ToString()))
                    {
                        RoleInstance.Update(f => f.id == role.id, act => act.Permission = dftPermission);
                    }
                }
            }
            // 查找更新管理员角色的访问权限
            RoleInstance.Update(f => f.IsAdministrator == true && f.Delete == false,
                                act => act.Permission = PermissionInstance.GetAdministratorsMenus());

            // 重置当前登陆者的session
            Account = AccountInstance.Find(f => f.id == Account.id);
            Session[Utility.SessionName] = Account;
        }
示例#4
0
        private void ShowDepartments()
        {
            List <int> depts;

            if ("" == hidDepartment.Value)
            {
                depts = DepartmentInstance.GetAllDepartments();
            }
            else
            {
                depts = DepartmentInstance.GetSubdepartments(ParseInt(hidDepartment.Value));
            }

            var totalRecords = 0;
            var pageIndex    = "" == hidPageIndex.Value ? 1 : int.Parse(hidPageIndex.Value);
            var list         = DepartmentInstance.FindPageList <TB_Department>(pageIndex, PageSize, out totalRecords,
                                                                               f => f.Delete == false && (f.Name.IndexOf(txtName.Value.Trim()) >= 0) && depts.Contains(f.id), "Parent,Name");
            var totalPages = totalRecords / PageSize + (totalRecords % PageSize > 0 ? 1 : 0);

            string html = "";

            if (totalRecords < 1)
            {
                html = "<tr><td colspan=\"10\">No records, You can change the condition and try again or " +
                       " <a href=\"./department_add.aspx\">ADD</a> new one.</td></tr>";
            }
            else
            {
                var cnt = (pageIndex - 1) * PageSize;
                foreach (var obj in list)
                {
                    cnt++;
                    var users = AccountInstance.FindList(f => f.Department == obj.id).Count();
                    var upper = 0 == obj.Parent ? null : DepartmentInstance.Find(f => f.id == obj.Parent);
                    var id    = Utility.UrlEncode(Utility.Encrypt(obj.id.ToString()));
                    html += "<tr>" +
                            "<td style=\"width: 40px; text-align: center;\"><input type=\"checkbox\" id=\"cb_" + id + "\" /></td>" +
                            "<td style=\"width: 40px; text-align: center;\">" + cnt + "</td>" +
                            "<td><a href=\"./department_add.aspx?key=" + id + "\" >" + obj.Name + "</a></td>" +
                            "<td>" + obj.Phone + "</td>" +
                            "<td>" + obj.Fax + "</td>" +
                            "<td>" + (obj.IsDefault == true ? "Yes" : "-") + "</td>" +
                            "<td><a href=\"#d" + (null == upper ? "" : upper.id.ToString()) + "\" >" +
                            (null == upper ? "" : upper.Name) + "</a></td>" +
                            "<td>" + (0 == users ? "0" : ("<a href=\"./account_list.aspx?key=" +
                                                          Utility.UrlEncode(Utility.Encrypt("d," + obj.id.ToString())) + "\" >" +
                                                          users + "</a>")) + "</td>" +
                            "<td>" + obj.Room + "</td>" +
                            "<td>" + obj.Address + "</td>" +
                            "</tr>";
                }
            }
            tbodyBody.InnerHtml  = html;
            divPagging.InnerHtml = "";
            if (totalRecords > 0)
            {
                ShowPaggings(pageIndex, totalPages, totalRecords, "./department_list.aspx", divPagging);
            }
        }
示例#5
0
        /// <summary>
        /// 显示指定部门的所有用户列表
        /// </summary>
        /// <param name="node"></param>
        /// <param name="parent"></param>
        protected void ShowDepartmentUsersInTreeView(TreeNode node, int parent)
        {
            var users = AccountInstance.FindList(f => f.Department == parent).OrderBy(o => o.Name);

            foreach (var user in users)
            {
                node.ChildNodes.Add(new TreeNode
                {
                    Text         = user.Name,
                    ShowCheckBox = true,
                    SelectAction = TreeNodeSelectAction.Expand,
                    NavigateUrl  = "#" + user.id
                });
            }
        }
示例#6
0
        private void ShowRoles()
        {
            var totalRecords = 0;
            var pageIndex    = "" == hidPageIndex.Value ? 1 : int.Parse(hidPageIndex.Value);
            var list         = RoleInstance.FindPageList <TB_Role>(pageIndex, PageSize, out totalRecords,
                                                                   p => p.Delete == false && p.Name.IndexOf(txtName.Value.Trim()) >= 0, "Name");
            var totalPages = totalRecords / PageSize + (totalRecords % PageSize > 0 ? 1 : 0);
            //list = list.OrderBy(o => o.IsAdministrator).ThenBy(t => t.IsDefault).ThenBy(t => t.AddTime);

            string html = "";

            if (totalRecords < 1)
            {
                html = "<tr><td colspan=\"8\">No records, you can change condition and try again, or " +
                       " <a href=\"./role_add.aspx\">Add</a> some new role.</td></tr>";
            }
            else
            {
                var cnt = (pageIndex - 1) * PageSize;
                foreach (var obj in list)
                {
                    cnt++;
                    var users = AccountInstance.FindList(f => f.Role == obj.id).Count();
                    var id    = Utility.UrlEncode(Utility.Encrypt(obj.id.ToString()));
                    html += "<tr>" +
                            // 系统默认角色无法删除
                            "<td style=\"width: 40px; text-align: center;\">" + (obj.IsDefault.Value ? "" :
                                                                                 ("<input type=\"checkbox\" id=\"cb_" + id + "\" />")) + "</td>" +
                            "<td style=\"width: 40px; text-align: center;\">" + cnt + "</td>" +
                            "<td><a href=\"./role_add.aspx?key=" + id + "\" title=\"click to edit\">" + ("" == obj.Name ? "-" : obj.Name) + "</a></td>" +
                            "<td>" + (obj.IsDefault.Value ? "Yes" : "-") + "</td>" +
                            "<td>" + (obj.IsAdministrator.Value ? "Yes" : "-") + "</td>" +
                            "<td>" + (users > 0 ? ("<a href=\"./account_list.aspx?key=" +
                                                   Utility.UrlEncode(Utility.Encrypt("r," + obj.id.ToString())) + "\" >" + users.ToString() + "</a>") : users.ToString()) + "</td>" +
                            "<td><a href=\"./role_authority.aspx?key=" + id + "\">Edit</a></td>" +
                            "<td>" + obj.Description + "</td>" +
                            "</tr>";
                }
            }
            tbodyBody.InnerHtml  = html;
            divPagging.InnerHtml = "";
            if (totalRecords > 0)
            {
                ShowPaggings(pageIndex, totalPages, totalRecords, "./role_list.aspx", divPagging);
            }
        }
示例#7
0
        protected void bt_Delete_Click(object sender, EventArgs e)
        {
            if (!HasSessionLose)
            {
                if ("" != hidID.Value)
                {
                    var subIds = new List <int>();
                    var ids    = GetIdList(hidID.Value.Split(new char[] { ',' }));
                    subIds.AddRange(ids);
                    var list = DepartmentInstance.FindList(f => ids.Contains(f.id));
                    foreach (var dept in list)
                    {
                        // 先删除所有下属部门
                        var subs = DepartmentInstance.GetSubdepartments(dept.id);
                        subIds.AddRange(subs);
                        var subList = DepartmentInstance.FindList(f => subs.Contains(f.id) && f.Delete == false);
                        foreach (var sub in subList)
                        {
                            //subIds.Add(sub.id);
                            sub.Delete = true;
                            Update(sub);
                        }

                        // 更新删除状态
                        dept.Delete = true;
                        Update(dept);
                        // 保存删除历史记录
                        SaveHistory(new TB_AccountHistory
                        {
                            ActionId = ActionInstance.Find(f => f.Name.Equals("DeleteDept")).id,
                            ObjectA  = "[id=" + dept.id + "] " + dept.Name
                        });
                    }
                    // 删除动作完成之后才处理用户的默认部门信息
                    TB_Department dftDept = DepartmentInstance.GetDefaultDepartment();
                    // 清理所有下级部门的用户列表
                    foreach (var id in subIds)
                    {
                        AccountInstance.ClearDeptInfo(id, null == dftDept ? 0 : dftDept.id);
                    }

                    ShowNotification("./department_list.aspx", "Success: You have delete " + ids.Count() + " department(s).");
                }
            }
        }
示例#8
0
        private void EditAccount()
        {
            var account = AccountInstance.Find(f => f.id == ParseInt(Utility.Decrypt(hidID.Value)));

            if (null != account)
            {
                BuildAccountInfo(account);
                Update(account);

                // 保存历史记录
                SaveHistory(new TB_AccountHistory
                {
                    ActionId = ActionInstance.Find(f => f.Name.Equals("EditAccount")).id,
                    ObjectA  = "[id=" + account.id + "] " + account.Name + ", " + account.Code
                });

                ShowNotification("./account_list.aspx", "You changed account: " + account.Name + "(" + account.Code + ").");
            }
        }
示例#9
0
 /// <summary>
 /// 更新用户信息
 /// </summary>
 /// <param name="obj"></param>
 protected void Update(TB_Account obj)
 {
     AccountInstance.Update(f => f.id == obj.id, action =>
     {
         action.Delete         = obj.Delete;
         action.Answer         = obj.Answer;
         action.Code           = obj.Code;
         action.Department     = obj.Department;
         action.Email          = obj.Email;
         action.LandlineNumber = obj.LandlineNumber;
         action.LastLoginIp    = obj.LastLoginIp;
         action.LastLoginTime  = obj.LastLoginTime;
         action.Locked         = obj.Locked;
         action.LoginTimes     = obj.LoginTimes;
         action.Name           = obj.Name;
         action.Password       = obj.Password;
         action.Phone          = obj.Phone;
         action.Question       = obj.Question;
         action.RegisterTime   = obj.RegisterTime;
         action.Role           = obj.Role;
     });
 }
示例#10
0
        private void showEdit()
        {
            var account = AccountInstance.Find(f => f.id == ParseInt(Utility.Decrypt(_key)));

            if (null != account)
            {
                txtCode.Value       = account.Code;
                txtDepartment.Value = (int?)null == account.Department ? "" : account.TB_Department.Name;
                txtEmail.Value      = account.Email;
                txtLindline.Value   = account.LandlineNumber;
                txtName.Value       = account.Name;
                txtPhone.Value      = account.Phone;
                txtQuestion.Value   = account.Question;
                txtAnswer.Disabled  = !string.IsNullOrEmpty(account.Question);
                txtRole.Value       = (int?)null == account.Role ? "" : account.TB_Role.Name;
                hidDepartment.Value = (int?)null == account.Department ? "" : account.Department.ToString();
                hidRole.Value       = (int?)null == account.Role ? "" : account.Role.ToString();
            }
            else
            {
                ShowNotification("./account_list.aspx", "Error: paramenter error, cannot edit the account.", false);
            }
        }
示例#11
0
        protected void btSave_Click(object sender, EventArgs e)
        {
            var Old = Utility.MD5(txtOldPassword.Value.Trim());
            var New = Utility.MD5(txtNewPassword.Value.Trim());

            if (Old.Equals(Account.Password.ToUpper()))
            {
                Account.Password = New;
                AccountInstance.Update(f => f.id == Account.id, a => { a.Password = Account.Password; });

                // 保存历史记录
                SaveHistory(new TB_AccountHistory
                {
                    ActionId = ActionInstance.Find(f => f.Name.Equals("ChangePassword")).id,
                    Ip       = Utility.GetClientIP(this.Context)
                });
                ShowNotification("./change_password.aspx", "Your have changed your password, it's take effective when you next login.");
            }
            else
            {
                ShowNotification("./change_password.aspx", "Your old password is incorrect, please try again.", false);
            }
        }
示例#12
0
        protected void btDelete_Click(object sender, EventArgs e)
        {
            if (!HasSessionLose)
            {
                if ("" != hidID.Value)
                {
                    var ids  = GetIdList(hidID.Value.Split(new char[] { ',' }));
                    var list = AccountInstance.FindList(f => ids.Contains(f.id) && f.Delete == false);
                    foreach (var account in list)
                    {
                        account.Delete = true;
                        Update(account);

                        SaveHistory(new TB_AccountHistory
                        {
                            ActionId = ActionInstance.Find(f => f.Name.Equals("DeleteAccount")).id,
                            ObjectA  = "[id=" + account.id + "] " + account.Name
                        });
                    }
                    ShowNotification("./account_list.aspx", "Success: You have delete " + ids.Count() + " account(s).");
                }
            }
        }
示例#13
0
        private void ShowAccountList()
        {
            // 部门id列表
            var depts = "" != hidDepartment.Value ?
                        (DepartmentInstance.GetSubdepartments(ParseInt(hidDepartment.Value))) :
                        (DepartmentInstance.GetAllDepartments());
            // 角色列表
            List <int> roles;

            if ("" != hidRole.Value)
            {
                roles = new List <int>();
                roles.Add(ParseInt(hidRole.Value));
            }
            else
            {
                roles = RoleInstance.GetAllRole();
            }
            var totalRecords = 0;
            var pageIndex    = "" == hidPageIndex.Value ? 1 : int.Parse(hidPageIndex.Value);
            var list         = AccountInstance.FindPageList <TB_Account>(pageIndex, PageSize, out totalRecords,
                                                                         f => (f.Name.IndexOf(txtName.Value.Trim()) >= 0) &&
                                                                         (roles.Contains(f.Role.Value) || f.Role == (int?)null) &&
                                                                         (depts.Contains(f.Department.Value) || f.Department == (int?)null) && f.Delete == false, "Name");
            var totalPages = totalRecords / PageSize + (totalRecords % PageSize > 0 ? 1 : 0);

            string html = "";

            if (totalRecords < 1)
            {
                html = "<tr><td colspan=\"12\">No records, You can change the condition and try again or " +
                       " <a href=\"./account_add.aspx\">ADD</a> new one.</td></tr>";
            }
            else
            {
                var cnt = (pageIndex - 1) * PageSize;
                foreach (var obj in list)
                {
                    cnt++;
                    var id = Utility.UrlEncode(Utility.Encrypt(obj.id.ToString()));
                    html += "<tr " + (obj.Locked == true ? "style=\"color: red;\"" : "") + ">" +
                            "<td style=\"width: 40px; text-align: center;\"><input type=\"checkbox\" id=\"cb_" + id + "\" /></td>" +
                            "<td style=\"width: 40px; text-align: center;\">" + cnt + "</td>" +
                            "<td style=\"width: 60px;\"><a href=\"./account_add.aspx?key=" + id + "\" >" + obj.Name + "</a></td>" +
                            "<td style=\"width: 60px;\">" + obj.Code + "</td>" +
                            "<td style=\"width: 80px;\">" + obj.RegisterTime.Value.ToString("yyyy-MM-dd") + "</td>" +
                            "<td style=\"width: 50px;\">" + (obj.Locked == true ? "Locked" : "Normal") + "</td>" +
                            "<td>" + ("<a href=\"#d" + (null == obj.Department ? "" : obj.Department.ToString()) + "\" >" +
                                      (null == obj.Department ? "-" : obj.TB_Department.Name) + "</a>") + "</td>" +
                            "<td>" + ("<a href=\"#r" + (null == obj.Role ? "" : obj.Role.ToString()) + "\" >" +
                                      (null == obj.Role ? "-" : obj.TB_Role.Name) + "</a>") + "</td>" +
                            "<td>" + obj.LoginTimes.ToString() + "</td>" +
                            "<td>" + (null == obj.LastLoginTime ? "never" : obj.LastLoginTime.Value.ToString("yyyy-MM-dd HH:mm:ss")) + "</td>" +
                            "<td>" + obj.LastLoginIp + "</td>" +
                            "<td></td>" +
                            "</tr>";
                }
            }
            tbodyBody.InnerHtml  = html;
            divPagging.InnerHtml = "";
            if (totalRecords > 0)
            {
                ShowPaggings(pageIndex, totalPages, totalRecords, "./account_list.aspx", divPagging);
            }
        }