Exemplo n.º 1
0
 public HeatDataFaking(OenContext oenContext, HotmailHeatContext heatContext, ILog logger)
 {
     _oenContext = oenContext;
     _oenTestContext = new OenTesting();
     _heatContext = heatContext;
     _logger = logger;
 }
Exemplo n.º 2
0
        static void CoBProcess()
        {
            Database.SetInitializer<OenContext>(null);
            var oenContext = new OenContext();
            var heatContext = new HotmailHeatContext();
            var settings = new CancelOnBulkingSettings(oenContext);
            var logger = new Logger();
            var heatTestGen = new HeatDataFaking(oenContext, heatContext, logger);
#if DEBUG
            var emails = new string[] { "*****@*****.**" };
#else
            var emails = settings.NotifyEmails;
#endif
            var jobRepository = new JobRepository(oenContext, logger, true);
            var CoB = new CancelOnBulking(logger,
                                          new MtaAgent(logger, true),
                                          new EmailNotification(logger, jobRepository, emails, settings.SmtpServer),
                                          oenContext,
                                          new EventRepository(oenContext),
                                          jobRepository
                                          );

            heatTestGen.GenerateData(settings.RunIntervalMinutes);

            try
            {
                var nextReset = DateTime.Today.Add(settings.ResetTime);

                if (nextReset < DateTime.Now)
                {
                    nextReset = nextReset.AddDays(1);
                }
                CoB.FindAndCancelBulkingCampaigns(new PmtaRepository(oenContext),
                                                    new DeliveryGroupRepository(oenContext),
                                                    new HeatDataRepository(oenContext, heatContext),
                                                    settings.RunIntervalMinutes,
                                                    settings.MinimumRecords,
                                                    settings.MinimumInboxing,
                                                    nextReset
                                                    );
            }
            catch (Exception ex)
            {

                logger.Error(ex.UnwrapForLog(true));
            }
        }
Exemplo n.º 3
0
        private bool MissingSharedResources()
        {
            try
            {
                _logger.Info("Checking resources");
                var oen = new OenContext();
                var coBSettings = new CancelOnBulkingSettings(oen);
                var f21Settings = new Four21Settings(oen);
                var jobRepository = new JobRepository(new OenContext(), _logger, true);

                if (!new EmailNotification(_logger, jobRepository, coBSettings.NotifyEmails.Union(f21Settings.NotifyEmails), coBSettings.SmtpServer).EmailNotificationResourcesAvailable())
                {
                    return true;
                }
                return false;
            }
            catch (Exception ex)
            {
                _logger.Error(ex.UnwrapForLog(true));
                return true;
            }
        }
Exemplo n.º 4
0
        private CancelOnBulking GetNewCancelOnBulking(OenContext oenContext, CancelOnBulkingSettings settings)
        {
            var logger = new Logger("COB");
            var jobRepository = new JobRepository(oenContext, logger, settings.DatabaseTestMode);
#if DEBUG
            var mta = new PmtaMonitoring.Testing.Mocking.MtaAgentMock(0, logger);
#else
            var mta = new MtaAgent(logger, settings.MtaTestMode);
#endif

            return new CancelOnBulking(logger,
                                       mta,
                                       new EmailNotification(logger, jobRepository, settings.NotifyEmails, settings.SmtpServer),
                                       oenContext,
                                       new EventRepository(oenContext),
                                       jobRepository
                                       );
        }
Exemplo n.º 5
0
        private void RunCancelOnBulkingReset(OenContext oenContext, CancelOnBulkingSettings settings)
        {
            var coB = GetNewCancelOnBulking(oenContext, settings);

            try
            {
                _logger.Info("Starting Cancel on Bulking reset");
                coB.ResumeMtaQueues();
            }
            catch (Exception ex)
            {
                _logger.Error(ex.UnwrapForLog(true));
            }
            _logger.Info("Finished Cancel on Bulking reset");
        }
