2015-06-23 09:38:43 +00:00
|
|
|
<?php
|
|
|
|
|
2016-03-23 16:59:06 +00:00
|
|
|
namespace Skobkin\Bundle\PointToolsBundle\Repository;
|
2015-06-23 09:38:43 +00:00
|
|
|
|
|
|
|
use Doctrine\ORM\EntityRepository;
|
2017-01-11 01:10:32 +00:00
|
|
|
use Skobkin\Bundle\PointToolsBundle\Entity\Subscription;
|
2017-01-07 18:46:50 +00:00
|
|
|
use Skobkin\Bundle\PointToolsBundle\Entity\User;
|
2015-06-23 09:38:43 +00:00
|
|
|
|
|
|
|
class SubscriptionRepository extends EntityRepository
|
|
|
|
{
|
2017-01-12 22:58:52 +00:00
|
|
|
public function add(Subscription $entity): void
|
2017-01-11 01:10:32 +00:00
|
|
|
{
|
|
|
|
$this->getEntityManager()->persist($entity);
|
|
|
|
}
|
|
|
|
|
2015-06-23 09:38:43 +00:00
|
|
|
/**
|
2017-01-07 18:46:50 +00:00
|
|
|
* @param int $id
|
|
|
|
*
|
|
|
|
* @return int
|
2015-06-23 09:38:43 +00:00
|
|
|
*/
|
2017-01-12 22:58:52 +00:00
|
|
|
public function getUserSubscribersCountById(int $id): int
|
2015-06-23 09:38:43 +00:00
|
|
|
{
|
|
|
|
$qb = $this->createQueryBuilder('s');
|
|
|
|
return $qb
|
2016-12-11 03:23:03 +00:00
|
|
|
->select('COUNT(s.subscriber)')
|
|
|
|
->innerJoin('s.author', 'sa')
|
|
|
|
->where('sa.id = :id')
|
2015-06-23 09:38:43 +00:00
|
|
|
->setParameter('id', $id)
|
|
|
|
->getQuery()->getSingleScalarResult()
|
|
|
|
;
|
|
|
|
}
|
2017-01-07 18:46:50 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param User $user
|
|
|
|
* @param User[] $subscribers
|
|
|
|
*/
|
2017-01-12 22:58:52 +00:00
|
|
|
public function removeSubscribers(User $user, array $subscribers): void
|
2017-01-07 18:46:50 +00:00
|
|
|
{
|
|
|
|
$qb = $this->createQueryBuilder('s');
|
|
|
|
$qb
|
|
|
|
->delete()
|
|
|
|
->where('s.author = :author')
|
|
|
|
->andWhere('s.subscriber IN (:subscribers)')
|
|
|
|
->setParameter('author', $user->getId())
|
|
|
|
->setParameter('subscribers', $subscribers)
|
|
|
|
->getQuery()->execute();
|
|
|
|
;
|
|
|
|
}
|
2015-06-23 09:38:43 +00:00
|
|
|
}
|