Example #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);
    }
Example #2
0
    private IEnumerator InviteFriend(string userID, string friendID, Result <bool> result)
    {
        Result <StorageAccountInfo> r = new Result <StorageAccountInfo>(this);

        yield return(StartCoroutine(storage.GetAccountByUserID(userID, r)));

        var user = r.Value;

        yield return(StartCoroutine(storage.GetAccountByUserID(friendID, r)));

        var friend = r.Value;

        if (user != null && friend != null)
        {
            Result <StorageInvitationsCollection> res = new Result <StorageInvitationsCollection>(this);
            yield return(StartCoroutine(storage.GetInvitations(friend.userID, res)));

            var invitaitonList = res.Value;
            var invitation     = new InvitationInfo();
            invitation.invitationID = System.Guid.NewGuid().ToString();
            invitation.inviterID    = userID;
            invitation.InviteeID    = friendID;
            invitation.groupName    = "";
            invitaitonList.invites.Add(invitation);
            yield return(StartCoroutine(storage.SetInvitations(friend.userID, invitaitonList, result)));

            yield break;
        }
        result.SetValue(false);
    }
Example #3
0
    /// <summary>
    /// Accepts invitation.
    /// </summary>
    protected void btnResend_OnCommand(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "resend")
        {
            try
            {
                // Get invitation info object
                int            invitationId = ValidationHelper.GetInteger(e.CommandArgument, 0);
                InvitationInfo invitation   = InvitationInfoProvider.GetInvitationInfo(invitationId);
                if (invitation != null)
                {
                    // Send invitation e-mail
                    InvitationInfoProvider.SendInvitationEmail(invitation, CMSContext.CurrentSiteName);
                    lblInfo.Text = ResendSuccess + "<br /><br />";
                }
            }
            catch
            {
                lblInfo.Text     = ResendFailed + "<br /><br />";;
                lblInfo.CssClass = "InvitationErrorLabel";
            }

            lblInfo.Visible = true;
        }
    }
        protected void Page_Load(object sender, EventArgs e)
        {
            String invid = Request["invid"];


            invitationJobStatus.InnerHtml = "<div>Job Status: <strong>" + ScormCloud.InvitationService.GetInvitationStatus(invid) + "</strong></div>";

            InvitationInfo invitationinfo = ScormCloud.InvitationService.GetInvitationInfo(invid, true);

            StringBuilder ct = new StringBuilder();



            ct.AppendLine("<div>Invitation ID: " + invitationinfo.Id + "</div>");
            ct.AppendLine("<div>Invitation Course ID: " + invitationinfo.CourseId + "</div>");
            ct.AppendLine("<div>Invitation is public: " + invitationinfo.Public.ToString() + "</div>");
            ct.AppendLine("<div>Invitation is launchable: " + invitationinfo.AllowLaunch.ToString() + "</div>");
            if (invitationinfo.Public)
            {
                ct.AppendLine("<div>Invitation is open (for new registations): " + invitationinfo.AllowNewRegistrations.ToString() + "</div>");
                ct.AppendLine("<div>Invitation Public URL: " + invitationinfo.Url + "</div>");
            }
            ct.AppendLine("<div style='margin:15px;background-color:#DEDEDE;'>");
            ct.AppendLine("<div>Invitation Subject: " + invitationinfo.Subject + "</div>");
            ct.AppendLine("<div>Invitation Message: " + invitationinfo.Message + "</div>");
            ct.AppendLine("</div>");
            if (invitationinfo.UserInvitations.Length > 0)
            {
                ct.AppendLine("<div><h2>User Invitations</h2>");
                foreach (UserInvitationStatus ui in invitationinfo.UserInvitations)
                {
                    ct.AppendLine("<div style='border-bottom:1px dotted;'>");
                    ct.AppendLine("<div>Recipient Email: <strong>" + ui.Email + "</strong></div>");
                    ct.AppendLine("<div>Recipient Registration Id: " + ui.RegistrationId + "</div>");
                    ct.AppendLine("<div>Recipient Launch Url: " + ui.Url + "</div>");
                    ct.AppendLine("<div>Recipient Started: " + ui.IsStarted.ToString() + "</div>");
                    if (ui.IsStarted)
                    {
                        ct.AppendLine("<div style='margin:15px;background-color:#DEDEDE;'>");
                        ct.AppendLine("<div>Completion: " + ui.RegSummary.Complete + "</div>");
                        ct.AppendLine("<div>Success: " + ui.RegSummary.Success + "</div>");
                        ct.AppendLine("<div>Score: " + ui.RegSummary.Score + "</div>");
                        ct.AppendLine("<div>Total Time: " + ui.RegSummary.TotalTime + "</div>");
                        ct.AppendLine("</div>");
                    }
                    ct.AppendLine("</div>");
                }
                ct.AppendLine("</div>");
            }

            invitationsInfoDiv.InnerHtml = ct.ToString();
        }
    /// <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);
    }
