private void FillBody()
        {
            NewsletterDetails record = SiteProvider.Newsletters.GetNewsletterByID(this.ID);

            this.PlainTextBody = record.PlainTextBody;
            this.HtmlBody      = record.HtmlBody;
        }
        /// <summary>
        /// Sends a newsletter
        /// </summary>
        public static int SendNewsletter(string subject, string plainTextBody, string htmlBody)
        {
            Lock.AcquireWriterLock(Timeout.Infinite);
            Newsletter.TotalMails          = -1;
            Newsletter.SentMails           = 0;
            Newsletter.PercentageCompleted = 0.0;
            Newsletter.IsSending           = true;
            Lock.ReleaseWriterLock();

            // if the HTML body is an empty string, use the plain-text body converted to HTML
            if (htmlBody.Trim().Length == 0)
            {
                htmlBody = Helpers.ConvertToHtml(plainTextBody);
            }

            // create the record into the DB
            NewsletterDetails record = new NewsletterDetails(0, DateTime.Now,
                                                             BizObject.CurrentUserName, subject, plainTextBody, htmlBody);
            int ret = SiteProvider.Newsletters.InsertNewsletter(record);

            BizObject.PurgeCacheItems("newsletters_newsletters_" + DateTime.Now.ToShortDateString());

            // send the newsletters asynchronously
            object[] parameters = new object[] { subject, plainTextBody, htmlBody,
                                                 BizObject.CurrentUserName.ToLower() == "sampleeditor", HttpContext.Current };
            ParameterizedThreadStart pts = new ParameterizedThreadStart(SendEmails);
            Thread thread = new Thread(pts);

            thread.Name     = "SendEmails";
            thread.Priority = ThreadPriority.BelowNormal;
            thread.Start(parameters);

            return(ret);
        }
        /// <summary>
        /// Updates an existing newsletter
        /// </summary>
        public static bool UpdateNewsletter(int id, string subject, string plainTextBody, string htmlBody)
        {
            NewsletterDetails record = new NewsletterDetails(id, DateTime.Now, "", subject, plainTextBody, htmlBody);
            bool ret = SiteProvider.Newsletters.UpdateNewsletter(record);

            BizObject.PurgeCacheItems("newsletters_newsletter");
            return(ret);
        }
 /// <summary>
 /// Returns a Newsletter object filled with the data taken from the input NewsletterDetails
 /// </summary>
 private static Newsletter GetNewsletterFromNewsletterDetails(NewsletterDetails record)
 {
     if (record == null)
     {
         return(null);
     }
     else
     {
         return(new Newsletter(record.ID, record.AddedDate, record.AddedBy,
                               record.Subject, record.PlainTextBody, record.HtmlBody));
     }
 }
 /// <summary>
 /// Updates a newsletter
 /// </summary>
 public override bool UpdateNewsletter(NewsletterDetails newsletter)
 {
     using (SqlConnection cn = new SqlConnection(this.ConnectionString))
     {
         SqlCommand cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletter", cn);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value    = newsletter.ID;
         cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value    = newsletter.Subject;
         cmd.Parameters.Add("@PlainTextBody", SqlDbType.NText).Value = newsletter.PlainTextBody;
         cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value      = newsletter.HtmlBody;
         cn.Open();
         int ret = ExecuteNonQuery(cmd);
         return(ret == 1);
     }
 }
 /// <summary>
 /// Creates a new newsletter
 /// </summary>
 public override int InsertNewsletter(NewsletterDetails newsletter)
 {
     using (SqlConnection cn = new SqlConnection(this.ConnectionString))
      {
     SqlCommand cmd = new SqlCommand("tbh_Newsletters_InsertNewsletter", cn);
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value = newsletter.AddedDate;
     cmd.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value = newsletter.AddedBy;
     cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = newsletter.Subject;
     cmd.Parameters.Add("@PlainTextBody", SqlDbType.NText).Value = newsletter.PlainTextBody;
     cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = newsletter.HtmlBody;
     cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Direction = ParameterDirection.Output;
     cn.Open();
     int ret = ExecuteNonQuery(cmd);
     return (int)cmd.Parameters["@NewsletterID"].Value;
      }
 }
 /// <summary>
 /// Creates a new newsletter
 /// </summary>
 public override int InsertNewsletter(NewsletterDetails newsletter)
 {
     using (SqlConnection cn = new SqlConnection(this.ConnectionString))
     {
         SqlCommand cmd = new SqlCommand("tbh_Newsletters_InsertNewsletter", cn);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value   = newsletter.AddedDate;
         cmd.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value     = newsletter.AddedBy;
         cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value     = newsletter.Subject;
         cmd.Parameters.Add("@PlainTextBody", SqlDbType.NText).Value  = newsletter.PlainTextBody;
         cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value       = newsletter.HtmlBody;
         cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Direction = ParameterDirection.Output;
         cn.Open();
         int ret = ExecuteNonQuery(cmd);
         return((int)cmd.Parameters["@NewsletterID"].Value);
     }
 }
 /// <summary>
 /// Updates a newsletter
 /// </summary>
 public override bool UpdateNewsletter(NewsletterDetails newsletter)
 {
     using (SqlConnection cn = new SqlConnection(this.ConnectionString))
      {
     SqlCommand cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletter", cn);
     cmd.CommandType = CommandType.StoredProcedure;
     cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = newsletter.ID;
     cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = newsletter.Subject;
     cmd.Parameters.Add("@PlainTextBody", SqlDbType.NText).Value = newsletter.PlainTextBody;
     cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = newsletter.HtmlBody;
     cn.Open();
     int ret = ExecuteNonQuery(cmd);
     return (ret == 1);
      }
 }