📄 subscription.cs
字号:
using System;
using System.Data;
using System.Web.Mail;
using System.Data.SqlClient;
namespace Wrox.WebModules.MailingLists.Business
{
/// <summary>
/// Summary description for Subscription.
/// </summary>
public sealed class Subscription : Wrox.WebModules.Business.BizObject
{
private Configuration.ModuleSettings settings;
private int subscriptionID;
private int userID;
private int listID;
private bool active;
private string firstName;
private string lastName;
private string email;
private DateTime addedDate;
// constructors
public Subscription()
{
settings = Configuration.ModuleConfig.GetSettings();
ResetProperties();
}
public Subscription(int existingSubscriptionID)
{
settings = Configuration.ModuleConfig.GetSettings();
subscriptionID = existingSubscriptionID;
LoadFromID();
}
public Subscription(Subscription existingSubscription)
{
settings = Configuration.ModuleConfig.GetSettings();
subscriptionID = existingSubscription.ID;
LoadFromID();
}
public Subscription(int subscrListID, string subscrEmail)
{
settings = Configuration.ModuleConfig.GetSettings();
LoadFromEmail(subscrListID, subscrEmail);
}
// retrieve the values for the properties
private void LoadFromID()
{
Data.Subscriptions subscriptions = new Data.Subscriptions(settings.ConnectionString);
Data.SubscriptionDetails details = subscriptions.GetDetails(subscriptionID);
subscriptionID = details.SubscriptionID;
userID = details.UserID;
listID = details.ListID;
active = details.Active;
firstName = details.FirstName;
lastName = details.LastName;
email = details.Email;
addedDate = details.AddedDate;
}
public int LoadFromID(int existingSubscriptionID)
{
subscriptionID = existingSubscriptionID;
LoadFromID();
return subscriptionID;
}
// load the subscription info from the specialied MailingList and subscremail address
public int LoadFromEmail(int subscrListID, string subscrEmail)
{
Data.Subscriptions subscriptions = new Data.Subscriptions(settings.ConnectionString);
subscriptionID = subscriptions.GetSubscriptionID(subscrListID, subscrEmail);
if (subscriptionID == -1)
ResetProperties();
else
LoadFromID();
return subscriptionID;
}
// reset the properties
private void ResetProperties()
{
subscriptionID = -1;
userID = -1;
listID = -1;
active = false;
firstName = "";
lastName = "";
email = "";
addedDate = new DateTime();
}
// create a new record
public int Create(int subscrListID, string subscrFirstName, string subscrLastName, string subscrsubscremail, bool subscrActive)
{
Data.Subscriptions subscriptions = new Data.Subscriptions(settings.ConnectionString);
subscriptionID = subscriptions.Add(subscrListID, subscrFirstName, subscrLastName,
subscrsubscremail, subscrActive);
LoadFromID();
return subscriptionID;
}
// update the record represented by this object
public bool Update()
{
Data.Subscriptions subscriptions = new Data.Subscriptions(settings.ConnectionString);
return subscriptions.Update(subscriptionID, firstName, lastName, email, active);
}
// delete the record represented by this object
public bool Delete()
{
Data.Subscriptions subscriptions = new Data.Subscriptions(settings.ConnectionString);
bool ret = subscriptions.Delete(subscriptionID);
ResetProperties();
return ret;
}
// add a new subscription, but also send the confirmation if required
public int Subscribe(int subscrListID, string subscrFirstName, string subscrLastName,
string subscrEmail, out string subjectText, out string messageText)
{
subjectText = "";
messageText = "";
if (subscrEmail.Trim() == "") return -1;
// get the subject/body of the subscription message
subjectText = settings.SubscrSubject;
messageText = settings.SubscrMessage;
// get the subscription for this list, with the specified e-mail, if any
Business.Subscription subscription = new Business.Subscription(subscrListID, subscrEmail);
// if the subscription already exists...
if (subscription.ID != -1)
{
// set it active
subscription.Active = true;
subscription.Update();
}
else
{
// otherwise add the subscription
subscription.Create(subscrListID, subscrFirstName, subscrLastName, subscrEmail, true);
}
// replace the tags of this new subscriber
messageText = Helper.ProcessSubscriptionTags(messageText, subscription.ID);
// replace the list's and settings tags
subjectText = Helper.ProcessListTags(subjectText, subscrListID);
messageText = Helper.ProcessListTags(messageText, subscrListID);
messageText = Helper.ProcessSettingsTags(messageText);
// if a confirmation e-mail is required
if (settings.SendSubscrEmail)
{
// create a new message
MailMessage mailMsg = new MailMessage();
mailMsg.From = settings.SenderName + " <" + settings.SenderEmail + ">";
// set the "To" field to the subscriber's e-mail
mailMsg.To = subscrEmail;
// set the Subject/body to the subject/body created for the confirmation page
mailMsg.Subject = subjectText;
mailMsg.Body = messageText;
// send the mail
SmtpMail.Send(mailMsg);
}
if (subscription.ID == -1)
ResetProperties();
else
LoadFromID(subscription.ID);
return subscriptionID;
}
// remove a subscription, but also send the confirmation if required
public bool Unsubscribe(int subscrListID, string subscrEmail,
out string subjectText, out string messageText)
{
subjectText = "";
messageText = "";
if (subscrEmail.Trim() == "") return false;
// get the subscription for this list, with the specified e-mail, if any
Business.Subscription subscription = new Business.Subscription(subscrListID, subscrEmail);
// if the subscription does not exists...
if (subscription.ID == -1)
{
subjectText = "There is no subscription with the specified e-mail address";
messageText = "";
return false;
}
// get the subject/body of the subscription message
subjectText = settings.UnsubscrSubject;
messageText = settings.UnsubscrMessage;
// replace the tags of this subscription. This has to be done
// BEFORE removing the subscription
messageText = Business.Helper.ProcessSubscriptionTags(messageText, subscription.ID);
// remove or inactivate the subscription, according to the UnsubscrAction setting
if (settings.UnsubscrAction == Configuration.UnsubscrActionType.Remove)
subscription.Delete();
else
{
subscription.Active = false;
subscription.Update();
}
// replace the list's and settings tags
subjectText = Helper.ProcessListTags(subjectText, subscrListID);
messageText = Helper.ProcessListTags(messageText, subscrListID);
messageText = Helper.ProcessSettingsTags(messageText);
// if a confirmation subscremail is required
if (settings.SendUnsubscrEmail)
{
// create a new message
MailMessage mailMsg = new MailMessage();
mailMsg.From = settings.SenderName + " <" + settings.SenderEmail + ">";
// set the "To" field to the subscriber's subscremail
mailMsg.To = subscrEmail;
// set the Subject/body to the subject/body created for the confirmation page
mailMsg.Subject = subjectText;
mailMsg.Body = messageText;
// send the mail
SmtpMail.Send(mailMsg);
}
ResetProperties();
return true;
}
// PROPERTIES DEFINED BELOW
public int ID
{
get { return subscriptionID; }
}
public int UserID
{
get { return userID; }
}
public int ListID
{
get { return listID; }
}
public Business.List List
{
get { return new List(listID); }
}
public string Email
{
get { return email; }
set { email = value; }
}
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
public bool Active
{
get { return active; }
set { active = value; }
}
public DateTime AddedDate
{
get { return addedDate; }
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -