From edc967c1180d856bee5bbfd430b6ffa1a6d41a9d Mon Sep 17 00:00:00 2001 From: yuri Date: Fri, 12 Feb 2016 11:40:45 +0200 Subject: [PATCH] campaign: dont count test in statistics --- .../Crm/EntryPoints/CampaignTrackOpened.php | 2 +- .../Modules/Crm/EntryPoints/CampaignUrl.php | 2 +- .../Modules/Crm/EntryPoints/Unsubscribe.php | 2 +- .../entityDefs/CampaignLogRecord.json | 6 ++- .../Espo/Modules/Crm/Services/Campaign.php | 51 ++++++++++++------- .../Espo/Modules/Crm/Services/MassEmail.php | 2 +- application/Espo/Services/InboundEmail.php | 2 +- 7 files changed, 42 insertions(+), 25 deletions(-) diff --git a/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php b/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php index 74980875fc..ea8f854eb6 100644 --- a/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php +++ b/application/Espo/Modules/Crm/EntryPoints/CampaignTrackOpened.php @@ -80,7 +80,7 @@ class CampaignTrackOpened extends \Espo\Core\EntryPoints\Base return; } $campaignService = $this->getServiceFactory()->create('Campaign'); - $campaignService->logOpened($campaignId, $queueItemId, $target); + $campaignService->logOpened($campaignId, $queueItemId, $target, null, $queueItem->get('isTest')); } } diff --git a/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php b/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php index 135d4b3fde..e5861ef700 100644 --- a/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php +++ b/application/Espo/Modules/Crm/EntryPoints/CampaignUrl.php @@ -72,7 +72,7 @@ class CampaignUrl extends \Espo\Core\EntryPoints\Base if ($campaign && $target) { $campaignService = $this->getServiceFactory()->create('Campaign'); - $campaignService->logClicked($campaignId, $queueItemId, $target, $trackingUrl); + $campaignService->logClicked($campaignId, $queueItemId, $target, $trackingUrl, null, $queueItem->get('isTest')); } ob_clean(); diff --git a/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php b/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php index 54ee4f9260..bd02448e53 100644 --- a/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php +++ b/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php @@ -108,7 +108,7 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base if ($campaign && $target) { $campaignService = $this->getServiceFactory()->create('Campaign'); - $campaignService->logOptedOut($campaignId, $queueItemId, $target, $queueItem->get('emailAddress')); + $campaignService->logOptedOut($campaignId, $queueItemId, $target, $queueItem->get('emailAddress'), null, $queueItem->get('isTest')); } } diff --git a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/CampaignLogRecord.json b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/CampaignLogRecord.json index e8620782e7..a4707fa0b5 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/CampaignLogRecord.json +++ b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/CampaignLogRecord.json @@ -12,7 +12,7 @@ }, "data": { "type": "jsonObject", - "view": "Crm:CampaignLogRecord.Fields.Data" + "view": "crm:views/campaign-log-record/fields/data" }, "stringData": { "type": "varchar", @@ -47,6 +47,10 @@ }, "queueItem": { "type": "link" + }, + "isTest": { + "type": "bool", + "default": false } }, "links": { diff --git a/application/Espo/Modules/Crm/Services/Campaign.php b/application/Espo/Modules/Crm/Services/Campaign.php index d18c5ffd45..afc91f8bce 100644 --- a/application/Espo/Modules/Crm/Services/Campaign.php +++ b/application/Espo/Modules/Crm/Services/Campaign.php @@ -37,16 +37,17 @@ class Campaign extends \Espo\Services\Record { parent::loadAdditionalFields($entity); - $sentCount = $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'campaignId' => $entity->id, - 'action' => 'Sent' + 'action' => 'Sent', + 'isTest' => false ))->count(); $entity->set('sentCount', $sentCount); $openedCount = $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'campaignId' => $entity->id, - 'action' => 'Opened' + 'action' => 'Opened', + 'isTest' => false ))->count(); $entity->set('openedCount', $openedCount); @@ -58,7 +59,8 @@ class Campaign extends \Espo\Services\Record $clickedCount = $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'campaignId' => $entity->id, - 'action' => 'Clicked' + 'action' => 'Clicked', + 'isTest' => false ))->count(); $entity->set('clickedCount', $clickedCount); @@ -70,7 +72,8 @@ class Campaign extends \Espo\Services\Record $optedOutCount = $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'campaignId' => $entity->id, - 'action' => 'Opted Out' + 'action' => 'Opted Out', + 'isTest' => false ))->count(); $entity->set('optedOutCount', $optedOutCount); @@ -82,7 +85,8 @@ class Campaign extends \Espo\Services\Record $bouncedCount = $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'campaignId' => $entity->id, - 'action' => 'Bounced' + 'action' => 'Bounced', + 'isTest' => false ))->count(); $entity->set('bouncedCount', $bouncedCount); @@ -126,7 +130,7 @@ class Campaign extends \Espo\Services\Record } } - public function logSent($campaignId, $queueItemId = null, Entity $target, Entity $emailOrEmailTemplate = null, $emailAddress, $actionDate = null) + public function logSent($campaignId, $queueItemId = null, Entity $target, Entity $emailOrEmailTemplate = null, $emailAddress, $actionDate = null, $isTest = false) { if (empty($actionDate)) { $actionDate = date('Y-m-d H:i:s'); @@ -139,7 +143,8 @@ class Campaign extends \Espo\Services\Record 'parentType' => $target->getEntityType(), 'action' => 'Sent', 'stringData' => $emailAddress, - 'queueItemId' => $queueItemId + 'queueItemId' => $queueItemId, + 'isTest' => $isTest )); if ($emailOrEmailTemplate) { @@ -151,11 +156,12 @@ class Campaign extends \Espo\Services\Record $this->getEntityManager()->saveEntity($logRecord); } - public function logBounced($campaignId, $queueItemId = null, Entity $target, $emailAddress, $isHard = false, $actionDate = null) + public function logBounced($campaignId, $queueItemId = null, Entity $target, $emailAddress, $isHard = false, $actionDate = null, $isTest = false) { if ($queueItemId && $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'queueItemId' => $queueItemId, - 'action' => 'Bounced' + 'action' => 'Bounced', + 'isTest' => $isTest ))->findOne()) { return; } @@ -170,7 +176,8 @@ class Campaign extends \Espo\Services\Record 'parentType' => $target->getEntityType(), 'action' => 'Bounced', 'stringData' => $emailAddress, - 'queueItemId' => $queueItemId + 'queueItemId' => $queueItemId, + 'isTest' => $isTest )); if ($isHard) { $logRecord->set('stringAdditionalData', 'Hard'); @@ -180,11 +187,12 @@ class Campaign extends \Espo\Services\Record $this->getEntityManager()->saveEntity($logRecord); } - public function logOptedOut($campaignId, $queueItemId = null, Entity $target, $emailAddress = null, $actionDate = null) + public function logOptedOut($campaignId, $queueItemId = null, Entity $target, $emailAddress = null, $actionDate = null, $isTest = false) { if ($queueItemId && $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'queueItemId' => $queueItemId, - 'action' => 'Opted Out' + 'action' => 'Opted Out', + 'isTest' => $isTest ))->findOne()) { return; } @@ -199,12 +207,13 @@ class Campaign extends \Espo\Services\Record 'parentType' => $target->getEntityType(), 'action' => 'Opted Out', 'stringData' => $emailAddress, - 'queueItemId' => $queueItemId + 'queueItemId' => $queueItemId, + 'isTest' => $isTest )); $this->getEntityManager()->saveEntity($logRecord); } - public function logOpened($campaignId, $queueItemId = null, Entity $target, $actionDate = null) + public function logOpened($campaignId, $queueItemId = null, Entity $target, $actionDate = null, $isTest = false) { if (empty($actionDate)) { $actionDate = date('Y-m-d H:i:s'); @@ -213,6 +222,7 @@ class Campaign extends \Espo\Services\Record if ($queueItemId && $this->getEntityManager()->getRepository('CampaignLogRecord')->where(array( 'queueItemId' => $queueItemId, 'action' => 'Opened', + 'isTest' => $isTest ))->findOne()) { return; } @@ -229,14 +239,15 @@ class Campaign extends \Espo\Services\Record 'action' => 'Opened', 'objectId' => $massEmail->get('emailTemplateId'), 'objectType' => 'EmailTemplate', - 'queueItemId' => $queueItemId + 'queueItemId' => $queueItemId, + 'isTest' => $isTest )); $this->getEntityManager()->saveEntity($logRecord); } } } - public function logClicked($campaignId, $queueItemId = null, Entity $target, Entity $trackingUrl, $actionDate = null) + public function logClicked($campaignId, $queueItemId = null, Entity $target, Entity $trackingUrl, $actionDate = null, $isTest = false) { $this->logOpened($campaignId, $queueItemId, $target); @@ -244,7 +255,8 @@ class Campaign extends \Espo\Services\Record 'queueItemId' => $queueItemId, 'action' => 'Clicked', 'objectId' => $trackingUrl->id, - 'objectType' => $trackingUrl->getEntityType() + 'objectType' => $trackingUrl->getEntityType(), + 'isTest' => $isTest ))->findOne()) { return; } @@ -261,7 +273,8 @@ class Campaign extends \Espo\Services\Record 'action' => 'Clicked', 'objectId' => $trackingUrl->id, 'objectType' => $trackingUrl->getEntityType(), - 'queueItemId' => $queueItemId + 'queueItemId' => $queueItemId, + 'isTest' => $isTest )); $this->getEntityManager()->saveEntity($logRecord); } diff --git a/application/Espo/Modules/Crm/Services/MassEmail.php b/application/Espo/Modules/Crm/Services/MassEmail.php index 8d1676d930..9bbbd94598 100644 --- a/application/Espo/Modules/Crm/Services/MassEmail.php +++ b/application/Espo/Modules/Crm/Services/MassEmail.php @@ -457,7 +457,7 @@ class MassEmail extends \Espo\Services\Record $this->getEntityManager()->saveEntity($queueItem); if ($campaign) { - $this->getCampaignService()->logSent($campaign->id, $queueItem->id, $target, $emailObject, $target->get('emailAddress')); + $this->getCampaignService()->logSent($campaign->id, $queueItem->id, $target, $emailObject, $target->get('emailAddress'), null, $queueItem->get('isTest')); } } catch (\Exception $e) { diff --git a/application/Espo/Services/InboundEmail.php b/application/Espo/Services/InboundEmail.php index dd721f7ad9..be05ed1db1 100644 --- a/application/Espo/Services/InboundEmail.php +++ b/application/Espo/Services/InboundEmail.php @@ -660,7 +660,7 @@ class InboundEmail extends \Espo\Services\Record } if ($campaignId && $target && $target->id) { - $this->getCampaignService()->logBounced($campaignId, $queueItemId, $target, $emailAddress, $isHard); + $this->getCampaignService()->logBounced($campaignId, $queueItemId, $target, $emailAddress, $isHard, null, $queueItem->get('isTest')); } } }