SubscriptionsManager logging added.

This commit is contained in:
Alexey Skobkin 2017-01-09 04:28:33 +03:00
parent 30faaa7b08
commit 1df09fa68d
2 changed files with 24 additions and 6 deletions

View File

@ -37,7 +37,10 @@ services:
# Point subscription manager
app.point.subscriptions_manager:
class: Skobkin\Bundle\PointToolsBundle\Service\SubscriptionsManager
arguments: [ '@doctrine.orm.entity_manager', '@event_dispatcher' ]
arguments:
- '@doctrine.orm.entity_manager'
- '@event_dispatcher'
- '@logger'
# Factories

View File

@ -3,6 +3,7 @@
namespace Skobkin\Bundle\PointToolsBundle\Service;
use Doctrine\ORM\EntityManager;
use Psr\Log\LoggerInterface;
use Skobkin\Bundle\PointToolsBundle\Entity\Subscription;
use Skobkin\Bundle\PointToolsBundle\Entity\SubscriptionEvent;
use Skobkin\Bundle\PointToolsBundle\Entity\User;
@ -21,11 +22,17 @@ class SubscriptionsManager
*/
private $eventDispatcher;
/**
* @var LoggerInterface
*/
private $logger;
public function __construct(EntityManager $entityManager, EventDispatcherInterface $eventDispatcher)
public function __construct(EntityManager $entityManager, EventDispatcherInterface $eventDispatcher, LoggerInterface $logger)
{
$this->em = $entityManager;
$this->eventDispatcher = $eventDispatcher;
$this->logger = $logger;
}
/**
@ -42,16 +49,16 @@ class SubscriptionsManager
$oldSubscribersList[] = $subscription->getSubscriber();
}
$this->logger->debug('Counting user subscribers diff', ['user_id' => $user->getId()]);
$subscribedList = $this->getUsersListsDiff($newSubscribersList, $oldSubscribersList);
$unsubscribedList = $this->getUsersListsDiff($oldSubscribersList, $newSubscribersList);
$this->logger->debug(sprintf('User has %d subscribed and %d unsubscribed users', count($subscribedList), count($unsubscribedList)));
$this->processSubscribedUsers($user, $subscribedList);
$this->processUnsubscribedUsers($user, $unsubscribedList);
// Removing users from database
// @todo Maybe remove via ORM
$this->em->getRepository('SkobkinPointToolsBundle:Subscription')->removeSubscribers($user, $unsubscribedList);
$this->dispatchSubscribersUpdatedEvent($user, $subscribedList, $unsubscribedList);
}
@ -84,6 +91,8 @@ class SubscriptionsManager
*/
private function processSubscribedUsers(User $user, array $subscribers)
{
$this->logger->debug('Processing subscribed users');
foreach ($subscribers as $subscriber) {
$subscription = new Subscription($user, $subscriber);
@ -103,12 +112,18 @@ class SubscriptionsManager
*/
private function processUnsubscribedUsers(User $user, array $subscribers)
{
$this->logger->debug('Processing unsubscribed users');
foreach ($subscribers as $subscriber) {
$logEvent = new SubscriptionEvent($user, $subscriber, SubscriptionEvent::ACTION_UNSUBSCRIBE);
$this->em->persist($logEvent);
$user->addNewSubscriberEvent($logEvent);
}
// Removing users from database
// @todo Maybe remove via ORM
$this->em->getRepository('SkobkinPointToolsBundle:Subscription')->removeSubscribers($user, $subscribers);
}
/**