コード例 #1
0
        protected override IList <RoleUserGroup> ExecuteWorkImplementation()
        {
            var subwork = new UserGroupSubwork(m_userRepository);
            var result  = subwork.UpdateAndGetUserGroups(m_authRoles);

            if (m_userId != null)
            {
                // Update assigned RoleUserGroups for user
                var user          = m_userRepository.GetUserById(m_userId.Value);
                var nonRoleGroups = user.Groups.Where(x => !(x is RoleUserGroup));

                var newUserGroups = new List <UserGroup>();
                newUserGroups.AddRange(nonRoleGroups);
                newUserGroups.AddRange(result);

                user.Groups = newUserGroups;
            }

            return(result);
        }
コード例 #2
0
        protected override int ExecuteWorkImplementation()
        {
            var userFavoriteLabelSubwork = new UserFavoriteLabelSubwork(m_userRepository);

            IList <RoleUserGroup> dbRoleUserGroups = null;

            var now = DateTime.UtcNow;

            if (m_roles != null)
            {
                var userGroupSubwork = new UserGroupSubwork(m_userRepository);
                dbRoleUserGroups = userGroupSubwork.UpdateAndGetUserGroups(m_roles);
            }

            var user = m_userRepository.GetUserByExternalId(m_userExternalId);

            if (user != null)
            {
                // Update user data
                if (m_userInfo.Username != null) // Username is not always returned
                {
                    user.ExtUsername = m_userInfo.Username;
                }
                user.ExtFirstName = m_userInfo.FirstName;
                user.ExtLastName  = m_userInfo.LastName;

                // Update RoleUserGroups
                if (dbRoleUserGroups != null)
                {
                    // User already exists, so only update groups
                    var originalGroups = user.Groups;
                    var nonRoleGroups  = originalGroups.Where(x => !(x is RoleUserGroup));

                    var newGroups = new List <UserGroup>(dbRoleUserGroups);
                    newGroups.AddRange(nonRoleGroups);

                    user.Groups = newGroups;
                }

                // Add SingleUserGroup
                if (user.Groups.OfType <SingleUserGroup>().Any() == false)
                {
                    user.Groups.Add(CreateSingleUserGroupObject(user, now));
                }

                m_userRepository.Update(user);
                userFavoriteLabelSubwork.CreateOrUpdateDefaultFavoriteLabel(user.Id);

                return(user.Id);
            }

            var dbUser = new User
            {
                ExternalId     = m_userExternalId,
                CreateTime     = now,
                Groups         = dbRoleUserGroups?.Cast <UserGroup>().ToList() ?? new List <UserGroup>(),
                ExtUsername    = m_userInfo.Username,
                ExtFirstName   = m_userInfo.FirstName,
                ExtLastName    = m_userInfo.LastName,
                FavoriteLabels = null,
            };

            var newSingleUserGroup = CreateSingleUserGroupObject(dbUser, now);

            dbUser.Groups.Add(newSingleUserGroup);


            var defaultFavoriteLabel = userFavoriteLabelSubwork.GetNewDefaultFavoriteLabel(dbUser);

            dbUser.FavoriteLabels = new List <FavoriteLabel> {
                defaultFavoriteLabel
            };


            var userId = (int)m_userRepository.Create(dbUser);

            return(userId);
        }