Example #6
0
 public FortInfo()
 {
     ValueDefenitions = new string[0];
     MarketInfos      = new MarketInfo[0];
     Package          = new IapPackage();
     InvitationInfo   = new InvitationInfo();
     Achievement      = new Achievement.Achievement();
     Purchase         = new Purchase();
     GameLevel        = new GameLevel.GameLevel();
     Analytic         = new Analytic();
     Advertisement    = new Advertisement.Advertisement();
     SkinnerBox       = new SkinnerBox.SkinnerBox();
     Language         = new FortLanguage();
     StartupBalance   = new Balance();
 }
 public Invitation(InvitationInfo info)
 {
     Id             = info.Id;
     IsTransferable = info.IsTransferable;
     Date           = info.Date;
     if (info.Sender != null)
     {
         SenderId = info.Sender.Id;
     }
     if (info.Addressee != null)
     {
         AddresseeId = info.Addressee.Id;
     }
     TestId = info.TestId;
 }
Example #8
0
        public void SendInvitation(InvitationInfo info)
        {
            if (user == null)
            {
                throw userAccessException;
            }

            if (info == null)
            {
                throw wrongDataException;
            }

            Test test = db.Tests.FirstOrDefault(t => t.Id == info.TestId);

            if (test == null)
            {
                throw wrongDataException;
            }

            if (test.IsPrivate && test.User.Id != user.Id && test.Invitations.All(i => i.AddresseeId != user.Id && !i.IsTransferable))
            {
                throw userAccessException;
            }

            Invitation invitation = test.Invitations.FirstOrDefault(i => i.SenderId == user.Id && i.AddresseeId == info.Addressee.Id);

            if (invitation != null)
            {
                invitation.IsTransferable = invitation.IsTransferable;
                invitation.Date           = DateTime.Now;
                db.SaveChanges();
                return;
            }

            invitation          = new Invitation(info);
            invitation.Date     = DateTime.Now;
            invitation.SenderId = user.Id;

            db.Invitations.Add(invitation);
            db.SaveChanges();
        }
Example #9
0
        public ActionResult Index(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                ((dynamic)base.ViewBag).NotFound = true;
            }
            InvitationInfo invitationInfo = SurveyProvider.GetInvitationInfo(id);

            if (invitationInfo == null)
            {
                ((dynamic)base.ViewBag).NotFound = true;
            }
            else
            {
                ((dynamic)base.ViewBag).Invitation = invitationInfo;
                if (invitationInfo.CanSurvey)
                {
                    ((dynamic)base.ViewBag).Questionnaire = SurveyProvider.GetQuestionnaire(invitationInfo.ObjectType, invitationInfo.Language);
                }
            }
            return(base.View());
        }
    /// <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;
    }
