Skip to content

Commit fa0af38

Browse files
committed
Add getSubscriberDetails method
1 parent 32a7dc9 commit fa0af38

File tree

4 files changed

+56
-17
lines changed

4 files changed

+56
-17
lines changed

src/Domain/Subscription/Model/Subscriber.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
* @author Oliver Klee <oliver@phplist.com>
2121
* @author Tatevik Grigoryan <tatevik@phplist.com>
2222
* @SuppressWarnings(TooManyFields)
23+
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
24+
* @SuppressWarnings(PHPMD.ExcessivePublicCount)
2325
*/
2426
#[ORM\Entity(repositoryClass: SubscriberRepository::class)]
2527
#[ORM\Table(name: 'phplist_user_user')]
@@ -109,6 +111,9 @@ class Subscriber implements DomainModel, Identity, CreationDate, ModificationDat
109111
#[ORM\Column(name: 'foreignkey', type: 'string', length: 100, nullable: true)]
110112
private ?string $foreignKey = null;
111113

114+
/** @var SubscriberHistory[] */
115+
private array $history = [];
116+
112117
public function __construct(string $email)
113118
{
114119
$this->email = $email;
@@ -377,4 +382,20 @@ public function setForeignKey(?string $foreignKey): void
377382
{
378383
$this->foreignKey = $foreignKey;
379384
}
385+
386+
/**
387+
* @return SubscriberHistory[]
388+
*/
389+
public function getHistory(): array
390+
{
391+
return $this->history;
392+
}
393+
394+
/**
395+
* @param SubscriberHistory[] $history
396+
*/
397+
public function setHistory(array $history): void
398+
{
399+
$this->history = $history;
400+
}
380401
}

src/Domain/Subscription/Repository/SubscriberHistoryRepository.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use PhpList\Core\Domain\Common\Repository\CursorPaginationTrait;
1212
use PhpList\Core\Domain\Common\Repository\Interfaces\PaginatableRepositoryInterface;
1313
use PhpList\Core\Domain\Subscription\Model\Filter\SubscriberHistoryFilter;
14+
use PhpList\Core\Domain\Subscription\Model\Subscriber;
1415
use PhpList\Core\Domain\Subscription\Model\SubscriberHistory;
1516

1617
class SubscriberHistoryRepository extends AbstractRepository implements PaginatableRepositoryInterface
@@ -74,4 +75,15 @@ public function getFilteredAfterId(
7475
lastId: $lastId,
7576
);
7677
}
78+
79+
/** @return SubscriberHistory[] */
80+
public function getBySubscriber(Subscriber $subscriber): array
81+
{
82+
return $this->createQueryBuilder('sh')
83+
->andWhere('sh.subscriber = :subscriberId')
84+
->setParameter('subscriberId', $subscriber->getId())
85+
->orderBy('sh.id', 'DESC')
86+
->getQuery()
87+
->getResult();
88+
}
7789
}

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

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,22 @@
1111
use PhpList\Core\Domain\Subscription\Model\Dto\ImportSubscriberDto;
1212
use PhpList\Core\Domain\Subscription\Model\Dto\UpdateSubscriberDto;
1313
use PhpList\Core\Domain\Subscription\Model\Subscriber;
14+
use PhpList\Core\Domain\Subscription\Repository\SubscriberHistoryRepository;
1415
use PhpList\Core\Domain\Subscription\Repository\SubscriberRepository;
1516
use PhpList\Core\Domain\Subscription\Service\SubscriberDeletionService;
1617
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
1718
use Symfony\Contracts\Translation\TranslatorInterface;
1819

1920
class SubscriberManager
2021
{
21-
private SubscriberRepository $subscriberRepository;
22-
private EntityManagerInterface $entityManager;
23-
private SubscriberDeletionService $subscriberDeletionService;
24-
private TranslatorInterface $translator;
25-
private SubscriberHistoryManager $subscriberHistoryManager;
26-
2722
public function __construct(
28-
SubscriberRepository $subscriberRepository,
29-
EntityManagerInterface $entityManager,
30-
SubscriberDeletionService $subscriberDeletionService,
31-
TranslatorInterface $translator,
32-
SubscriberHistoryManager $subscriberHistoryManager,
23+
private readonly SubscriberRepository $subscriberRepository,
24+
private readonly EntityManagerInterface $entityManager,
25+
private readonly SubscriberDeletionService $subscriberDeletionService,
26+
private readonly TranslatorInterface $translator,
27+
private readonly SubscriberHistoryManager $subscriberHistoryManager,
28+
private readonly SubscriberHistoryRepository $subscriberHistoryRepository,
3329
) {
34-
$this->subscriberRepository = $subscriberRepository;
35-
$this->entityManager = $entityManager;
36-
$this->subscriberDeletionService = $subscriberDeletionService;
37-
$this->translator = $translator;
38-
$this->subscriberHistoryManager = $subscriberHistoryManager;
3930
}
4031

4132
public function createSubscriber(CreateSubscriberDto $subscriberDto): Subscriber
@@ -57,6 +48,19 @@ public function getSubscriberById(int $subscriberId): ?Subscriber
5748
return $this->subscriberRepository->find($subscriberId);
5849
}
5950

51+
public function getSubscriberDetails(int $subscriberId): ?Subscriber
52+
{
53+
$subscriber = $this->getSubscriberById($subscriberId);
54+
if ($subscriber === null) {
55+
return null;
56+
}
57+
58+
$history = $this->subscriberHistoryRepository->getBySubscriber($subscriber);
59+
$subscriber->setHistory($history);
60+
61+
return $subscriber;
62+
}
63+
6064
public function updateSubscriber(
6165
Subscriber $subscriber,
6266
UpdateSubscriberDto $subscriberDto,

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Doctrine\ORM\EntityManagerInterface;
88
use PhpList\Core\Domain\Subscription\Model\Dto\CreateSubscriberDto;
99
use PhpList\Core\Domain\Subscription\Model\Subscriber;
10+
use PhpList\Core\Domain\Subscription\Repository\SubscriberHistoryRepository;
1011
use PhpList\Core\Domain\Subscription\Repository\SubscriberRepository;
1112
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberHistoryManager;
1213
use PhpList\Core\Domain\Subscription\Service\Manager\SubscriberManager;
@@ -31,7 +32,8 @@ protected function setUp(): void
3132
entityManager: $entityManager,
3233
subscriberDeletionService: $subscriberDeletionService,
3334
translator: new Translator('en'),
34-
subscriberHistoryManager: $this->createMock(SubscriberHistoryManager::class)
35+
subscriberHistoryManager: $this->createMock(SubscriberHistoryManager::class),
36+
subscriberHistoryRepository: $this->createMock(SubscriberHistoryRepository::class),
3537
);
3638
}
3739

0 commit comments

Comments
 (0)