HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/wwwroot/CMSAPIExamples/Code/Community/Groups/Default.aspx.cs
using System;
using System.Data;

using CMS.Community;
using CMS.Helpers;
using CMS.LicenseProvider;
using CMS.Base;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.DataEngine;

public partial class CMSAPIExamples_Code_Community_Groups_Default : CMSAPIExamplePage
{
    #region "Initialization"

    protected void Page_Load(object sender, EventArgs e)
    {
        // Check license
        LicenseHelper.CheckFeatureAndRedirect(RequestContext.CurrentDomain, FeatureEnum.Groups);

        // Group member
        apiCreateGroupMember.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateGroupMember);
        apiGetAndUpdateGroupMember.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateGroupMember);
        apiGetAndBulkUpdateGroupMembers.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateGroupMembers);
        apiDeleteGroupMember.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteGroupMember);
        apiCreateInvitation.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateInvitation);

        // Group
        apiCreateGroup.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(CreateGroup);
        apiGetAndUpdateGroup.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndUpdateGroup);
        apiGetAndBulkUpdateGroups.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(GetAndBulkUpdateGroups);
        apiDeleteGroup.RunExample += new CMSAPIExamples_Controls_APIExample.OnRunExample(DeleteGroup);
    }

    #endregion


    #region "Mass actions"

    /// <summary>
    /// Runs all creating and managing examples.
    /// </summary>
    public override void RunAll()
    {
        base.RunAll();

        // Group
        apiCreateGroup.Run();
        apiGetAndUpdateGroup.Run();
        apiGetAndBulkUpdateGroups.Run();

        // Group member
        apiCreateGroupMember.Run();
        apiGetAndUpdateGroupMember.Run();
        apiGetAndBulkUpdateGroupMembers.Run();
        apiCreateInvitation.Run();
    }


    /// <summary>
    /// Runs all cleanup examples.
    /// </summary>
    public override void CleanUpAll()
    {
        base.CleanUpAll();

        // Group member
        apiDeleteGroupMember.Run();

        // Group
        apiDeleteGroup.Run();
    }

    #endregion


    #region "API examples - Group"

    /// <summary>
    /// Creates group. Called when the "Create group" button is pressed.
    /// </summary>
    private bool CreateGroup()
    {
        // Create new group object
        GroupInfo newGroup = new GroupInfo();

        // Set the properties
        newGroup.GroupDisplayName = "My new group";
        newGroup.GroupName = "MyNewGroup";
        newGroup.GroupSiteID = SiteContext.CurrentSiteID;
        newGroup.GroupDescription = "";
        newGroup.GroupApproveMembers = GroupApproveMembersEnum.AnyoneCanJoin;
        newGroup.GroupAccess = SecurityAccessEnum.AllUsers;
        newGroup.GroupApproved = true;
        newGroup.GroupApprovedByUserID = CurrentUser.UserID;
        newGroup.GroupCreatedByUserID = CurrentUser.UserID;
        newGroup.AllowCreate = SecurityAccessEnum.GroupMembers;
        newGroup.AllowDelete = SecurityAccessEnum.GroupMembers;
        newGroup.AllowModify = SecurityAccessEnum.GroupMembers;
        newGroup.GroupNodeGUID = Guid.Empty;

        // Save the group
        GroupInfoProvider.SetGroupInfo(newGroup);

        return true;
    }


    /// <summary>
    /// Gets and updates group. Called when the "Get and update group" button is pressed.
    /// Expects the CreateGroup method to be run first.
    /// </summary>
    private bool GetAndUpdateGroup()
    {
        // Get the group
        GroupInfo updateGroup = GroupInfoProvider.GetGroupInfo("MyNewGroup", SiteContext.CurrentSiteName);
        if (updateGroup != null)
        {
            // Update the properties
            updateGroup.GroupDisplayName = updateGroup.GroupDisplayName.ToLowerCSafe();

            // Save the changes
            GroupInfoProvider.SetGroupInfo(updateGroup);

            return true;
        }

        return false;
    }


    /// <summary>
    /// Gets and bulk updates groups. Called when the "Get and bulk update groups" button is pressed.
    /// Expects the CreateGroup method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateGroups()
    {
        // Prepare the parameters
        string where = "GroupName LIKE N'MyNewGroup%'";

        // Get the data
        DataSet groups = GroupInfoProvider.GetGroups(where, null);
        if (!DataHelper.DataSourceIsEmpty(groups))
        {
            // Loop through the individual items
            foreach (DataRow groupDr in groups.Tables[0].Rows)
            {
                // Create object from DataRow
                GroupInfo modifyGroup = new GroupInfo(groupDr);

                // Update the properties
                modifyGroup.GroupDisplayName = modifyGroup.GroupDisplayName.ToUpper();

                // Save the changes
                GroupInfoProvider.SetGroupInfo(modifyGroup);
            }

            return true;
        }

        return false;
    }


    /// <summary>
    /// Deletes group. Called when the "Delete group" button is pressed.
    /// Expects the CreateGroup method to be run first.
    /// </summary>
    private bool DeleteGroup()
    {
        // Get the group
        GroupInfo deleteGroup = GroupInfoProvider.GetGroupInfo("MyNewGroup", SiteContext.CurrentSiteName);

        // Delete the group
        GroupInfoProvider.DeleteGroupInfo(deleteGroup);

        return (deleteGroup != null);
    }

    #endregion


    #region "API examples - Group member"

    /// <summary>
    /// Creates group member. Called when the "Create member" button is pressed.
    /// </summary>
    private bool CreateGroupMember()
    {
        // Get the group 
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", SiteContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(MembershipContext.AuthenticatedUser.UserName);

            if (user != null)
            {
                // Create new group member object
                GroupMemberInfo newMember = new GroupMemberInfo();

                //Set the properties
                newMember.MemberGroupID = group.GroupID;
                newMember.MemberApprovedByUserID = CurrentUser.UserID;
                newMember.MemberApprovedWhen = DateTime.Now;
                newMember.MemberInvitedByUserID = CurrentUser.UserID;
                newMember.MemberUserID = user.UserID;
                newMember.MemberJoined = DateTime.Now;
                newMember.MemberComment = "New member added by API example.";

                // Save the member
                GroupMemberInfoProvider.SetGroupMemberInfo(newMember);
            }

            return true;
        }

        return false;
    }


    /// <summary>
    /// Gets and updates group member. Called when the "Get and update member" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool GetAndUpdateGroupMember()
    {
        // Get the group 
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", SiteContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(MembershipContext.AuthenticatedUser.UserName);

            if (user != null)
            {
                // Get the group member
                GroupMemberInfo updateMember = GroupMemberInfoProvider.GetGroupMemberInfo(user.UserID, group.GroupID);
                if (updateMember != null)
                {
                    // Update the properties
                    updateMember.MemberComment = updateMember.MemberComment.ToLowerCSafe();

                    // Save the changes
                    GroupMemberInfoProvider.SetGroupMemberInfo(updateMember);

                    return true;
                }
            }
        }

        return false;
    }


    /// <summary>
    /// Gets and bulk updates group members. Called when the "Get and bulk update members" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateGroupMembers()
    {
        // Prepare the parameters
        string where = "MemberUserID =" + MembershipContext.AuthenticatedUser.UserID;

        // Get the data
        DataSet members = GroupMemberInfoProvider.GetGroupMembers(where, null);
        if (!DataHelper.DataSourceIsEmpty(members))
        {
            // Loop through the individual items
            foreach (DataRow memberDr in members.Tables[0].Rows)
            {
                // Create object from DataRow
                GroupMemberInfo modifyMember = new GroupMemberInfo(memberDr);

                // Update the properties
                modifyMember.MemberComment = modifyMember.MemberComment.ToUpper();

                // Save the changes
                GroupMemberInfoProvider.SetGroupMemberInfo(modifyMember);
            }

            return true;
        }

        return false;
    }


    /// <summary>
    /// Deletes group member. Called when the "Delete member" button is pressed.
    /// Expects the CreateGroupMember method to be run first.
    /// </summary>
    private bool DeleteGroupMember()
    {
        // Get the group 
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", SiteContext.CurrentSiteName);

        if (group != null)
        {
            // Get the user
            UserInfo user = UserInfoProvider.GetUserInfo(MembershipContext.AuthenticatedUser.UserName);

            if (user != null)
            {
                // Get the group member
                GroupMemberInfo deleteMember = GroupMemberInfoProvider.GetGroupMemberInfo(user.UserID, group.GroupID);
                if (deleteMember != null)
                {
                    // Save the changes
                    GroupMemberInfoProvider.DeleteGroupMemberInfo(deleteMember);

                    return true;
                }
            }
        }

        return false;
    }


    /// <summary>
    /// Creates new invitation to group. Called when the "Add member to group" button is pressed.
    /// Expects the CreateGroup method to be run first.
    /// </summary>
    private bool CreateInvitation()
    {
        // Get the group 
        GroupInfo group = GroupInfoProvider.GetGroupInfo("MyNewGroup", SiteContext.CurrentSiteName);

        if (group != null)
        {
            // Create new invitation 
            InvitationInfo newInvitation = new InvitationInfo();

            // Set properties
            newInvitation.InvitationComment = "Invitation created by API example.";
            newInvitation.InvitationGroupID = group.GroupID;
            newInvitation.InvitationUserEmail = "admin@localhost.local";
            newInvitation.InvitedByUserID = MembershipContext.AuthenticatedUser.UserID;
            newInvitation.InvitationCreated = DateTime.Now;
            newInvitation.InvitationValidTo = DateTime.Now.AddDays(1);

            // Save object
            InvitationInfoProvider.SetInvitationInfo(newInvitation);

            return true;
        }

        return false;
    }

    #endregion
}