Taylohtio/AlertManager/SPSolutions.SharePoint.Aler.../SPSolutions.SharePoint/SPSolutions.SharePoint.Net..../SPListMailDefinitionProvide...

74 lines
2.0 KiB
C#

using Microsoft.SharePoint;
using SPSolutions.Net.Mail;
using SPSolutions.SharePoint.Resources;
using System;
using System.Collections.Specialized;
using System.Configuration;
namespace SPSolutions.SharePoint.Net.Mail
{
public class SPListMailDefinitionProvider : MailDefinitionProvider
{
private string m_listName;
private string m_title;
private string ListName
{
get
{
return this.m_listName;
}
}
private string Title
{
get
{
return this.m_title;
}
}
public override void Initialize(string name, NameValueCollection config)
{
if (config == null)
{
throw new ArgumentNullException("config");
}
base.Initialize(name, config);
this.m_listName = config["ListName"];
if (string.IsNullOrEmpty(this.m_listName))
{
throw new ConfigurationErrorsException(ErrorsRes.ConfigurationErrorsException_NoListName);
}
config.Remove("ListName");
this.m_title = config["Title"];
config.Remove("Title");
}
public override MailDefinition RetrieveMailDefinition(string containerName)
{
return this.RetrieveMailDefinition(SPContext.Current.Web, containerName);
}
public MailDefinition RetrieveMailDefinition(SPWeb web, string containerName)
{
SPList sPList = web.Lists[this.ListName];
SPQueryBuilder sPQueryBuilder = new SPQueryBuilder();
sPQueryBuilder.Conditions.Add(new SPQueryCondition(SPQueryConditionTypes.EqualTo, "MailBodyContainerName", "Text", containerName));
SPQuery sPQuery = new SPQuery();
sPQuery.Query=(sPQueryBuilder.QueryXml);
SPListItemCollection items = sPList.GetItems(sPQuery);
if (items == null || items.Count == 0)
{
throw new SPException(string.Format("Mail Definition '{0}' could not be found.", containerName));
}
object obj = items[0]["MailSubject"];
object obj2 = items[0]["MailBody"];
if (obj == null || obj2 == null)
{
throw new SPException("Mail objects are null");
}
return new MailDefinition
{
Subject = (string)obj,
Body = (string)obj2
};
}
}
}