/**
  * @return \EmailMessageActivity
  */
 protected function createSpamEmailMessageActivity()
 {
     $emailMessageActivity = new EmailMessageActivity();
     $emailMessageActivity->type = EmailMessageActivity::TYPE_SPAM;
     $emailMessageActivity->quantity = 10;
     $emailMessageActivity->save();
     return $emailMessageActivity;
 }
 public static function createNewActivity($type, $modelId, $personId, $url = null, $sourceIP = null)
 {
     $relatedModel = CampaignItem::getById(intval($modelId));
     if (!$relatedModel) {
         throw new NotFoundException();
     }
     $relationName = 'campaignItem';
     return parent::createNewChildActivity($type, $personId, $url, $relationName, $relatedModel, $sourceIP);
 }
 /**
  * @param CampaignItem $campaignItem
  * @return string
  */
 public static function resolveDrillDownMetricsSummaryContent(CampaignItem $campaignItem)
 {
     $isQueued = $campaignItem->isQueued();
     $isSkipped = $campaignItem->isSkipped();
     if ($isQueued) {
         $content = static::getQueuedContentForDrillDown($campaignItem);
     } elseif ($isSkipped) {
         $content = static::getSkippedContentForDrillDown($campaignItem);
     } elseif ($campaignItem->hasFailedToSend()) {
         $content = static::getSendFailedContentForDrillDown($campaignItem);
     } elseif ($campaignItem->isSent()) {
         $content = static::getSentContentForDrillDown($campaignItem->emailMessage);
         $emailMessageActivityId = EmailMessageActivity::getIdByCampaignOrAutoresponderItem($campaignItem);
         $tableRows = null;
         if ($campaignItem->hasAtLeastOneOpenActivity()) {
             $tableRows .= static::getOpenedContentForDrillDown($campaignItem);
         }
         if ($campaignItem->hasAtLeastOneClickActivity()) {
             $tableRows .= static::getClickedContentForDrillDown($campaignItem);
         }
         if ($campaignItem->hasAtLeastOneUnsubscribeActivity()) {
             $content .= static::getUnsubscribedContentForDrillDown();
         }
         if ($campaignItem->hasAtLeastOneBounceActivity()) {
             if ($emailMessageActivityId != null) {
                 $count = ExternalApiEmailMessageActivity::resolveAndGetByEmailMessageActivityId($emailMessageActivityId, 'sendgrid', true);
                 if ($count > 0) {
                     $tableRows .= static::getBouncedContentForDrillDown($campaignItem);
                 }
             }
         }
         if ($campaignItem->hasAtLeastOneEventActivity(CampaignItemActivity::TYPE_SPAM)) {
             if ($emailMessageActivityId != null) {
                 $count = ExternalApiEmailMessageActivity::resolveAndGetByEmailMessageActivityId($emailMessageActivityId, 'sendgrid', true);
                 if ($count > 0) {
                     $tableRows .= static::getSpamContentForDrillDown($campaignItem);
                 }
             }
         }
         $content .= static::getWrapperTable($tableRows);
     } else {
         $content = static::getAwaitingQueueingContentForDrillDown();
     }
     return $content;
 }
 /**
  * @param int $type
  * @return string
  */
 public static function resolveAutoresponderTypeSubQuery($type)
 {
     assert('is_int($type)');
     $quote = DatabaseCompatibilityUtil::getQuote();
     $where = null;
     $selectDistinct = true;
     $autoresponderItemActivityTableName = AutoresponderItemActivity::getTableName('AutoresponderItemActivity');
     $emailMessageActivityTableName = EmailMessageActivity::getTableName('EmailMessageActivity');
     $selectQueryAdapter = new RedBeanModelSelectQueryAdapter($selectDistinct);
     $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('AutoresponderItemActivity');
     $selectQueryAdapter->addClauseByQueryString("autoresponder_id");
     $joinTablesAdapter->addFromTableAndGetAliasName($emailMessageActivityTableName, 'emailmessageactivity_id', $autoresponderItemActivityTableName);
     $where = "type = " . $type . " and {$quote}{$autoresponderItemActivityTableName}{$quote}" . ".autoresponderitem_id = autoresponderitem.id";
     $sql = SQLQueryUtil::makeQuery($autoresponderItemActivityTableName, $selectQueryAdapter, $joinTablesAdapter, null, null, $where);
     return $sql;
 }
 protected static function getIndexesDefinition()
 {
     $relatedModelClassName = static::getRelatedModelClassName();
     $relatedColumnName = $relatedModelClassName::getTableName() . '_id';
     // can't use self:: here as getTableName() uses get_called_class
     $baseColumnName = EmailMessageActivity::getTableName() . '_id';
     return array($baseColumnName . '_' . $relatedColumnName => array('members' => array($baseColumnName, $relatedColumnName), 'unique' => true), $baseColumnName => array('members' => array($baseColumnName), 'unique' => false), $relatedColumnName => array('members' => array($relatedColumnName), 'unique' => false));
 }
 public static function getDefaultMetadata()
 {
     $metadata = parent::getDefaultMetadata();
     $metadata[__CLASS__] = array('relations' => array(static::getRelationName() => array(static::HAS_ONE, static::getRelatedModelClassName())), 'indexes' => static::getIndexesDefinition());
     return $metadata;
 }
 /**
  * @depends testCreateAndGetEmailMessageActivityById
  */
 public function testEmailMessageActivityStringValue()
 {
     $emailMessageActivities = EmailMessageActivity::getAll();
     $this->assertCount(1, $emailMessageActivities);
     $types = EmailMessageActivity::getTypesArray();
     $type = $types[$emailMessageActivities[0]->type];
     $expectedStringValue = $emailMessageActivities[0]->latestDateTime . ': ' . strval($emailMessageActivities[0]->person) . '/' . $type;
     $this->assertEquals($expectedStringValue, strval($emailMessageActivities[0]));
 }
 /**
  * @depends testCreateAndGetEmailMessageActivityById
  */
 public function testDeleteEmailMessageActivity()
 {
     $emailMessageActivities = EmailMessageActivity::getAll();
     $this->assertCount(3, $emailMessageActivities);
     $this->assertEquals(1, EmailMessageUrl::getCount());
     $emailMessageActivities[0]->delete();
     $emailMessageActivities = EmailMessageActivity::getAll();
     $this->assertEquals(2, count($emailMessageActivities));
     $this->assertEquals(1, EmailMessageUrl::getCount());
     $emailMessageActivities[0]->delete();
     $emailMessageActivities = EmailMessageActivity::getAll();
     $this->assertEquals(1, count($emailMessageActivities));
     $this->assertEquals(1, EmailMessageUrl::getCount());
     $emailMessageActivities[0]->delete();
     $emailMessageActivities = EmailMessageActivity::getAll();
     $this->assertEquals(0, count($emailMessageActivities));
     $this->assertEquals(0, EmailMessageUrl::getCount());
 }