public void MoveMenuItems(short mode, int menuId, string roleId) { var ids = roleId.Split(',').Select(o => int.Parse(o)).ToArray(); var roleDatas = RoleDataRepository.GetQuery(o => ids.Contains(o.RoleId)).ToList(); var obj = roleDatas.FirstOrDefault(o => o.RoleId == ids[0] && o.MenuId == menuId); var list = roleDatas.Where(o => o.RoleId == ids[0] && o.PMenuId == obj.PMenuId).OrderBy(o => o.SortOrder).ToList(); switch (mode) { case 2: //下移 var obj1 = list.LastOrDefault(); if (obj.Id != obj1.Id) { Entity.SysRoleData next = null; for (var i = 0; i < list.Count; i++) { if (obj.Id == list[i].Id) { next = list[i + 1]; break; } } if (next != null) { var sort = obj.SortOrder; roleDatas.Where(o => o.MenuId == obj.MenuId).Each(o => o.SortOrder = next.SortOrder); roleDatas.Where(o => o.MenuId == next.MenuId).Each(o => o.SortOrder = sort); RoleRepository.SaveChanges(); } } break; default: //上移 var obj2 = list.FirstOrDefault(); if (obj.Id != obj2.Id) { Entity.SysRoleData prev = null; for (var i = 0; i < list.Count; i++) { if (obj.Id == list[i].Id) { prev = list[i - 1]; break; } } if (prev != null) { var sort = obj.SortOrder; roleDatas.Where(o => o.MenuId == obj.MenuId).Each(o => o.SortOrder = prev.SortOrder); roleDatas.Where(o => o.MenuId == prev.MenuId).Each(o => o.SortOrder = sort); RoleRepository.SaveChanges(); } } break; } }
public void MoveMenuItem(short mode, int menuId, int roleId) { var role = RoleRepository.GetQuery(o => o.RoleId == roleId).Include(o => o.SysRoleDatas).FirstOrDefault(); var obj = role.SysRoleDatas.FirstOrDefault(o => o.MenuId == menuId); var list = role.SysRoleDatas.Where(o => o.PMenuId == obj.PMenuId).OrderBy(o => o.SortOrder).ToList(); switch (mode) { case 2: //下移 var obj1 = list.LastOrDefault(); if (obj.Id != obj1.Id) { Entity.SysRoleData next = null; for (var i = 0; i < list.Count; i++) { if (obj.Id == list[i].Id) { next = list[i + 1]; break; } } if (next != null) { var sort = obj.SortOrder; obj.SortOrder = next.SortOrder; next.SortOrder = sort; RoleRepository.SaveChanges(); } } break; default: //上移 var obj2 = list.FirstOrDefault(); if (obj.Id != obj2.Id) { Entity.SysRoleData prev = null; for (var i = 0; i < list.Count; i++) { if (obj.Id == list[i].Id) { prev = list[i - 1]; break; } } if (prev != null) { var sort = obj.SortOrder; obj.SortOrder = prev.SortOrder; prev.SortOrder = sort; RoleRepository.SaveChanges(); } } break; } }