コード例 #1
0
ファイル: CampaignController.php プロジェクト: newga/newga
 public function actionResults($id)
 {
     $Campaign = $this->loadModel($id);
     // Has this campaign been run?
     if (!in_array((int) $Campaign->status, array(Campaign::STATUS_HAS_BEEN_RUN, Campaign::STATUS_QUEUED))) {
         $this->redirect(array('campaign/createUpdate', 'id' => $Campaign->id));
     }
     $mailgunApi = new MailgunCampaign(Yii::app()->params['insiderEmailDomain'], Yii::app()->params['mailgun']['key']);
     $outcomeStasCommand = Yii::app()->db->createCommand("\n\n\n\t\t\tSELECT co.id AS campaign_outcome_id, co.name, sum(CASE WHEN outcome IS NOT NULL THEN 1 ELSE 0 END) AS positive_outcomes_count\n\t\t\tFROM campaign_outcome co\n\t\t\tLEFT JOIN campaign_contact2outcome cc2o ON cc2o.campaign_outcome_id = co.id\n\t\t\tWHERE co.campaign_id = :campaign_id\n\t\t\tGROUP BY co.id\n\t\t");
     $outcomeStasCommand->bindParam(':campaign_id', $Campaign->id);
     $stats = array("opencount" => 0, "total_clickcount" => 0, "outcomes" => $outcomeStasCommand->queryAll(), "sent" => null);
     // Check if the campaign ID exists
     try {
         $mailgunCampaign = $mailgunApi->getCampaign(Yii::app()->params['insiderEmailDomain'], $Campaign->id);
         $stats['sent'] = $mailgunCampaign['created_at'];
         try {
             $mailgunContactOpens = $mailgunApi->getCampaignOpensByRecipientCount(Yii::app()->params['insiderEmailDomain'], $Campaign->id);
             $stats['opencount'] = $mailgunContactOpens['count'];
         } catch (Exception $e) {
             $mailgunContactOpens = array('error' => 'No open data available');
         }
     } catch (Exception $e) {
         $mailgunCampaign = array('error' => 'No campaign data available');
     }
     $QueryQuestions = QueryQuestion::model()->findAll(array('order' => 'type,id'));
     $this->render('results', array('Campaign' => $Campaign, 'QueryQuestions' => $QueryQuestions, 'mailgunCampaign' => $mailgunCampaign, 'mailgunContactOpens' => $mailgunContactOpens, 'stats' => $stats));
 }