Example #1
0
        protected override int ExecuteWorkImplementation()
        {
            var client = m_communicationProvider.GetAuthRegistrationApiClient();

            var authUser = new Ridics.Authentication.DataContracts.User.CreateUserContract
            {
                Password = m_data.NewPassword,
                UserName = m_data.UserName,
                User     = new UserContractBase
                {
                    FirstName   = m_data.FirstName,
                    LastName    = m_data.LastName,
                    Email       = m_data.Email,
                    PhoneNumber = null
                }
            };

            var user = client.CreateUserAsync(authUser).GetAwaiter().GetResult();

            var now = DateTime.UtcNow;

            var dbUser = new User
            {
                ExternalId     = user.Id,
                CreateTime     = now,
                ExtUsername    = user.UserName,
                ExtFirstName   = user.FirstName,
                ExtLastName    = user.LastName,
                Groups         = null,
                FavoriteLabels = null,
            };

            var singleUserGroupSubwork = new SingleUserGroupSubwork(m_userRepository, m_codeGenerator);
            var singleUserGroup        = new SingleUserGroup
            {
                Name       = singleUserGroupSubwork.GetUniqueName(),
                CreateTime = now,
                LastChange = now,
                User       = dbUser,
                Users      = new List <User> {
                    dbUser
                },
                Permissions = null,
            };

            dbUser.Groups = new List <UserGroup> {
                singleUserGroup
            };
            // RoleUserGroups are assigned on every login


            var userFavoriteLabelSubwork = new UserFavoriteLabelSubwork(m_userRepository);
            var defaultFavoriteLabel     = userFavoriteLabelSubwork.GetNewDefaultFavoriteLabel(dbUser);

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


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

            return(userId);
        }
Example #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);
        }