public override void ExecuteTask(string[] args) { const string method = "ExecuteTask"; _eventSource.Raise(Event.FlowEnter, method, "Entering Campaigns task."); var runs = args != null && args.Length > 0 ? int.Parse(args[0]) : (int?)null; var batch = args != null && args.Length > 1 ? int.Parse(args[1]) : (int?)null; var wait = args != null && args.Length > 2 ? int.Parse(args[2]) : (int?)null; // Get all campaigns that are currently activated. var campaigns = _campaignsQuery.GetCampaigns(null, CampaignStatus.Activated); // Update the status for all campaigns first. UpdateStatus(campaigns, CampaignStatus.Running); try { foreach (var campaign in campaigns) { Execute(campaign, runs, batch, wait); } } finally { // Update the status so they are at least in a reasonable state. UpdateStatus(campaigns, CampaignStatus.Stopped); } _eventSource.Raise(Event.FlowExit, method, "Exiting Campaigns task."); }
protected void AssertCampaigns(params Campaign[] expectedCampaigns) { // Get each individually. foreach (var expectedCampaign in expectedCampaigns) { Assert.AreNotEqual(DateTime.MinValue, expectedCampaign.CreatedTime); Assert.AreEqual(expectedCampaign, _campaignsQuery.GetCampaign(expectedCampaign.Id)); } // Get all. var campaigns = _campaignsQuery.GetCampaigns(null, new Range()); Assert.AreEqual(expectedCampaigns.Length, campaigns.RangeItems.Count); for (var index = 0; index < expectedCampaigns.Length; ++index) { Assert.AreEqual(expectedCampaigns[index], campaigns.RangeItems[index]); } }
private ActionResult Index(CampaignCategory?category, int?page) { // Ask for the appropriate range of campaigns for this page. var currentPage = page ?? 1; var start = (currentPage - 1) * MaxPerPage; var result = _campaignsQuery.GetCampaigns(category, new Range(start, MaxPerPage)); // Convert into records for viewing. var records = from i in result.RangeItems select new CampaignRecord { Id = i.Id, Name = i.Name, Subject = (_campaignsQuery.GetTemplate(i.Id) ?? new Template()).Subject, Status = i.Status, }; // If there are no records for this page, then redirect to the previous page. if (!records.Any()) { if (page != null) { if (page > 1) { return(category == null?RedirectToRoute(CampaignsRoutes.PagedIndex, new { page = page - 1 }) : RedirectToRoute(CampaignsRoutes.PagedCategoryIndex, new { page = page - 1, category })); } return(category == null?RedirectToRoute(CampaignsRoutes.Index) : RedirectToRoute(CampaignsRoutes.CategoryIndex, new { category })); } } foreach (var record in records) { record.Page = currentPage; } return(View("Index", new PaginatedList <CampaignRecord>(MaxPerPage, result.TotalItems, currentPage, records))); }