示例#1
0
        public static void SaveUserRole(string userID, string[] roles)
        {
            using (var db = SysContext.GetCurrent())
            {
                var oldItems = db.UserRoles.Where(r => r.UserID.Equals(userID));

                var adds    = roles.Where(w => oldItems.FirstOrDefault(t => t.RoleID.Equals(w)) == null).ToList();
                var removes = oldItems.Where(w => roles.FirstOrDefault(t => t.Equals(w.RoleID)) == null).ToList();

                foreach (var t in removes)
                {
                    db.UserRoles.Remove(t);
                }

                foreach (var t in adds)
                {
                    var newItem = new UserRole
                    {
                        UserID = userID,
                        RoleID = t
                    };
                    newItem.ResetCreated();
                    db.UserRoles.Add(newItem);
                }
                db.SaveChanges();
            }
        }
示例#2
0
        public static string Messages()//逐条显示当前用户消息
        {
            string id = SysService.GetCurrentUser().UserID;

            //string str="server='10.1.15.235';database='PA_Sys';uid='pguser';pwd='sa123456'";
            //SqlConnection con = new SqlConnection(str);
            //con.Open();
            //string strsql = "select * FROM [dbo].[hr_fl_MessageRemind]('1'," + "'" + id + "'" + ")";
            //SqlCommand cmd = new SqlCommand(strsql, con);
            //SqlDataReader rd = cmd.ExecuteReader();
            using (var db = new SysContext())
            {
                db.Database.Connection.Open();
                var cmd = db.Database.Connection.CreateCommand();

                cmd.CommandText = "select * FROM [dbo].[hr_fl_MessageRemind]('1'," + "'" + id + "'" + ")";
                List <UserMessage> ls = new List <UserMessage>();
                using (var reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
                {
                    while (reader.Read())
                    {
                        UserMessage um = new UserMessage();
                        um.MsgTitle = reader["MsgTitle"].ToString();
                        um.Count    = Convert.ToInt32(reader["Count"]);
                        um.MsgUrl   = reader["MsgUrl"].ToString();
                        ls.Add(um);
                    }
                    reader.Close();
                }
                db.Database.Connection.Close();
                return(ls.ToJson());
            }
        }
示例#3
0
        //如果同一个页面的某个功能,A角色有权限,B角色没有权限,但某用户A、B角色都有,那该用户应该有权
        public static List <RolePageModel> GetUserPages(string userID)
        {
            using (var db = SysContext.GetCurrent())
            {
                var items = (from ur in db.UserRoles
                             join rp in db.RolePages on ur.RoleID equals rp.RoleID
                             where ur.UserID.Equals(userID)
                             select new RolePageModel
                {
                    RoleID = rp.RoleID,
                    PageID = rp.PageID,
                    ActionValue = rp.ActionValue
                }).ToList();

                db.RolePages.Where(rp => rp.RoleID.Equals(userID)).
                Select((rp) => new RolePageModel
                {
                    RoleID      = rp.RoleID,
                    PageID      = rp.PageID,
                    ActionValue = rp.ActionValue
                }).ToList().AddToCollection(items);

                var groups = items.GroupBy(g => g.PageID).Select(g => new RolePageModel
                {
                    PageID      = g.Key,
                    ActionValue = g.Count() > 1 ? g.Select(s => s.ActionValue).Aggregate((v1, v2) => v1 | v2) : g.First().ActionValue,
                    DataFilter  = g.Select(r => r.DataFilter).AggregateSplitStrings(",")
                }).ToList();

                return(groups);
            }
        }
示例#4
0
 public static IEnumerable <MailServer> GetIndex()
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.MailServers.ToList());
     }
 }
示例#5
0
 public static MailServer GetItem(string idOrName)
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.MailServers.FirstOrDefault(m => m.ServerID == idOrName || m.ServerName == idOrName));
     }
 }
