Skip to content

Commit 2750b1e

Browse files
committed
Refactor
1 parent 7660f2d commit 2750b1e

File tree

9 files changed

+49
-51
lines changed

9 files changed

+49
-51
lines changed

src/Domain/Messaging/Service/ConsecutiveBounceHandler.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,30 @@
1111
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1212
use PhpList\Core\Domain\Subscription\Repository\SubscriberRepository;
1313
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager;
14-
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
14+
use PhpList\Core\Domain\Subscription\Service\SubscriberBlacklistService;
1515
use Symfony\Component\Console\Style\SymfonyStyle;
1616

1717
class ConsecutiveBounceHandler
1818
{
1919
private BounceManager $bounceManager;
2020
private SubscriberRepository $subscriberRepository;
21-
private SubscriberManager $subscriberManager;
2221
private SubscriberHistoryManager $subscriberHistoryManager;
22+
private SubscriberBlacklistService $blacklistService;
2323
private int $unsubscribeThreshold;
2424
private int $blacklistThreshold;
2525

2626
public function __construct(
2727
BounceManager $bounceManager,
2828
SubscriberRepository $subscriberRepository,
29-
SubscriberManager $subscriberManager,
3029
SubscriberHistoryManager $subscriberHistoryManager,
30+
SubscriberBlacklistService $blacklistService,
3131
int $unsubscribeThreshold,
3232
int $blacklistThreshold,
3333
) {
3434
$this->bounceManager = $bounceManager;
3535
$this->subscriberRepository = $subscriberRepository;
36-
$this->subscriberManager = $subscriberManager;
3736
$this->subscriberHistoryManager = $subscriberHistoryManager;
37+
$this->blacklistService = $blacklistService;
3838
$this->unsubscribeThreshold = $unsubscribeThreshold;
3939
$this->blacklistThreshold = $blacklistThreshold;
4040
}
@@ -129,7 +129,7 @@ private function applyThresholdActions($user, int $consecutive, bool $alreadyUns
129129
}
130130

131131
if ($this->blacklistThreshold > 0 && $consecutive >= $this->blacklistThreshold) {
132-
$this->subscriberManager->blacklist(
132+
$this->blacklistService->blacklist(
133133
subscriber: $user,
134134
reason: sprintf('%d consecutive bounces, threshold reached', $consecutive)
135135
);

src/Domain/Messaging/Service/Handler/BlacklistEmailAndDeleteBounceHandler.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66

77
use PhpList\Core\Domain\Messaging\Service\Manager\BounceManager;
88
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager;
9-
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
9+
use PhpList\Core\Domain\Subscription\Service\SubscriberBlacklistService;
1010

1111
class BlacklistEmailAndDeleteBounceHandler implements BounceActionHandlerInterface
1212
{
1313
private SubscriberHistoryManager $subscriberHistoryManager;
14-
private SubscriberManager $subscriberManager;
1514
private BounceManager $bounceManager;
15+
private SubscriberBlacklistService $blacklistService;
1616

1717
public function __construct(
1818
SubscriberHistoryManager $subscriberHistoryManager,
19-
SubscriberManager $subscriberManager,
2019
BounceManager $bounceManager,
20+
SubscriberBlacklistService $blacklistService
2121
) {
2222
$this->subscriberHistoryManager = $subscriberHistoryManager;
23-
$this->subscriberManager = $subscriberManager;
2423
$this->bounceManager = $bounceManager;
24+
$this->blacklistService = $blacklistService;
2525
}
2626

2727
public static function supports(string $action): bool
@@ -32,9 +32,9 @@ public static function supports(string $action): bool
3232
public function handle(array $closureData): void
3333
{
3434
if (!empty($closureData['subscriber'])) {
35-
$this->subscriberManager->blacklist(
36-
$closureData['subscriber'],
37-
'Email address auto blacklisted by bounce rule '.$closureData['ruleId']
35+
$this->blacklistService->blacklist(
36+
subscriber: $closureData['subscriber'],
37+
reason: 'Email address auto blacklisted by bounce rule '.$closureData['ruleId']
3838
);
3939
$this->subscriberHistoryManager->addHistory(
4040
$closureData['subscriber'],

src/Domain/Messaging/Service/Handler/BlacklistEmailHandler.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
namespace PhpList\Core\Domain\Messaging\Service\Handler;
66

77
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager;
8-
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
8+
use PhpList\Core\Domain\Subscription\Service\SubscriberBlacklistService;
99

1010
class BlacklistEmailHandler implements BounceActionHandlerInterface
1111
{
1212
private SubscriberHistoryManager $subscriberHistoryManager;
13-
private SubscriberManager $subscriberManager;
13+
private SubscriberBlacklistService $blacklistService;
1414

1515
public function __construct(
1616
SubscriberHistoryManager $subscriberHistoryManager,
17-
SubscriberManager $subscriberManager,
17+
SubscriberBlacklistService $blacklistService,
1818
) {
1919
$this->subscriberHistoryManager = $subscriberHistoryManager;
20-
$this->subscriberManager = $subscriberManager;
20+
$this->blacklistService = $blacklistService;
2121
}
2222

2323
public static function supports(string $action): bool
@@ -28,7 +28,7 @@ public static function supports(string $action): bool
2828
public function handle(array $closureData): void
2929
{
3030
if (!empty($closureData['subscriber'])) {
31-
$this->subscriberManager->blacklist(
31+
$this->blacklistService->blacklist(
3232
$closureData['subscriber'],
3333
'Email address auto blacklisted by bounce rule '.$closureData['ruleId']
3434
);

src/Domain/Messaging/Service/Handler/BlacklistUserAndDeleteBounceHandler.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66

77
use PhpList\Core\Domain\Messaging\Service\Manager\BounceManager;
88
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager;
9-
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
9+
use PhpList\Core\Domain\Subscription\Service\SubscriberBlacklistService;
1010

1111
class BlacklistUserAndDeleteBounceHandler implements BounceActionHandlerInterface
1212
{
1313
private SubscriberHistoryManager $subscriberHistoryManager;
14-
private SubscriberManager $subscriberManager;
1514
private BounceManager $bounceManager;
15+
private SubscriberBlacklistService $blacklistService;
1616

1717
public function __construct(
1818
SubscriberHistoryManager $subscriberHistoryManager,
19-
SubscriberManager $subscriberManager,
2019
BounceManager $bounceManager,
20+
SubscriberBlacklistService $blacklistService,
2121
) {
2222
$this->subscriberHistoryManager = $subscriberHistoryManager;
23-
$this->subscriberManager = $subscriberManager;
2423
$this->bounceManager = $bounceManager;
24+
$this->blacklistService = $blacklistService;
2525
}
2626

2727
public static function supports(string $action): bool
@@ -32,14 +32,14 @@ public static function supports(string $action): bool
3232
public function handle(array $closureData): void
3333
{
3434
if (!empty($closureData['subscriber']) && !$closureData['blacklisted']) {
35-
$this->subscriberManager->blacklist(
36-
$closureData['subscriber'],
37-
'Subscriber auto blacklisted by bounce rule '.$closureData['ruleId']
35+
$this->blacklistService->blacklist(
36+
subscriber: $closureData['subscriber'],
37+
reason: 'Subscriber auto blacklisted by bounce rule '.$closureData['ruleId']
3838
);
3939
$this->subscriberHistoryManager->addHistory(
40-
$closureData['subscriber'],
41-
'Auto Unsubscribed',
42-
'User auto unsubscribed for bounce rule '.$closureData['ruleId']
40+
subscriber: $closureData['subscriber'],
41+
message: 'Auto Unsubscribed',
42+
details: 'User auto unsubscribed for bounce rule '.$closureData['ruleId']
4343
);
4444
}
4545
$this->bounceManager->delete($closureData['bounce']);

src/Domain/Messaging/Service/Handler/BlacklistUserHandler.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
namespace PhpList\Core\Domain\Messaging\Service\Handler;
66

77
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager;
8-
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
8+
use PhpList\Core\Domain\Subscription\Service\SubscriberBlacklistService;
99

1010
class BlacklistUserHandler implements BounceActionHandlerInterface
1111
{
1212
private SubscriberHistoryManager $subscriberHistoryManager;
13-
private SubscriberManager $subscriberManager;
13+
private SubscriberBlacklistService $blacklistService;
1414

1515
public function __construct(
1616
SubscriberHistoryManager $subscriberHistoryManager,
17-
SubscriberManager $subscriberManager,
17+
SubscriberBlacklistService $blacklistService,
1818
) {
1919
$this->subscriberHistoryManager = $subscriberHistoryManager;
20-
$this->subscriberManager = $subscriberManager;
20+
$this->blacklistService = $blacklistService;
2121
}
2222

2323
public static function supports(string $action): bool
@@ -28,14 +28,14 @@ public static function supports(string $action): bool
2828
public function handle(array $closureData): void
2929
{
3030
if (!empty($closureData['subscriber']) && !$closureData['blacklisted']) {
31-
$this->subscriberManager->blacklist(
32-
$closureData['subscriber'],
33-
'Subscriber auto blacklisted by bounce rule '.$closureData['ruleId']
31+
$this->blacklistService->blacklist(
32+
subscriber: $closureData['subscriber'],
33+
reason: 'Subscriber auto blacklisted by bounce rule '.$closureData['ruleId']
3434
);
3535
$this->subscriberHistoryManager->addHistory(
36-
$closureData['subscriber'],
37-
'Auto Unsubscribed',
38-
'User auto unsubscribed for bounce rule '.$closureData['ruleId']
36+
subscriber: $closureData['subscriber'],
37+
message: 'Auto Unsubscribed',
38+
details: 'User auto unsubscribed for bounce rule '.$closureData['ruleId']
3939
);
4040
}
4141
}

src/Domain/Messaging/Service/Manager/BounceManager.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use DateTime;
88
use DateTimeImmutable;
9+
use Doctrine\ORM\EntityManagerInterface;
910
use PhpList\Core\Domain\Messaging\Model\Bounce;
1011
use PhpList\Core\Domain\Messaging\Model\UserMessage;
1112
use PhpList\Core\Domain\Messaging\Model\UserMessageBounce;
@@ -16,19 +17,23 @@
1617

1718
class BounceManager
1819
{
20+
private const TEST_MODE_MESSAGE = 'Running in test mode, not deleting messages from mailbox';
21+
private const LIVE_MODE_MESSAGE = 'Processed messages will be deleted from the mailbox';
22+
1923
private BounceRepository $bounceRepository;
2024
private UserMessageBounceRepository $userMessageBounceRepo;
25+
private EntityManagerInterface $entityManager;
2126
private LoggerInterface $logger;
22-
private const TEST_MODE_MESSAGE = 'Running in test mode, not deleting messages from mailbox';
23-
private const LIVE_MODE_MESSAGE = 'Processed messages will be deleted from the mailbox';
2427

2528
public function __construct(
2629
BounceRepository $bounceRepository,
2730
UserMessageBounceRepository $userMessageBounceRepo,
28-
LoggerInterface $logger
31+
EntityManagerInterface $entityManager,
32+
LoggerInterface $logger,
2933
) {
3034
$this->bounceRepository = $bounceRepository;
3135
$this->userMessageBounceRepo = $userMessageBounceRepo;
36+
$this->entityManager = $entityManager;
3237
$this->logger = $logger;
3338
}
3439

@@ -88,6 +93,7 @@ public function linkUserMessageBounce(
8893
$userMessageBounce = new UserMessageBounce($bounce->getId(), new DateTime($date->format('Y-m-d H:i:s')));
8994
$userMessageBounce->setUserId($subscriberId);
9095
$userMessageBounce->setMessageId($messageId);
96+
$this->entityManager->flush();
9197

9298
return $userMessageBounce;
9399
}

src/Domain/Subscription/Service/Manager/SubscriberManager.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,17 @@ class SubscriberManager
2222
private EntityManagerInterface $entityManager;
2323
private MessageBusInterface $messageBus;
2424
private SubscriberDeletionService $subscriberDeletionService;
25-
private SubscriberBlacklistService $blacklistService;
2625

2726
public function __construct(
2827
SubscriberRepository $subscriberRepository,
2928
EntityManagerInterface $entityManager,
3029
MessageBusInterface $messageBus,
3130
SubscriberDeletionService $subscriberDeletionService,
32-
SubscriberBlacklistService $blacklistService
3331
) {
3432
$this->subscriberRepository = $subscriberRepository;
3533
$this->entityManager = $entityManager;
3634
$this->messageBus = $messageBus;
3735
$this->subscriberDeletionService = $subscriberDeletionService;
38-
$this->blacklistService = $blacklistService;
3936
}
4037

4138
public function createSubscriber(CreateSubscriberDto $subscriberDto): Subscriber
@@ -139,11 +136,6 @@ public function updateFromImport(Subscriber $existingSubscriber, ImportSubscribe
139136
return $existingSubscriber;
140137
}
141138

142-
public function blacklist(Subscriber $subscriber, string $reason): void
143-
{
144-
$this->blacklistService->blacklist($subscriber, $reason);
145-
}
146-
147139
public function decrementBounceCount(Subscriber $subscriber): void
148140
{
149141
$subscriber->addToBounceCount(-1);

tests/Unit/Domain/Messaging/Service/Manager/BounceManagerTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpList\Core\Tests\Unit\Domain\Messaging\Service\Manager;
66

77
use DateTimeImmutable;
8+
use Doctrine\ORM\EntityManagerInterface;
89
use PhpList\Core\Domain\Messaging\Model\Bounce;
910
use PhpList\Core\Domain\Messaging\Repository\BounceRepository;
1011
use PhpList\Core\Domain\Messaging\Repository\UserMessageBounceRepository;
@@ -25,7 +26,8 @@ protected function setUp(): void
2526
$this->manager = new BounceManager(
2627
bounceRepository: $this->repository,
2728
userMessageBounceRepo: $userMessageBounceRepository,
28-
logger: $this->createMock(LoggerInterface::class)
29+
entityManager: $this->createMock(EntityManagerInterface::class),
30+
logger: $this->createMock(LoggerInterface::class),
2931
);
3032
}
3133

tests/Unit/Domain/Subscription/Service/Manager/SubscriberManagerTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1111
use PhpList\Core\Domain\Subscription\Repository\SubscriberRepository;
1212
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
13-
use PhpList\Core\Domain\Subscription\Service\SubscriberBlacklistService;
1413
use PhpList\Core\Domain\Subscription\Service\SubscriberDeletionService;
1514
use PHPUnit\Framework\MockObject\MockObject;
1615
use PHPUnit\Framework\TestCase;
@@ -36,7 +35,6 @@ protected function setUp(): void
3635
entityManager: $this->entityManager,
3736
messageBus: $this->messageBus,
3837
subscriberDeletionService: $subscriberDeletionService,
39-
blacklistService: $this->createMock(SubscriberBlacklistService::class),
4038
);
4139
}
4240

0 commit comments

Comments
 (0)