using CZFW.Framework.Logic; using CZFW.Framework.Model.ViewModel; using CZKJ.GBRS2.Entity; using CZKJ.GBRS2.Interface; using System; using System.Collections.Generic; using System.Text; using System.Linq; using CZFW.Framework.Model.Entity; namespace CZKJ.GBRS2.Logic { public class UserRoleNavMappingLogic : LogicBase,IUserRoleNavMapping { public ResultModel AddNavByRole(int roleId, IList navIds) { var existingIds = Queryable.Where(X=>X.RoleId== roleId).Select(x=>x.NavId).ToList(); var noExistingIds = navIds.Where(x => !existingIds.Contains(x)).ToList(); var roleNavs = new List(); foreach (var item in noExistingIds) { var entity = new RoleMappingEntity() { RoleId= roleId, NavId=item }; roleNavs.Add(entity); } var res = AddEntities(roleNavs); return res; } public IList GetNavigationTreeByRoleId(int roleId) { var list = (from x in Queryable where x.RoleId == roleId join nav in DbContext.Set() on x.NavId equals nav.Id select new NavigationModel() { Id=nav.Id, Icon=nav.Icon, Mark=nav.Mark, Name = nav.Name, Url = nav.Url, ParentMark=nav.ParentMark, Description=nav.Description } ).ToList(); var res = SetTree(list, "0"); return res; } public ResultModel RemoveNavByRole(int roleId,int navId) { return RemoveEntities(x => x.RoleId == roleId && x.NavId == navId); } public IList SetTree(IList list, string parentMark) { var result = new List(); foreach (var item in list) { if (item.Mark != "0" && item.ParentMark == parentMark) { result.Add(item); item.Children = SetTree(list, item.Mark); } } result = result.OrderByDescending(x => x.SortOrder).ToList(); return result; } } }