/// <summary>
    /// Performs action on given subscriber.
    /// </summary>
    /// <param name="subscriberId">Id of subscriber</param>
    /// <param name="actionName">Name of action</param>
    private void DoSubscriberAction(int subscriberId, string actionName)
    {
        try
        {
            // Check manage subscribers permission
            var subscriber = SubscriberInfoProvider.GetSubscriberInfo(subscriberId);
            if (!subscriber.CheckPermissions(PermissionsEnum.Modify, SiteContext.CurrentSiteName, MembershipContext.AuthenticatedUser))
            {
                RedirectToAccessDenied(subscriber.TypeInfo.ModuleName, "ManageSubscribers");
            }

            switch (actionName.ToUpperInvariant())
            {
            // Subscribe
            case SUBSCRIBE:
                var subscription = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, mNewsletter.NewsletterID);
                if ((subscription == null) || subscription.SubscriptionEnabled)
                {
                    return;
                }

                SubscriberInfoProvider.RenewSubscription(subscriberId, mNewsletter.NewsletterID, chkSendConfirmation.Checked);
                SubscriberNewsletterInfoProvider.SetApprovalStatus(subscriberId, mNewsletter.NewsletterID, !chkRequireOptIn.Checked);
                if (chkRequireOptIn.Checked)
                {
                    IssueInfoProvider.SendDoubleOptInEmail(subscriberId, mNewsletter.NewsletterID);
                }
                break;

            // Unsubscribe
            case UNSUBSCRIBE:
                SubscriberInfoProvider.Unsubscribe(subscriberId, mNewsletter.NewsletterID, chkSendConfirmation.Checked);
                break;

            // Remove subscription
            case REMOVE:
                SubscriberInfoProvider.DeleteSubscription(subscriberId, mNewsletter.NewsletterID, chkSendConfirmation.Checked);
                break;

            // Approve subscription
            case APPROVE:
                SubscriberNewsletterInfoProvider.ApproveSubscription(subscriberId, mNewsletter.NewsletterID);
                break;

            // Block selected subscriber
            case BLOCK:
                SubscriberInfoProvider.BlockSubscriber(subscriberId);
                break;

            // Un-block selected subscriber
            case UNBLOCK:
                SubscriberInfoProvider.UnblockSubscriber(subscriberId);
                break;
            }
        }
        catch (Exception e)
        {
            LogAndShowError("Newsletter subscriber", "NEWSLETTERS", e);
        }
    }
    /// <summary>
    /// Unigrid newsletters action handler.
    /// </summary>
    protected void unigridNewsletters_OnAction(string actionName, object actionArgument)
    {
        // Check 'configure' permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "ManageSubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "ManageSubscribers");
        }

        int newsletterId = ValidationHelper.GetInteger(actionArgument, 0);

        switch (actionName.ToLowerCSafe())
        {
        // Renew subscription
        case "subscribe":
            SubscriberInfoProvider.RenewSubscription(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Unsubscribe selected subscriber
        case "unsubscribe":
            SubscriberInfoProvider.Unsubscribe(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Unsubscribe selected subscriber
        case "remove":
            SubscriberInfoProvider.DeleteSubscription(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Approve selected subscription
        case "approve":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (!subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = true;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.Now;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;

        // Reject selected subscription
        case "reject":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = false;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.MinValue;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;
        }
    }
Exemple #3
0
    /// <summary>
    /// Performs action on given subscriber.
    /// </summary>
    /// <param name="newsletter">Newsletter info</param>
    /// <param name="actionName">Name of action</param>
    private void DoSubscriberAction(NewsletterInfo newsletter, string actionName)
    {
        switch (actionName.ToUpperInvariant())
        {
        // Renew subscription
        case SUBSCRIBE:
            var subscriberNewsletterInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(mSubscriberId, newsletter.NewsletterID);
            if (subscriberNewsletterInfo.SubscriptionEnabled)
            {
                return;
            }

            bool requireDoubleOptIn = chkRequireOptIn.Checked && newsletter.NewsletterEnableOptIn;

            SubscriberInfoProvider.RenewSubscription(mSubscriberId, newsletter.NewsletterID, chkSendConfirmation.Checked && !requireDoubleOptIn);

            bool approved = true;
            // Check if double opt-in is enabled and if confirmation e-mail checkbox was checked
            if (requireDoubleOptIn)
            {
                IssueInfoProvider.SendDoubleOptInEmail(mSubscriberId, newsletter.NewsletterID);
                approved = false;
            }

            SubscriberNewsletterInfoProvider.SetApprovalStatus(mSubscriberId, newsletter.NewsletterID, approved);
            break;

        // Unsubscribe
        case UNSUBSCRIBE:
            SubscriberInfoProvider.Unsubscribe(mSubscriberId, newsletter.NewsletterID, chkSendConfirmation.Checked);
            break;

        // Remove subscription
        case REMOVE:
            SubscriberInfoProvider.DeleteSubscription(mSubscriberId, newsletter.NewsletterID, chkSendConfirmation.Checked);
            break;

        // Approve subscription
        case APPROVE:
            SubscriberNewsletterInfoProvider.ApproveSubscription(mSubscriberId, newsletter.NewsletterID);
            break;
        }
    }
    /// <summary>
    /// Handles multiple selector actions.
    /// </summary>
    protected void btnOk_Clicked(object sender, EventArgs e)
    {
        // Check permissions
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "ManageSubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "ManageSubscribers");
        }
        // Return if no action was selected
        if (drpActions.SelectedValue.EqualsCSafe(SELECT, true))
        {
            return;
        }

        // Get selected items
        List <string> list = unigridNewsletters.SelectedItems;

        if (list.Count == 0)
        {
            ltlScript.Text += ScriptHelper.GetAlertScript(GetString("general.noitems"));
            return;
        }

        int newsletterId;
        SubscriberNewsletterInfo subscriptionInfo;

        foreach (string id in list)
        {
            newsletterId = ValidationHelper.GetInteger(id, 0);

            switch (drpActions.SelectedValue)
            {
            // Subscribe
            case SUBSCRIBE:
                SubscriberInfoProvider.RenewSubscription(subscriberId, newsletterId, chkSendConfirmation.Checked);
                break;

            // Unsubscribe
            case UNSUBSCRIBE:
                SubscriberInfoProvider.Unsubscribe(subscriberId, newsletterId, chkSendConfirmation.Checked);
                break;


            // Remove subscription
            case "REMOVE":
                SubscriberInfoProvider.DeleteSubscription(subscriberId, newsletterId, chkSendConfirmation.Checked);
                break;

            // Approve subscription
            case "APPROVE":
                subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
                if ((subscriptionInfo != null) && (!subscriptionInfo.SubscriptionApproved))
                {
                    subscriptionInfo.SubscriptionApproved     = true;
                    subscriptionInfo.SubscriptionApprovedWhen = DateTime.Now;
                    SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
                }
                break;

            // Reject subscription
            case "REJECT":
                subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
                if ((subscriptionInfo != null) && (subscriptionInfo.SubscriptionApproved))
                {
                    subscriptionInfo.SubscriptionApproved     = false;
                    subscriptionInfo.SubscriptionApprovedWhen = DateTime.MinValue;
                    SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
                }
                break;
            }
        }

        unigridNewsletters.ResetSelection();
        unigridNewsletters.ReloadData();
    }
    /// <summary>
    /// Handles multiple selector actions.
    /// </summary>
    protected void btnOk_Clicked(object sender, EventArgs e)
    {
        // Check permissions
        CheckAuthorization();

        if (drpActions.SelectedValue != SELECT)
        {
            // Go through all selected items
            List <string> list = UniGridSubscribers.SelectedItems;
            if (list.Count > 0)
            {
                foreach (string subscriberId in list)
                {
                    var subscriberInt = ValidationHelper.GetInteger(subscriberId, 0);
                    var sni           = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberInt, newsletterId);
                    if (sni != null)
                    {
                        switch (drpActions.SelectedValue)
                        {
                        // Subscribe
                        case SUBSCRIBE:
                            SubscriberInfoProvider.RenewSubscription(subscriberInt, newsletterId, chkSendConfirmation.Checked);
                            break;

                        // Unsubscribe
                        case UNSUBSCRIBE:
                            SubscriberInfoProvider.Unsubscribe(sni, chkSendConfirmation.Checked);
                            break;

                        // Remove subscription
                        case REMOVE:
                            SubscriberInfoProvider.DeleteSubscription(subscriberInt, newsletterId, chkSendConfirmation.Checked);
                            break;

                        // Approve subscription
                        case APPROVE:
                            if (!sni.SubscriptionApproved)
                            {
                                sni.SubscriptionApproved     = true;
                                sni.SubscriptionApprovedWhen = DateTime.Now;
                                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(sni);
                            }
                            break;

                        // Reject subscription
                        case REJECT:
                            if (sni.SubscriptionApproved)
                            {
                                sni.SubscriptionApproved     = false;
                                sni.SubscriptionApprovedWhen = DateTime.MinValue;
                                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(sni);
                            }
                            break;
                        }
                    }
                }
            }
            else
            {
                ltlScript.Text += ScriptHelper.GetAlertScript(GetString("general.noitems"));
            }
        }
        UniGridSubscribers.ResetSelection();
        UniGridSubscribers.ReloadData();
    }
    /// <summary>
    /// Handles the UniGrid's OnAction event.
    /// </summary>
    /// <param name="actionName">Name of item (button) that threw event</param>
    /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param>
    protected void UniGridSubscribers_OnAction(string actionName, object actionArgument)
    {
        // Check 'manage subscribers' permission
        CheckAuthorization();

        int subscriberId = ValidationHelper.GetInteger(actionArgument, 0);

        switch (actionName.ToLowerCSafe())
        {
        // Renew subscription
        case "subscribe":
            SubscriberInfoProvider.RenewSubscription(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Unsubscribe selected subscriber
        case "unsubscribe":
            SubscriberInfoProvider.Unsubscribe(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Delete subscription
        case "remove":
            SubscriberInfoProvider.DeleteSubscription(subscriberId, newsletterId, chkSendConfirmation.Checked);
            break;

        // Approve selected subscription
        case "approve":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (!subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = true;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.Now;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;

        // Reject selected subscription
        case "reject":
        {
            SubscriberNewsletterInfo subscriptionInfo = SubscriberNewsletterInfoProvider.GetSubscriberNewsletterInfo(subscriberId, newsletterId);
            if ((subscriptionInfo != null) && (subscriptionInfo.SubscriptionApproved))
            {
                subscriptionInfo.SubscriptionApproved     = false;
                subscriptionInfo.SubscriptionApprovedWhen = DateTime.MinValue;
                SubscriberNewsletterInfoProvider.SetSubscriberNewsletterInfo(subscriptionInfo);
            }
        }
        break;

        // Block selected subscriber
        case "block":
            SubscriberInfoProvider.BlockSubscriber(subscriberId);
            break;

        // Un-block selected subscriber
        case "unblock":
            SubscriberInfoProvider.UnblockSubscriber(subscriberId);
            break;
        }
    }