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

📄 advertisement.cs

📁 wrox c#高级编程
💻 CS
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using Wrox.WebModules.Data;
using Wrox.WebModules.AdsManager;
using System.Xml;

namespace Wrox.WebModules.AdsManager.Data
{
	/// <summary>
	/// Summary description for Advertisement.
	/// </summary>
	public class Advertisement: Wrox.WebModules.Data.DbObject
	{
		public Advertisement(string newConnectionString): base(newConnectionString)
		{ }	

		public DataRow RetrieveAd(int advertisementId)
		{
			SqlParameter[] parameters = { new SqlParameter("@AdvertisementID", SqlDbType.Int, 4) };
			parameters[0].Value = advertisementId;

			using (DataSet ads = RunProcedure( "sp_AdsManager_GetAdvertDetails", parameters, "Advertisements" ))
			{
				return ads.Tables[0].Rows[0];
			}			
		}

		/// <summary>
		/// Records an impression for a given advertisement. An impression is a single display
		/// of an advertisement to a viewer's browser.
		/// </summary>
		/// <param name="advertisementId">advertisementId for which to record the Impression.</param>
		public void RecordImpression(int advertisementId)
		{
			int rowsAffected;
			SqlParameter[] parameters = { new SqlParameter("@AdvertisementID", SqlDbType.Int, 4) };
			parameters[0].Value = advertisementId;

			RunProcedure("sp_AdsManager_RecordImpression", parameters, out rowsAffected);
		}

		public void RecordClick(int advertisementId)
		{
			int rowsAffected;
			SqlParameter[] parameters = { new SqlParameter("@AdvertisementId", SqlDbType.Int, 4) };
			parameters[0].Value = advertisementId;

			RunProcedure("sp_AdsManager_RecordClick", parameters, out rowsAffected);
		}

		public void Create(string imageUrl, string trueNavigateUrl, string alternateText, string keyword,
			int companyId, string description, string rotatorFile)
		{
			int rowsAffected;
			SqlParameter[] parameters = { new SqlParameter("@CompanyID", SqlDbType.Int, 4),
			  							  new SqlParameter("@Description", SqlDbType.VarChar, 255),
										  new SqlParameter("@TrueNavigateUrl", SqlDbType.VarChar, 255),
										  new SqlParameter("@AdvertisementID", SqlDbType.Int, 4)};
			parameters[0].Value = companyId;
			parameters[1].Value = description;
			parameters[2].Value = trueNavigateUrl;
			parameters[3].Direction = ParameterDirection.Output;
		
			RunProcedure("sp_AdsManager_CreateAdvertisement", parameters, out rowsAffected);

			// now that the new ad is in the DB, put the rest of the details in the Rotator's XML file.
			Configuration.ModuleSettings settings = Configuration.ModuleConfig.GetSettings();
			
			XmlDocument rotatorDom = new XmlDocument();
			rotatorDom.Load(rotatorFile);
			XmlElement temp;
			XmlElement newAd = rotatorDom.CreateElement("Ad");
			
			temp = rotatorDom.CreateElement("ImageUrl");			
			temp.InnerText = imageUrl;
			newAd.AppendChild( temp );
			
			temp = rotatorDom.CreateElement("NavigateUrl");
			temp.InnerText = settings.PassThroughPage + "?AD=" + parameters[3].Value.ToString();
			newAd.AppendChild( temp );

			temp = rotatorDom.CreateElement("AlternateText");
			temp.InnerText = alternateText;
			newAd.AppendChild( temp );

			temp = rotatorDom.CreateElement("Keyword");
			temp.InnerText = keyword;
			newAd.AppendChild( temp );

			temp = rotatorDom.CreateElement("Impressions");
			temp.InnerText = "1";
			newAd.AppendChild( temp );

			rotatorDom.DocumentElement.AppendChild( newAd );
			rotatorDom.Save( rotatorFile );
		}

		public void Update( int advertisementId, string imageUrl, string trueNavigateUrl, string alternateText,
			string keyword, string description, int impressions, bool active, string rotatorFile)
		{
			int rowsAffected;
			SqlParameter[] parameters = { new SqlParameter("@AdvertisementID", SqlDbType.Int, 4),
										  new SqlParameter("@TrueNavigateUrl", SqlDbType.VarChar, 255),
										  new SqlParameter("@Description", SqlDbType.VarChar, 255),
										  new SqlParameter("@Active", SqlDbType.Bit) };
			parameters[0].Value = advertisementId;
			parameters[1].Value = trueNavigateUrl;
			parameters[2].Value = description;
			parameters[3].Value = active;

			RunProcedure("sp_AdsManager_UpdateAdvertisement", parameters, out rowsAffected);

			Configuration.ModuleSettings settings = Configuration.ModuleConfig.GetSettings();

			XmlDocument rotatorDom = new XmlDocument();
			rotatorDom.Load(rotatorFile);
			string xPathFind = "//Ad[NavigateUrl=\"" + settings.PassThroughPage + "?AD=" + advertisementId.ToString() +"\"]";
			XmlElement currentAd = (XmlElement)rotatorDom.DocumentElement.SelectSingleNode( xPathFind );
			XmlElement temp;

			temp = (XmlElement)currentAd.SelectSingleNode("ImageUrl");
			temp.InnerText = imageUrl;

			temp = (XmlElement)currentAd.SelectSingleNode("AlternateText");
			temp.InnerText = alternateText;

			temp = (XmlElement)currentAd.SelectSingleNode("Keyword");
			temp.InnerText = keyword;

			temp = (XmlElement)currentAd.SelectSingleNode("Impressions");
			temp.InnerText = impressions.ToString();

			rotatorDom.Save( rotatorFile );
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -