using System; using System.Linq; using Tanshu.Accounts.Entities.Auth; using System.Collections.Generic; namespace Tanshu.Accounts.Repository { public class GroupBI : UnitOfWork { public new IList List() { return _session.QueryOver() .OrderBy(x => x.Name).Asc .List(); } public IList RoleList() { return _session.QueryOver() .OrderBy(x => x.Name).Asc .List(); } public void Update(Group group, IEnumerable selectedRoles) { var roles = new Dictionary(); foreach (var item in RoleList()) { roles.Add(item, selectedRoles.Any(x => x.RoleID == item.RoleID)); } foreach (var item in roles) { var id = item.Key.RoleID; var ug = group.RoleGroups.SingleOrDefault(x => x.Role.RoleID == id); if (item.Value && ug == null) { var rg = new RoleGroup() { Group = group, Role = item.Key }; _session.Save(rg); } else if (!item.Value && ug != null) { group.RoleGroups.Remove(ug); _session.Delete(ug); } } } } }