Exemplo n.º 6
0
        private void RunCancelOnBulking(OenContext oenContext, CancelOnBulkingSettings settings, DateTime nextReset)
        {
            var heatContext = new HotmailHeatContext();
            var coB = GetNewCancelOnBulking(oenContext, settings);

            try
            {
                _logger.Info("Starting Cancel on Bulking process");
                coB.FindAndCancelBulkingCampaigns(new PmtaRepository(oenContext),
                                                    new DeliveryGroupRepository(oenContext),
                                                    new HeatDataRepository(oenContext, heatContext),
                                                    settings.RunIntervalMinutes,
                                                    settings.MinimumRecords,
                                                    settings.MinimumInboxing,
                                                    nextReset);
                _logger.Info("Finished Cancel on Bulking process");
            }
            catch (Exception ex)
            {
                _logger.Error(ex.UnwrapForLog(true));
            }
        }
Exemplo n.º 7
0
        private void CancelOnBulkingTick(object sender, ElapsedEventArgs e)
        {
            _cancelOnBulkingTimer.Stop();
            _logger.Info("CancelOnBulking Timer Ticked");
            try
            {
                var oenContext = new OenContext();
                var settings = new CancelOnBulkingSettings(oenContext);
                var nextReset = GetNextResetTime(oenContext, Event.Monitors.CancelOnBulking, settings.ResetTime);

                if (DateTime.Now >= nextReset)
                {
                    RunCancelOnBulkingReset(oenContext, settings);
                }
                else if (settings.Enabled && DateTime.Now >= _cancelOnBulkingLastRun.AddMinutes(settings.RunIntervalMinutes))
                {
                    RunCancelOnBulking(oenContext, settings, nextReset);
                    _cancelOnBulkingLastRun = DateTime.Now;
                }
                else
                {
                    if (!settings.Enabled)
                    {
                        _logger.Info("Cancel on Bulking Disabled");
                    }
                    _logger.TraceFormat("Next reset {0}", nextReset);
                    _logger.TraceFormat("LastRun reset {0}", _cancelOnBulkingLastRun);
                    _logger.TraceFormat("Next run {0}", _cancelOnBulkingLastRun.AddMinutes(settings.RunIntervalMinutes));
                }
            }
            catch (Exception ex)
            {
                _logger.Fatal(ex.UnwrapForLog(true));
            }
            UpdateTickInterval();
            _cancelOnBulkingTimer.Interval = _timerInterval;
            _cancelOnBulkingTimer.Start();
        }
Exemplo n.º 8
0
        private Four21 GetNewFour21(OenContext oenContext, Four21Settings settings)
        {
            var logger = new Logger("421");
#if DEBUG
            var mta = new PmtaMonitoring.Testing.Mocking.MtaAgentMock(0, logger);
#else
            var mta = new MtaAgent(logger, settings.MtaTestMode);
#endif

            return new Four21(logger,
                              mta,
                              new EmailNotification(logger, new JobRepository(oenContext, logger, settings.DatabaseTestMode),
                              settings.NotifyEmails,
                              settings.SmtpServer),
                              () => new OenContext(),
                              u => new EventRepository((OenContext) u),
                              u => new PmtaRepository((OenContext) u),
                              u => new DeliveryGroupRepository((OenContext) u),
                              u => new JobRepository((OenContext) u, logger, settings.DatabaseTestMode)
                              );
        }
Exemplo n.º 9
0
        private void RunFour21Reset(OenContext oenContext, Four21Settings settings, DateTime resetTime)
        {
            var f21 = GetNewFour21(oenContext, settings);

            try
            {
                _logger.Info("Starting 421 reset");
                f21.ResumeQueues(resetTime);
            }
            catch (Exception ex)
            {
                _logger.Error(ex.UnwrapForLog(true));
            }
        }
Exemplo n.º 10
0
        private void RunFour21(OenContext oenContext, Four21Settings settings, DateTime nextReset)
        {
            var f21 = GetNewFour21(oenContext, settings);

            try
            {
                _logger.Info("Starting 421 process");
                f21.ProcessBackOffedQueues(nextReset);
            }
            catch (Exception ex)
            {
                _logger.Error(ex.UnwrapForLog(true));
            }
        }
Exemplo n.º 11
0
        private DateTime GetNextResetTime(OenContext oenContext, Event.Monitors monitor, TimeSpan resetTime)
        {
            var lastReset = new DateTime();

            if (oenContext.Events.Any(ev => ev.EventName == Event.EventNames.ResetTime && ev.Monitor == monitor))
            {
                lastReset = oenContext.Events.Where(ev => ev.EventName == Event.EventNames.ResetTime && ev.Monitor == monitor).Max(ev => ev.DateCreated);
            }

            _logger.TraceFormat("Last reset {0}", lastReset);

            return lastReset.TimeOfDay > resetTime
                   ? lastReset.Subtract(lastReset.TimeOfDay).AddDays(1).Add(resetTime)
                   : lastReset.Subtract(lastReset.TimeOfDay).Add(resetTime);
        }