Example #11
0
    /// <summary>
    /// Accepts invitation.
    /// </summary>
    protected void btnAccept_OnCommand(object sender, CommandEventArgs e)
    {
        if (e.CommandName == "accept")
        {
            // Accept
            int            invitationId = ValidationHelper.GetInteger(e.CommandArgument, 0);
            InvitationInfo invitation   = InvitationInfoProvider.GetInvitationInfo(invitationId);

            // Check if time is correct
            if ((invitation.InvitationValidTo == DateTimeHelper.ZERO_TIME) ||
                (invitation.InvitationValidTo >= DateTime.Now))
            {
                GroupInfo group = GroupInfoProvider.GetGroupInfo(invitation.InvitationGroupID);
                if (group != null)
                {
                    // Check if invitation is from group member
                    if (!GroupMemberInfoProvider.IsMemberOfGroup(invitation.InvitedUserID, invitation.InvitationGroupID))
                    {
                        // Transfer user name to user info
                        if (userInfo == null)
                        {
                            userInfo = UserInfoProvider.GetUserInfo(UserName);
                        }
                        if (userInfo != null)
                        {
                            // Create group member info object
                            GroupMemberInfo groupMember = new GroupMemberInfo();
                            groupMember.MemberInvitedByUserID = invitation.InvitedByUserID;
                            groupMember.MemberUserID          = userInfo.UserID;
                            groupMember.MemberGroupID         = invitation.InvitationGroupID;
                            groupMember.MemberJoined          = DateTime.Now;

                            // Set proper status depending on group settings
                            switch (group.GroupApproveMembers)
                            {
                            case GroupApproveMembersEnum.ApprovedCanJoin:
                                groupMember.MemberStatus = GroupMemberStatus.WaitingForApproval;
                                lblInfo.Text             = MemberWaiting.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />";
                                break;

                            default:
                                groupMember.MemberApprovedByUserID = invitation.InvitedByUserID;
                                groupMember.MemberApprovedWhen     = DateTime.Now;
                                groupMember.MemberStatus           = GroupMemberStatus.Approved;
                                lblInfo.Text = MemberJoined.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />";
                                break;
                            }
                            // Store info object to database
                            GroupMemberInfoProvider.SetGroupMemberInfo(groupMember);

                            // Delete all invitations to specified group for specified user
                            string whereCondition = "InvitationGroupID = " + invitation.InvitationGroupID + " AND (InvitedUserID=" + userInfo.UserID + ")";
                            InvitationInfoProvider.DeleteInvitations(whereCondition);

                            // Log activity
                            LogJoinActivity(groupMember, group);
                        }
                    }
                    else
                    {
                        // Show error message and delete invitation
                        lblInfo.Text     = UserIsAlreadyMember.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName)) + "<br /><br />";
                        lblInfo.CssClass = "InvitationErrorLabel";
                        InvitationInfoProvider.DeleteInvitationInfo(invitation);
                    }
                }
                else
                {
                    // Show error message and delete invitation
                    lblInfo.Text     = GroupNoLongerExists + "<br /><br />";
                    lblInfo.CssClass = "InvitationErrorLabel";
                    InvitationInfoProvider.DeleteInvitationInfo(invitation);
                }
            }
            else
            {
                // Show error message and delete invitation
                lblInfo.Text     = InvitationIsNotValid + "<br /><br />";
                lblInfo.CssClass = "InvitationErrorLabel";
                InvitationInfoProvider.DeleteInvitationInfo(invitation);
            }

            lblInfo.Visible = true;
            BindData();
        }
    }
    /// <summary>
    /// Creates invitation for specified user.
    /// </summary>
    /// <param name="groupID">Inviting group</param>
    /// <param name="invitedUser">User info</param>    
    private InvitationInfo InviteUser(GroupInfo gi, UserInfo invitedUser)
    {
        // Check whether group exists
        if (gi == 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
            InvitationInfo ii = new InvitationInfo();
            ii.InvitationComment = txtComment.Text;
            ii.InvitationCreated = DateTime.Now;
            ii.InvitationGroupID = GroupID;
            ii.InvitationGUID = new Guid();
            ii.InvitationLastModified = DateTime.Now;
            ii.InvitedByUserID = currentUserId;

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

            if (radSiteMember.Checked)
            {
                ii.InvitedUserID = userId;
            }
            else
            {
                ii.InvitationUserEmail = txtEmail.Text;
            }
            InvitationInfoProvider.SetInvitationInfo(ii);
            return ii;
        }
        return null;
    }
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    protected void SetupControl()
    {
        if (StopProcessing)
        {
            // Do nothing
        }
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                // If user is public
                if (MembershipContext.AuthenticatedUser.IsPublic())
                {
                    // Get logon URL
                    string logonUrl = AuthenticationHelper.GetSecuredAreasLogonPage(SiteContext.CurrentSiteName);
                    logonUrl = DataHelper.GetNotEmpty(LoginURL, logonUrl);

                    // Create redirect URL
                    logonUrl = UrlResolver.ResolveUrl(logonUrl) + "?ReturnURL=" + HttpUtility.UrlEncode(RequestContext.CurrentURL);
                    URLHelper.Redirect(logonUrl);
                }
                else
                {
                    // Get invitation by GUID
                    Guid invitationGuid = QueryHelper.GetGuid("invitationguid", Guid.Empty);
                    if (invitationGuid != Guid.Empty)
                    {
                        InvitationInfo invitation = InvitationInfoProvider.GetInvitationInfo(invitationGuid);
                        if (invitation != null)
                        {
                            // Check if invitation is valid
                            if ((invitation.InvitationValidTo == DateTimeHelper.ZERO_TIME) ||
                                (invitation.InvitationValidTo >= DateTime.Now))
                            {
                                GroupInfo group = GroupInfoProvider.GetGroupInfo(invitation.InvitationGroupID);

                                if (group != null)
                                {
                                    // Check whether current user is the user who should be invited
                                    if ((invitation.InvitedUserID > 0) && (invitation.InvitedUserID != MembershipContext.AuthenticatedUser.UserID))
                                    {
                                        lblInfo.CssClass = "InvitationErrorLabel";
                                        lblInfo.Text     = InvitationIsNotValid;
                                        lblInfo.Visible  = true;
                                        return;
                                    }

                                    // If user was invited by e-mail
                                    if (invitation.InvitedUserID == 0)
                                    {
                                        invitation.InvitedUserID = MembershipContext.AuthenticatedUser.UserID;
                                    }

                                    if (!GroupMemberInfoProvider.IsMemberOfGroup(invitation.InvitedUserID, invitation.InvitationGroupID))
                                    {
                                        // Create group member info object
                                        GroupMemberInfo groupMember = new GroupMemberInfo();
                                        groupMember.MemberInvitedByUserID = invitation.InvitedByUserID;
                                        groupMember.MemberUserID          = MembershipContext.AuthenticatedUser.UserID;
                                        groupMember.MemberGroupID         = invitation.InvitationGroupID;
                                        groupMember.MemberJoined          = DateTime.Now;

                                        // Set proper status depending on grouo settings
                                        switch (group.GroupApproveMembers)
                                        {
                                        // Only approved members can join
                                        case GroupApproveMembersEnum.ApprovedCanJoin:
                                            groupMember.MemberStatus = GroupMemberStatus.WaitingForApproval;
                                            lblInfo.Text             = MemberWaiting.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName));
                                            break;

                                        // Only invited members
                                        case GroupApproveMembersEnum.InvitedWithoutApproval:
                                        // Any site members can join
                                        case GroupApproveMembersEnum.AnyoneCanJoin:
                                            groupMember.MemberApprovedWhen = DateTime.Now;
                                            groupMember.MemberStatus       = GroupMemberStatus.Approved;
                                            lblInfo.Text = MemberJoined.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName));
                                            break;
                                        }
                                        // Store info object to database
                                        GroupMemberInfoProvider.SetGroupMemberInfo(groupMember);

                                        // Handle sending e-mails
                                        if (SendEmailToInviter || SendDefaultGroupEmails)
                                        {
                                            UserInfo sender    = UserInfoProvider.GetFullUserInfo(groupMember.MemberUserID);
                                            UserInfo recipient = UserInfoProvider.GetFullUserInfo(groupMember.MemberInvitedByUserID);

                                            if (SendEmailToInviter)
                                            {
                                                EmailTemplateInfo template = EmailTemplateProvider.GetEmailTemplate("Groups.MemberAcceptedInvitation", SiteContext.CurrentSiteName);

                                                // Resolve macros
                                                MacroResolver resolver = MacroContext.CurrentResolver;
                                                resolver.SetAnonymousSourceData(sender, recipient, group, groupMember);
                                                resolver.SetNamedSourceData("Sender", sender);
                                                resolver.SetNamedSourceData("Recipient", recipient);
                                                resolver.SetNamedSourceData("Group", group);
                                                resolver.SetNamedSourceData("GroupMember", groupMember);

                                                if (!String.IsNullOrEmpty(recipient.Email) && !String.IsNullOrEmpty(sender.Email))
                                                {
                                                    // Send e-mail
                                                    EmailMessage message = new EmailMessage();
                                                    message.EmailFormat = EmailFormatEnum.Default;
                                                    message.Recipients  = recipient.Email;
                                                    message.From        = SettingsKeyInfoProvider.GetValue(SiteContext.CurrentSiteName + ".CMSNoreplyEmailAddress");

                                                    EmailSender.SendEmailWithTemplateText(SiteContext.CurrentSiteName, message, template, resolver, false);
                                                }
                                            }

                                            if (SendDefaultGroupEmails)
                                            {
                                                // Send join or leave notification
                                                if (group.GroupSendJoinLeaveNotification &&
                                                    (groupMember.MemberStatus == GroupMemberStatus.Approved))
                                                {
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoin", SiteContext.CurrentSiteName, groupMember, true);
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedConfirmation", SiteContext.CurrentSiteName, groupMember, false);
                                                }

                                                // Send 'waiting for approval' notification
                                                if (group.GroupSendWaitingForApprovalNotification && (groupMember.MemberStatus == GroupMemberStatus.WaitingForApproval))
                                                {
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberWaitingForApproval", SiteContext.CurrentSiteName, groupMember, true);
                                                    GroupMemberInfoProvider.SendNotificationMail("Groups.MemberJoinedWaitingForApproval", SiteContext.CurrentSiteName, groupMember, false);
                                                }
                                            }
                                        }

                                        // Delete all invitations to specified group for specified user (based on e-mail or userId)
                                        string whereCondition = "InvitationGroupID = " + invitation.InvitationGroupID + " AND (InvitedUserID=" + MembershipContext.AuthenticatedUser.UserID + " OR InvitationUserEmail = N'" + SqlHelper.GetSafeQueryString(MembershipContext.AuthenticatedUser.Email, false) + "')";
                                        InvitationInfoProvider.DeleteInvitations(whereCondition);
                                    }
                                    else
                                    {
                                        lblInfo.Text     = UserIsAlreadyMember.Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(group.GroupDisplayName));
                                        lblInfo.CssClass = "InvitationErrorLabel";

                                        // Delete this invitation
                                        InvitationInfoProvider.DeleteInvitationInfo(invitation);
                                    }
                                }
                                else
                                {
                                    lblInfo.Text     = GroupNoLongerExists;
                                    lblInfo.CssClass = "InvitationErrorLabel";
                                    // Delete this invitation
                                    InvitationInfoProvider.DeleteInvitationInfo(invitation);
                                }
                            }
                            else
                            {
                                lblInfo.Text     = InvitationIsNotValid;
                                lblInfo.CssClass = "InvitationErrorLabel";
                                // Delete this invitation
                                InvitationInfoProvider.DeleteInvitationInfo(invitation);
                            }
                        }
                        else
                        {
                            lblInfo.Text     = InvitationNoLongerExists;
                            lblInfo.CssClass = "InvitationErrorLabel";
                        }
                        lblInfo.Visible = true;
                    }
                    else
                    {
                        // Hide control if invitation GUID isn't set
                        Visible = false;
                    }
                }
            }
        }
    }