示例#6
0
        public static RoleModel CreateRole(string name, string description = "")
        {
            using (var db = SysContext.GetCurrent())
            {
                var oldItem = db.Roles.FirstOrDefault(r => r.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
                if (oldItem != null)
                {
                    throw new Exception("角色已存在");
                }
                var  newID = db.GetNextRoleID();
                Role role  = new Role {
                    RoleID = newID, Name = name, Description = description
                };
                role.ResetCreated();
                db.Roles.Add(role);
                var user = SysService.GetCurrentUser();
                if (user.UserID != "U00001")
                {
                    UserRole ur = new UserRole
                    {
                        UserID = user.UserID,
                        RoleID = role.RoleID
                    };
                    ur.ResetCreated();
                    db.UserRoles.Add(ur);
                }
                db.SaveChanges();

                return(new RoleModel {
                    RoleID = newID, Name = name, Description = description
                });
            }
        }
示例#7
0
        public static void DeleteRole(string roleID)
        {
            using (var db = SysContext.GetCurrent())
            {
                var oldItem = db.Roles.FirstOrDefault(r => r.RoleID.Equals(roleID, StringComparison.OrdinalIgnoreCase));
                if (oldItem == null)
                {
                    throw new Exception("角色不存在");
                }

                var count = db.UserRoles.Count(r => r.RoleID.Equals(roleID, StringComparison.OrdinalIgnoreCase));
                if (count > 0)
                {
                    throw new Exception("有用户关联此角色,删除取消.");
                }

                foreach (var item in db.RolePages.Where(r => r.RoleID.Equals(roleID)).ToList())
                {
                    db.RolePages.Remove(item);
                    db.SaveChanges();
                }
                oldItem.ResetUpdated();
                db.Roles.Remove(oldItem);

                db.SaveChanges();
            }
        }
示例#8
0
 public static string[] GetUserRoles(string userID)
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.UserRoles.Where(r => r.UserID.Equals(userID)).Select(r => r.RoleID).ToArray());
     }
 }
示例#9
0
 internal static User GetUser(string userName)
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.Users.FirstOrDefault(u => (u.UserID.Equals(userName) ||
                                              u.UserName.Equals(userName, StringComparison.OrdinalIgnoreCase) && u.IsValid.Equals(true))));
     }
 }
示例#10
0
        public static List <UserModel> GetUsers(string nameOrEmail, bool isValid, string email, string fullname)
        {
            using (var db = SysContext.GetCurrent())
            {
                Func <User, bool> nameWhere = (u) => true;

                var query = db.Users.Where(u => u.IsValid == isValid && u.UserName != "admin").ToList();
                var user  = SysService.GetCurrentUser();
                if (user != null && user.UserID != "U00001")
                {
                    var companyfilter = ((from u in db.Users
                                          join sr in db.UserRoles on u.UserID equals sr.UserID
                                          join rp in db.RolePages on sr.RoleID equals rp.RoleID
                                          where (u.UserID.Equals(user.UserID) && rp.PageID.Equals("P01001"))
                                          select rp.DataFilter.ToString()).Distinct()).ToList();
                    var deptfilter = ((from u in db.Users
                                       join sr in db.UserRoles on u.UserID equals sr.UserID
                                       join rp in db.RolePages on sr.RoleID equals rp.RoleID
                                       where (u.UserID.Equals(user.UserID) && rp.PageID.Equals("P01002"))
                                       select rp.DataFilter.ToString()).Distinct()).ToList();
                    List <string> eu = new List <string>();

                    eu = (from e in db.hr_Employees where (deptfilter.Contains(e.DeptID) || deptfilter.Contains(e.CompanyID)) select e.UserID).Distinct().ToList();

                    if (eu.Count != 0)
                    {
                        query = query.Where(u => eu.Contains(u.UserID)).ToList();
                    }
                }
                if (!string.IsNullOrEmpty(nameOrEmail) || !string.IsNullOrEmpty(email) || !string.IsNullOrEmpty(fullname))
                {
                    query = string.IsNullOrEmpty(nameOrEmail) ? query : query.Where(u => u.UserName.Contains(nameOrEmail)).ToList();
                    query = string.IsNullOrEmpty(email) ? query : query.Where(u => u.Email.Contains(email)).ToList();
                    query = string.IsNullOrEmpty(fullname) ? query : query.Where(u => u.FullName.Contains(fullname)).ToList();
                }

                // UserDatagrid ud = new UserDatagrid();

                //  var demo = "";
                return(query
                       .Select((u) => new UserModel
                {
                    UserID = u.UserID,
                    UserName = u.UserName,
                    FullName = u.FullName,
                    Email = u.Email,
                    Roles = (from r in db.Roles join s in db.UserRoles on r.RoleID equals s.RoleID where s.UserID.Equals(u.UserID) select r.Name.ToString()).ToArray(),
                    Company = (from em in db.hr_Employees join com in db.hr_Companies on em.CompanyID equals com.CompanyID where em.UserID.Equals(u.UserID) select com.Name).FirstOrDefault(),
                    Dept = (from em in db.hr_Employees join dept in db.hr_Depts on em.DeptID equals dept.DeptID where em.UserID.Equals(u.UserID) select dept.Name.ToString()).FirstOrDefault(),
                    Job = (from em in db.hr_Employees join job in db.hr_Jobs on em.JobID equals job.JobID where em.UserID.Equals(u.UserID) select job.Name.ToString()).FirstOrDefault(),
                    IsValid = u.IsValid
                }).ToList());
            }
        }
