⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subscription.cs

📁 wrox c#高级编程
💻 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 + -