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();
        }
Пример #2
0
        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();
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
		/// <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);
		}
Пример #7
0
        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));
            }
        }
Пример #8
0
        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()));
            }
        }
Пример #9
0
        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();
        }
Пример #11
0
 public static IDnaDataReaderCreator CreateDatabaseReaderCreator()
 {
     DnaDataReaderCreator action = new DnaDataReaderCreator(_config.ConnectionString);
     return action;
 }
Пример #12
0
 private void SetupDataBaseMockedDataReaderCreator(out IDnaDataReaderCreator readerCreator)
 {
     IDnaDiagnostics mockedDiagnostics = _mocks.DynamicMock<IDnaDiagnostics>();
     string connectionString = ConfigurationManager.ConnectionStrings["Database"].ConnectionString;
     readerCreator = new DnaDataReaderCreator(connectionString, mockedDiagnostics);
 }
Пример #13
0
        /// <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("&gt;", 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("&lt;TERMFOUND", "<TERMFOUND");
                            translated = translated.Replace("&lt;/TERMFOUND&gt;", "</TERMFOUND>");
                            translated = translated.Replace("&gt;", ">");
                            translated = translated.Replace(uniqueStr, "&gt;");

                            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());
                }
            }
        }
Пример #14
0
 /// <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);
 }