示例#11
0
 public static List <RoleModel> GetRoles()
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.Roles.Select(r => new RoleModel
         {
             RoleID = r.RoleID,
             Name = r.Name,
             Description = r.Description
         }).ToList());
     }
 }
示例#12
0
        public static int MessagesCount()//消息总数
        {
            string id = SysService.GetCurrentUser().UserID;

            using (var db = new SysContext()) {
                db.Database.Connection.Open();
                var cmd = db.Database.Connection.CreateCommand();
                cmd.CommandText = "select isnull(Counts,0) from (select sum(Count)as Counts FROM [dbo].[hr_fl_MessageRemind]('1'," + "'" + id + "'" + "))a";
                var a  = cmd.ExecuteScalar();
                int mc = System.Int32.Parse(a.ToString());
                return(mc);
            }
        }
示例#13
0
 public static RoleModel GetRole(string roleID)
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.Roles.Where(r => r.RoleID.Equals(roleID, StringComparison.OrdinalIgnoreCase))
                .Select(r => new RoleModel
         {
             RoleID = r.RoleID,
             Name = r.Name,
             Description = r.Description
         }).FirstOrDefault());
     }
 }
示例#14
0
 public static void UpdateRole(string roleID, string name, string description)
 {
     using (var db = SysContext.GetCurrent())
     {
         var oldItem = db.Roles.FirstOrDefault(r => r.RoleID.Equals(roleID, StringComparison.OrdinalIgnoreCase));
         if (oldItem == null)
         {
             throw new Exception("角色不存在");
         }
         oldItem.Name        = name;
         oldItem.Description = description;
         oldItem.ResetUpdated();
         db.SaveChanges();
     }
 }
示例#15
0
 public static void ResetPassword(string userID)
 {
     lock (_UserLock)
     {
         using (var db = SysContext.GetCurrent())
         {
             var oldUser = db.Users.FirstOrDefault(u => u.UserID.Equals(userID));
             if (oldUser != null)
             {
                 oldUser.Password = Sys.SystemConsts.DefaultPassword.GetMd5_32().ToString();
                 oldUser.ResetUpdated();
                 db.SaveChanges();
             }
         }
     }
 }
示例#16
0
 public static void DeleteUser(string userID)
 {
     lock (_UserLock)
     {
         using (var db = SysContext.GetCurrent())
         {
             var oldUser = db.Users.FirstOrDefault(u => u.UserID.Equals(userID));
             if (oldUser != null)
             {
                 oldUser.IsValid = false;
                 oldUser.ResetUpdated();
                 db.SaveChanges();
             }
         }
     }
 }
示例#17
0
 public static void DeleteUsers(string userKeys)
 {
     lock (_UserLock)
     {
         using (var db = SysContext.GetCurrent())
         {
             var userIDs  = userKeys.Split(',');
             var oldUsers = db.Users.Where(u => userIDs.Contains(u.UserID));
             foreach (var oldUser in oldUsers)
             {
                 oldUser.IsValid = false;
                 oldUser.ResetUpdated();
             }
             db.SaveChanges();
         }
     }
 }
示例#18
0
 public static bool EmailReset(string uid)//邮件链接重置密码
 {
     lock (_UserLock)
     {
         using (var db = SysContext.GetCurrent())
         {
             var oldUser = db.Users.FirstOrDefault(u => u.UserID.Equals(uid));
             if (oldUser != null)
             {
                 oldUser.Password = Sys.SystemConsts.DefaultPassword.GetMd5_32();
                 oldUser.ResetUpdated();
                 db.SaveChanges();
             }
         }
     }
     return(true);
 }
