Skip to content

Commit 502c69b

Browse files
committed
user repository methods
1 parent 63fd038 commit 502c69b

File tree

3 files changed

+36
-26
lines changed

3 files changed

+36
-26
lines changed

src/Domain/Subscription/Repository/UserBlacklistDataRepository.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
namespace PhpList\Core\Domain\Subscription\Repository;
66

77
use PhpList\Core\Domain\Common\Repository\AbstractRepository;
8+
use PhpList\Core\Domain\Subscription\Model\UserBlacklistData;
89

910
class UserBlacklistDataRepository extends AbstractRepository
1011
{
12+
public function findOneByEmail(string $email): ?UserBlacklistData
13+
{
14+
return $this->findOneBy(['email' => $email]);
15+
}
1116
}

src/Domain/Subscription/Repository/UserBlacklistRepository.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
class UserBlacklistRepository extends AbstractRepository
1212
{
13-
public function getBlacklistInfoByEmail(string $email): ?array
13+
public function findBlacklistInfoByEmail(string $email): ?UserBlacklist
1414
{
1515
$qb = $this->getEntityManager()->createQueryBuilder();
1616

@@ -23,4 +23,11 @@ public function getBlacklistInfoByEmail(string $email): ?array
2323

2424
return $qb->getQuery()->getOneOrNullResult();
2525
}
26+
27+
public function findOneByEmail(string $email): ?UserBlacklist
28+
{
29+
return $this->findOneBy([
30+
'email' => $email,
31+
]);
32+
}
2633
}

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

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44

55
namespace PhpList\Core\Domain\Subscription\Service\Manager;
66

7-
use PhpList\Core\Domain\Subscription\Model\Subscriber;
7+
use DateTime;
8+
use Doctrine\ORM\EntityManagerInterface;
89
use PhpList\Core\Domain\Subscription\Model\UserBlacklist;
910
use PhpList\Core\Domain\Subscription\Model\UserBlacklistData;
1011
use PhpList\Core\Domain\Subscription\Repository\SubscriberRepository;
12+
use PhpList\Core\Domain\Subscription\Repository\UserBlacklistDataRepository;
1113
use PhpList\Core\Domain\Subscription\Repository\UserBlacklistRepository;
1214

1315
class SubscriberBlacklistManager
1416
{
1517
public function __construct(
1618
private readonly SubscriberRepository $subscriberRepository,
1719
private readonly UserBlacklistRepository $userBlacklistRepository,
20+
private readonly UserBlacklistDataRepository $blacklistDataRepository,
21+
private readonly EntityManagerInterface $entityManager,
1822
) {
1923
}
2024

@@ -23,64 +27,58 @@ public function isEmailBlacklisted(string $email): bool
2327
return $this->subscriberRepository->isEmailBlacklisted($email);
2428
}
2529

26-
public function getBlacklistInfo(string $email): ?Subscriber
30+
public function getBlacklistInfo(string $email): ?UserBlacklist
2731
{
28-
return $this->userBlacklistRepository->findBlacklistedByEmail($email);
32+
return $this->userBlacklistRepository->findBlacklistInfoByEmail($email);
2933
}
3034
// 095-38-25-55
3135
public function addEmailToBlacklist(string $email, ?string $reasonData = null): void
3236
{
33-
$existing = $this->getBlacklistInfo($email);
37+
$existing = $this->subscriberRepository->isEmailBlacklisted($email);
3438
if ($existing) {
3539
return;
3640
}
3741

3842
$blacklistEntry = new UserBlacklist();
3943
$blacklistEntry->setEmail($email);
40-
$blacklistEntry->setAdded(new \DateTime());
44+
$blacklistEntry->setAdded(new DateTime());
4145

42-
$entityManager->persist($blacklistEntry);
46+
$this->entityManager->persist($blacklistEntry);
4347

4448
if ($reasonData !== null) {
4549
$blacklistData = new UserBlacklistData();
4650
$blacklistData->setEmail($email);
47-
$blacklistData->setName('reason'); // or a relevant name
51+
$blacklistData->setName('reason');
4852
$blacklistData->setData($reasonData);
49-
$entityManager->persist($blacklistData);
53+
$this->entityManager->persist($blacklistData);
5054
}
5155

52-
$entityManager->flush();
56+
$this->entityManager->flush();
5357
}
5458

55-
public function removeEmailFromBlacklist(string $email)
59+
public function removeEmailFromBlacklist(string $email): void
5660
{
57-
$entityManager = $this->entityManager;
58-
59-
$blacklistEntry = $entityManager->getRepository(UserBlacklist::class)->find($email);
61+
$blacklistEntry = $this->userBlacklistRepository->findOneByEmail($email);
6062
if ($blacklistEntry) {
61-
$entityManager->remove($blacklistEntry);
63+
$this->entityManager->remove($blacklistEntry);
6264
}
6365

64-
$blacklistData = $entityManager->getRepository(UserBlacklistData::class)->find($email);
66+
$blacklistData = $this->blacklistDataRepository->findOneByEmail($email);
6567
if ($blacklistData) {
66-
$entityManager->remove($blacklistData);
68+
$this->entityManager->remove($blacklistData);
6769
}
6870

69-
// Also, update the user record
70-
$userRepo = $entityManager->getRepository(Subscriber::class);
71-
$user = $userRepo->findOneBy(['email' => $email]);
72-
if ($user) {
73-
$user->setBlacklisted(false);
71+
$subscriber = $this->subscriberRepository->findOneByEmail($email);
72+
if ($subscriber) {
73+
$subscriber->setBlacklisted(false);
7474
}
7575

76-
$entityManager->flush();
76+
$this->entityManager->flush();
7777
}
7878

7979
public function getBlacklistReason(string $email): ?string
8080
{
81-
$repository = $this->entityManager->getRepository(UserBlacklistData::class);
82-
$data = $repository->findOneBy(['email' => $email]);
81+
$data = $this->blacklistDataRepository->findOneByEmail($email);
8382
return $data ? $data->getData() : null;
8483
}
85-
8684
}

0 commit comments

Comments
 (0)