private void CreateDatabaseEmailProcessor(IDnaLogger logger) { DnaDataReaderCreator theGuideDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_TheGuide); int interval = Properties.Settings.Default.DatabaseEmailProcessor_Interval; int numThreads = Properties.Settings.Default.DatabaseEmaiProcessor_NumThreads; int batchSize = Properties.Settings.Default.DatabaseEmaiProcessor_BatchSize; var smtpHostname = Properties.Settings.Default.DatabaseEmailProcessor_SMTPHostname; var smtpSslEnable = Properties.Settings.Default.DatabaseEmailProcessor_SMTPSslEnable; var smtpUsername = Properties.Settings.Default.DatabaseEmailProcessor_SMTPUsername; var smtpPassword = Properties.Settings.Default.DatabaseEmailProcessor_SMTPPassword; var persistentErrMsgSnippet = Properties.Settings.Default.DatabaseEmailProcessor_PersistentErrorMessageSnippet; var databaseEMailProcessor = DatabaseEmailProcessor.CreateDatabaseEmailProcessor(logger, theGuideDnaDataReaderCreator, interval, numThreads, batchSize, smtpHostname, smtpUsername, smtpPassword, smtpSslEnable); DatabaseEmailProcessor.PersistentErrorMsgSnippet = persistentErrMsgSnippet; databaseEMailProcessor.Start(); }
public void Initialise() { SnapshotInitialisation.RestoreFromSnapshot(); SetupTestData(); InitialiseMockedInputContext(); var dnaDataReader = new DnaDataReaderCreator(DnaMockery.DnaConfig.ConnectionString); var usg = new UserGroups(dnaDataReader, _context.Diagnostics, CacheFactory.GetCacheManager("Memcached"),null, null); }
private void CreateBIEventProcessor(IDnaLogger logger) { DnaDataReaderCreator theGuideDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_TheGuide); DnaDataReaderCreator RiskDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_RiskMod); int interval = Properties.Settings.Default.BIEventsProcessor_Interval; bool disableRiskMod = Properties.Settings.Default.BIEventsProcessor_DisableRiskMod; bool recordRiskModDecisionsOnPost = Properties.Settings.Default.BIEventsProcessor_RecordRiskModDecisionsOnPost; int numThreads = Properties.Settings.Default.BIEventsProcessor_NumThreads; var biEventProc = BIEventProcessor.CreateBIEventProcessor(logger, theGuideDnaDataReaderCreator, RiskDnaDataReaderCreator, interval, disableRiskMod, recordRiskModDecisionsOnPost, numThreads); biEventProc.Start(); }
private void CreateDatabaseEmailProcessor(IDnaLogger logger) { DnaDataReaderCreator theGuideDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_TheGuide); int interval = Properties.Settings.Default.DatabaseEmailProcessor_Interval; int numThreads = Properties.Settings.Default.DatabaseEmaiProcessor_NumThreads; int batchSize = Properties.Settings.Default.DatabaseEmaiProcessor_BatchSize; string smtpSettings = Properties.Settings.Default.DatabaseEmailProcessor_SMTPSettings; int maxRetryAttempts = Properties.Settings.Default.DatabaseEmailProcessor_MaxRetryAttempts; var databaseEMailProcessor = DatabaseEmailProcessor.CreateDatabaseEmailProcessor(logger, theGuideDnaDataReaderCreator, interval, numThreads, batchSize, smtpSettings, maxRetryAttempts); databaseEMailProcessor.Start(); }
/// <summary> /// Used to process the current request. /// </summary> public override void ProcessRequest() { IDnaDataReaderCreator creator = new DnaDataReaderCreator(AppContext.TheAppContext.Config.ConnectionString, AppContext.TheAppContext.Diagnostics); ICacheManager cache = CacheFactory.GetCacheManager(); int entryId = InputContext.GetParamIntOrZero("h2g2id", "Get the id of the article we want to view"); //this is a clutch until we unify user objects BBC.Dna.Objects.User viewingUser = InputContext.ViewingUser.ConvertUser(); //create article Article article = Article.CreateArticle(cache, creator, viewingUser, entryId, false, true); PageUi pageUi = PageUi.GetPageUi(creator, article, viewingUser); // Check to see if the guideentry is deleted before adding the forum to the page if (!article.IsDeleted) { ArticleForum articleForum = new ArticleForum(); if (article.ForumStyle == 1) { // Get the posts for the forum articleForum.ForumThreadPosts = ForumThreadPosts.CreateThreadPosts(creator, cache, viewingUser, InputContext.TheSiteList, article.ArticleInfo.SiteId,article.ArticleInfo.ForumId, 0, 10, 0, 0, true, false, false); } else { //get the threads for the article articleForum.ForumThreads = ForumThreads.CreateForumThreads(cache, creator, InputContext.TheSiteList, article.ArticleInfo.ForumId, 10, 0, 0, false, ThreadOrder.CreateDate, viewingUser, false, false); } if (articleForum != null) { SerialiseAndAppend(articleForum, String.Empty); } } // Now add the guide to the article SerialiseAndAppend(pageUi, String.Empty); SerialiseAndAppend(article, String.Empty); }
/// <summary> /// Creates an AppContext, given the root path of the app, where it can find config info /// </summary> /// <param name="rootPath">Path where app lives</param> public AppContext(string rootPath) { _dnaConfig = new DnaConfig(rootPath); //_dnaConfig.Initialise(); _dnaAppDiagnostics = new DnaDiagnostics(-1, DateTime.Now); if (WebConfigurationManager.AppSettings["maxrequests"] != null) { _maximumRequestCount = Convert.ToInt32(WebConfigurationManager.AppSettings["maxrequests"]); } ReaderCreator = new DnaDataReaderCreator(_dnaConfig.ConnectionString, _dnaAppDiagnostics); }
public void ShouldStoreSiteNotes() { int expectedSiteID = 60; string notes = "Sample site notes, random value = " + DateTime.Now.Ticks + "."; int expectedUserID = 123456789; IDnaDiagnostics mockedDiagnostics = _mocks.DynamicMock<IDnaDiagnostics>(); string connectionString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString; IDnaDataReaderCreator readerCreator = new DnaDataReaderCreator(connectionString, mockedDiagnostics); Site.CreateSiteNotes(expectedSiteID, notes, expectedUserID, readerCreator); using (IDnaDataReader reader = readerCreator.CreateDnaDataReader("")) { string sql = "SELECT TOP 1 * FROM SiteUpdate ORDER BY UpdateID DESC"; reader.ExecuteDEBUGONLY(sql); Assert.IsTrue(reader.HasRows, "Failed to find site note just created"); Assert.IsTrue(reader.Read(), "Failed to read data from database query"); string siteNotes = reader.GetString("notes"); int siteID = reader.GetInt32("siteid"); int userID = reader.GetInt32("userid"); Assert.AreEqual(expectedSiteID, siteID); Assert.AreEqual(expectedUserID, userID); Assert.IsTrue(siteNotes.StartsWith(notes)); } }
public void Integration_CommentActivityEndToEnd_HttpStatusOK() { using (new TransactionScope()) { //Setup up a comment forum for test using createcommentforum sp string connectionString = Properties.Settings.Default.guideConnectionString; IDnaDataReaderCreator creator = new DnaDataReaderCreator(connectionString); var uid = Guid.NewGuid().ToString(); var url = "http://www.bbc.co.uk/"; var title = "Test comment forum title"; var siteId = "h2g2"; SetupSiteOptions(creator, 1, true, "", "", "", false); CreateCommentForum(creator, uid, url, title, siteId); //Add comment to comment forum var hash = Guid.NewGuid().ToString(); var content = "content"; var userId = 6; CreateComment(creator, uid, userId, content, hash); SetupTestData(creator, siteId); ProcessEvents(creator); var mocks = new MockRepository(); var httpClientCreator = mocks.Stub<IDnaHttpClientCreator>(); var httpClient = mocks.Stub<IDnaHttpClient>(); SetupResult.For(httpClientCreator.CreateHttpClient()).Return(httpClient); StubHttpClientPostMethod(httpClient); var logger = MockRepository.GenerateStub<IDnaLogger>(); mocks.ReplayAll(); var processor = CreateSnesActivityProcessor(creator, logger, httpClientCreator); processor.ProcessEvents(null); httpClient.AssertWasCalled(client => client.Post(new Uri("", UriKind.Relative), HttpContent.Create("")), op => op.Constraints(Is.Anything(),Is.Anything())); } }
private void InitialiseFromConfig(string rootPath) { if (rootPath == null) { //Use the config frm the dnapages directory. rootPath = TestConfig.GetConfig().GetRipleyServerPath(); } if (_signInComponent == null) { if (_useIdentity) { string identityWebServiceConnetionDetails = GetConnectionDetails["IdentityURL"].ConnectionString; if (_debugUserDetails.Length == 0) { _signInComponent = new DnaIdentityWebServiceProxy.IdentityRestSignIn(identityWebServiceConnetionDetails, ""); Console.WriteLine("Using REAL Identity signin system"); } else { _signInComponent = new DnaIdentityWebServiceProxy.IdentityDebugSigninComponent(_debugUserDetails); Console.WriteLine("Using DEBUG Identity signin system"); } } else { throw new Exception("SSO Sign in is nologer supported! Please rewrite your test to use identity."); } } if (_dnaConfig == null) { _dnaConfig = new DnaConfig(rootPath); //_dnaConfig.Initialise(); string dir = System.Environment.CurrentDirectory + @"\logs\"; Directory.CreateDirectory(dir); DnaDiagnostics.Initialise(dir, "DNATestUtils"); DnaDiagnostics.WriteHeader("TEST-FullInputContext"); } ReaderCreator = new DnaDataReaderCreator(_dnaConfig.ConnectionString, _dnaDiagnostics); _siteList = new SiteList(ReaderCreator, dnaDiagnostics, CacheFactory.GetCacheManager(), null, null); Statistics.InitialiseIfEmpty(); ProfanityFilterTests.InitialiseProfanities(); }
private string GetDataBaseUserDetails(string userID) { StringBuilder details = new StringBuilder(); IDnaDataReaderCreator dataReaderCreator = new DnaDataReaderCreator(GetDataBaseConnectionDetails()); try { using (IDnaDataReader reader = dataReaderCreator.CreateDnaDataReader("")) { reader.ExecuteDEBUGONLY("SELECT * FROM SignInUserIDMapping sim JOIN Users u ON u.UserID = sim.DNAUserID WHERE IdentityUserID = '" + userID + "'"); if (reader.HasRows && reader.Read()) { details.Append("<signInDetails>"); string loginName = reader.GetStringNullAsEmpty("loginname"); details.Append(string.Format("<{0}>{1}</{0}>", "logInName", loginName)); string identityUserID = reader.GetStringNullAsEmpty("IdentityUserID"); details.Append(string.Format("<{0}>{1}</{0}>", "identityUserID", identityUserID)); string displayName = reader.GetStringNullAsEmpty("username"); details.Append(string.Format("<{0}>{1}</{0}>", "displayName", displayName)); details.Append(string.Format("<{0}>{1}</{0}>", "email", reader.GetStringNullAsEmpty("email"))); details.Append(string.Format("<{0}>{1}</{0}>", "cookie", identityUserID.ToString() + "|" + loginName + "|" + displayName + "|0|DEBUG-IDENTITY-COOKIE")); details.Append(string.Format("<{0}>{1}</{0}>", "secureCookie", "HTTPS-DEBUG-IDENTITY-COOKIE")); details.Append(string.Format("<{0}>{1}</{0}>", "lastUpdated", DateTime.Now.AddYears(SyncDetails ? 1 : -1).ToString())); details.Append("</signInDetails>"); } else { LastError = "Failed to find identity user (" + userID.ToString() + ") in the database!"; } } } catch (Exception ex) { LastError = "Failed to find identity user (" + userID.ToString() + ") in the database! " + ex.Message; } return details.ToString(); }
public static IDnaDataReaderCreator CreateDatabaseReaderCreator() { DnaDataReaderCreator action = new DnaDataReaderCreator(_config.ConnectionString); return action; }
private void SetupDataBaseMockedDataReaderCreator(out IDnaDataReaderCreator readerCreator) { IDnaDiagnostics mockedDiagnostics = _mocks.DynamicMock<IDnaDiagnostics>(); string connectionString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString; readerCreator = new DnaDataReaderCreator(connectionString, mockedDiagnostics); }
/// <summary> /// Generates XML for ModeratePost page. /// </summary> private void GenerateXml( bool alerts, bool referrals, bool locked, bool fastMod, int userId, int modClassId, int postId, int show ) { XmlElement postMod = AddElementTag(RootElement, "POSTMODERATION"); AddAttribute(postMod, "MODCLASSID", modClassId); if (alerts) { AddAttribute(postMod, "ALERTS", 1); } if (referrals) { AddAttribute(postMod, "REFERRALS", 1); } if (locked) { AddAttribute(postMod, "LOCKEDITEMS", 1); } if (fastMod) { AddAttribute(postMod, "FASTMOD", 1); } string storedProcedureName = "getmoderationposts"; if (modClassId > 0) { var moderationClassList = ModerationClassListCache.GetObject(); var modClass = moderationClassList.ModClassList.First(x => x.ClassId == modClassId); if (modClass != null) { switch(modClass.ItemRetrievalType) { case ModerationRetrievalPolicy.LIFO: storedProcedureName = "getmoderationpostsmostrecentfirst"; break; case ModerationRetrievalPolicy.PriorityFirst: storedProcedureName = "getmoderationpostsfastmodfirst"; break; default: storedProcedureName = "getmoderationposts"; break; } } } using (IDnaDataReader dataReader = InputContext.CreateDnaDataReader(storedProcedureName)) { if (referrals) { dataReader.AddParameter("status", ModerationItemStatus.Refer); } dataReader.AddParameter("userid", userId); dataReader.AddParameter("alerts", alerts); dataReader.AddParameter("lockeditems", locked); dataReader.AddParameter("issuperuser", InputContext.ViewingUser.IsSuperUser); dataReader.AddParameter("modclassid", modClassId); if (postId > 0) { dataReader.AddParameter("postid", postId); } dataReader.AddParameter("duplicatecomplaints", postId > 0 && alerts); dataReader.AddParameter("show", show); dataReader.AddParameter("fastmod", fastMod); dataReader.Execute(); if (!dataReader.HasRows) { AddAttribute(postMod, "COUNT", 0); } if (dataReader.Read()) { AddAttribute(postMod, "COUNT", dataReader.GetInt32NullAsZero("count")); do { XmlElement post = AddElementTag(postMod, "POST"); if (!dataReader.IsDBNull("commentforumurl")) { // Create a link to the comment forum to view item in context. String commentForumUrl = dataReader.GetStringNullAsEmpty("commentforumurl"); int defaultShow = InputContext.GetSiteOptionValueInt(dataReader.GetInt32NullAsZero("siteid"), "commentforum", "defaultshow"); int postIndex = dataReader.GetInt32NullAsZero("postindex"); commentForumUrl += @"?dnafrom=" + postIndex + @"&dnato=" + Convert.ToString(postIndex + defaultShow - 1) + @"#P" + Convert.ToString(dataReader.GetInt32NullAsZero("entryid")); AddAttribute(post, "COMMENTFORUMURL", commentForumUrl); } if (!dataReader.IsDBNull("parent")) { AddAttribute(post, "INREPLYTO", dataReader.GetInt32("parent")); } AddAttribute(post, "POSTID", dataReader.GetInt32NullAsZero("entryid")); int modTermMappingId = 0; modTermMappingId = Convert.ToInt32(dataReader.GetInt32NullAsZero("modid").ToString()); AddAttribute(post, "MODERATIONID", dataReader.GetInt32NullAsZero("modid")); AddAttribute(post, "THREADID", dataReader.GetInt32NullAsZero("threadid")); AddAttribute(post, "FORUMID", dataReader.GetInt32NullAsZero("forumid")); AddAttribute(post, "ISPREMODPOSTING", dataReader.GetTinyIntAsInt("ispremodposting")); AddAttribute(post, "ISPRIORITYPOST", dataReader.GetTinyIntAsInt("priority")); //AddAttribute(post, "MODCLASSID", dataReader.GetInt32NullAsZero("modclassid")); AddIntElement(post, "MODERATION-STATUS", dataReader.GetInt32NullAsZero("threadmoderationstatus")); int siteId = dataReader.GetInt32NullAsZero("siteid"); AddIntElement(post, "SITEID", siteId); if (!dataReader.IsDBNull("topictitle")) { AddTextTag(post, "TOPICTITLE", dataReader.GetStringNullAsEmpty("topictitle")); } AddTextTag(post, "SUBJECT", dataReader.GetStringNullAsEmpty("subject")); AddTextTag(post, "RAWTEXT", StringUtils.StripInvalidXmlChars(dataReader.GetStringNullAsEmpty("text"))); AddIntElement(post, "POSTSTYLE", dataReader.GetInt32NullAsZero("PostStyle")); String translated = string.Empty; if (!dataReader.GetInt32NullAsZero("PostStyle").Equals((int)BBC.Dna.Api.PostStyle.Style.plaintext)) //poststyle = 2 (plaintext) translated = ThreadPost.FormatPost(dataReader.GetStringNullAsEmpty("text"), CommentStatus.Hidden.NotHidden, true, false); else translated = ThreadPost.FormatPost(dataReader.GetStringNullAsEmpty("text"), CommentStatus.Hidden.NotHidden, false, false); if (!dataReader.IsDBNull("commentforumurl")) { translated = CommentInfo.FormatComment(dataReader.GetStringNullAsEmpty("text"), BBC.Dna.Api.PostStyle.Style.richtext, CommentStatus.Hidden.NotHidden, false); } string translatedBeforeTermsHiglighting = translated; IDnaDataReaderCreator creator = new DnaDataReaderCreator(AppContext.TheAppContext.Config.ConnectionString, AppContext.TheAppContext.Diagnostics); var termsList = TermsList.GetTermsListByThreadModIdFromThreadModDB(creator, modTermMappingId, false); try { translated = "<DUMMYHEAD>" + translated + "</DUMMYHEAD>"; string uniqueStr = "[" + Guid.NewGuid().ToString() + "]"; translated = translated.Replace(">", uniqueStr); XElement translatedXml = XElement.Parse(translated); var textNodeList = translatedXml.DescendantNodes().OfType<XText>().Where(n => !n.Parent.Name.LocalName.Equals("LINK")).ToList(); if (textNodeList != null && textNodeList.Count > 0) { foreach (XText text in textNodeList) { if (termsList != null && termsList.Terms != null && termsList.Terms.Count > 0) { foreach (TermDetails termDetails in termsList.Terms) { if (text.Value.ToLower().Contains(termDetails.Value)) { text.Value = text.Value.ReplaceCaseInsensitive(termDetails.Value, "<TERMFOUND ID=" + "\"" + termDetails.Id.ToString() + "\"" + " FROMMODCLASS=" + "\"" + termDetails.FromModClass.ToString() + "\"" + "> " + termDetails.Value + "</TERMFOUND>", StringComparison.OrdinalIgnoreCase); } } } } } translated = translatedXml.ToString(); translated = translated.Replace("<TERMFOUND", "<TERMFOUND"); translated = translated.Replace("</TERMFOUND>", "</TERMFOUND>"); translated = translated.Replace(">", ">"); translated = translated.Replace(uniqueStr, ">"); translated = translated.Replace("<DUMMYHEAD>", ""); translated = translated.Replace("</DUMMYHEAD>", "").Trim(); } catch (Exception) { translated = translatedBeforeTermsHiglighting; } //translated = translated.Replace("\r\n", "<BR/>"); AddXmlTextTag(post, "TEXT", translated ); String notes = dataReader.GetStringNullAsEmpty("notes"); notes = notes.Replace("\r\n", "<BR/>"); AddXmlTextTag(post, "NOTES", notes ); //Adds the term details to the Term node //IDnaDataReaderCreator creator = new DnaDataReaderCreator(AppContext.TheAppContext.Config.ConnectionString, AppContext.TheAppContext.Diagnostics); XmlElement termXml = AddElementTag(post, "TERMS"); //var termsList = TermsList.GetTermsListByThreadModIdFromThreadModDB(creator, modTermMappingId, false); if (termsList.Terms.Count > 0) { foreach (TermDetails termDetails in termsList.Terms) { XmlNode termDetailsNode = SerialiseAndAppend(termDetails, "/DNAROOT/POSTMODERATION/POST"); termXml.AppendChild(termDetailsNode); } } XmlElement lockedXml = AddElementTag(post, "LOCKED"); AddDateXml(dataReader.GetDateTime("datelocked"), lockedXml, "DATELOCKED"); XmlElement lockedUserXml = AddElementTag(lockedXml, "USER"); AddIntElement(lockedUserXml, "USERID", dataReader.GetInt32NullAsZero("lockedby")); AddTextTag(lockedUserXml, "USERNAME", dataReader.GetStringNullAsEmpty("lockedname")); AddTextTag(lockedUserXml, "FIRSTNAMES", dataReader.GetStringNullAsEmpty("lockedfirstnames")); AddTextTag(lockedUserXml, "LASTNAME", dataReader.GetStringNullAsEmpty("lockedlastname")); //Author Xml is restricted if (InputContext.ViewingUser.IsSuperUser || InputContext.ViewingUser.IsEditor || InputContext.ViewingUser.IsReferee) { XmlElement authorXml = AddElementTag(post, "USER"); int authorId = dataReader.GetInt32NullAsZero("userid"); AddIntElement(authorXml, "USERID", authorId); AddTextTag(authorXml, "USERNAME", dataReader.GetStringNullAsEmpty("username")); AddTextTag(authorXml, "FIRSTNAMES", dataReader.GetStringNullAsEmpty("firstnames")); AddTextTag(authorXml, "LASTNAME", dataReader.GetStringNullAsEmpty("lastname")); if ( !dataReader.IsDBNull("prefstatus")) { XmlElement statusXml = AddElementTag(authorXml, "STATUS"); AddAttribute(statusXml, "STATUSID", dataReader.GetInt32NullAsZero("prefstatus")); AddAttribute(statusXml, "DURATION", dataReader.GetInt32NullAsZero("prefstatusduration")); AddAttribute(statusXml, "SITESUFFIX", dataReader.GetStringNullAsEmpty("SiteSuffix")); if ( !dataReader.IsDBNull("prefstatuschangeddate")) { AddDateXml(dataReader.GetDateTime("prefstatuschangeddate"), statusXml, "STATUSCHANGEDDATE"); } } string groupsXml = UserGroupsHelper.GetUserGroupsAsXml(authorId, siteId, InputContext); XmlDocument groups = new XmlDocument(); groups.LoadXml(groupsXml); if (groups.HasChildNodes) { XmlNode importNode = ImportNode(groups.FirstChild); authorXml.AppendChild(importNode); } } if (alerts) { XmlElement alertXml = AddElementTag(post, "ALERT"); int complainantId = dataReader.GetInt32NullAsZero("complainantid"); XmlElement alertUserXml = AddElementTag(alertXml, "USER"); AddIntElement(alertUserXml, "USERID", complainantId); AddTextTag(alertUserXml, "USERNAME", dataReader.GetStringNullAsEmpty("complainantname")); AddTextTag(alertUserXml, "FIRSTNAMES", dataReader.GetStringNullAsEmpty("complainantfirstnames")); AddTextTag(alertUserXml, "LASTNAME", dataReader.GetStringNullAsEmpty("complainantlastname")); AddIntElement(alertUserXml, "COMPLAINANTIDVIAEMAIL", dataReader.GetInt32NullAsZero("ComplainantIDViaEmail")); if ( !dataReader.IsDBNull("complainantprefstatus")) { XmlElement status = AddElementTag(alertUserXml, "STATUS"); AddAttribute(status, "STATUSID", dataReader.GetInt32NullAsZero("complainantprefstatus")); AddAttribute(status, "DURATION", dataReader.GetInt32NullAsZero("complainantprefstatusduration")); AddAttribute(status, "SITESUFFIX", dataReader.GetStringNullAsEmpty("SiteSuffix")); if (!dataReader.IsDBNull("complainantprefstatuschangeddate")) { AddDateXml(dataReader.GetDateTime("complainantprefstatuschangeddate"), alertUserXml, "STATUSCHANGEDDATE"); } } // Add Complainant Groups string groupsXml = UserGroupsHelper.GetUserGroupsAsXml(complainantId, siteId, InputContext); XmlDocument groups = new XmlDocument(); groups.LoadXml(groupsXml); if (groups.HasChildNodes) { XmlNode importNode = ImportNode(groups.FirstChild); alertUserXml.AppendChild(importNode); } AddTextTag(alertXml, "TEXT", dataReader.GetStringNullAsEmpty("complainttext")); AddDateXml(dataReader.GetDateTime("datequeued"), alertXml, "DATEQUEUED"); AddIntElement(alertXml, "ALERTCOUNT", dataReader.GetInt32NullAsZero("complaintcount")); } if (referrals) { XmlElement referXml = AddElementTag(post, "REFERRED"); XmlElement referUserXml = AddElementTag(referXml, "USER"); AddIntElement(referUserXml, "USERID", dataReader.GetInt32NullAsZero("referrerid")); AddTextTag(referUserXml, "USERNAME", dataReader.GetStringNullAsEmpty("referrername")); AddTextTag(referUserXml, "FIRSTNAMES", dataReader.GetStringNullAsEmpty("referrerfirstnames")); AddTextTag(referUserXml, "LASTNAME", dataReader.GetStringNullAsEmpty("referrerlastname")); AddIntElement(referUserXml, "STATUS", dataReader.GetInt32NullAsZero("referrerstatus")); AddDateXml(dataReader.GetDateTime("datereferred"), referXml, "DATEREFERRED"); } } while (dataReader.Read()); } } }
/// <summary> /// Email queued in the database /// </summary> /// <param name="subject"></param> /// <param name="body"></param> /// <param name="sender"></param> /// <param name="recipient"></param> /// <param name="siteId"></param> private void SendEmailViaDatabase(string subject, string body, string sender, string recipient, int siteId) { DatabaseEmailQueue emailQueue = new DatabaseEmailQueue(); IDnaDataReaderCreator creator = new DnaDataReaderCreator(AppContext.TheAppContext.Config.ConnectionString, AppContext.TheAppContext.Diagnostics); emailQueue.QueueEmail(creator, recipient, sender, subject, body, string.Empty, DatabaseEmailQueue.EmailPriority.Medium); }