Exemplo n.º 1
0
        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.");
        }
Exemplo n.º 2
0
        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]);
            }
        }
Exemplo n.º 3
0
        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)));
        }