示例#19
0
 public static void AddLog(string actionName, string url, string description = "", string userName = "")
 {
     using (var db = SysContext.GetCurrent())
     {
         var user   = SysService.GetCurrentUser();
         var newLog = new UserLog
         {
             ActionName  = actionName,
             Url         = url,
             Description = description,
             ClientIP    = HttpContext.Current.Request.GetClientIPAddress(),
             UserName    = user == null ? userName : user.FullName
         };
         newLog.ResetCreated();
         db.UserLogs.Add(newLog);
         db.SaveChanges();
     }
 }
示例#20
0
 public static string EmailId(string email)//根据用户填写的email获取用户id
 {
     using (var db = new SysContext())
     {
         db.Database.Connection.Open();
         var cmd = db.Database.Connection.CreateCommand();
         cmd.CommandText = "select UserID from sys_User where Email ='" + email + "'";
         var u = cmd.ExecuteScalar();
         if (u != null)
         {
             string uid = u.ToString();
             return(uid);
         }
         else
         {
             return(null);
         };
     }
 }
示例#21
0
        public object GetSerialCode(string parameter)
        {
            if (!parameter.IsNullOrEmpty())
            {
                string[] paras = parameter.Trim().Split(',');
                if (paras.Length >= 3)
                {
                    var category = paras[0];
                    var prefix   = GetPrefix(paras[1]);
                    var length   = Convert.ToInt32(paras[2]);

                    using (var db = SysContext.GetCurrent())
                    {
                        return(db.GetNextSerialCode(category, prefix, length));
                    }
                }
            }

            return("");
        }
示例#22
0
 public static IEnumerable <RolePageModel> GetRolePages(string roleID)
 {
     using (var db = SysContext.GetCurrent())
     {
         return(db.RolePages.Where(w => w.RoleID.Equals(roleID, StringComparison.OrdinalIgnoreCase)).Select(w => new RolePageModel
         {
             RoleID = roleID,
             PageID = w.PageID,
             DataFilter = w.DataFilter,
             ActionValue = w.ActionValue
         }).ToList());;
         //return count.Select(w => new RolePageModel
         //{
         //    RoleID=roleID,
         //    PageID=w.PageID,
         //    DataFilter=w.DataFilter,
         //    ActionValue=w.ActionValue
         //}).ToList();
         //RolePage rolepage = list;
     }
 }
