44
55namespace PhpList \Core \Domain \Subscription \Service \Manager ;
66
7- use PhpList \Core \Domain \Subscription \Model \Subscriber ;
7+ use DateTime ;
8+ use Doctrine \ORM \EntityManagerInterface ;
89use PhpList \Core \Domain \Subscription \Model \UserBlacklist ;
910use PhpList \Core \Domain \Subscription \Model \UserBlacklistData ;
1011use PhpList \Core \Domain \Subscription \Repository \SubscriberRepository ;
12+ use PhpList \Core \Domain \Subscription \Repository \UserBlacklistDataRepository ;
1113use PhpList \Core \Domain \Subscription \Repository \UserBlacklistRepository ;
1214
1315class 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