using System; using System.Linq; using System.Xml.Linq; namespace Website.DataAccess { public class XmlContentProvider : IContentProvider { public const string FILE_PATH_APP_SETTING = "XmlContentProvider.FilePath"; private XDocument contentData; public XmlContentProvider() : this(Parse.AppSetting(FILE_PATH_APP_SETTING)) { } public XmlContentProvider(string filePath) { LoadContentData(filePath); } private void LoadContentData(string filePath) { contentData = XDocument.Load(filePath); } public IContent GetById(int id) { return (from c in contentData.Elements("ContentBlock") where c.Attribute("ID").Value == id.ToString() select CreateContent(c)).FirstOrDefault(); } public IContent GetByAlias(string alias) { return (from c in contentData.Elements("ContentBlock") where c.Attribute("Alias") != null && c.Attribute("Alias").Value.Equals(alias, StringComparison.OrdinalIgnoreCase) select CreateContent(c)).FirstOrDefault(); } private static IContent CreateContent(XElement el) { return new Content { ID = ((int)el.Attribute("ID")), Title = el.Element("Title").Value, Html = el.Element("Html").Value, Alias = (el.Element("Alias") != null ? el.Element("Alias").Value : null) }; } public void Save(IContent content) { throw new NotImplementedException(); } } }