Exemplo n.º 1
0
        /// <summary>
        /// Default Page Load Event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, System.EventArgs e)
        {
            Response.CacheControl = "private";
            Response.Expires      = 0;
            Response.AddHeader("pragma", "no-cache");
            Server.ScriptTimeout = 50000;
            SectionTitle         = "EMail Manager";

            //Images in mailings must have Absolute URLs
            radDescription.EnableFilter(Telerik.Web.UI.EditorFilters.MakeUrlsAbsolute);

            if (AppLogic.ProductIsMLX())
            {
                Response.Redirect(AppLogic.AdminLinkUrl("restrictedfeature.aspx"));
            }

            if (!IsPostBack)
            {
                bool processing = false;

                //Check to see if we have any mailing manager jobs running
                if (AsyncDataStore.RetrieveRecord(Session.SessionID) != null)
                {
                    //The data store DOES contain records - lets see if it is completed
                    try
                    {
                        String[] Status = AsyncDataStore.RetrieveRecord(Session.SessionID).ToString().Split(',');

                        if (Status[0] != Status[1])
                        {
                            //Not completed.  Show status, and disable buttons.
                            ifrStatus.Visible           = true;
                            ifrStatus.Attributes["src"] = "asyncstatus.aspx?id=" + Session.SessionID;
                            ltError.Text = AppLogic.GetString("admin.mailingmgr.BulkMailSending", ThisCustomer.LocaleSetting);

                            btnRemoveEmail.Enabled = false;
                            btnSend.Enabled        = false;

                            processing = true;
                        }
                    }
                    catch { }
                }

                if (!processing && CommonLogic.QueryStringNativeInt("completed") == 1)
                {
                    //Page reloaded due to having completed processing a bulk send

                    ltError.Text = AppLogic.GetString("admin.asyncstatus.Complete", ThisCustomer.LocaleSetting);
                    divStatus.Attributes["class"] = "noticeMsg";
                }
            }
            else
            {
            }
        }
        /// <summary>
        /// Uses the ID parameter to retrieve async process status from a static hashtable and reports the status here
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            string sessID = CommonLogic.QueryStringCanBeDangerousContent("id");

            if (AsyncDataStore.RetrieveRecord(sessID) != null)
            {
                String[] Status = AsyncDataStore.RetrieveRecord(sessID).ToString().Split(',');

                if (Status[0] == Status[1])
                {
                    ltlTimeRemaining.Text = AppLogic.GetString("admin.asyncstatus.Complete", ThisCustomer.LocaleSetting);
                    ltlNumeric.Text       = String.Empty;
                    ltlPercent.Text       = String.Empty;
                    ltlEstRemaining.Text  = String.Empty;
                }
                else
                {
                    //Not completed.  Set the page to refresh
                    Response.AddHeader("Refresh", "5");

                    decimal  sent      = Convert.ToDecimal(Status[0]);
                    decimal  total     = Convert.ToDecimal(Status[1]);
                    DateTime startTime = Convert.ToDateTime(Status[2]);

                    decimal percentComplete = Math.Round(((sent / total) * 100), 2);

                    DateTime currentTime  = DateTime.Now;
                    decimal  elapsed      = (decimal)currentTime.Subtract(startTime).TotalSeconds;
                    decimal  opsPerSecond = ((decimal)elapsed / (decimal)sent);

                    TimeSpan remaining = TimeSpan.FromSeconds((double)(opsPerSecond * (total - sent)));

                    StringBuilder displayTime = new StringBuilder();

                    if (remaining.Days > 0)
                    {
                        displayTime.Append(remaining.Days.ToString() + " " + AppLogic.GetString("admin.common.days", ThisCustomer.LocaleSetting));
                        displayTime.Append(" ");
                    }
                    if (remaining.Hours > 0)
                    {
                        displayTime.Append(remaining.Hours.ToString() + " " + AppLogic.GetString("admin.common.Hours", ThisCustomer.LocaleSetting));
                        displayTime.Append(" ");
                    }
                    if (remaining.Minutes > 0)
                    {
                        displayTime.Append(remaining.Minutes.ToString() + " " + AppLogic.GetString("admin.common.Minutes", ThisCustomer.LocaleSetting));
                        displayTime.Append(" ");
                    }
                    if (remaining.Seconds > 0)
                    {
                        displayTime.Append(remaining.Seconds.ToString() + " " + AppLogic.GetString("admin.common.Seconds", ThisCustomer.LocaleSetting));
                        displayTime.Append(" ");
                    }


                    ltlNumeric.Text       = String.Format(AppLogic.GetString("admin.asyncstatus.SendingXofY", ThisCustomer.LocaleSetting), Status[0], Status[1]);
                    ltlPercent.Text       = percentComplete.ToString() + "%";
                    ltlTimeRemaining.Text = displayTime.ToString();;
                }
            }
        }