/** * @param null $pageSize | int $pageSize * @return bool */ public static function markProcessedCampaignsAsCompleted($pageSize = null) { if ($pageSize != null) { $resolvedPageSize = $pageSize + 1; } else { $resolvedPageSize = $pageSize; } $processingCampaigns = Campaign::getByStatus(Campaign::STATUS_PROCESSING, $resolvedPageSize); $campaignsProcessed = 0; foreach ($processingCampaigns as $processingCampaign) { if ($campaignsProcessed < $pageSize || $pageSize == null) { if (static::areAllCampaignItemsProcessed($processingCampaign->id)) { $processingCampaign->status = Campaign::STATUS_COMPLETED; if (!$processingCampaign->save()) { return false; } } $campaignsProcessed++; } else { Yii::app()->jobQueue->add('CampaignMarkCompleted', 5); break; } } return true; }
/** * @param null $pageSize | int $pageSize * @return bool */ public static function markProcessedCampaignsAsCompleted($pageSize = null) { $processingCampaigns = Campaign::getByStatus(Campaign::STATUS_PROCESSING, $pageSize); foreach ($processingCampaigns as $processingCampaign) { if (static::areAllCampaignItemsProcessed($processingCampaign->id)) { $processingCampaign->status = Campaign::STATUS_COMPLETED; if (!$processingCampaign->save()) { return false; } } } return true; }
/** * @depends testCreateAndGetCampaignListById */ public function testGetByStatus() { $totalCampaigns = Campaign::getAll(); $this->assertNotEmpty($totalCampaigns); $this->assertCount(4, $totalCampaigns); $dueActiveCampaigns = Campaign::getByStatus(Campaign::STATUS_ACTIVE); $this->assertNotEmpty($dueActiveCampaigns); $this->assertCount(3, $dueActiveCampaigns); $campaign = $dueActiveCampaigns[0]; $this->assertEquals('Test Campaign Name2', $campaign->name); $this->assertEquals(0, $campaign->supportsRichText); $this->assertEquals('From Name2', $campaign->fromName); $this->assertEquals('*****@*****.**', $campaign->fromAddress); $this->assertEquals('Test Subject2', $campaign->subject); $this->assertEquals('Test Html Content2', $campaign->htmlContent); $this->assertEquals('Test Text Content2', $campaign->textContent); $duePausedCampaigns = Campaign::getByStatus(Campaign::STATUS_PAUSED); $this->assertNotEmpty($duePausedCampaigns); $this->assertCount(1, $duePausedCampaigns); $campaign = $duePausedCampaigns[0]; $this->assertEquals('Test Campaign Name', $campaign->name); $this->assertEquals(1, $campaign->supportsRichText); $this->assertEquals(Campaign::STATUS_PAUSED, $campaign->status); $this->assertEquals('From Name', $campaign->fromName); $this->assertEquals('*****@*****.**', $campaign->fromAddress); $this->assertEquals('Test Subject', $campaign->subject); $this->assertEquals('Test Html Content', $campaign->htmlContent); $this->assertEquals('Test Text Content', $campaign->textContent); }