1313
1414class AnalyticsService
1515{
16- private LinkTrackManager $ linkTrackManager ;
17- private UserMessageViewManager $ userMessageViewManager ;
18- private MessageRepository $ messageRepository ;
19- private UserMessageBounceRepository $ messageBounceRepository ;
20- private UserMessageForwardRepository $ messageForwardRepository ;
21- private SubscriberRepository $ subscriberRepository ;
22-
2316 public function __construct (
24- LinkTrackManager $ linkTrackManager ,
25- UserMessageViewManager $ userMessageViewManager ,
26- MessageRepository $ messageRepository ,
27- UserMessageBounceRepository $ messageBounceRepository ,
28- UserMessageForwardRepository $ messageForwardRepository ,
29- SubscriberRepository $ subscriberRepository
17+ private readonly LinkTrackManager $ linkTrackManager ,
18+ private readonly UserMessageViewManager $ userMessageViewManager ,
19+ private readonly MessageRepository $ messageRepository ,
20+ private readonly UserMessageBounceRepository $ messageBounceRepository ,
21+ private readonly UserMessageForwardRepository $ messageForwardRepository ,
22+ private readonly SubscriberRepository $ subscriberRepository
3023 ) {
31- $ this ->linkTrackManager = $ linkTrackManager ;
32- $ this ->userMessageViewManager = $ userMessageViewManager ;
33- $ this ->messageRepository = $ messageRepository ;
34- $ this ->messageBounceRepository = $ messageBounceRepository ;
35- $ this ->messageForwardRepository = $ messageForwardRepository ;
36- $ this ->subscriberRepository = $ subscriberRepository ;
3724 }
3825
3926 /**
@@ -55,10 +42,9 @@ public function __construct(
5542 */
5643 public function getCampaignStatistics (int $ limit = 50 , int $ lastId = 0 ): array
5744 {
58- $ messages = $ this ->messageRepository ->getFilteredAfterId ($ lastId , $ limit );
45+ $ messages = $ this ->messageRepository ->getFilteredAfterId ($ lastId , $ limit )-> getItems () ;
5946
6047 $ campaignStats = [];
61-
6248 foreach ($ messages as $ message ) {
6349 $ views = $ this ->userMessageViewManager ->countViewsByMessageId ($ message ->getId ());
6450 $ linkTracks = $ this ->linkTrackManager ->getLinkTracksByMessageId ($ message ->getId ());
@@ -113,11 +99,10 @@ public function getCampaignStatistics(int $limit = 50, int $lastId = 0): array
11399 */
114100 public function getViewOpensStatistics (int $ limit = 50 , int $ lastId = 0 ): array
115101 {
116- $ messages = $ this ->messageRepository ->getFilteredAfterId ($ lastId , $ limit );
102+ $ messagesResult = $ this ->messageRepository ->getFilteredAfterId ($ lastId , $ limit );
117103
118104 $ viewStats = [];
119-
120- foreach ($ messages as $ message ) {
105+ foreach ($ messagesResult ->getItems () as $ message ) {
121106 $ views = $ this ->userMessageViewManager ->countViewsByMessageId ($ message ->getId ());
122107 $ sentCount = $ message ->getMetadata ()->getBounceCount () + $ views ;
123108
@@ -134,9 +119,9 @@ public function getViewOpensStatistics(int $limit = 50, int $lastId = 0): array
134119
135120 return [
136121 'campaigns ' => $ viewStats ,
137- 'total ' => count ( $ viewStats ),
138- 'hasMore ' => count ($ messages ) === $ limit ,
139- 'lastId ' => count ( $ messages ) > 0 ? $ messages [ count ( $ messages ) - 1 ]-> getId () : $ lastId ,
122+ 'total ' => $ messagesResult -> getTotal ( ),
123+ 'hasMore ' => count ($ messagesResult -> getItems () ) === $ limit ,
124+ 'lastId ' => $ messagesResult -> getLastId () ,
140125 ];
141126 }
142127
@@ -153,10 +138,9 @@ public function getViewOpensStatistics(int $limit = 50, int $lastId = 0): array
153138 */
154139 public function getTopDomains (int $ limit = 50 , int $ minSubscribers = 5 ): array
155140 {
156- $ domains = [];
157-
158141 $ subscribers = $ this ->subscriberRepository ->findAll ();
159142
143+ $ domains = [];
160144 foreach ($ subscribers as $ subscriber ) {
161145 $ email = $ subscriber ->getEmail ();
162146 $ domain = substr (strrchr ($ email , '@ ' ), 1 ) ?: '' ;
0 commit comments