示例#23
0
 public static bool ChangePassword(string oldpassword, string password)
 {
     using (var db = SysContext.GetCurrent())
     {
         string id      = SysService.GetCurrentUser().UserID;
         var    oldUser = db.Users.FirstOrDefault(u => u.UserID.Equals(id));
         var    op      = oldpassword.GetMd5_32();
         var    np      = password.GetMd5_32();
         if (oldUser != null && oldUser.Password == op)
         {
             oldUser.Password = np;
             oldUser.ResetUpdated();
             db.SaveChanges();
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }
示例#24
0
 public static List <RoleModel> GetRoles(string searchName, string description)
 {
     using (var db = SysContext.GetCurrent())
     {
         var user = SysService.GetCurrentUser();
         if (user.UserID == "U00001")
         {
             return(GetRoles());
         }
         else
         {
             return((from r in db.Roles join ur in db.UserRoles on r.RoleID equals ur.RoleID where ur.UserID.Equals(user.UserID) select r)
                    .Select(r => new RoleModel
             {
                 RoleID = r.RoleID,
                 Name = r.Name,
                 Description = r.Description
             }).ToList());
         }
     }
 }
示例#25
0
 public static UserModel GetUserModel(string userIDorName)
 {
     using (var db = SysContext.GetCurrent())
     {
         var query = db.Users.Where(u => u.UserID.Equals(userIDorName) || u.UserName.Equals(userIDorName, StringComparison.OrdinalIgnoreCase));
         //    var user = db.Users.FirstOrDefault(u => (u.UserID.Equals(userIDorName)
         //       || u.UserName.Equals(userIDorName, StringComparison.OrdinalIgnoreCase)));
         var user = query.Select((u) => new UserModel
         {
             UserID   = u.UserID,
             UserName = u.UserName,
             FullName = u.FullName,
             Email    = u.Email,
             IsValid  = u.IsValid
         }).ToList().FirstOrDefault();
         if (userIDorName.IndexOf("U") != -1)
         {
             user.Roles = (from r in db.Roles join s in db.UserRoles on r.RoleID equals s.RoleID where s.UserID.Equals(userIDorName) select r.Name).ToArray();
         }
         return(user);
     }
 }
示例#26
0
        public static UserModel CreateUser(string userName, string email, string fullName, string password)
        {
            lock (_UserLock)
            {
                using (var db = SysContext.GetCurrent())
                {
                    var oldUser = db.Users.FirstOrDefault(u => u.IsValid &&
                                                          (u.UserName.Equals(userName, StringComparison.OrdinalIgnoreCase) ||
                                                           u.Email.Equals(email, StringComparison.OrdinalIgnoreCase)));

                    if (oldUser != null)
                    {
                        throw new Exception("重复的用户名或邮件");
                    }
                    var userID = db.GetNextUserID();

                    User newUser = new User
                    {
                        UserID   = userID,
                        Email    = email,
                        UserName = userName,
                        FullName = fullName,
                        IsValid  = true,
                        Password = password.GetMd5_32()
                    };
                    newUser.ResetCreated();
                    db.Users.Add(newUser);
                    db.SaveChanges();
                    return(new UserModel
                    {
                        UserID = newUser.UserID,
                        UserName = newUser.UserName,
                        Email = newUser.Email,
                        IsValid = newUser.IsValid,
                        FullName = newUser.FullName
                    });
                }
            }
        }
示例#27
0
        public static UserModel UpdateUser(UserModel user)
        {
            lock (_UserLock)
            {
                using (var db = SysContext.GetCurrent())
                {
                    var oldUser = db.Users.FirstOrDefault(u => u.UserID.Equals(user.UserID));

                    if (oldUser == null)
                    {
                        throw new Exception("用户不存在");
                    }

                    oldUser.UserName = user.UserName;
                    oldUser.FullName = user.FullName;
                    oldUser.Email    = user.Email;
                    oldUser.ResetUpdated();
                    db.SaveChanges();
                    return(user);
                }
            }
        }
示例#28
0
        public static string GetNextSerialCode(this SysContext db, string typeCode, string prefix, int fixedLength)
        {
            lock (_CodeLock)
            {
                string code = string.Empty;

                var codeItem = db.SerialCodes.FirstOrDefault((s) => s.CodeType == typeCode && s.Prefix == prefix);

                int index = 0;
                if (codeItem == null)
                {
                    //创建
                    SerialCode newItem = new SerialCode
                    {
                        CodeType    = typeCode,
                        Prefix      = prefix,
                        NextIndex   = 2,
                        FixedLength = fixedLength
                    };
                    newItem.ResetCreated();
                    db.SerialCodes.Add(newItem);
                    index = 1;
                }
                else
                {
                    index = codeItem.NextIndex;
                    codeItem.NextIndex += 1;
                    codeItem.ResetUpdated();
                }
                db.SaveChanges();

                int nIndex    = index.ToString().Length;
                int zeroCount = fixedLength - nIndex - prefix.Length;
                return(prefix + (zeroCount > 0 ? ZeroStrings.Substring(0, zeroCount) : string.Empty) + index.ToString());
            }
        }
        public ActionResult ImportDept(FormCollection form)
        {
            HttpRequest        request     = System.Web.HttpContext.Current.Request;
            HttpFileCollection FileCollect = request.Files;
            DataSet            ds          = new DataSet();

            StringBuilder skipIndex  = new StringBuilder();
            StringBuilder rightIndex = new StringBuilder();
            StringBuilder errorIndex = new StringBuilder();
            ResultData    res        = new ResultData();

            if (FileCollect.Count > 0)
            {
                foreach (string str in FileCollect)
                {
                    ds = ReadExcel(str, ds, FileCollect);
                    #region 判断excel表中的数据是否存在
                    string[] cols = new string[] { "事业部", "公司", "部门", "子部门", "负责人", "排序", "备注" };
                    for (int j = 0; j < cols.Length; j++)
                    {
                        if (!ds.Tables[0].Columns.Contains(cols[j]))
                        {
                            res.ErrorMessage = cols[j] + "列不存在!";
                            res.HasError     = false;
                            return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
                        }
                    }
                    #endregion
                    int count = ds.Tables[0].Rows.Count;
                    using (var db = new SysContext())
                    {
                        for (int i = 0; i < count; i++)
                        {
                            #region 预处理
                            string buname, companyname, managerName, deptName, parentName, managerID, parentID, deptid, companyid;
                            int    sort = i + 1;
                            buname      = ds.Tables[0].Rows[i]["事业部"].ToString().Trim();
                            companyname = ds.Tables[0].Rows[i]["公司"].ToString().Trim();
                            managerName = ds.Tables[0].Rows[i]["负责人"].ToString().Trim();
                            #region 获取负责人id
                            using (var dbe = new Panasia.Core.Sys.SysContext())
                            {
                                var manager = (from ma in dbe.hr_Employees where ma.Name.Equals(managerName) && ma.IsActive select ma.EmployeeID.ToString()).ToList();
                                managerID = manager.Count > 0 ? manager[0] : "";
                            }
                            #endregion

                            var company = (from com in db.hr_Companies where com.Name.Equals(companyname) && com.IsActive select com.CompanyID.ToString()).ToList();
                            var buid    = (from bu in db.hr_BUs where bu.Name.Equals(buname) && bu.IsActive select bu.BUID.ToString()).ToList();
                            #endregion
                            if (company.Count == 0)
                            {
                                res.ErrorMessage = companyname + "不存在!";
                                res.HasError     = false;
                                return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
                            }
                            else
                            {
                                #region 判断部门存在则跳过
                                companyid = company[0];
                                var departments = new List <string>();
                                if (ds.Tables[0].Rows[i]["子部门"].ToString().Trim() == "")
                                {
                                    deptName    = ds.Tables[0].Rows[i]["部门"].ToString().Trim();
                                    departments = (from dept in db.hr_Depts where dept.Name.Equals(deptName) && dept.CompanyID.Equals(companyid) && dept.IsActive select dept.DeptID.ToString()).ToList();
                                }
                                else
                                {
                                    deptName   = ds.Tables[0].Rows[i]["子部门"].ToString().Trim();
                                    parentName = ds.Tables[0].Rows[i]["部门"].ToString().Trim();
                                    var parentid = (from dept1 in db.hr_Depts where dept1.Name.Equals(parentName) && dept1.IsActive select dept1.ParentID.ToString()).ToList().FirstOrDefault();
                                    departments = (from dept in db.hr_Depts where dept.Name.Equals(deptName) && dept.ParentID.Equals(parentid) && dept.IsActive select dept.DeptID).ToList();
                                }


                                if (departments.Count > 0)
                                {
                                    skipIndex.Append((i + 1).ToString() + ",");
                                }
                                #endregion
                                else
                                {
                                    #region 获取部门ID
                                    try
                                    {
                                        db.Database.Connection.Open();
                                        var cmd = db.Database.Connection.CreateCommand();
                                        cmd.CommandText = "declare @demo varchar(max) exec dbo.sp_CreateSerialCode 'Depart','D',6,@demo output select @demo";
                                        deptid          = cmd.ExecuteScalar().ToString();
                                        db.Database.Connection.Close();
                                    }
                                    catch (Exception ex)
                                    {
                                        res.ErrorMessage = "数据库操作出错";
                                        res.HasError     = false;
                                        return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
                                    }

                                    #endregion
                                    if (ds.Tables[0].Rows[i]["子部门"].ToString().Trim() == "")
                                    {
                                        #region 新建没有父节点的部门
                                        try
                                        {
                                            hr_Department department = new hr_Department
                                            {
                                                DeptID      = deptid,
                                                Name        = ds.Tables[0].Rows[i]["部门"].ToString().Trim(),
                                                ManagerID   = managerID,
                                                ParentID    = "",
                                                CompanyID   = company[0],
                                                BUID        = buid.Count > 0?buid[0]:"",
                                                Description = ds.Tables[0].Rows[i]["备注"].ToString().Trim(),
                                                IsActive    = true,
                                                SortID      = sort
                                            };
                                            department.ResetCreated();
                                            db.hr_Depts.Add(department);
                                            db.SaveChanges();
                                            rightIndex.Append((i + 1).ToString() + ',');
                                        }
                                        catch (Exception ex)
                                        {
                                            errorIndex.Append((i + 1).ToString() + ',');
                                            res.ErrorMessage = skipIndex + ":" + rightIndex + ":" + errorIndex;
                                            res.HasError     = true;
                                            return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
                                        }
                                        #endregion
                                    }
                                    else
                                    {
                                        #region 新建有父节点的部门
                                        try
                                        {
                                            deptName = ds.Tables[0].Rows[i]["部门"].ToString().Trim();
                                            var           parentid   = (from dept in db.hr_Depts where dept.Name.Equals(deptName) && dept.IsActive && dept.CompanyID.Equals(companyid) select dept.DeptID.ToString()).ToList();
                                            hr_Department department = new hr_Department
                                            {
                                                DeptID      = deptid,
                                                Name        = ds.Tables[0].Rows[i]["子部门"].ToString().Trim(),
                                                ManagerID   = managerID,
                                                ParentID    = parentid[0],
                                                CompanyID   = companyid,
                                                BUID        = buid.Count > 0?buid[0]:"",
                                                Description = ds.Tables[0].Rows[i]["备注"].ToString().Trim(),
                                                IsActive    = true,
                                                SortID      = sort
                                            };
                                            department.ResetCreated();
                                            db.hr_Depts.Add(department);
                                            db.SaveChanges();
                                            rightIndex.Append((i + 1).ToString() + ',');
                                        }
                                        catch (Exception ex)
                                        {
                                            errorIndex.Append((i + 1).ToString() + ',');
                                            res.ErrorMessage = skipIndex + ":" + rightIndex + ":" + errorIndex;
                                            res.HasError     = true;
                                            return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
                                        }
                                        #endregion
                                    }
                                }
                            }
                        }
                    }
                    res.ErrorMessage = skipIndex + ":" + rightIndex + ":" + errorIndex;
                    res.HasError     = true;
                    return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(res, "text/html;charset=utf-8", JsonRequestBehavior.AllowGet));
        }
示例#30
0
        public static void UpdateRolePages(string roleID, IEnumerable <RolePage> items)
        {
            using (var db = SysContext.GetCurrent())
            {
                var oldItems = db.RolePages.Where(w => w.RoleID.Equals(roleID)).ToList();

                var adds    = items.Where(w => oldItems.FirstOrDefault(t => t.PageID.Equals(w.PageID)) == null).ToList();
                var removes = oldItems.Where(w => items.FirstOrDefault(t => t.PageID.Equals(w.PageID)) == null).ToList();
                var updates = oldItems.Where(w => items.FirstOrDefault(t => t.PageID.Equals(w.PageID)) != null).ToList();

                foreach (var t in removes)
                {
                    db.RolePages.Remove(t);
                }

                foreach (var t in updates)
                {
                    var newItem    = items.FirstOrDefault(w => t.PageID.Equals(w.PageID));
                    var dataFilter = newItem.DataFilter;
                    if (newItem.DataFilter == null)
                    {
                        dataFilter = "";
                    }
                    if (newItem == null)
                    {
                        continue;
                    }
                    t.DataFilter  = dataFilter;
                    t.ActionValue = newItem.ActionValue;
                    t.ResetUpdated();
                }

                foreach (var t in adds)
                {
                    var dataFilter = t.DataFilter;
                    if (t.DataFilter == null)
                    {
                        dataFilter = "";
                    }
                    var newItem = new RolePage
                    {
                        RoleID      = roleID,
                        PageID      = t.PageID,
                        ActionValue = t.ActionValue,
                        DataFilter  = dataFilter
                    };
                    newItem.ResetCreated();
                    db.RolePages.Add(newItem);
                }

                //如果缓存了本角色相关的用户,则重置缓存
                var users = db.UserRoles.Where(r => r.RoleID.Equals(roleID)).Select(r => r.UserID).ToArray();
                if (users.Length > 0)
                {
                    lock (_UserPages)
                    {
                        users.ForEach(u =>
                        {
                            _UserPages.Remove(u);
                        });
                    }
                }

                db.SaveChanges();
            }
        }