Move getCountsPerStatus to ScheduledTasksRepository
- Move getCountsPerStatus - Defined test for getCountsPerStatus - Update usage [MAILPOET-4355]
This commit is contained in:
@@ -8,6 +8,7 @@ use MailPoet\Cron\ActionScheduler\Actions\DaemonTrigger;
|
|||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
use MailPoet\Helpscout\Beacon;
|
use MailPoet\Helpscout\Beacon;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
|
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||||
use MailPoet\Router\Endpoints\CronDaemon;
|
use MailPoet\Router\Endpoints\CronDaemon;
|
||||||
use MailPoet\Services\Bridge;
|
use MailPoet\Services\Bridge;
|
||||||
use MailPoet\Tasks\Sending;
|
use MailPoet\Tasks\Sending;
|
||||||
@@ -29,18 +30,23 @@ class Help {
|
|||||||
/** @var Bridge $bridge */
|
/** @var Bridge $bridge */
|
||||||
private $bridge;
|
private $bridge;
|
||||||
|
|
||||||
|
/*** @var ScheduledTasksRepository */
|
||||||
|
private $scheduledTasksRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
PageRenderer $pageRenderer,
|
PageRenderer $pageRenderer,
|
||||||
State $tasksState,
|
State $tasksState,
|
||||||
CronHelper $cronHelper,
|
CronHelper $cronHelper,
|
||||||
Beacon $helpscoutBeacon,
|
Beacon $helpscoutBeacon,
|
||||||
Bridge $bridge
|
Bridge $bridge,
|
||||||
|
ScheduledTasksRepository $scheduledTasksRepository
|
||||||
) {
|
) {
|
||||||
$this->pageRenderer = $pageRenderer;
|
$this->pageRenderer = $pageRenderer;
|
||||||
$this->tasksState = $tasksState;
|
$this->tasksState = $tasksState;
|
||||||
$this->cronHelper = $cronHelper;
|
$this->cronHelper = $cronHelper;
|
||||||
$this->helpscoutBeacon = $helpscoutBeacon;
|
$this->helpscoutBeacon = $helpscoutBeacon;
|
||||||
$this->bridge = $bridge;
|
$this->bridge = $bridge;
|
||||||
|
$this->scheduledTasksRepository = $scheduledTasksRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render() {
|
public function render() {
|
||||||
@@ -69,7 +75,7 @@ class Help {
|
|||||||
'queueStatus' => $mailerLog,
|
'queueStatus' => $mailerLog,
|
||||||
];
|
];
|
||||||
$systemStatusData['cronStatus']['accessible'] = $this->cronHelper->isDaemonAccessible();
|
$systemStatusData['cronStatus']['accessible'] = $this->cronHelper->isDaemonAccessible();
|
||||||
$systemStatusData['queueStatus']['tasksStatusCounts'] = $this->tasksState->getCountsPerStatus();
|
$systemStatusData['queueStatus']['tasksStatusCounts'] = $this->scheduledTasksRepository->getCountsPerStatus();
|
||||||
$systemStatusData['queueStatus']['latestTasks'] = $this->tasksState->getLatestTasks(Sending::TASK_TYPE);
|
$systemStatusData['queueStatus']['latestTasks'] = $this->tasksState->getLatestTasks(Sending::TASK_TYPE);
|
||||||
$this->pageRenderer->displayPage(
|
$this->pageRenderer->displayPage(
|
||||||
'help.html',
|
'help.html',
|
||||||
|
@@ -126,6 +126,34 @@ class ScheduledTasksRepository extends Repository {
|
|||||||
return $this->findByTypeAndStatus($type, ScheduledTaskEntity::STATUS_SCHEDULED, $limit, true);
|
return $this->findByTypeAndStatus($type, ScheduledTaskEntity::STATUS_SCHEDULED, $limit, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCountsPerStatus(string $type = 'sending') {
|
||||||
|
$stats = [
|
||||||
|
ScheduledTaskEntity::STATUS_COMPLETED => 0,
|
||||||
|
ScheduledTaskEntity::STATUS_PAUSED => 0,
|
||||||
|
ScheduledTaskEntity::STATUS_SCHEDULED => 0,
|
||||||
|
ScheduledTaskEntity::VIRTUAL_STATUS_RUNNING => 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
$counts = $this->doctrineRepository->createQueryBuilder('st')
|
||||||
|
->select('COUNT(st.id) as value')
|
||||||
|
->addSelect('st.status')
|
||||||
|
->where('st.deletedAt IS NULL')
|
||||||
|
->andWhere('st.type = :type')
|
||||||
|
->setParameter('type', $type)
|
||||||
|
->addGroupBy('st.status')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
|
||||||
|
foreach ($counts as $count) {
|
||||||
|
if ($count['status'] === null) {
|
||||||
|
$stats[ScheduledTaskEntity::VIRTUAL_STATUS_RUNNING] = (int)$count['value'];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$stats[$count['status']] = (int)$count['value'];
|
||||||
|
}
|
||||||
|
return $stats;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return ScheduledTaskEntity[]
|
* @return ScheduledTaskEntity[]
|
||||||
*/
|
*/
|
||||||
|
@@ -90,6 +90,24 @@ class ScheduledTasksRepositoryTest extends \MailPoetTest {
|
|||||||
$this->assertSame($expectedResult, $tasks);
|
$this->assertSame($expectedResult, $tasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCanCountByStatus(){
|
||||||
|
$this->scheduledTaskFactory->create('sending', ScheduledTaskEntity::STATUS_SCHEDULED, Carbon::now()->addDay());
|
||||||
|
$this->scheduledTaskFactory->create('sending', ScheduledTaskEntity::STATUS_SCHEDULED, Carbon::now()->addDays(20));
|
||||||
|
$this->scheduledTaskFactory->create('sending', ScheduledTaskEntity::STATUS_PAUSED, Carbon::now()->addDay());
|
||||||
|
$this->scheduledTaskFactory->create('sending', ScheduledTaskEntity::STATUS_PAUSED, Carbon::now()->addDays(3));
|
||||||
|
$this->scheduledTaskFactory->create('sending', ScheduledTaskEntity::STATUS_PAUSED, Carbon::now()->addDays(5));
|
||||||
|
$this->scheduledTaskFactory->create('sending', ScheduledTaskEntity::STATUS_INVALID, Carbon::now()->addDays(4));
|
||||||
|
$this->scheduledTaskFactory->create('sending', NULL, Carbon::now()->addDays(4));
|
||||||
|
|
||||||
|
$counts = $this->repository->getCountsPerStatus();
|
||||||
|
$this->assertEquals([
|
||||||
|
ScheduledTaskEntity::STATUS_SCHEDULED => 2,
|
||||||
|
ScheduledTaskEntity::STATUS_PAUSED => 3,
|
||||||
|
ScheduledTaskEntity::STATUS_INVALID => 1,
|
||||||
|
ScheduledTaskEntity::VIRTUAL_STATUS_RUNNING => 1,
|
||||||
|
ScheduledTaskEntity::STATUS_COMPLETED => 0,
|
||||||
|
], $counts);
|
||||||
|
}
|
||||||
public function cleanup() {
|
public function cleanup() {
|
||||||
$this->truncateEntity(ScheduledTaskEntity::class);
|
$this->truncateEntity(ScheduledTaskEntity::class);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user