internal static UserGroup SaveProperties(UserGroup group) { var entities = QPContext.EFContext; var dal = MapperFacade.UserGroupMapper.GetDalObject(group); dal.LastModifiedBy = QPContext.CurrentUserId; using (new QPConnectionScope()) { dal.Created = Common.GetSqlDate(QPConnectionScope.Current.DbConnection); dal.Modified = dal.Created; } entities.Entry(dal).State = EntityState.Added; if (group.ParentGroup != null) { var parentDal = MapperFacade.UserGroupMapper.GetDalObject(group.ParentGroup); entities.UserGroupSet.Attach(parentDal); var bind = new GroupToGroupBindDAL { ParentGroup = parentDal, ChildGroup = dal }; dal.ParentGroupToGroupBinds.Add(bind); } foreach (var u in MapperFacade.UserMapper.GetDalList(group.Users.ToList())) { entities.UserSet.Attach(u); var bind = new UserUserGroupBindDAL { UserGroup = dal, User = u }; dal.UserGroupBinds.Add(bind); } entities.SaveChanges(); return(MapperFacade.UserGroupMapper.GetBizObject(dal)); }
internal static UserGroup UpdateProperties(UserGroup group) { var entities = QPContext.EFContext; var dal = MapperFacade.UserGroupMapper.GetDalObject(group); dal.LastModifiedBy = QPContext.CurrentUserId; using (new QPConnectionScope()) { dal.Modified = Common.GetSqlDate(QPConnectionScope.Current.DbConnection); } entities.Entry(dal).State = EntityState.Modified; var dalDb = entities .UserGroupSet .Include(x => x.ParentGroupToGroupBinds).ThenInclude(y => y.ParentGroup) .Include(x => x.UserGroupBinds).ThenInclude(y => y.User) .Single(g => g.Id == dal.Id); foreach (var pg in dalDb.ParentGroupToGroupBinds.ToArray()) { if (group.ParentGroup == null || pg.ParentGroup.Id != group.ParentGroup.Id) { dalDb.ParentGroupToGroupBinds.Remove(pg); } } if (group.ParentGroup != null) { if (dalDb.ParentGroups.All(g => g.Id != group.ParentGroup.Id)) { var dalParent = entities.UserGroupSet.Single(g => g.Id == group.ParentGroup.Id); entities.UserGroupSet.Attach(dalParent); var bind = new GroupToGroupBindDAL { ParentGroup = dalParent, ChildGroup = dal }; dal.ParentGroupToGroupBinds.Add(bind); } } var inmemoryUserIDs = new HashSet <decimal>(group.Users.Select(u => Converter.ToDecimal(u.Id))); var indbUserIDs = new HashSet <decimal>(dalDb.Users.Select(u => u.Id)); foreach (var u in dalDb.UserGroupBinds.ToArray()) { if (!inmemoryUserIDs.Contains(u.User.Id)) { dalDb.UserGroupBinds.Remove(u); } } foreach (var u in MapperFacade.UserMapper.GetDalList(group.Users.ToList())) { if (!indbUserIDs.Contains(u.Id)) { var bind = new UserUserGroupBindDAL { UserId = u.Id, UserGroupId = group.Id }; dal.UserGroupBinds.Add(bind); } } entities.SaveChanges(); return(MapperFacade.UserGroupMapper.GetBizObject(dal)); }
internal static User SaveProperties(User user) { var entities = QPContext.EFContext; var dal = MapperFacade.UserMapper.GetDalObject(user); dal.LastModifiedBy = QPContext.CurrentUserId; using (new QPConnectionScope()) { dal.Created = Common.GetSqlDate(QPConnectionScope.Current.DbConnection); dal.Modified = dal.Created; dal.PasswordModified = dal.Created; } var everyoneGroups = UserGroupRepository.GetEveryoneGroups(); foreach (var everyoneGroup in everyoneGroups) { if (dal.UserGroupBinds.All(x => x.UserGroupId != everyoneGroup.Id)) { var newBind = new UserUserGroupBindDAL(); newBind.UserGroupId = everyoneGroup.Id; dal.UserGroupBinds.Add(newBind); entities.Add(newBind); } } entities.Entry(dal).State = EntityState.Added; if (QPContext.DatabaseType == DatabaseType.SqlServer) { ChangeInsertBindTriggerState(false); } entities.SaveChanges(); // Save Groups foreach (var s in MapperFacade.UserGroupMapper.GetDalList(user.Groups.ToList())) { entities.UserGroupSet.Attach(s); var userGroupBind = new UserUserGroupBindDAL { User = dal, UserGroup = s }; dal.UserGroupBinds.Add(userGroupBind); } // User Default Filters foreach (var f in MapUserDefaultFilter(user, dal)) { entities.Entry(f).State = EntityState.Added; } entities.SaveChanges(); if (!string.IsNullOrEmpty(user.Password)) { UpdatePassword(user.Id, user.Password); } if (QPContext.DatabaseType == DatabaseType.SqlServer) { ChangeInsertBindTriggerState(true); } var updated = MapperFacade.UserMapper.GetBizObject(dal); return(updated); }
private static User UpdateUser(User user, bool profileOnly = false) { var entities = QPContext.EFContext; var dal = MapperFacade.UserMapper.GetDalObject(user); dal.LastModifiedBy = QPContext.CurrentUserId; using (new QPConnectionScope()) { dal.Modified = Common.GetSqlDate(QPConnectionScope.Current.DbConnection); } entities.Entry(dal).State = EntityState.Modified; if (!profileOnly) { // Save Groups var dalDb = entities.UserSet .Include(x => x.UserGroupBinds).ThenInclude(y => y.UserGroup) .Single(u => u.Id == dal.Id); var inmemoryGroupIDs = new HashSet <decimal>(user.Groups.Select(g => Converter.ToDecimal(g.Id))); var indbGroupIDs = new HashSet <decimal>(dalDb.Groups.Select(g => g.Id)); foreach (var g in dalDb.UserGroupBinds.ToArray()) { if (!inmemoryGroupIDs.Contains(g.UserGroupId) && !g.UserGroup.IsReadOnly && !(g.UserGroup.BuiltIn && user.BuiltIn)) { dalDb.UserGroupBinds.Remove(g); } } foreach (var g in MapperFacade.UserGroupMapper.GetDalList(user.Groups.ToList())) { if (!indbGroupIDs.Contains(g.Id)) { entities.UserGroupSet.Attach(g); var bind = new UserUserGroupBindDAL { User = dal, UserGroup = g }; dal.UserGroupBinds.Add(bind); } } //------------------- } // User Default Filters foreach (var f in entities.UserDefaultFilterSet.Where(r => r.UserId == dal.Id)) { entities.Entry(f).State = EntityState.Deleted; } foreach (var f in MapUserDefaultFilter(user, dal)) { entities.Entry(f).State = EntityState.Added; } //-------------------------- entities.SaveChanges(); if (!string.IsNullOrEmpty(user.Password)) { UpdatePassword(user.Id, user.Password); } var updated = MapperFacade.UserMapper.GetBizObject(dal); return(updated); }