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); }