Example #1
0
        public GroupCollection SaveGroupCollection(GroupCollection groupCollection)
        {
            using (var context = new Data.CoreContext()) {
                GroupCollection oldGroupCollection = GetGroupCollection(groupCollection.GroupCollectionUId);

                List <GroupCollection_Group> removedGroups = new List <GroupCollection_Group>();
                List <GroupCollection_Group> addedGroups   = groupCollection.CollectionGroups.ToList();

                if (oldGroupCollection == null)
                {
                    context.GroupCollections.Add(groupCollection);
                }
                else
                {
                    removedGroups = oldGroupCollection.CollectionGroups.Where(o => !groupCollection.CollectionGroups.Any(u => u.UserGroupUId == o.UserGroupUId)).ToList();
                    addedGroups   = groupCollection.CollectionGroups.Where(u => !oldGroupCollection.CollectionGroups.Any(o => o.UserGroupUId == u.UserGroupUId)).ToList();

                    context.GroupCollections.Attach(oldGroupCollection);
                    context.Entry <GroupCollection>(oldGroupCollection).CurrentValues.SetValues(groupCollection);
                }

                foreach (GroupCollection_Group m in removedGroups)
                {
                    context.GroupCollection_Groups.Remove(m);
                }

                foreach (GroupCollection_Group m in addedGroups)
                {
                    m.GroupCollectionUId = groupCollection.GroupCollectionUId;
                    context.GroupCollection_Groups.Add(m);
                }

                context.SaveChanges();

                return(groupCollection);
            }
        }
Example #2
0
        public User SaveUser(User user)
        {
            using (var context = new Data.CoreContext()) {
                CheckUniqueLoginNT(user);

                // gets the old version of user
                User oldUser = GetUser(user.Email);

                List <GroupMembership> removedGroups = new List <GroupMembership>();
                List <GroupMembership> addedGroups   = user.Memberships.ToList();

                List <GroupCollectionMembership> removedGroupCollection = new List <GroupCollectionMembership>();
                List <GroupCollectionMembership> addedGroupCollection   = user.GroupCollectionMemberships.ToList();

                if (user.Password != null)
                {
                    user.Password.Password = Crypt(user.Password.Password);
                    user.Password.Email    = user.Email;
                }

                if (String.IsNullOrWhiteSpace(user.LoginNT))
                {
                    user.LoginNT = null;
                }

                user.LoginErrorsCount = 0;

                if (oldUser != null)
                {
                    //Groups
                    removedGroups = oldUser.Memberships.Where(o => !user.Memberships.Any(u => u.UserGroupUId == o.UserGroupUId)).ToList();
                    addedGroups   = user.Memberships.Where(u => !oldUser.Memberships.Any(o => o.UserGroupUId == u.UserGroupUId)).ToList();

                    //GroupsCollection
                    removedGroupCollection = oldUser.GroupCollectionMemberships.Where(o => !user.GroupCollectionMemberships.Any(u => u.GroupCollectionUId == o.GroupCollectionUId)).ToList();
                    addedGroupCollection   = user.GroupCollectionMemberships.Where(u => !oldUser.GroupCollectionMemberships.Any(o => o.GroupCollectionUId == u.GroupCollectionUId)).ToList();

                    context.Users.Attach(oldUser);
                    context.Entry <User>(oldUser).CurrentValues.SetValues(user);

                    // if the password was changed
                    if (oldUser.Password != null && user.Password != null)
                    {
                        oldUser.Password.Password = user.Password.Password;
                    }

                    // ig it has no password before, and now it was added
                    if (oldUser.Password == null && user.Password != null)
                    {
                        context.UserPasswords.Add(user.Password);
                    }
                }
                else
                {
                    context.Users.Add(user);
                }

                foreach (GroupMembership m in removedGroups)
                {
                    context.GroupMemberships.Remove(m);
                }

                foreach (GroupMembership m in addedGroups)
                {
                    m.Email = user.Email;
                    context.GroupMemberships.Add(m);
                }

                foreach (GroupCollectionMembership m in removedGroupCollection)
                {
                    context.GroupCollectionMemberships.Remove(m);
                }

                foreach (GroupCollectionMembership m in addedGroupCollection)
                {
                    m.Email = user.Email;
                    context.GroupCollectionMemberships.Add(m);
                }


                context.SaveChanges();
            }
            return(user);
        }