Ejemplo n.º 1
0
        public void ProcessPostRiskAssessment(BIPostNeedsRiskAssessmentEvent ev, bool risky)
        {
            DateTime startTime = DateTime.Now;

            using (IDnaDataReader reader = TheGuideDataReaderCreator.CreateDnaDataReader("riskmod_processriskassessmentforthreadentry"))
            {
                reader.AddParameter("riskmodthreadentryqueueid", ev.RiskModThreadEntryQueueId);
                reader.AddParameter("risky", risky);
                reader.Execute();

                // Read through all result sets to find an OuterErrorCode.  If found, throw an exception
                // The reason is that the proc calls other procs, which may or may not generate their own result sets
                // We're not interested in any results, except for the error result set created by the outer query
                do
                {
                    while (reader.Read())
                    {
                        if (reader.DoesFieldExist("OuterErrorCode"))
                        {
                            string msg = string.Format("ProcessPostRiskAssessment: SP Error from riskmod_processriskassessmentforthreadentry ({0}): {1}", reader.GetInt32("OuterErrorCode"), reader.GetString("OuterErrorMessage"));
                            throw new Exception(msg);
                        }
                    }
                } while (reader.NextResult());
            }

            BIEventProcessor.BIEventLogger.Log(TraceEventType.Verbose, "ProcessPostRiskAssessment() end", startTime, "RiskModThreadEntryQueueId", ev.RiskModThreadEntryQueueId);
        }
Ejemplo n.º 2
0
        public static BIEvent CreateBiEvent(IDnaDataReader reader, ITheGuideSystem theGuideSys, IRiskModSystem riskModSys)
        {
            EventTypes et = (EventTypes)reader.GetInt32("EventType");
            
            BIEvent be = null;

            switch (et)
            {
                case EventTypes.ET_POSTNEEDSRISKASSESSMENT: be = new BIPostNeedsRiskAssessmentEvent(theGuideSys, riskModSys); break;
                case EventTypes.ET_POSTTOFORUM:             be = new BIPostToForumEvent(riskModSys); break;
                case EventTypes.ET_MODERATIONDECISION_POST: be = new BIPostModerationDecisionEvent(riskModSys); break;

                default: throw new InvalidOperationException("Event Type " + et.ToString() + " not supported");
            }

            be.SetProperties(reader);

            return be;
        }   
Ejemplo n.º 3
0
        public bool IsRisky(BIPostNeedsRiskAssessmentEvent ev)
        {
            // When disabled, always assume it's risky
            if (Disabled)
                return true;

            try
            {
                DateTime startTime = DateTime.Now;

                using (IDnaDataReader reader = RiskModDataReaderCreator.CreateDnaDataReader("predict_withoutentryid"))
                {
                    reader.AddParameter("isArticle", 0);
                    reader.AddParameter("ModClassId", ev.ModClassId);
                    reader.AddParameter("SiteID", ev.SiteId);
                    reader.AddParameter("ForumId", ev.ForumId);
                    reader.AddParameter("ThreadID", ev.ThreadId);
                    reader.AddParameter("UserID", ev.UserId);
                    reader.AddParameter("DatePosted", ev.DatePosted);
                    reader.AddParameter("text", ev.Text);
                    reader.AddIntOutputParameter("moderation");
                    reader.AddIntReturnValue();
                    reader.Execute();

                    int moderationResult = reader.GetIntReturnValue();

                    BIEventProcessor.BIEventLogger.Log(TraceEventType.Verbose, "IsRisky() end", startTime, "RiskModThreadEntryQueueId", ev.RiskModThreadEntryQueueId, "Result", moderationResult);

                    return moderationResult > 0;
                }
            }
            catch (Exception ex)
            {
                // If there is a problem getting a risk assessment, assume it's risky
                BIEventProcessor.BIEventLogger.LogException(ex);
                return true;
            }
        }
Ejemplo n.º 4
0
        public void RiskModSystem_When_Disabled_Check_IsRisky_Returns_True()
        {
            // Create with "Disabled" is true
            var rm = new RiskModSystem(null, true);

            var postAssessEvent = new BIPostNeedsRiskAssessmentEvent(null, null);
            bool risky = rm.IsRisky(postAssessEvent);
            Assert.IsTrue(risky);
        }
Ejemplo n.º 5
0
        public void BIPostNeedsRiskAssessmentEvent_Process_IsNotRisky()
        {
            var m = new MockRepository();

            var mockITheGuideSystem = m.Stub<ITheGuideSystem>();
            mockITheGuideSystem.Stub(x => x.ProcessPostRiskAssessment(null, true)).IgnoreArguments();

            var mockIRiskModSystem = m.Stub<IRiskModSystem>();
            mockIRiskModSystem.Stub(x => x.IsRisky(null)).Return(false).IgnoreArguments();

            m.ReplayAll();

            var ev = new BIPostNeedsRiskAssessmentEvent(mockITheGuideSystem, mockIRiskModSystem);
            ev.Process();

            mockIRiskModSystem.AssertWasCalled(x => x.IsRisky(ev));
            mockITheGuideSystem.AssertWasCalled(x => x.ProcessPostRiskAssessment(ev, false));
        }