📄 advertisement.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 + -