public void AddPortalToGroup(PortalInfo portal, PortalGroupInfo portalGroup, UserCopiedCallback callback)
        {
            Requires.NotNull("portal", portal);
            Requires.PropertyNotNegative("portal", "PortalId", portal.PortalID);
            Requires.NotNull("portalGroup", portalGroup);
            Requires.PropertyNotNegative("portalGroup", "PortalGroupId", portalGroup.PortalGroupId);
            Requires.PropertyNotNegative("portalGroup", "MasterPortalId", portalGroup.MasterPortalId);

            OnAddPortalToGroupStart(callback, portal);

            var users       = UserController.GetUsers(portal.PortalID);
            var masterUsers = UserController.GetUsers(portalGroup.MasterPortalId);
            var totalUsers  = users.Count + masterUsers.Count;
            var userNo      = 0;

            if (users.Count > 0)
            {
                var masterPortal = _portalController.GetPortal(portalGroup.MasterPortalId);

                foreach (UserInfo user in users)
                {
                    userNo += 1;

                    //move user to master portal
                    UserController.CopyUserToPortal(user, masterPortal, true, true);

                    OnUserAddedToSiteGroup(callback, portal, user, totalUsers, userNo);
                }
            }

            if (masterUsers.Count > 0)
            {
                var autoAssignRoles = TestableRoleController.Instance.GetRoles(portal.PortalID,
                                                                               role =>
                                                                               role.AutoAssignment &&
                                                                               role.Status == RoleStatus.Approved);
                foreach (UserInfo user in masterUsers)
                {
                    userNo += 1;
                    foreach (var autoAssignRole in autoAssignRoles)
                    {
                        var roleController = new RoleController();
                        roleController.AddUserRole(portalGroup.MasterPortalId, user.UserID, autoAssignRole.RoleID,
                                                   Null.NullDate, Null.NullDate);
                    }
                    OnUserAddedToSiteGroup(callback, portal, user, totalUsers, userNo);
                }
            }

            OnAddPortalToGroupFinishing(callback, portal, users.Count);

            RemoveProfileDefinitions(portal);

            //Add portal to group
            portal.PortalGroupID = portalGroup.PortalGroupId;
            _portalController.UpdatePortalInfo(portal);

            OnAddPortalToGroupFinished(callback, portal, portalGroup, users.Count);
        }
Esempio n. 2
0
        public int AddPortalGroup(PortalGroupInfo portalGroup)
        {
            //Argument Contract
            Requires.NotNull("portalGroup", portalGroup);

            portalGroup.PortalGroupId = _dataService.AddPortalGroup(portalGroup, UserController.Instance.GetCurrentUserInfo().UserID);

            //Update portal
            var portal = _portalController.GetPortal(portalGroup.MasterPortalId);

            if (portal != null)
            {
                portal.PortalGroupID = portalGroup.PortalGroupId;
                _portalController.UpdatePortalInfo(portal);
            }

            ClearCache();

            return(portalGroup.PortalGroupId);
        }
Esempio n. 3
0
        public void AddPortalToGroup(PortalInfo portal, PortalGroupInfo portalGroup, UserCopiedCallback callback)
        {
            //Argument Contract
            Requires.NotNull("portal", portal);
            Requires.PropertyNotNegative("portal", "PortalId", portal.PortalID);
            Requires.NotNull("portalGroup", portalGroup);
            Requires.PropertyNotNegative("portalGroup", "PortalGroupId", portalGroup.PortalGroupId);
            Requires.PropertyNotNegative("portalGroup", "MasterPortalId", portalGroup.MasterPortalId);

            var masterPortal = _portalController.GetPortal(portalGroup.MasterPortalId);

            var users       = UserController.GetUsers(portal.PortalID);
            var masterUsers = UserController.GetUsers(masterPortal.PortalID);
            var userNo      = 0;

            foreach (UserInfo user in users)
            {
                userNo += 1;

                //move user to master portal
                UserController.CopyUserToPortal(user, masterPortal, true, true);

                //Callback to update progress bar
                var args = new UserCopiedEventArgs
                {
                    TotalUsers = users.Count + masterUsers.Count,
                    UserNo     = userNo,
                    UserName   = user.Username,
                    PortalName = portal.PortalName
                };

                callback(args);
            }

            var roleController = new RoleController();

            //Assign the new portal's roles to master portal users
            foreach (UserInfo user in masterUsers)
            {
                userNo += 1;

                foreach (var role in TestableRoleController.Instance.GetRoles(portal.PortalID, role => role.AutoAssignment && role.Status == RoleStatus.Approved))
                {
                    roleController.AddUserRole(masterPortal.PortalID, user.UserID, role.RoleID, Null.NullDate, Null.NullDate);
                }

                //Callback to update progress bar
                var args = new UserCopiedEventArgs
                {
                    TotalUsers = users.Count + masterUsers.Count,
                    UserNo     = userNo,
                    UserName   = user.Username,
                    PortalName = portal.PortalName
                };

                callback(args);
            }

            //Remove Profile Definitions
            foreach (ProfilePropertyDefinition definition in ProfileController.GetPropertyDefinitionsByPortal(portal.PortalID))
            {
                ProfileController.DeletePropertyDefinition(definition);
            }

            //Add portal to group
            portal.PortalGroupID = portalGroup.PortalGroupId;
            _portalController.UpdatePortalInfo(portal);
        }