Пример #1
0
    /// <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", CMSContext.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 = "*****@*****.**";
            newInvitation.InvitedByUserID     = CMSContext.CurrentUser.UserID;
            newInvitation.InvitationCreated   = DateTime.Now;
            newInvitation.InvitationValidTo   = DateTime.Now.AddDays(1);

            // Save object
            InvitationInfoProvider.SetInvitationInfo(newInvitation);

            return(true);
        }

        return(false);
    }
    /// <summary>
    /// Creates invitation for specified user.
    /// </summary>
    /// <param name="groupInfo">Inviting group</param>
    /// <param name="invitedUser">User info</param>
    private InvitationInfo InviteUser(GroupInfo groupInfo, UserInfo invitedUser)
    {
        // Check whether group exists
        if (groupInfo == null)
        {
            return(null);
        }

        int userId        = (invitedUser != null) ? invitedUser.UserID : 0;
        int currentUserId = MembershipContext.AuthenticatedUser.UserID;

        // User cannot invite herself
        if (userId == currentUserId)
        {
            return(null);
        }

        // Check whether user is in group or is invited
        if ((!GroupMemberInfoProvider.IsMemberOfGroup(userId, Group.GroupID) && !InvitationInfoProvider.InvitationExists(userId, Group.GroupID)) || radNewUser.Checked)
        {
            // Create new info object
            var invitation = new InvitationInfo
            {
                InvitationComment      = txtComment.Text,
                InvitationCreated      = DateTime.Now,
                InvitationGroupID      = GroupID,
                InvitationGUID         = new Guid(),
                InvitationLastModified = DateTime.Now,
                InvitedByUserID        = currentUserId
            };

            // Create 'Valid to' value if set in settings
            var validTo = SettingsKeyInfoProvider.GetIntValue(SiteContext.CurrentSiteName + ".CMSInvitationValidity");
            if (validTo > 0)
            {
                invitation.InvitationValidTo = DateTime.Now.AddDays(validTo);
            }

            if (radSiteMember.Checked)
            {
                invitation.InvitedUserID = userId;
            }
            else
            {
                invitation.InvitationUserEmail = txtEmail.Text;
            }
            InvitationInfoProvider.SetInvitationInfo(invitation);
            return(invitation);
        }
        return(null);
    }