/// <summary>
        /// Acquires a serial key for this digital good
        /// </summary>
        public void AcquireSerialKey()
        {
            if (IsSerialKeyAcquired())
            {
                return;
            }

            if (!HasSerialKeyProvider())
            {
                return;
            }

            ISerialKeyProvider       provider = DigitalGood.GetSerialKeyProviderInstance();
            AcquireSerialKeyResponse response = provider.AcquireSerialKey(this);

            if (response.Successful)
            {
                this.SerialKeyData = response.SerialKey;
                //initiate fulfillment email
                EmailTemplate template = EmailTemplateDataSource.Load(DigitalGood.FulfillmentEmailId);
                if (template != null)
                {
                    SendEmail(template);
                }
            }
            else
            {
                //serial key could not be acquired.
                Logger.Error(string.Format("Serial Key could not be acquired for {0} using Serial Key Provider {1}. Provider Error Message '{2}'", DigitalGood.Name, provider.Name, response.ErrorMessage));
            }
        }
Example #2
0
 protected void SendEmailButton_Click(object sender, EventArgs e)
 {
     if (Page.IsValid)
     {
         if ((!trCaptchaImage.Visible) || CaptchaImage.Authenticate(CaptchaInput.Text))
         {
             int     productId = AbleCommerce.Code.PageHelper.GetProductId();
             Product product   = ProductDataSource.Load(productId);
             if (product != null)
             {
                 int           categoryId = AbleCommerce.Code.PageHelper.GetCategoryId();
                 Category      category   = CategoryDataSource.Load(categoryId);
                 EmailTemplate template   = EmailTemplateDataSource.Load(AbleContext.Current.Store.Settings.ProductTellAFriendEmailTemplateId);
                 if (template != null)
                 {
                     //STRIP HTML
                     Name.Text        = StringHelper.StripHtml(Name.Text);
                     FromEmail.Text   = StringHelper.StripHtml(FromEmail.Text);
                     FriendEmail.Text = StringHelper.StripHtml(FriendEmail.Text);
                     // ADD PARAMETERS
                     template.Parameters["store"]     = AbleContext.Current.Store;
                     template.Parameters["product"]   = product;
                     template.Parameters["category"]  = category;
                     template.Parameters["fromEmail"] = FromEmail.Text;
                     template.Parameters["fromName"]  = Name.Text;
                     template.FromAddress             = FromEmail.Text;
                     template.ToAddress = FriendEmail.Text;
                     template.Send();
                     FriendEmail.Text           = string.Empty;
                     SentMessage.Visible        = true;
                     CaptchaInput.Text          = "";
                     CaptchaImage.ChallengeText = StringHelper.RandomNumber(6);
                 }
                 else
                 {
                     FailureMessage.Text    = "Email template could not be loaded.";
                     FailureMessage.Visible = true;
                 }
             }
             else
             {
                 FailureMessage.Text    = "Product could not be identified.";
                 FailureMessage.Visible = true;
             }
         }
         else
         {
             //CAPTCHA IS VISIBLE AND DID NOT AUTHENTICATE
             CustomValidator invalidInput = new CustomValidator();
             invalidInput.ValidationGroup = "TellAFriend";
             invalidInput.Text            = "*";
             invalidInput.ErrorMessage    = "You did not input the verification number correctly.";
             invalidInput.IsValid         = false;
             phCaptchaValidators.Controls.Add(invalidInput);
             CaptchaInput.Text          = "";
             CaptchaImage.ChallengeText = StringHelper.RandomNumber(6);
         }
     }
 }
        protected void SendButton_Click(Object sender, EventArgs e)
        {
            try
            {
                EmailTemplate emailTemplate = EmailTemplateDataSource.Load(AbleContext.Current.Store.Settings.AbandonedBasketAlertEmailTemplateId);
                string        fromAddress   = emailTemplate.FromAddress;
                if (fromAddress == "merchant")
                {
                    fromAddress = AbleContext.Current.Store.Settings.DefaultEmailAddress;
                }

                MailMessage mailMessage = new MailMessage();
                mailMessage.To.Add(new MailAddress(ToEmail.Text));
                mailMessage.From = new MailAddress(fromAddress);

                string[] ccAddresses = emailTemplate.CCList.Split(',');
                if (ccAddresses != null && ccAddresses.Length > 0)
                {
                    foreach (string ccAddress in ccAddresses)
                    {
                        if (ValidationHelper.IsValidEmail(ccAddress))
                        {
                            mailMessage.CC.Add(new MailAddress(ccAddress.Trim()));
                        }
                    }
                }

                string[] bccAddresses = emailTemplate.BCCList.Split(',');
                if (bccAddresses != null && bccAddresses.Length > 0)
                {
                    foreach (string bccAddress in bccAddresses)
                    {
                        if (ValidationHelper.IsValidEmail(bccAddress))
                        {
                            mailMessage.Bcc.Add(new MailAddress(bccAddress.Trim()));
                        }
                    }
                }

                mailMessage.Subject    = Subject.Text;
                mailMessage.IsBodyHtml = emailTemplate.IsHTML;
                mailMessage.Body       = emailTemplate.IsHTML ? HtmlMessageContents.Value : TextMessageContents.Text;
                EmailClient.Send(mailMessage);

                SendAlertPanel.Visible    = false;
                ConfirmMessage.Text       = string.Format(ConfirmMessage.Text, ToEmail.Text);
                ConfirmPanel.Visible      = true;
                FinishButton.NavigateUrl += "?ReportDate=" + _basket.User.LastActivityDate.Value.ToShortDateString();
            }
            catch (Exception ex)
            {
                ErrorMessage.Text    = "Error sending message: " + ex.Message;
                ErrorMessage.Visible = true;
                Logger.Error(ex.Message, ex);
            }
        }
        protected void Page_Init(object sender, System.EventArgs e)
        {
            IList <EmailTemplate> templates = EmailTemplateDataSource.LoadAll("Name");

            EmailTemplate.DataSource = templates;
            EmailTemplate.DataBind();
            AllEmailTemplates.DataSource = templates;
            AllEmailTemplates.DataBind();

            AbleCommerce.Code.PageHelper.SetHtmlEditor(TermsAndConditions, TermsAndConditionsHtml);
        }
        /// <summary>
        /// Activates this digital good.
        /// </summary>
        public void Activate()
        {
            _DownloadStatus = DownloadStatus.Unknown;
            ActivationDate  = System.DateTime.UtcNow;
            DownloadDate    = System.DateTime.MinValue;
            //initiate activation email
            EmailTemplate template = EmailTemplateDataSource.Load(DigitalGood.ActivationEmailId);

            if (template != null)
            {
                SendEmail(template);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            // locate basket for alert
            int basketId = AlwaysConvert.ToInt(Request.QueryString["BasketId"]);

            _basket = BasketDataSource.Load(basketId);
            if (_basket == null)
            {
                Response.Redirect("MonthlyAbandonedBaskets.aspx");
            }

            // see if we have an email template for abandoned alerts
            int           templateId    = AbleContext.Current.Store.Settings.AbandonedBasketAlertEmailTemplateId;
            EmailTemplate emailTemplate = EmailTemplateDataSource.Load(templateId);

            if (emailTemplate != null)
            {
                // initialize readonly display elements
                CustomerName.Text         = _basket.User.PrimaryAddress.FullName;
                trCustomerName.Visible    = !string.IsNullOrEmpty(CustomerName.Text);
                BasketContents.Text       = GetBasketItems(_basket);
                LastActivity.Text         = _basket.User.LastActivityDate.ToString();
                CancelButton.NavigateUrl += "?ReportDate=" + _basket.User.LastActivityDate.Value.ToShortDateString();

                // initialize form fields on first visit only
                if (!Page.IsPostBack)
                {
                    ToEmail.Text = _basket.User.GetBestEmailAddress();
                    Hashtable parameters = new Hashtable();
                    parameters.Add("store", AbleContext.Current.Store);
                    parameters.Add("customer", _basket.User);
                    parameters.Add("basket", _basket);
                    Subject.Text = NVelocityEngine.Instance.Process(parameters, emailTemplate.Subject);
                    if (!emailTemplate.IsHTML)
                    {
                        TextMessageContents.Text    = NVelocityEngine.Instance.Process(parameters, emailTemplate.Body);
                        TextMessageContents.Visible = true;
                        HtmlMessageContents.Visible = false;
                    }
                    else
                    {
                        HtmlMessageContents.Value = NVelocityEngine.Instance.Process(parameters, emailTemplate.Body);
                    }
                }
            }
            else
            {
                SettingAlertPanel.Visible = true;
                SendAlertPanel.Visible    = false;
            }
        }
Example #7
0
 protected void Page_Load(object sender, System.EventArgs e)
 {
     AbleCommerce.Code.PageHelper.ConvertEnterToTab(Name);
     if (!Page.IsPostBack)
     {
         //SignupEmailTemplate
         IList <EmailTemplate> emailTemplates = EmailTemplateDataSource.LoadAll();
         foreach (EmailTemplate template in emailTemplates)
         {
             ListItem li = new ListItem(template.Name, template.Id.ToString());
             SignupEmailTemplate.Items.Add(li);
         }
     }
 }
        protected void Page_Init(object sender, EventArgs e)
        {
            _Store    = AbleContext.Current.Store;
            _Settings = _Store.Settings;

            // INITIALIZE GENERAL SETTINGS
            DefaultAddress.Text      = _Settings.DefaultEmailAddress;
            SubscriptionAddress.Text = _Settings.SubscriptionEmailAddress;
            SubscriptionRequestExpirationDays.Text = _Settings.SubscriptionRequestExpirationDays.ToString();

            // BIND THE SEND TO FRIEND SELECTBOX
            IList <EmailTemplate> templates = EmailTemplateDataSource.LoadAll();

            EmailTemplatesList.DataSource = templates;
            EmailTemplatesList.DataBind();

            ContactUsEmailTemplatesList.DataSource = templates;
            ContactUsEmailTemplatesList.DataBind();

            // BIND EMAIL TEMPLATES FOR ABANDONED BASKETS ALERT
            AbandonedBasketEmailTemplateList.DataSource = templates;
            AbandonedBasketEmailTemplateList.DataBind();

            // BIND THE DEFAULT EMAIL LIST SELECTBOX
            IList <EmailList> emailLists = EmailListDataSource.LoadAll();

            DefaultEmailList.DataSource = emailLists;
            DefaultEmailList.DataBind();

            // INITIALIZE SERVER CONFIGURATION
            SmtpServer.Text = _Settings.SmtpServer;
            if (String.IsNullOrEmpty(_Settings.SmtpPort))
            {
                SmtpPort.Text = "25";
            }
            else
            {
                SmtpPort.Text = _Settings.SmtpPort;
            }
            SmtpEnableSSL.Checked = _Settings.SmtpEnableSSL;
            SmtpUserName.Text     = _Settings.SmtpUserName;
            RequiresAuth.Checked  = _Settings.SmtpRequiresAuthentication;

            // DISABLE SCROLLING DURING VALIDATION
            AbleCommerce.Code.PageHelper.DisableValidationScrolling(this.Page);
        }
Example #9
0
        private void SendConfirmationEmail()
        {
            int emailTemplateId = ConfirmationEmailTemplateId;

            // use default if none is provided
            if (emailTemplateId == 0)
            {
                emailTemplateId = AbleContext.Current.Store.Settings.ContactUsConfirmationEmailTemplateId;
            }

            EmailTemplate template = EmailTemplateDataSource.Load(emailTemplateId);

            if (template != null)
            {
                template.Parameters.Add("user", AbleContext.Current.User);
                template.Parameters.Add("store", AbleContext.Current.Store);

                try
                {
                    // populate the email for anonymous user account, it is needed for email message generation ('customer' parameter)
                    if (AbleContext.Current.User.IsAnonymousOrGuest)
                    {
                        AbleContext.Current.User.Email = Email.Text;
                    }

                    MailMessage[] messages = template.GenerateMailMessages();
                    foreach (MailMessage msg in messages)
                    {
                        msg.To.Clear();
                        msg.To.Add(new MailAddress(this.Email.Text));
                        EmailClient.Send(msg);
                    }
                    FailureMessage.Visible = false;
                    SuccessMessage.Visible = true;
                }
                catch (Exception exp)
                {
                    Logger.Error("ContactUs Control Exception: " + Environment.NewLine + exp.Message);
                    FailureMessage.Visible = true;
                    SuccessMessage.Visible = false;
                }

                MessagePanel.Visible = true;
                FAQFormPanel.Visible = false;
            }
        }
        /// <summary>
        /// Processes emails for the given order status using the given parameters
        /// </summary>
        /// <param name="orderStatusId">ID for the OrderStatus for which to process the emails</param>
        /// <param name="parameters">The parameters to be used in nVelocity email templates</param>
        public static void ProcessEmails(int orderStatusId, Hashtable parameters)
        {
            parameters["store"] = Token.Instance.Store;
            //NEED TO GET THE EMAIL TEMPLATES FOR THE ORDER STATUS
            EmailTemplateCollection emailTemplates = EmailTemplateDataSource.LoadForOrderStatus(orderStatusId);

            foreach (EmailTemplate template in emailTemplates)
            {
                if (template != null)
                {
                    foreach (string key in parameters.Keys)
                    {
                        template.Parameters[key] = parameters[key];
                    }
                    template.Send();
                }
            }
        }
Example #11
0
        protected void Page_Init(object sender, EventArgs e)
        {
            // LOCATE THE TEMPLATE TO EDIT
            _EmailTemplateId = AlwaysConvert.ToInt(Request.QueryString["EmailTemplateId"]);
            _EmailTemplate   = EmailTemplateDataSource.Load(_EmailTemplateId);
            if (_EmailTemplate == null)
            {
                Response.Redirect("Default.aspx");
            }
            Caption.Text = string.Format(Caption.Text, _EmailTemplate.Name);

            // LOAD TRIGGERS SELECT BOX
            InitTriggerGrid();
            MailFormat.Attributes.Add("onchange", "$get('" + MessageHtml.ClientID + "').style.visibility=(this.selectedIndex==0?'visible':'hidden');");
            MessageHtml.OnClientClick = "if(/^\\s*#.*?\\n/gm.test($get('" + Message.ClientID + "').value)){if(!confirm('WARNING: HTML editor may corrupt NVelocity script if you make changes in WYSIWYG mode.  Continue?'))return false;}";
            AbleCommerce.Code.PageHelper.SetHtmlEditor(Message, MessageHtml);

            //INITIALIZE FORM ON FIRST VISIT
            if (!Page.IsPostBack)
            {
                Name.Text                = _EmailTemplate.Name;
                FromAddress.Text         = _EmailTemplate.FromAddress;
                ToAddress.Text           = _EmailTemplate.ToAddress;
                CCAddress.Text           = _EmailTemplate.CCList;
                BCCAddress.Text          = _EmailTemplate.BCCList;
                FromAddress.Text         = _EmailTemplate.FromAddress;
                Subject.Text             = _EmailTemplate.Subject;
                Message.Text             = _EmailTemplate.Body;
                MailFormat.SelectedIndex = (_EmailTemplate.IsHTML ? 0 : 1);
                foreach (GridViewRow row in TriggerGrid.Rows)
                {
                    int eventId = AlwaysConvert.ToInt(TriggerGrid.DataKeys[row.RowIndex].Value);
                    if (_EmailTemplate.Triggers.IndexOf(_EmailTemplateId, eventId) > -1)
                    {
                        CheckBox selected = row.FindControl("Selected") as CheckBox;
                        if (selected != null)
                        {
                            selected.Checked = true;
                        }
                    }
                }
            }
        }
Example #12
0
        /// <summary>
        /// Generates a copy of the indicated item.
        /// </summary>
        /// <param name="emailTemplateId">The id of the item to copy.</param>
        /// <param name="deepCopy">If true, all related child data for this item is copied.  If false, only the base item is copied.</param>
        /// <returns>A copy of the item</returns>
        /// <remarks>The returned copy has not been persisted to the database, you must call Save method to persist the new item.</remarks>
        public static EmailTemplate Copy(int emailTemplateId, bool deepCopy)
        {
            EmailTemplate copy = EmailTemplateDataSource.Load(emailTemplateId);

            if (copy != null)
            {
                if (deepCopy)
                {
                    //LOAD THE CHILD COLLECTIONS AND RESET
                    foreach (EmailTemplateTrigger trigger in copy.Triggers)
                    {
                        trigger.EmailTemplateId = 0;
                    }
                }
                copy.EmailTemplateId = 0;
                return(copy);
            }
            return(null);
        }
Example #13
0
        protected void Page_Init(object sender, EventArgs e)
        {
            InitTriggerGrid();
            MailFormat.Attributes.Add("onchange", "$get('" + MessageHtml.ClientID + "').style.visibility=(this.selectedIndex==0?'visible':'hidden');");
            MessageHtml.OnClientClick = "if(/^\\s*#.*?\\n/gm.test($get('" + Message.ClientID + "').value)){if(!confirm('WARNING: HTML editor may corrupt NVelocity script if you make changes in WYSIWYG mode.  Continue?'))return false;}";
            AbleCommerce.Code.PageHelper.SetHtmlEditor(Message, MessageHtml);

            if (!Page.IsPostBack)
            {
                EmailTemplate template = EmailTemplateDataSource.Load(AlwaysConvert.ToInt(Request.QueryString["EmailTemplateId"]));
                if (template == null)
                {
                    // EXPECTED CASE, NEW TEMPLATE
                    FromAddress.Text = "merchant";
                }
                else
                {
                    // LOAD (FOR NEW COPY)
                    Name.Text                = StringHelper.Truncate("Copy of " + template.Name, 100);
                    FromAddress.Text         = template.FromAddress;
                    ToAddress.Text           = template.ToAddress;
                    CCAddress.Text           = template.CCList;
                    BCCAddress.Text          = template.BCCList;
                    FromAddress.Text         = template.FromAddress;
                    Subject.Text             = template.Subject;
                    Message.Text             = template.Body;
                    MailFormat.SelectedIndex = (template.IsHTML ? 0 : 1);
                    foreach (GridViewRow row in TriggerGrid.Rows)
                    {
                        int eventId = AlwaysConvert.ToInt(TriggerGrid.DataKeys[row.RowIndex].Value);
                        if (template.Triggers.IndexOf(template.Id, eventId) > -1)
                        {
                            CheckBox selected = row.FindControl("Selected") as CheckBox;
                            if (selected != null)
                            {
                                selected.Checked = true;
                            }
                        }
                    }
                }
            }
        }
Example #14
0
        protected void Page_Init(object sender, EventArgs e)
        {
            // WARN IF SMTP SERVER NOT CONFIGURED
            if (IsSmtpServerConfigured())
            {
                // FIND THE DATASOURCE FOR THE EMAILS
                LocateRecipientSource();

                // INITIALIZE THE EMAIL TEMPLATES
                EmailTemplates.DataSource = EmailTemplateDataSource.LoadAll("Name");
                EmailTemplates.DataBind();
                EmailTemplates.Attributes.Add("onchange", "if(!confirm('Changing the email template will reset any message text entered below.  Continue?')) return false;");

                // INITIALIZE THE MAIL FORM
                ToAddress.Text = GetRecipientList();
                if (!Page.IsPostBack)
                {
                    FromAddress.Text = AbleContext.Current.Store.Settings.DefaultEmailAddress;
                }
                MailFormat.Attributes.Add("onchange", "$get('" + MessageHtml.ClientID + "').style.visibility=(this.selectedIndex==0?'visible':'hidden');");
                MessageHtml.OnClientClick = "if(/^\\s*#.*?\\n/gm.test($get('" + Message.ClientID + "').value)){if(!confirm('WARNING: HTML editor may corrupt NVelocity script if you make changes in WYSIWYG mode.  Continue?'))return false;}";
                AbleCommerce.Code.PageHelper.SetHtmlEditor(Message, MessageHtml);

                // SHOW/hide the restock notification subscriptions removal option
                trRemoveNotificationSubscriptions.Visible = _RestockNotifyList != null;
            }
            else
            {
                // SMTP IS NOT CONFIGURED
                ComposePanel.Visible      = false;
                PreviewPanel.Visible      = false;
                ConfirmationPanel.Visible = false;
                SmtpErrorPanel.Visible    = true;
            }

            // SET CANCEL LINKS TO CALLING PAGE
            OKButton.NavigateUrl   = GetReturnUrl();
            CancelLink.NavigateUrl = GetReturnUrl();
        }
        /// <summary>
        /// Sets the serial key for this digital good
        /// </summary>
        /// <param name="serialKeyData">Serial key to set</param>
        /// <param name="sendFulfillmentEmail">If <b>true</b> fulfillment email is sent</param>
        public void SetSerialKey(string serialKeyData, bool sendFulfillmentEmail)
        {
            if (IsSerialKeyAcquired())
            {
                if (this.SerialKeyData == serialKeyData)
                {
                    return;
                }
            }

            this.SerialKeyData = serialKeyData;

            if (sendFulfillmentEmail && !string.IsNullOrEmpty(serialKeyData))
            {
                //initiate fulfillment email
                EmailTemplate template = EmailTemplateDataSource.Load(DigitalGood.FulfillmentEmailId);
                if (template != null)
                {
                    SendEmail(template);
                }
            }
        }
Example #16
0
        private static void RestockNotify(bool sendEmails, Product product, ProductVariant variant)
        {
            // send emails
            try
            {
                IList <RestockNotify> list = null;
                if (variant != null)
                {
                    list = RestockNotifyDataSource.LoadForProductVariant(variant.Id);
                }
                else
                {
                    list = RestockNotifyDataSource.LoadForProduct(product.Id);
                }

                foreach (RestockNotify notification in list)
                {
                    // load email template and send
                    EmailTemplate emailTemplate = EmailTemplateDataSource.Load(AbleContext.Current.Store.Settings.InventoryRestockNotificationEmailTemplateId);
                    if (emailTemplate != null)
                    {
                        emailTemplate.Parameters["recipient"] = notification.Email;
                        emailTemplate.Parameters["product"]   = product;
                        emailTemplate.Parameters["variant"]   = variant;
                        emailTemplate.Parameters["store"]     = AbleContext.Current.Store;

                        emailTemplate.Send(true);
                    }
                }

                // remove records
                list.DeleteAll();
            }
            catch (Exception ex)
            {
                Logger.Error("Error sending restock notification email", ex);
            }
        }
Example #17
0
        protected void EmailTemplates_SelectedIndexChanged(Object sender, EventArgs e)
        {
            int           emailTemplateId = AlwaysConvert.ToInt(EmailTemplates.SelectedValue);
            EmailTemplate emailTemplate   = EmailTemplateDataSource.Load(emailTemplateId);

            if (emailTemplate != null)
            {
                emailTemplate.Parameters.Add("store", AbleContext.Current.Store);
                MailAddress fromAddress = emailTemplate.ParseAddress(emailTemplate.FromAddress);
                CCAddress.Text           = emailTemplate.CCList;
                BCCAddress.Text          = emailTemplate.BCCList;
                FromAddress.Text         = fromAddress != null ? fromAddress.Address : emailTemplate.FromAddress;
                Subject.Text             = emailTemplate.Subject;
                MailFormat.SelectedIndex = emailTemplate.IsHTML ? 0 : 1;
                Message.Text             = emailTemplate.Body;
            }
            else
            {
                FromAddress.Text = AbleContext.Current.Store.Settings.DefaultEmailAddress;
                Subject.Text     = string.Empty;
                Message.Text     = string.Empty;
            }
        }
Example #18
0
        protected void Page_Load(object sender, EventArgs e)
        {
            _EmailListId = AlwaysConvert.ToInt(Request.QueryString["EmailListId"]);
            _EmailList   = EmailListDataSource.Load(_EmailListId);
            if (_EmailList != null)
            {
                AbleCommerce.Code.PageHelper.ConvertEnterToTab(Name);
                if (!Page.IsPostBack)
                {
                    Name.Text        = _EmailList.Name;
                    IsPublic.Checked = _EmailList.IsPublic;
                    Description.Text = _EmailList.Description;
                    ListItem item = SignupRule.Items.FindByValue(_EmailList.SignupRule.ToString());
                    if (item != null)
                    {
                        SignupRule.SelectedIndex = SignupRule.Items.IndexOf(item);
                    }

                    IList <EmailTemplate> emailTemplates = EmailTemplateDataSource.LoadAll();
                    foreach (EmailTemplate template in emailTemplates)
                    {
                        ListItem li = new ListItem(template.Name, template.Id.ToString());
                        SignupEmailTemplate.Items.Add(li);
                    }

                    item = SignupEmailTemplate.Items.FindByValue(_EmailList.SignupEmailTemplateId.ToString());
                    if (item != null)
                    {
                        SignupEmailTemplate.SelectedIndex = SignupEmailTemplate.Items.IndexOf(item);
                    }
                }
            }
            else
            {
                this.Controls.Clear();
            }
        }
Example #19
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Store store = AbleContext.Current.Store;
            StoreSettingsManager  settings       = store.Settings;
            IList <EmailTemplate> emailTemplates = EmailTemplateDataSource.LoadAll();

            if (!Page.IsPostBack)
            {
                foreach (EmailTemplate template in emailTemplates)
                {
                    EnrollmentEmail.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                    PaymentRemindersEmail.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                    SubscriptionExpirationEmailTemplate.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                    CancellationEmail.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                    ExpiredEmail.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                    SubscriptionChangedEmail.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                }

                ROEnabledPanel.Visible     = settings.ROCreateNewOrdersEnabled;
                RONotEnabledPanel.Visible  = !ROEnabledPanel.Visible;
                EnableInstructions.Visible = false;
                LblEnabling.Visible        = false;

                // CreateNewOrders.Checked = settings.ROCreateNewOrdersEnabled;
                ListItem item = new ListItem();

                CreateNextOrderDays.Text           = settings.ROCreateNextOrderDays.ToString();
                SubscriptionChangesDays.Text       = settings.ROSubscriptionChangesDays.ToString();
                SubscriptionsCancellationDays.Text = settings.ROSubscriptionCancellationDays.ToString();

                EnrollmentEmail.ClearSelection();
                item = EnrollmentEmail.Items.FindByValue(settings.ROSubscriptionEnrollmentEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                PaymentReminderDays.Text = settings.ROPaymentReminderIntervalDays.ToString();
                PaymentRemindersEmail.ClearSelection();
                item = PaymentRemindersEmail.Items.FindByValue(settings.ROPaymentReminderEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                /* Currently we do not have a separate email sending for failure of subscription payment
                 * item = PaymnetFailureEmail.Items.FindByValue(settings.ROPaymentFailEmailTemplateId.ToString());
                 * if (item != null) item.Selected = true;
                 */

                if (!string.IsNullOrEmpty(settings.ROExpirationReminderEmailDays))
                {
                    ExpirationReminderEmailIntervalDays.Text = settings.ROExpirationReminderEmailDays.ToString();
                }

                SubscriptionExpirationEmailTemplate.ClearSelection();
                item = SubscriptionExpirationEmailTemplate.Items.FindByValue(settings.ROExpirationReminderEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                SubscriptionChangedEmail.ClearSelection();
                item = SubscriptionChangedEmail.Items.FindByValue(settings.ROSubscriptionUpdatedEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                CancellationEmail.ClearSelection();
                item = CancellationEmail.Items.FindByValue(settings.ROSubscriptionCancellationEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                ExpiredEmail.ClearSelection();
                item = ExpiredEmail.Items.FindByValue(settings.ROSubscriptionExpiredEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                IgnoreGatewayForPartialRecurSupport.Checked = settings.ROIgnoreGatewayForPartialRecurSupport;
                CreateOrdersForDetachedPayments.Checked     = settings.ROCreateOrdersForDetachedPayments;
                trCreateOrdersForDetachedPayments.Visible   = false;
                RecurringPaymentsWithoutCVVAllowed.Checked  = settings.RORecurringPaymentsWithoutCVVAllowed;

                // SettingsPanel.Visible = CreateNewOrders.Checked;
            }
        }
Example #20
0
        private void InitializeForm(bool forceRefresh)
        {
            int digitalGoodId = AlwaysConvert.ToInt(Request.QueryString["DigitalGoodId"]);

            _DigitalGood = DigitalGoodDataSource.Load(digitalGoodId);
            if (_DigitalGood == null)
            {
                Response.Redirect(CancelButton.NavigateUrl);
            }
            RenameFileExtensions.Text = AbleContext.Current.Store.Settings.FileExt_DigitalGoods;
            if (!Page.IsPostBack || forceRefresh)
            {
                Name.Text     = _DigitalGood.Name;
                FileName.Text = _DigitalGood.FileName;
                MediaKey.Text = _DigitalGood.MediaKey;
                ListItem item = ActivationMode.Items.FindByValue(_DigitalGood.ActivationModeId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }
                if (_DigitalGood.MaxDownloads > 0)
                {
                    MaxDownloads.Text = _DigitalGood.MaxDownloads.ToString();
                }
                int days, hours, minutes;
                DigitalGood.ParseTimeout(_DigitalGood.ActivationTimeout, out days, out hours, out minutes);
                if (days > 0)
                {
                    ActivationTimeoutDays.Text = days.ToString();
                }
                if (hours > 0)
                {
                    ActivationTimeoutHours.Text = hours.ToString();
                }
                if (minutes > 0)
                {
                    ActivationTimeoutMinutes.Text = minutes.ToString();
                }
                DigitalGood.ParseTimeout(_DigitalGood.DownloadTimeout, out days, out hours, out minutes);
                if (days > 0)
                {
                    DownloadTimeoutDays.Text = days.ToString();
                }
                if (hours > 0)
                {
                    DownloadTimeoutHours.Text = hours.ToString();
                }
                if (minutes > 0)
                {
                    DownloadTimeoutMinutes.Text = minutes.ToString();
                }
                //bind license agreements
                LicenseAgreement.DataSource = LicenseAgreementDataSource.LoadAll();
                LicenseAgreement.DataBind();
                item = LicenseAgreement.Items.FindByValue(_DigitalGood.LicenseAgreementId.ToString());
                if (item != null)
                {
                    LicenseAgreement.SelectedIndex = LicenseAgreement.Items.IndexOf(item);
                }
                item = LicenseAgreementMode.Items.FindByValue(_DigitalGood.LicenseAgreementModeId.ToString());
                if (item != null)
                {
                    LicenseAgreementMode.SelectedIndex = LicenseAgreementMode.Items.IndexOf(item);
                }

                // BIND GROUPs
                Groups.DataBind();
                Groups.ClearSelection();

                foreach (DigitalGoodGroup dgg in _DigitalGood.DigitalGoodGroups)
                {
                    item = Groups.Items.FindByValue(dgg.Group.Id.ToString());
                    if (item != null)
                    {
                        item.Selected = true;
                    }
                }

                //bind readmes
                Readme.DataSource = ReadmeDataSource.LoadAll();
                Readme.DataBind();
                item = Readme.Items.FindByValue(_DigitalGood.ReadmeId.ToString());
                if (item != null)
                {
                    Readme.SelectedIndex = Readme.Items.IndexOf(item);
                }
                EnableSerialKeys.Checked = _DigitalGood.EnableSerialKeys;

                // INITIALIZE SERIAL KEY PROVIDERS
                KeySource.Items.Clear();
                KeySource.Items.Add(new ListItem("Manual Entry", "0"));

                // ADD PROVIDERS
                IList <ISerialKeyProvider> providers = SerialKeyProviderDataSource.GetSerialKeyProviders();
                foreach (ISerialKeyProvider provider in providers)
                {
                    string   classId = Misc.GetClassId(provider.GetType());
                    ListItem providerItem;
                    // (BUG # 8347) ABLECOMMERCE DEFAULT KEY PROVIDER SHOULD BE NAMED AS "Managed List of Keys"
                    if (provider.GetType() == typeof(DefaultSerialKeyProvider))
                    {
                        providerItem = new ListItem("Managed List of Keys", classId);
                    }
                    else
                    {
                        providerItem = new ListItem(provider.Name, classId);
                    }
                    KeySource.Items.Add(providerItem);
                }
                //SELECT CORRECT PROVIDER
                if (_DigitalGood.SerialKeyProviderId != null)
                {
                    ListItem providerItem = KeySource.Items.FindByValue(_DigitalGood.SerialKeyProviderId);
                    if (providerItem != null)
                    {
                        KeySource.SelectedIndex = KeySource.Items.IndexOf(providerItem);
                    }
                }

                IList <EmailTemplate> templates = EmailTemplateDataSource.LoadAll();
                foreach (EmailTemplate template in templates)
                {
                    ListItem activationItem = new ListItem(template.Name, template.Id.ToString());
                    ListItem fulfillItem    = new ListItem(template.Name, template.Id.ToString());

                    if (_DigitalGood.ActivationEmailId == template.Id)
                    {
                        activationItem.Selected = true;
                    }

                    if (_DigitalGood.FulfillmentEmailId == template.Id)
                    {
                        fulfillItem.Selected = true;
                    }

                    ActivationEmailTemplateList.Items.Add(activationItem);
                    FulfillmentEmailTemplateList.Items.Add(fulfillItem);
                }

                if (_DigitalGood.FulfillmentMode == CommerceBuilder.DigitalDelivery.FulfillmentMode.Manual)
                {
                    FulfillmentMode.SelectedIndex = 0;
                }
                else if (_DigitalGood.FulfillmentMode == CommerceBuilder.DigitalDelivery.FulfillmentMode.OnOrder)
                {
                    FulfillmentMode.SelectedIndex = 1;
                }
                else
                {
                    FulfillmentMode.SelectedIndex = 2;
                }

                ToggleConfigureProvider();
            }
        }
Example #21
0
        protected void Save()
        {
            bool newAffilate = false;

            if (this.Affiliate == null)
            {
                this.Affiliate = new CommerceBuilder.Marketing.Affiliate();
                newAffilate    = true;
            }
            this.Affiliate.Name                = Name.Text;
            this.Affiliate.WebsiteUrl          = WebsiteUrl.Text;
            this.Affiliate.Email               = Email.Text;
            this.Affiliate.FirstName           = FirstName.Text;
            this.Affiliate.LastName            = LastName.Text;
            this.Affiliate.Address1            = Address1.Text;
            this.Affiliate.Address2            = Address2.Text;
            this.Affiliate.City                = City.Text;
            this.Affiliate.Province            = (Province.Visible ? StringHelper.StripHtml(Province.Text) : Province2.SelectedValue);
            this.Affiliate.PostalCode          = PostalCode.Text;
            this.Affiliate.CountryCode         = Country.SelectedValue;
            this.Affiliate.PhoneNumber         = Phone.Text;
            this.Affiliate.FaxNumber           = FaxNumber.Text;
            this.Affiliate.MobileNumber        = MobileNumber.Text;
            this.Affiliate.Company             = Company.Text;
            this.Affiliate.ReferralPeriodId    = (byte)settings.AffiliatePersistence;
            this.Affiliate.ReferralPeriod      = settings.AffiliatePersistence;
            this.Affiliate.ReferralDays        = settings.AffiliateReferralPeriod;
            this.Affiliate.CommissionIsPercent = settings.AffiliateCommissionIsPercent;
            this.Affiliate.CommissionOnTotal   = settings.AffiliateCommissionOnTotal;
            this.Affiliate.CommissionRate      = (decimal)settings.AffiliateCommissionRate;

            // CREATE NEW AFFILIATE GROUP
            if (newAffilate)
            {
                Group group = new Group();
                group.Name = string.Format("Affiliate [{0}]", this.Affiliate.Name);
                group.Save();
                AbleContext.Current.User.UserGroups.Add(new UserGroup(AbleContext.Current.User, group));
                AbleContext.Current.User.Save();
                this.Affiliate.Group = group;
            }

            this.Affiliate.Save();

            // SAVE TAXID FIELD
            User user = AbleContext.Current.User;

            user.TaxExemptionReference = TaxId.Text;
            user.Save();

            // SEND AFFILIATE REGISTRATION EMAIL IF SELF SIGNUP IS ENABLED
            if (settings.AffiliateAllowSelfSignup && newAffilate)
            {
                // SEND THE AFFILIATE SELF-SIGNUP EMAIL TO MERCHANT
                SendAffiliateEmail();

                // SEND THE AFFILIATE SELF-SIGNUP CONFIRMATION EMAIL TO CUSTOMER
                int           emailTemplateId = settings.AffiliateRegistrationEmailTemplateId;
                EmailTemplate template        = EmailTemplateDataSource.Load(emailTemplateId);
                if (template != null)
                {
                    template.Parameters.Add("store", AbleContext.Current.Store);
                    template.Parameters.Add("affiliate", this.Affiliate);
                    template.Send();
                }
            }

            if (newAffilate)
            {
                Response.Redirect("~/Members/MyAffiliateAccount.aspx");
            }
            SavedMessage.Visible = true;
        }
Example #22
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            Store store = AbleContext.Current.Store;
            StoreSettingsManager settings = store.Settings;

            // FULLTEXT SEARCH
            bool ftsIsInstalled = KeywordSearchHelper.IsFullTextSearchInstalled(false);
            bool ftsIsEnabled   = false;

            if (ftsIsInstalled)
            {
                ftsIsEnabled = KeywordSearchHelper.IsFullTextSearchEnabled(false);
                if (!ftsIsEnabled)
                {
                    // ATTEMPT TO ENABLE FULLTEXT SEARCH IF POSSIBLE
                    KeywordSearchHelper.EnableFullTextSearch(false);
                    ftsIsEnabled = KeywordSearchHelper.IsFullTextSearchEnabled(false);
                }
            }

            ListItem sqlFtsProviderItem = SearchProvider.Items.FindByValue("SqlFtsSearchProvider");

            if (sqlFtsProviderItem != null && !(ftsIsInstalled && ftsIsEnabled))
            {
                SearchProvider.Items.Remove(sqlFtsProviderItem);
            }

            bool authorizeNetCIMEnabled = PaymentGatewayDataSource.GetPaymentGatewayIdByClassId("CommerceBuilder.Payments.Providers.AuthorizeNetCIM.AuthNetCIMProvider, CommerceBuilder.AuthorizeNetCIM") > 0;

            if (!authorizeNetCIMEnabled)
            {
                tdPaymentStorage.Attributes.Add("class", "inactive");
                PaymentStorageLabel.Text = "Only available with Authorize.Net CIM gateway";
            }

            PaymentStorage.Enabled = authorizeNetCIMEnabled;

            if (!Page.IsPostBack)
            {
                // GENERAL
                StoreName.Text = store.Name;
                if (AbleContext.Current.User.IsSecurityAdmin)
                {
                    StoreUrl.Text           = store.StoreUrl;
                    StoreUrlLiteral.Visible = false;
                }
                else
                {
                    StoreUrlLiteral.Text = store.StoreUrl;
                    StoreUrl.Visible     = false;
                }
                if (!string.IsNullOrEmpty(settings.SiteDisclaimerMessage))
                {
                    SiteDisclaimerMessage.Text = settings.SiteDisclaimerMessage;
                }

                // VOLUME DISCOUNTS
                DiscountMode.SelectedIndex = (int)store.VolumeDiscountMode;

                // INVENTORY
                EnableInventory.Checked = settings.EnableInventory;
                InventoryPanel.Visible  = settings.EnableInventory;
                CurrentInventoryDisplayMode.SelectedIndex = settings.InventoryDisplayDetails ? 1 : 0;
                InStockMessage.Text               = settings.InventoryInStockMessage;
                OutOfStockMessage.Text            = settings.InventoryOutOfStockMessage;
                InventoryAvailabilityMessage.Text = settings.InventoryAvailabilityMessage;
                RestockNotificationLink.Text      = settings.InventoryRestockNotificationLink;

                IList <EmailTemplate> emailTemplates = EmailTemplateDataSource.LoadAll();
                foreach (EmailTemplate template in emailTemplates)
                {
                    RestockNotificationEmail.Items.Add(new ListItem(template.Name, template.Id.ToString()));
                }

                RestockNotificationEmail.ClearSelection();
                ListItem item = RestockNotificationEmail.Items.FindByValue(settings.InventoryRestockNotificationEmailTemplateId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }

                // ORDER SETTINGS
                UpdateNextOrderNumber(store);

                OrderIdIncrement.Text         = store.OrderIdIncrement.ToString();
                OrderMinAmount.Text           = (settings.OrderMinimumAmount > 0) ? settings.OrderMinimumAmount.ToString() : string.Empty;
                OrderMaxAmount.Text           = (settings.OrderMaximumAmount > 0) ? settings.OrderMaximumAmount.ToString() : string.Empty;
                EnableOnePageCheckout.Checked = settings.EnableOnePageCheckout;

                // GUEST CHECKOUT OPTIONS
                AllowGuestCheckout.Checked   = settings.AllowAnonymousCheckout;
                LimitedGuestCheckout.Checked = !settings.AllowAnonymousCheckoutForDigitalGoods && settings.AllowAnonymousCheckout;
                DisableGuestCheckout.Checked = !settings.AllowAnonymousCheckout;

                // CHECKOUT PAYMENT SETTINGS
                AllowOnlyFullPayments.Checked = !settings.AcceptOrdersWithInvalidPayment;
                IgnoreFailedPayments.Checked  = settings.AcceptOrdersWithInvalidPayment;
                AllowPartialPaymnets.Checked  = settings.EnablePartialPaymentCheckouts && !settings.AcceptOrdersWithInvalidPayment;

                EnableShipMessage.Checked             = settings.EnableShipMessage;
                EnableShipToMultipleAddresses.Checked = settings.EnableShipToMultipleAddresses;
                if (!string.IsNullOrEmpty(settings.CheckoutTermsAndConditions))
                {
                    CheckoutTerms.Text = settings.CheckoutTermsAndConditions;
                }

                EnableOrderNotes.Checked = settings.EnableCustomerOrderNotes;

                // UNITS
                WeightUnit.DataSource     = EnumToHashtable(typeof(CommerceBuilder.Shipping.WeightUnit));
                WeightUnit.DataTextField  = "Key";
                WeightUnit.DataValueField = "Value";
                WeightUnit.DataBind();

                MeasurementUnit.DataSource     = EnumToHashtable(typeof(CommerceBuilder.Shipping.MeasurementUnit));
                MeasurementUnit.DataTextField  = "Key";
                MeasurementUnit.DataValueField = "Value";
                MeasurementUnit.DataBind();

                item = WeightUnit.Items.FindByValue(store.WeightUnitId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }
                item = MeasurementUnit.Items.FindByValue(store.MeasurementUnitId.ToString());
                if (item != null)
                {
                    item.Selected = true;
                }
                BindTimeZone();

                PostalCodeCountries.Text = settings.PostalCodeCountries;

                // PRODUCTS PURCHASING
                ProductPurchasingDisabled.Checked = settings.ProductPurchasingDisabled;

                // WISHLISTS ENABLED
                WishlistsEnabled.Checked = settings.WishlistsEnabled;

                // SEARCH SETTINGS
                EnableWishlistSearch.Checked    = settings.WishlistSearchEnabled;
                MinimumSearchLength.Text        = settings.MinimumSearchLength.ToString();
                PopularSearchThreshold.Text     = settings.PopularSearchThreshold.ToString();
                CategorySearchDisplayLimit.Text = settings.CategorySearchDisplayLimit.ToString();

                item = SearchProvider.Items.FindByValue(ApplicationSettings.Instance.SearchProvider);
                if (item != null)
                {
                    item.Selected = true;
                }

                // RESTRICT STORE ACCESS
                ListItem option = RestrictStoreAccessOptions.Items.FindByValue(settings.RestrictStoreAccess.ToString());
                if (option != null)
                {
                    option.Selected = true;
                }


                IList <Group> allGroups        = GroupDataSource.LoadForStore(AbleContext.Current.StoreId, "Name ASC");
                IList <Group> nonAdminGroups   = allGroups.FindAll(grp => !grp.IsInRole(Role.AllAdminRoles)) as IList <Group>;
                IList <Group> authorizedGroups = allGroups.FindAll(grp => grp.IsInRole(Role.CustomerRoles));
                AuthorizedGroups.DataSource = nonAdminGroups as IList <Group>;
                AuthorizedGroups.DataBind();
                foreach (ListItem groupItem in AuthorizedGroups.Items)
                {
                    int groupId = AlwaysConvert.ToInt(groupItem.Value);
                    foreach (Group group in authorizedGroups)
                    {
                        if (groupId == group.Id)
                        {
                            groupItem.Selected = true; break;
                        }
                    }
                }

                PaymentStorage.Checked = settings.EnablePaymentProfilesStorage;

                EnableHtmlEditor.Checked = settings.EnableWysiwygEditor;
            }
        }