Exemplo n.º 12
0
 public BaseSettings(OenContext context)
 {
     Context = context;
 }
Exemplo n.º 13
0
        static void F21Reset()
        {
            Database.SetInitializer<OenContext>(null);
            var oenContext = new OenContext();
            var logger = new Logger();
            var jobRepository = new JobRepository(oenContext, logger, true);
            var settings = new Four21Settings(oenContext);
#if DEBUG
            var emailNotify = new EmailNotification(logger, jobRepository, new string[] { "*****@*****.**" }, settings.SmtpServer);
#else
            var emailNotify = new EmailNotification(logger, jobRepository, settings.NotifyEmails, settings.SmtpServer);
#endif
            var f21 = new Four21(logger,
                                 new MtaAgentMock(0, logger),
                                 emailNotify,
                                 () => new OenContext(),
                                 u => new EventRepository((OenContext) u),
                                 u => new PmtaRepository((OenContext) u),
                                 u => new DeliveryGroupRepository((OenContext) u),
                                 u => new JobRepository((OenContext) u, logger, true)
                                 );

            try
            {
                f21.ResumeQueues(DateTime.Now);
            }
            catch (Exception ex)
            {
                logger.Error(ex.UnwrapForLog(true));
            }
        }
Exemplo n.º 14
0
        static void CoBReset()
        {
            Database.SetInitializer<OenContext>(null);
            var oenContext = new OenContext();
            var heatContext = new HotmailHeatContext();
            var settings = new CancelOnBulkingSettings(oenContext);
            var logger = new Logger();
#if DEBUG
            var emails = new string[] { "*****@*****.**" };
#else
            var emails = settings.NotifyEmails;
#endif
            var jobRepository = new JobRepository(oenContext, logger, true);
            var CoB = new CancelOnBulking(logger,
                                          new MtaAgent(logger, true),
                                          new EmailNotification(logger, jobRepository, emails, settings.SmtpServer),
                                          oenContext,
                                          new EventRepository(oenContext),
                                          jobRepository
                                          );

            try
            {
                CoB.ResumeMtaQueues();
            }
            catch (Exception ex)
            {
                logger.Error(ex.UnwrapForLog(true));
            }
        }
Exemplo n.º 15
0
        public Four21Settings(OenContext context)
            : base(context)
        {
            var settings = Context.Settings.ToArray();
            var missingSettings = new List<string>();
            
            if (ConfigurationManager.AppSettings[SmtpServerName] != null)
            {
                SmtpServer = ConfigurationManager.AppSettings[SmtpServerName];
            }
            else
            {
                missingSettings.Add(SmtpServerName);
            }

            var setting = settings.FirstOrDefault(s => s.Name == EnabledName);
            bool outB = false;

            if (setting != null && bool.TryParse(setting.Value,out outB))
            {
                Enabled = outB;
            }
            else
            {
                missingSettings.Add(EnabledName);
            }

            setting = settings.FirstOrDefault(s => s.Name == NotifyEmailsName);

            if (setting != null)
            {
                NotifyEmails = setting.Value.Split(NotifyEmailsDelimeter)
                       .Select(e => e.Trim())
                       .ToArray();
            }
            else
            {
                missingSettings.Add(NotifyEmailsName);
            }

            setting = settings.FirstOrDefault(s => s.Name == RunIntervalName);

            if (setting != null)
            {
                RunIntervalMinutes = int.Parse(setting.Value);
            }
            else
            {
                missingSettings.Add(RunIntervalName);
            }

            setting = settings.FirstOrDefault(s => s.Name == ResetTimeName);

            if (setting != null)
            {
                ResetTime = TimeSpan.Parse(setting.Value);
            }
            else
            {
                missingSettings.Add(ResetTimeName);
            }

            if (missingSettings.Any())
            {
                throw new Exception(string.Format("Missing setting(s) {0}", string.Join(", ", missingSettings)));
            }

        }