Example #14
0
    /// <summary>
    /// Invite button handling.
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">EventArgs</param>
    protected void btnInvite_Click(object sender, EventArgs e)
    {
        if (!IsLiveSite)
        {
            if (!CheckPermissions("cms.groups", CMSAdminControl.PERMISSION_MANAGE, this.GroupID))
            {
                return;
            }
        }

        if (DisplayGroupSelector)
        {
            GroupID = ValidationHelper.GetInteger(groupSelector.Value, 0);
        }

        Group = GroupInfoProvider.GetGroupInfo(GroupID);
        string recipientEmail = string.Empty;

        if (Group != null)
        {
            // Check whether user is group member
            if (CMSContext.CurrentUser.IsGroupMember(GroupID))
            {
                // If user can select the user
                if (plcUserSelector.Visible)
                {
                    int userId = ValidationHelper.GetInteger(userSelector.Value, 0);
                    if (userId > 0)
                    {
                        InvitedUser = UserInfoProvider.GetUserInfo(userId);

                        bool userNotFound = true;

                        // Check if user is filtered
                        if (InvitedUser != null)
                        {
                            if (this.IsLiveSite)
                            {
                                userNotFound = InvitedUser.UserIsHidden || !InvitedUser.UserEnabled;
                            }
                            else
                            {
                                userNotFound = false;
                            }
                        }

                        if (!userNotFound)
                        {
                            // Create invitation info
                            InvitationInfo ii = InviteUser(Group, InvitedUser);
                            if (ii != null)
                            {
                                // Send e-mail
                                InvitationInfoProvider.SendInvitationEmail(ii, CMSContext.CurrentSiteName);
                            }
                            else
                            {
                                // User is member
                                GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(InvitedUser.UserID, GroupID);
                                if (gmi != null)
                                {
                                    lblError.Text    = GetString("groupinvitation.invitationunsuccessismember").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(InvitedUser.UserName, this.IsLiveSite)));
                                    lblError.Visible = true;
                                    return;
                                }

                                // User is invited
                                DataSet ds = InvitationInfoProvider.GetInvitations("InvitedUserID=" + InvitedUser.UserID + " AND InvitationGroupID=" + GroupID, "InvitationCreated", 1);
                                if (!DataHelper.DataSourceIsEmpty(ds))
                                {
                                    int      invitedByuserId = ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["InvitedByUserID"], 0);
                                    UserInfo ui = UserInfoProvider.GetUserInfo(invitedByuserId);
                                    if (ui != null)
                                    {
                                        lblError.Text    = GetString("groupinvitation.invitationunsuccesinvexists").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", HTMLHelper.HTMLEncode(InvitedUser.UserName)).Replace("##INVITEDBY##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName, this.IsLiveSite)));
                                        lblError.Visible = true;
                                    }
                                    return;
                                }

                                // General error
                                lblError.Text    = GetString("groupinvitation.invitationunsuccessmult").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(InvitedUser.UserName, this.IsLiveSite)));
                                lblError.Visible = true;
                                return;
                            }
                        }
                        else
                        {
                            lblError.Text    = GetString("general.usernotfound");
                            lblError.Visible = true;
                            return;
                        }
                    }
                    else
                    {
                        lblError.Text    = GetString("groupinvitation.emptyusers");
                        lblError.Visible = true;
                        return;
                    }

                    // Succesfull invitation
                    lblInfo.Text    = SuccessfulInviteText;
                    lblInfo.Visible = true;

                    DisableAfterSuccess();

                    if (DisplayAdvancedOptions)
                    {
                        CancelButton.ResourceString = "general.back";
                        CancelButton.PostBackUrl    =
                            ResolveUrl("~/CMSModules/Groups/Tools/Members/Member_List.aspx?groupId=" + GroupID);
                    }
                    else
                    {
                        CancelButton.ResourceString = "general.close";
                        CancelButton.OnClientClick  = "Close();";
                    }
                }
                // Single invite
                else
                {
                    // Check the email address if it is new user
                    if (radNewUser.Checked)
                    {
                        string result = new Validator().IsEmail(txtEmail.Text, rfvEmail.ErrorMessage).Result;
                        if (result != String.Empty)
                        {
                            lblError.Text    = result;
                            lblError.Visible = true;
                            return;
                        }
                    }

                    InvitedUser = UserInfoProvider.GetUserInfo(InvitedUserID);

                    if ((GroupID != 0) || (InvitedUser != null) || (radNewUser.Checked))
                    {
                        // Create invitation info
                        InvitationInfo ii = InviteUser(Group, InvitedUser);

                        if (ii != null)
                        {
                            lblInfo.Text = SuccessfulInviteText;
                            DisableAfterSuccess();
                            if (DisplayAdvancedOptions)
                            {
                                CancelButton.ResourceString = "general.back";
                                CancelButton.PostBackUrl    =
                                    ResolveUrl("~/CMSModules/Groups/Tools/Members/Member_List.aspx?groupId=" + GroupID);
                            }
                            else
                            {
                                CancelButton.ResourceString = "general.close";
                                if (UseMultipleUserSelector)
                                {
                                    CancelButton.OnClientClick = "Close();";
                                }
                                else
                                {
                                    CancelButton.OnClientClick = "CloseAndRefresh();";
                                }
                            }

                            InvitationInfoProvider.SendInvitationEmail(ii, CMSContext.CurrentSiteName);

                            // Succesfull invitation
                            lblInfo.Text    = SuccessfulInviteText;
                            lblInfo.Visible = true;
                        }
                        else
                        {
                            if (InvitedUser != null)
                            {
                                string username = HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(InvitedUser.UserName, this.IsLiveSite));

                                // User is member
                                GroupMemberInfo gmi = GroupMemberInfoProvider.GetGroupMemberInfo(InvitedUser.UserID, GroupID);
                                if (gmi != null)
                                {
                                    lblError.Text    = GetString("groupinvitation.invitationunsuccessismember").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", username);
                                    lblError.Visible = true;
                                    return;
                                }

                                // User is invited
                                DataSet ds = InvitationInfoProvider.GetInvitations("InvitedUserID=" + InvitedUser.UserID + " AND InvitationGroupID=" + GroupID, "InvitationCreated", 1);
                                if (!DataHelper.DataSourceIsEmpty(ds))
                                {
                                    int      invitedByuserId = ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["InvitedByUserID"], 0);
                                    UserInfo ui = UserInfoProvider.GetUserInfo(invitedByuserId);
                                    if (ui != null)
                                    {
                                        lblError.Text    = GetString("groupinvitation.invitationunsuccesinvexists").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", username).Replace("##INVITEDBY##", HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ui.UserName, this.IsLiveSite)));
                                        lblError.Visible = true;
                                    }
                                    return;
                                }

                                // General error
                                lblError.Text    = GetString("groupinvitation.invitationunsuccessmult").Replace("##GROUPNAME##", HTMLHelper.HTMLEncode(Group.GroupDisplayName)).Replace("##USERNAME##", username);
                                lblError.Visible = true;
                                return;
                            }
                            else
                            {
                                UnSuccess();
                            }
                        }
                    }
                    else
                    {
                        UnSuccess();
                    }
                }
            }
        }
    }
 public InvitationCardControl(InvitationInfo invitation)
 {
     InitializeComponent();
     IsSelected = false;
     Invitation = invitation;
 }
Example #16
0
 public void Init()
 {
     instance = new InvitationInfo();
 }