Add getAutomationsInTimespan method to controller
[MAILPOET-5091]
This commit is contained in:
@ -8,8 +8,7 @@ use MailPoet\Automation\Integrations\MailPoet\Actions\SendEmailAction;
|
|||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
|
|
||||||
class AutomationEmailController {
|
class AutomationTimeSpanController {
|
||||||
|
|
||||||
|
|
||||||
/** @var AutomationStorage */
|
/** @var AutomationStorage */
|
||||||
private $automationStorage;
|
private $automationStorage;
|
||||||
@ -25,13 +24,7 @@ class AutomationEmailController {
|
|||||||
$this->newslettersRepository = $newslettersRepository;
|
$this->newslettersRepository = $newslettersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function getAutomationsInTimespan(Automation $automation, \DateTimeImmutable $after, \DateTimeImmutable $before): array {
|
||||||
* @param Automation $automation
|
|
||||||
* @param \DateTimeImmutable $after
|
|
||||||
* @param \DateTimeImmutable $before
|
|
||||||
* @return NewsletterEntity[]
|
|
||||||
*/
|
|
||||||
public function getAutomationEmailsInTimeSpan(Automation $automation, \DateTimeImmutable $after, \DateTimeImmutable $before): array {
|
|
||||||
$automationVersions = $this->automationStorage->getAutomationVersionDates($automation->getId());
|
$automationVersions = $this->automationStorage->getAutomationVersionDates($automation->getId());
|
||||||
usort(
|
usort(
|
||||||
$automationVersions,
|
$automationVersions,
|
||||||
@ -55,8 +48,18 @@ class AutomationEmailController {
|
|||||||
$versionIds[] = (int)$automationVersion['id'];
|
$versionIds[] = (int)$automationVersion['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$automations = $this->automationStorage->getAutomationWithDifferentVersions($versionIds);
|
return count($versionIds) > 0 ? $this->automationStorage->getAutomationWithDifferentVersions($versionIds) : [];
|
||||||
return $this->getEmailsFromAutomations($automations);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Automation $automation
|
||||||
|
* @param \DateTimeImmutable $after
|
||||||
|
* @param \DateTimeImmutable $before
|
||||||
|
* @return NewsletterEntity[]
|
||||||
|
*/
|
||||||
|
public function getAutomationEmailsInTimeSpan(Automation $automation, \DateTimeImmutable $after, \DateTimeImmutable $before): array {
|
||||||
|
$automations = $this->getAutomationsInTimespan($automation, $after, $before);
|
||||||
|
return count($automations) > 0 ? $this->getEmailsFromAutomations($automations) : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
@ -21,24 +21,24 @@ class OverviewStatisticsController {
|
|||||||
/** @var NewsletterUrl */
|
/** @var NewsletterUrl */
|
||||||
private $newsletterUrl;
|
private $newsletterUrl;
|
||||||
|
|
||||||
/** @var AutomationEmailController */
|
/** @var AutomationTimeSpanController */
|
||||||
private $automationEmailController;
|
private $automationTimeSpanController;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
NewslettersRepository $newslettersRepository,
|
NewslettersRepository $newslettersRepository,
|
||||||
NewsletterStatisticsRepository $newsletterStatisticsRepository,
|
NewsletterStatisticsRepository $newsletterStatisticsRepository,
|
||||||
NewsletterUrl $newsletterUrl,
|
NewsletterUrl $newsletterUrl,
|
||||||
AutomationEmailController $automationEmailController
|
AutomationTimeSpanController $automationTimeSpanController
|
||||||
) {
|
) {
|
||||||
$this->newslettersRepository = $newslettersRepository;
|
$this->newslettersRepository = $newslettersRepository;
|
||||||
$this->newsletterStatisticsRepository = $newsletterStatisticsRepository;
|
$this->newsletterStatisticsRepository = $newsletterStatisticsRepository;
|
||||||
$this->newsletterUrl = $newsletterUrl;
|
$this->newsletterUrl = $newsletterUrl;
|
||||||
$this->automationEmailController = $automationEmailController;
|
$this->automationTimeSpanController = $automationTimeSpanController;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatisticsForAutomation(Automation $automation, QueryWithCompare $query): array {
|
public function getStatisticsForAutomation(Automation $automation, QueryWithCompare $query): array {
|
||||||
$currentEmails = $this->automationEmailController->getAutomationEmailsInTimeSpan($automation, $query->getAfter(), $query->getBefore());
|
$currentEmails = $this->automationTimeSpanController->getAutomationEmailsInTimeSpan($automation, $query->getAfter(), $query->getBefore());
|
||||||
$previousEmails = $this->automationEmailController->getAutomationEmailsInTimeSpan($automation, $query->getCompareWithAfter(), $query->getCompareWithBefore());
|
$previousEmails = $this->automationTimeSpanController->getAutomationEmailsInTimeSpan($automation, $query->getCompareWithAfter(), $query->getCompareWithBefore());
|
||||||
$data = [
|
$data = [
|
||||||
'sent' => ['current' => 0, 'previous' => 0],
|
'sent' => ['current' => 0, 'previous' => 0],
|
||||||
'opened' => ['current' => 0, 'previous' => 0],
|
'opened' => ['current' => 0, 'previous' => 0],
|
||||||
|
@ -199,7 +199,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Analytics::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Analytics::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\AutomationFlowEndpoint::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\AutomationFlowEndpoint::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\OverviewEndpoint::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Endpoints\OverviewEndpoint::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\AutomationEmailController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\AutomationTimeSpanController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\OverviewStatisticsController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\OverviewStatisticsController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\FreeOrderController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\FreeOrderController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Factories\OrderControllerFactory::class)->setPublic(true);
|
$container->autowire(\MailPoet\Automation\Integrations\MailPoet\Analytics\Factories\OrderControllerFactory::class)->setPublic(true);
|
||||||
|
@ -7,13 +7,13 @@ use MailPoet\Automation\Engine\Data\NextStep;
|
|||||||
use MailPoet\Automation\Engine\Data\Step;
|
use MailPoet\Automation\Engine\Data\Step;
|
||||||
use MailPoet\Automation\Engine\Storage\AutomationStorage;
|
use MailPoet\Automation\Engine\Storage\AutomationStorage;
|
||||||
use MailPoet\Automation\Integrations\MailPoet\Actions\SendEmailAction;
|
use MailPoet\Automation\Integrations\MailPoet\Actions\SendEmailAction;
|
||||||
use MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\AutomationEmailController;
|
use MailPoet\Automation\Integrations\MailPoet\Analytics\Controller\AutomationTimeSpanController;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
|
|
||||||
class AutomationEmailControllerTest extends \MailPoetTest {
|
class AutomationTimeSpanControllerTest extends \MailPoetTest {
|
||||||
|
|
||||||
/** @var AutomationEmailController */
|
/** @var AutomationTimeSpanController */
|
||||||
private $testee;
|
private $testee;
|
||||||
|
|
||||||
/** @var NewslettersRepository */
|
/** @var NewslettersRepository */
|
||||||
@ -23,7 +23,7 @@ class AutomationEmailControllerTest extends \MailPoetTest {
|
|||||||
private $automationStorage;
|
private $automationStorage;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
$this->testee = $this->diContainer->get(AutomationEmailController::class);
|
$this->testee = $this->diContainer->get(AutomationTimeSpanController::class);
|
||||||
$this->newsletterRepository = $this->diContainer->get(NewslettersRepository::class);
|
$this->newsletterRepository = $this->diContainer->get(NewslettersRepository::class);
|
||||||
$this->automationStorage = $this->diContainer->get(AutomationStorage::class);
|
$this->automationStorage = $this->diContainer->get(AutomationStorage::class);
|
||||||
}
|
}
|
Reference in New Issue
Block a user