public HeatDataFaking(OenContext oenContext, HotmailHeatContext heatContext, ILog logger) { _oenContext = oenContext; _oenTestContext = new OenTesting(); _heatContext = heatContext; _logger = logger; }
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)); } }
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; } }
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 ); }
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"); }
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)); } }
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(); }
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) ); }
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)); } }
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)); } }
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); }
public BaseSettings(OenContext context) { Context = context; }
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)); } }
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)); } }
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))); } }